#!/usr/bin/python # # run debuild in a git repository # # (C) 2006 Guido Guenther # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sys,os,commands,re import optparse from git_buildpackage import GitTag, Command, CommandExecFailed from git_buildpackage.utils import is_repository_clean build_cmd='debuild' def get_version(): versionre=re.compile('^Version:\s+(?P[\d\w~\-\.]+)$') (status, out) = commands.getstatusoutput('dpkg-parsechangelog') for line in out.split('\n'): m=versionre.match(line) if m: return m.group('version') def main(argv): args = [ arg for arg in argv[1:] if arg.find('--git-') == 0 ] dpkg_args = [ arg for arg in argv[1:] if arg.find('--git-') == -1 ] if "--help" in dpkg_args: args.append('--help') parser=optparse.OptionParser() parser.add_option("--git-ignore-new", action="store_true", dest="ignore_new", default=False, help="build with incommited changes in the source tree") parser.add_option("--git-tag", action="store_true", dest="tag", default=False, help="build with uncommited changes in the source tree") parser.add_option("--git-builder", dest="build_cmd", default=build_cmd, help="command to build the package e.g. default is 'debuild'") parser.add_option("--git-verbose", action="store_true", dest="verbose", default=False, help="verbose command execution") (options, args) = parser.parse_args(args) if options.verbose: Command.verbose = True try: if not options.ignore_new: Command(options.build_cmd,['clean'])() (ret, out) = is_repository_clean('.') if not ret: print >>sys.stderr, "You have uncommitted changes in your source tree:" print >>sys.stderr, out print >>sys.stderr, "Use --git-ignore_new to ignore." return 1 Command(options.build_cmd,['-i.git']+dpkg_args)() if options.tag: version=get_version() if version: print "Tagging", version if not GitTag()(version): return 1 else: print >>sys.stderr,"Can't parse version from changes file" except CommandExecFailed: return 1 if __name__ == '__main__': sys.exit(main(sys.argv)) # vim:et:ts=4:sw=4: