chiark / gitweb /
Switch all headers to python3
[fdroidserver.git] / fdroidserver / gpgsign.py
index 240e1bf3df8c4f0c77e8e5c965b21cb78375143a..f27b9651c15d019eec7e1aad614df2197fb7c8c5 100644 (file)
@@ -1,9 +1,7 @@
-#!/usr/bin/env python2
-# -*- coding: utf-8 -*-
+#!/usr/bin/env python3
 #
-# publish.py - part of the FDroid server tools
-# Copyright (C) 2010-2014, Ciaran Gultnieks, ciaran@ciarang.com
-# Copyright (C) 2013-2014 Daniel Martí <mvdan@mvdan.cc>
+# gpgsign.py - part of the FDroid server tools
+# Copyright (C) 2014, Ciaran Gultnieks, ciaran@ciarang.com
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU Affero General Public License as published by
@@ -21,7 +19,7 @@
 import sys
 import os
 import glob
-from optparse import OptionParser
+from argparse import ArgumentParser
 import logging
 
 import common
@@ -36,37 +34,43 @@ def main():
     global config, options
 
     # Parse command line...
-    parser = OptionParser(usage="Usage: %prog [options]")
-    parser.add_option("-v", "--verbose", action="store_true", default=False,
-                      help="Spew out even more information than normal")
-    parser.add_option("-q", "--quiet", action="store_true", default=False,
-                      help="Restrict output to warnings and errors")
-    (options, args) = parser.parse_args()
+    parser = ArgumentParser(usage="%(prog)s [options]")
+    common.setup_global_opts(parser)
+    options = parser.parse_args()
 
     config = common.read_config(options)
 
-    output_dir = 'repo'
-    if not os.path.isdir(output_dir):
-        logging.error("Missing output directory")
-        sys.exit(1)
+    repodirs = ['repo']
+    if config['archive_older'] != 0:
+        repodirs.append('archive')
 
-    # Process any apks that are waiting to be signed...
-    for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))):
+    for output_dir in repodirs:
+        if not os.path.isdir(output_dir):
+            logging.error("Missing output directory '" + output_dir + "'")
+            sys.exit(1)
 
-        apkfilename = os.path.basename(apkfile)
-        sigfilename = apkfilename + ".txt"
-        sigpath = os.path.join(output_dir, sigfilename)
+        # Process any apks that are waiting to be signed...
+        for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))):
 
-        if not os.path.exists(sigpath):
-            p = FDroidPopen(['gpg', '-a',
-                             '--output', sigpath,
-                             '--detach-sig',
-                             os.path.join(output_dir, apkfilename)])
-            if p.returncode != 0:
-                logging.error("Signing failed.")
-                sys.exit(1)
+            apkfilename = os.path.basename(apkfile)
+            sigfilename = apkfilename + ".asc"
+            sigpath = os.path.join(output_dir, sigfilename)
 
-            logging.info('Signed ' + apkfilename)
+            if not os.path.exists(sigpath):
+                gpgargs = ['gpg', '-a',
+                           '--output', sigpath,
+                           '--detach-sig']
+                if 'gpghome' in config:
+                    gpgargs.extend(['--homedir', config['gpghome']])
+                if 'gpgkey' in config:
+                    gpgargs.extend(['--local-user', config['gpgkey']])
+                gpgargs.append(os.path.join(output_dir, apkfilename))
+                p = FDroidPopen(gpgargs)
+                if p.returncode != 0:
+                    logging.error("Signing failed.")
+                    sys.exit(1)
+
+                logging.info('Signed ' + apkfilename)
 
 
 if __name__ == "__main__":