Source code for uetools.commands.engine.update

from argklass.command import Command, chdir, newparser

from uetools.core.conf import engine_root
from uetools.core.run import run


[docs] class Engine(Command): """Update the engine source code""" name: str = "update"
[docs] @staticmethod def arguments(subparsers): parser = newparser(subparsers, Engine) parser.add_argument( "--branch", type=str, default="5.0", help="checkout a branch" ) parser.add_argument("--remote", type=str, default="origin", help="remote name") parser.add_argument( "--update", action="store_true", default=False, help="Pull the latest changes", ) parser.add_argument( "--dry", action="store_true", default=False, help="Print the command that are going to be executed", )
[docs] @staticmethod def execute(args): root = engine_root() if args.update: cmd = Engine.update(root, args.remote) else: cmd = Engine.checkout(root, args.branch, args.remote) with chdir(root): return Engine.execute_cmd(cmd, dry=args.dry)
[docs] @staticmethod def update(root, remote): """Update current branch by pulling the latest changes""" from git import Repo engine_repo = Repo(root) cmd = ["git", "pull", remote, engine_repo.active_branch] return [cmd]
[docs] @staticmethod def checkout(root, branch, remote): """Checkout a new branch""" from git import Repo engine_repo = Repo(root) if branch == engine_repo.active_branch: cmd = [["git", "pull", remote, branch]] else: cmd = [ ["git", "fetch", remote, branch], ["git", "checkout", branch], ] return cmd
[docs] @staticmethod def execute_cmd(cmds, dry=False): """Execute commands""" for cmd in cmds: print(" ".join(cmd)) if not dry: return run(cmd, check=True).returncode return 0
COMMANDS = Engine