diff options
author | Jesse Keating <jkeating@redhat.com> | 2010-07-01 16:34:36 -0700 |
---|---|---|
committer | Jesse Keating <jkeating@redhat.com> | 2010-07-01 16:34:36 -0700 |
commit | 3e26ff00c6af7d598219a3fc806398424e3a973d (patch) | |
tree | 05e5a560028a7a15dd7ef23a2dcf30d12632d641 | |
parent | 498bec7e1dfa119c04136c34dadc52a8c9b53f2f (diff) | |
download | fedora-packager-3e26ff00c6af7d598219a3fc806398424e3a973d.tar.gz fedora-packager-3e26ff00c6af7d598219a3fc806398424e3a973d.tar.xz fedora-packager-3e26ff00c6af7d598219a3fc806398424e3a973d.zip |
Create a (simple) diff command
-rwxr-xr-x | src/fedpkg.py | 19 | ||||
-rw-r--r-- | src/pyfedpkg/__init__.py | 29 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/fedpkg.py b/src/fedpkg.py index 0a5b7b6..5840c84 100755 --- a/src/fedpkg.py +++ b/src/fedpkg.py @@ -432,6 +432,14 @@ def compile(args): log.error('Could not compile: %s' % e) sys.exit(1) +def diff(args): + try: + mymodule = pyfedpkg.PackageModule(args.path) + return mymodule.diff(args.cached, args.files) + except pyfedpkg.FedpkgError, e: + log.error('Could not diff: %s' % e) + sys.exit(1) + def export(args): # not implimented; not planned log.warning('Not implimented yet, got %s' % args) @@ -734,6 +742,17 @@ packages will be built sequentially. # help = 'Create a clean export') #parser_export.set_defaults(command = export) + # diff, should work mostly like git diff + parser_diff = subparsers.add_parser('diff', + help = "Show changes between commits, commit and working tree, etc") + parser_diff.add_argument('--cached', default = False, + action = 'store_true', + help = 'View staged changes') + parser_diff.add_argument('files', nargs = '*', + default = [], + help = 'Optionally diff specific files') + parser_diff.set_defaults(command = diff) + # gimmespec takes an optional path argument, defaults to cwd parser_gimmespec = subparsers.add_parser('gimmespec', help = 'print spec file name') diff --git a/src/pyfedpkg/__init__.py b/src/pyfedpkg/__init__.py index 784d263..d3e9d62 100644 --- a/src/pyfedpkg/__init__.py +++ b/src/pyfedpkg/__init__.py @@ -693,6 +693,35 @@ class PackageModule: _run_command(cmd, shell=True) return + def diff(self, cached=False, files=[]): + """Excute a git diff + + optionally diff the cached or staged changes + + Takes an optional list of files to diff reletive to the module base + directory + + Logs the output and returns nothing + + """ + + # Things work better if we're in our module directory + oldpath = os.getcwd() + os.chdir(self.path) + + # build up the command + cmd = ['git', 'diff'] + if cached: + cmd.append('--cached') + if files: + cmd.extend(files) + + # Run it! + _run_command(cmd) + # popd + os.chdir(oldpath) + return + def getver(self): """Return the version-release of a package module.""" |