diff options
-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.""" |