From 58bad97a00f14f1b3ceef6fea79c31620abf72a1 Mon Sep 17 00:00:00 2001 From: Steven Walter Date: Mon, 30 Jun 2008 15:44:41 -0400 Subject: [PATCH] Fix commands to accept multiple paths --- README | 2 +- yap/yap.py | 85 +++++++++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 60 insertions(+), 27 deletions(-) diff --git a/README b/README index 3949d8a..20e2ecc 100644 --- a/README +++ b/README @@ -38,4 +38,4 @@ TODO: * resolved * remote (list/create) * -d to remove - * Support multiple files as args + * Better commit template message diff --git a/yap/yap.py b/yap/yap.py index 81b4b96..f613c49 100644 --- a/yap/yap.py +++ b/yap/yap.py @@ -112,45 +112,76 @@ class Yap(object): else: return "more" - def cmd_clone(self, url, directory=""): - " [directory]" - # XXX: implement in terms of init + remote add + fetch - os.system("git clone '%s' %s" % (url, directory)) - - def cmd_init(self): - os.system("git init") - - def cmd_add(self, file): - "" + def _add_one(self, file): self._assert_file_exists(file) x = get_output("git ls-files '%s'" % file) if x != []: raise YapError("File '%s' already in repository" % file) self._add_new_file(file) - self.cmd_status() - def cmd_rm(self, file): - "" + def _rm_one(self, file): self._assert_file_exists(file) if get_output("git ls-files '%s'" % file) != []: os.system("git rm --cached '%s'" % file) self._remove_new_file(file) - self.cmd_status() - def cmd_stage(self, file, quiet=False): - "" + def _stage_one(self, file): self._assert_file_exists(file) os.system("git update-index --add '%s'" % file) - if not quiet: - self.cmd_status() - def cmd_unstage(self, file): - "" + def _unstage_one(self, file): self._assert_file_exists(file) if run_command("git rev-parse HEAD"): os.system("git update-index --force-remove '%s'" % file) else: os.system("git diff-index -p HEAD '%s' | git apply -R --cached" % file) + + def _revert_one(self, file): + self._assert_file_exists(file) + os.system("git checkout-index -f '%s'" % file) + + def cmd_clone(self, url, directory=""): + " [directory]" + # XXX: implement in terms of init + remote add + fetch + os.system("git clone '%s' %s" % (url, directory)) + + def cmd_init(self): + os.system("git init") + + def cmd_add(self, *files): + "..." + if not files: + raise TypeError + + for f in files: + self._add_one(f) + self.cmd_status() + + def cmd_rm(self, *files): + "..." + if not files: + raise TypeError + + for f in files: + self._rm_one(f) + self.cmd_status() + + def cmd_stage(self, *files): + "..." + if not files: + raise TypeError + + for f in files: + self._stage_one(f) + self.cmd_status() + + def cmd_unstage(self, *files): + "..." + if not files: + raise TypeError + + for f in files: + self._unstage_one(f) self.cmd_status() def cmd_status(self): @@ -173,15 +204,17 @@ class Yap(object): print "\t(none)" @takes_options("a") - def cmd_revert(self, file=None, **flags): + def cmd_revert(self, *files, **flags): "(-a | )" if '-a' in flags: os.system("git checkout-index -f -a") - elif file is not None: - self._assert_file_exists(file) - os.system("git checkout-index -f '%s'" % file) - else: + return + + if not files: raise TypeError + + for f in files: + self._revert_one(f) self.cmd_status() @takes_options("ad") @@ -194,7 +227,7 @@ class Yap(object): raise YapError("Staged and unstaged changes present. Specify what to commit") os.system("git diff-files -p | git apply --cached 2>/dev/null") for f in self._get_new_files(): - self.cmd_stage(f, True) + self._stage_one(f) if not self._get_staged_files(): raise YapError("No changes to commit") -- 2.11.4.GIT