aboutsummaryrefslogtreecommitdiffhomepage
path: root/git-import-dscs
diff options
context:
space:
mode:
authorGuido Günther <agx@sigxcpu.org>2011-10-30 20:03:33 +0100
committerGuido Günther <agx@sigxcpu.org>2011-11-01 18:12:48 +0100
commite28ea0740a7b4eb2ef4c1bd3079d77a40c6072b8 (patch)
tree779145e71a996c471a1d1a6b1acde1bc90deecc4 /git-import-dscs
parentabf90abcba15beb51196cf503f35695acdcd91c1 (diff)
Get rid of the symlink
by moving the commands to gbp/scripts/
Diffstat (limited to 'git-import-dscs')
-rwxr-xr-xgit-import-dscs157
1 files changed, 0 insertions, 157 deletions
diff --git a/git-import-dscs b/git-import-dscs
deleted file mode 100755
index 41dc2239..00000000
--- a/git-import-dscs
+++ /dev/null
@@ -1,157 +0,0 @@
-#!/usr/bin/python -u
-# vim: set fileencoding=utf-8 :
-#
-# (C) 2008, 2009, 2010 Guido Guenther <agx@sigxcpu.org>
-# 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 multiple dsc files in one go"""
-
-import glob
-import os
-import sys
-import tempfile
-import gbp.command_wrappers as gbpc
-from gbp.deb import parse_dsc, DscFile, DpkgCompareVersions
-from gbp.errors import GbpError
-from gbp.git import GitRepository, GitRepositoryError
-import gbp.log
-
-class DscCompareVersions(DpkgCompareVersions):
- def __init__(self):
- DpkgCompareVersions.__init__(self)
-
- def __call__(self, dsc1, dsc2):
- return DpkgCompareVersions.__call__(self, dsc1.version, dsc2.version)
-
-
-class GitImportDsc(gbpc.Command):
- # git-import-dsc should reside in the same directory as git-import-dscs
- # so we can reuse the full path from the later
- cmd = os.path.abspath(__file__[:-1])
- def __init__(self, args):
- if not os.access(self.cmd, os.X_OK):
- raise GbpError, "%s not found - can't import packages" % self.cmd
- gbpc.Command.__init__(self, self.cmd, args)
-
- def importdsc(self, dsc):
- gbpc.Command.__call__(self, [dsc.dscfile])
-
-
-def fetch_snapshots(pkg, downloaddir):
- "Fetch snapshots using debsnap von snapshots.debian.org"
- dscs = None
-
- gbp.log.info("Downloading snapshots of '%s' to '%s'..." % (pkg, downloaddir))
- debsnap = gbpc.Command("debsnap", [ '--force', '--destdir=%s' % (downloaddir), pkg])
- try:
- debsnap()
- except gbpc.CommandExecFailed:
- if debsnap.retcode == 2:
- gbp.log.warn("Some packages failed to download. Continuing.")
- pass
- else:
- raise
-
- dscs = glob.glob(os.path.join(downloaddir, '*.dsc'))
- if not dscs:
- raise GbpError, 'No package downloaded'
-
- return [os.path.join(downloaddir, dsc) for dsc in dscs]
-
-
-def print_help():
- print """Usage:
- git-import-dscs [git-import-dsc options] /path/to/dsc1 [/path/to/dsc2] ...
-or
- git-import-dscs --debsnap [git-import-dsc options] package
-"""
-
-
-def main(argv):
- dirs = dict(top=os.path.abspath(os.curdir))
- dscs = []
- ret = 0
- verbose = False
- dsc_cmp = DscCompareVersions()
- use_debsnap = False
-
- try:
- import_args = argv[1:]
-
- if '--verbose' in import_args:
- verbose = True
- gbp.log.setup(False, verbose)
-
- # Not using Configparser since we want to pass all unknown options
- # unaltered to git-import-dsc
- if '--debsnap' in import_args:
- use_debsnap = True
- import_args.remove('--debsnap')
- if import_args == []:
- print_help()
- raise GbpError
- pkg = import_args[-1]
- import_args = import_args[:-1]
- else:
- for arg in argv[::-1]:
- if arg.endswith('.dsc'):
- dscs.append(parse_dsc(arg))
- import_args.remove(arg)
-
- if not use_debsnap and not dscs:
- print_help()
- raise GbpError
-
- if use_debsnap:
- dirs['tmp'] = os.path.abspath(tempfile.mkdtemp())
- dscs = [ parse_dsc(f) for f in fetch_snapshots(pkg, dirs['tmp']) ]
-
- dscs.sort(cmp=dsc_cmp)
- importer = GitImportDsc(import_args)
-
- try:
- repo = GitRepository('.')
- (clean, out) = repo.is_clean()
- if not clean:
- gbp.log.err("Repository has uncommitted changes, commit these first: ")
- raise GbpError, out
- else:
- dirs['pkg'] = dirs['top']
- except GitRepositoryError:
- # no git repository there yet
- dirs['pkg'] = os.path.join(dirs['top'], dscs[0].pkg)
-
- importer.importdsc(dscs[0])
- os.chdir(dirs['pkg'])
-
- for dsc in dscs[1:]:
- importer.importdsc(dsc)
-
- except (GbpError, gbpc.CommandExecFailed), err:
- if len(err.__str__()):
- gbp.log.err(err)
- ret = 1
- finally:
- if dirs.has_key('tmp'):
- gbpc.RemoveTree(dirs['tmp'])()
- os.chdir(dirs['top'])
-
- if not ret:
- gbp.log.info('Everything imported under %s' % dirs['pkg'])
- return ret
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
-
-# vim:et:ts=4:sw=4:et:sts=4:ai:set list listchars=tab\:»·,trail\:·: