Example #1
0
    def __init__(self):
        self.root_directory = os.getcwd()
        self.clowder = None
        self.clowder_repo = None
        self.versions = None
        self._invalid_yaml = False
        self._version = '2.4.0'
        clowder_path = os.path.join(self.root_directory, '.clowder')

        # Load current clowder.yaml config if it exists
        if os.path.isdir(clowder_path):
            clowder_symlink = os.path.join(self.root_directory, 'clowder.yaml')
            self.clowder_repo = ClowderRepo(self.root_directory)
            if not os.path.islink(clowder_symlink):
                print()
                clowder_output = colored('.clowder', 'green')
                print(clowder_output)
                self.clowder_repo.link()
            try:
                self.clowder = ClowderController(self.root_directory)
                self.versions = self.clowder.get_saved_version_names()
            except (ClowderError, KeyError) as err:
                self._invalid_yaml = True
                self._error = err
            except (KeyboardInterrupt, SystemExit):
                sys.exit(1)

        # clowder argparse setup
        command_description = 'Utility for managing multiple git repositories'
        parser = argparse.ArgumentParser(
            description=command_description,
            formatter_class=argparse.RawDescriptionHelpFormatter)
        configure_argparse(parser, self.clowder, self.versions)

        # Argcomplete and arguments parsing
        argcomplete.autocomplete(parser)

        # Register exit handler to display trailing newline
        self._display_trailing_newline = True
        atexit.register(self._exit_handler_formatter)
        if not self._invalid_yaml:
            print()
        self.args = parser.parse_args()
        self._display_trailing_newline = False

        # Check for unrecognized command
        if self.args.clowder_command is None or not hasattr(
                self, self.args.clowder_command):
            exit_unrecognized_command(parser)

        # use dispatch pattern to invoke method with same name
        getattr(self, self.args.clowder_command)()
        print()
Example #2
0
    def init(self):
        """clowder init command"""

        if self.clowder_repo:
            cprint('Clowder already initialized in this directory\n', 'red')
            sys.exit(1)

        if is_offline():
            print(fmt.offline_error())
            sys.exit(1)

        url_output = colored(self.args.url, 'green')
        print('Create clowder repo from ' + url_output + '\n')
        clowder_repo = ClowderRepo(self.root_directory)
        if self.args.branch is None:
            branch = 'master'
        else:
            branch = str(self.args.branch[0])
        clowder_repo.init(self.args.url, branch)
Example #3
0
    def setUp(self):

        self.clowder_repo = ClowderRepo()
        self.clowder_yaml_path = os.path.join(self.cats_example_path,
                                              'clowder.yaml')