def init(args) -> None: """Clowder init command private implementation""" clowder_repo_dir = ENVIRONMENT.current_dir / '.clowder' if clowder_repo_dir.is_dir(): try: clowder_repo_dir.rmdir() except OSError: LOG.error("Clowder already initialized in this directory") raise CONSOLE.stdout(f"Create clowder repo from {fmt.green(args.url)}\n") if args.branch is None: branch = 'master' else: branch = str(args.branch[0]) clowder_repo_dir = ENVIRONMENT.current_dir / '.clowder' repo = ClowderRepo(clowder_repo_dir) repo.init(args.url, branch)
def _fetch_projects(projects: Tuple[ResolvedProject, ...]) -> None: """fetch all projects :param Tuple[ResolvedProject, ...] projects: Projects to fetch """ if ENVIRONMENT.clowder_repo_dir is not None: ClowderRepo(ENVIRONMENT.clowder_repo_dir).print_status(fetch=True) CONSOLE.stdout(' - Fetch upstream changes for projects\n') for project in projects: CONSOLE.stdout(project.status()) project.fetch_all() CONSOLE.stdout()
def add_link_parser(subparsers: argparse._SubParsersAction) -> None: # noqa """Add clowder link parser :param argparse._SubParsersAction subparsers: Subparsers action to add parser to """ parser = subparsers.add_parser('link', help='Symlink clowder yaml version') parser.formatter_class = argparse.RawTextHelpFormatter parser.set_defaults(func=link) versions = ClowderRepo.get_saved_version_names() add_parser_arguments(parser, [(['version'], dict(metavar='<version>', choices=versions, nargs='?', default=None, help=fmt.version_options_help_message( 'version to symlink', versions)))])
def status(args) -> None: """Clowder status command private implementation""" projects = Config().process_projects_arg(args.projects) projects = CLOWDER_CONTROLLER.filter_projects(CLOWDER_CONTROLLER.projects, projects) if args.fetch: _fetch_projects(projects) else: if ENVIRONMENT.clowder_repo_dir is not None: ClowderRepo(ENVIRONMENT.clowder_repo_dir).print_status() projects_output = CLOWDER_CONTROLLER.get_projects_output(projects) padding = len(max(projects_output, key=len)) for project in projects: CONSOLE.stdout(project.status(padding=padding))
def status(_) -> None: """Clowder repo status command entry point""" if ENVIRONMENT.clowder_git_repo_dir is not None: ClowderRepo(ENVIRONMENT.clowder_repo_dir).git_status()
def run(args) -> None: """Clowder repo run command private implementation""" ClowderRepo(ENVIRONMENT.clowder_repo_dir).run_command(args.command[0])
def push(_) -> None: """Clowder repo push command private implementation""" ClowderRepo(ENVIRONMENT.clowder_git_repo_dir).push()
def commit(args) -> None: """Clowder repo commit command private implementation""" ClowderRepo(ENVIRONMENT.clowder_git_repo_dir).commit(args.message[0])
def clean(_) -> None: """Clowder repo clean command private implementation""" ClowderRepo(ENVIRONMENT.clowder_git_repo_dir).clean()
def checkout(args) -> None: """Clowder repo checkout command private implementation""" ClowderRepo(ENVIRONMENT.clowder_git_repo_dir).checkout(args.ref[0])
def add(args) -> None: """Clowder repo add command private implementation""" ClowderRepo(ENVIRONMENT.clowder_git_repo_dir).add(args.files)