def main(): """CLI interface main """ # setup logging logging.basicConfig(lvl=logging.DEBUG) c = load_config() l = logging.getLogger("screpper") if c.logging_level == "DEBUG": l.setLevel(logging.DEBUG) cmnds = { "help": (lambda x: show_help(x, cmnds), """help - show help information"""), "create": (create_repo, """create <repository name> - create a repository"""), "list": (list_repos, """list - list repositories"""), "gc": (gc_repo, """gc <repository name> - run git gc in repository"""), "setc": (set_config, """setc <key> <value> [<key> <value>] - set config keys"""), "getc": (get_config, """getc [<key> ...] - get keys from configuration (or all if no keys are provided"""), } args = sys.argv[1:] if len(args) == 0 or args[0] not in cmnds: print "No or unknown command" show_help(args, cmnds) raise SystemExit(1) try: cmnds[args[0]][0](args) except InvalidParameters, e: print str(e) show_help(args, cmnds, e.failed_cmd)
def create_repo(args): """create repository Arguments: - `args`: """ l = logging.getLogger("screpper.cli") c = load_config() l.info("create repository") name, path = __extract_repo_name_path(args) repo = create_bare_repo(path) # run hooks l.info("running user hooks for repot at %s" % (path)) run_parts(c.hooks_root, env={"REPO_PATH": os.path.abspath(path)})
def __extract_repo_name_path(args): """ extract repository name and path from args Arguments: - `args`: list of arguments, 0 is always command name """ l = logging.getLogger("screpper.cli") c = load_config() # command for which this function is called comes first cmd = args[0] if len(args) < 2: raise InvalidParameters("repository name not provided", cmd) name = args[1] if not name.endswith(".git"): l.warning("rename repository from %s to %s" % (name, name + ".git")) name += ".git" path = os.path.join(c.repository_root, name) return name, path