From 34a1d857659b5aa0456a33a603f12060f45704ab Mon Sep 17 00:00:00 2001 From: Jochen Schmitt Date: Tue, 21 Sep 2010 21:20:13 +0200 Subject: Implementing a retire command --- src/fedpkg.bash | 8 ++++++-- src/fedpkg.py | 21 +++++++++++++++++++++ src/pyfedpkg/__init__.py | 22 ++++++++++++++++++++++ 3 files changed, 49 insertions(+), 2 deletions(-) diff --git a/src/fedpkg.bash b/src/fedpkg.bash index 8bf97ec..c0f3fca 100644 --- a/src/fedpkg.bash +++ b/src/fedpkg.bash @@ -36,8 +36,8 @@ _fedpkg() local options="--help -v -q" local options_value="--user --path" local commands="build chain-build ci clean clog clone co commit compile diff gimmespec giturl help \ - import install lint local mockbuild new new-sources patch prep pull push scratch-build sources srpm \ - switch-branch tag tag-request unused-patches update upload verrel" + import install lint local mockbuild new new-sources patch prep pull push retire scratch-build sources \ + srpm switch-branch tag tag-request unused-patches update upload verrel" # parse main options and get command @@ -165,6 +165,10 @@ _fedpkg() tag-request) options_string="--desc --build" ;; + retire) + options="--push" + after_more=true + ;; srpm) options="--md5" ;; diff --git a/src/fedpkg.py b/src/fedpkg.py index 20dc774..5f3219e 100755 --- a/src/fedpkg.py +++ b/src/fedpkg.py @@ -630,6 +630,15 @@ def push(args): log.error('Could not push: %s' % e) sys.exit(1) +def retire(args): + try: + pyfedpkg.retire(args.path, args.msg) + except pyfedpkg.FedpkgError, e: + log.error('Could not retire package: %s' % e) + sys.exit(1) + if args.push: + push() + def scratchbuild(args): # A scratch build is just a build with --scratch args.scratch = True @@ -1081,6 +1090,18 @@ packages will be built sequentially. help = 'Push changes to remote repository') parser_push.set_defaults(command = push) + # retire stuff + parser_retire = subparsers.add_parser('retire', + help = 'Retire a package') + parser_retire.add_argument('-p', '--push', + default = False, + action = 'store_true', + help = 'Push changes to remote repository') + parser_retire.add_argument('msg', + nargs = '?', + help = 'Message for retiring the package') + parser_retire.set_defaults(command = retire) + # scratch build parser_scratchbuild = subparsers.add_parser('scratch-build', help = 'Request scratch build', diff --git a/src/pyfedpkg/__init__.py b/src/pyfedpkg/__init__.py index 474053c..cfd9f3b 100644 --- a/src/pyfedpkg/__init__.py +++ b/src/pyfedpkg/__init__.py @@ -696,6 +696,28 @@ def push(path=None): _run_command(cmd, cwd=path) return +def retire(path, message=None): + """Retire a Fedora package""" + + cmd = ['git', 'rm', '-rf', path] + _run_command(cmd, cwd=path) + + if message: + msg = message + else: + msg = 'Package is retired' + + fd = open(os.path.join(path, 'dead.package'), 'w') + fd.write(msg) + fd.close() + + cmd = ['git', 'add', os.path.join(path, 'dead.package')] + _run_command(cmd, cwd=path) + + commit (path, msg) + + return + def sources(path, outdir=None): """Download source files""" -- cgit