chiark / gitweb /
reorg `fdroid server` to allow for multiple server types
authorHans-Christoph Steiner <hans@eds.org>
Wed, 16 Apr 2014 00:00:31 +0000 (20:00 -0400)
committerHans-Christoph Steiner <hans@eds.org>
Wed, 23 Apr 2014 02:59:27 +0000 (22:59 -0400)
Right now, ssh+rsync is the only supported server upload type.  Things like
cloud storage services are useful storage bins for fdroid repos since they
are often not blocked while specific websites like Google Play are.

fdroidserver/server.py

index 6346b77829e40c980ca4689a5e77693972836eac..b06866ab6b3d34709fc16958c9937b00f6eeabd7 100644 (file)
@@ -28,8 +28,23 @@ config = None
 options = None
 
 
-def main():
+def update_serverwebroot(repo_section):
+    index = os.path.join(repo_section, 'index.xml')
+    indexjar = os.path.join(repo_section, 'index.jar')
+    if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
+                        '--exclude', index, '--exclude', indexjar,
+                        repo_section, config['serverwebroot']]) != 0:
+        sys.exit(1)
+    if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
+                        index,
+                        config['serverwebroot'] + '/' + repo_section]) != 0:
+        sys.exit(1)
+    if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
+                        indexjar,
+                        config['serverwebroot'] + '/' + repo_section]) != 0:
+        sys.exit(1)
 
+def main():
     global config, options
 
     # Parse command line...
@@ -50,6 +65,11 @@ def main():
         logging.critical("The only commands currently supported are 'init' and 'update'")
         sys.exit(1)
 
+    if 'nonstandardwebroot' in config and config['nonstandardwebroot'] == True:
+        standardwebroot = False
+    else:
+        standardwebroot = True
+
     if 'serverwebroot' in config:
         serverwebroot = config['serverwebroot'].rstrip('/').replace('//', '/')
         host, fdroiddir = serverwebroot.split(':')
@@ -62,38 +82,25 @@ def main():
             sys.exit(1)
     else:
         serverwebroot = None
-    if 'nonstandardwebroot' in config and config['nonstandardwebroot'] == True:
-        standardwebroot = False
-    else:
-        standardwebroot = True
 
-    repodirs = ['repo']
+    if serverwebroot == None:
+        logging.warn('No serverwebroot set! Edit your config.py to set one.')
+        sys.exit(1)
+
+    repo_sections = ['repo']
     if config['archive_older'] != 0:
-        repodirs.append('archive')
-
-    for repodir in repodirs:
-        if args[0] == 'init':
-            if serverwebroot == None:
-                logging.warn('No serverwebroot set! Edit your config.py to set it.')
-            elif subprocess.call(['ssh', '-v', host,
-                                'mkdir -p', fdroiddir + '/' + repodir]) != 0:
-                sys.exit(1)
-        elif args[0] == 'update':
-            if serverwebroot != None:
-                index = os.path.join(repodir, 'index.xml')
-                indexjar = os.path.join(repodir, 'index.jar')
-                if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
-                                    '--exclude', index, '--exclude', indexjar,
-                                    repodir, config['serverwebroot']]) != 0:
-                    sys.exit(1)
-                if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
-                                    index,
-                                    config['serverwebroot'] + '/' + repodir]) != 0:
-                    sys.exit(1)
-                if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
-                                    indexjar,
-                                    config['serverwebroot'] + '/' + repodir]) != 0:
+        repo_sections.append('archive')
+
+    if args[0] == 'init':
+        if serverwebroot != None:
+            for repo_section in repo_sections:
+                if subprocess.call(['ssh', '-v', host,
+                                    'mkdir -p', fdroiddir + '/' + repo_section]) != 0:
                     sys.exit(1)
+    elif args[0] == 'update':
+        for repo_section in repo_sections:
+            if serverwebroot != None:
+                update_serverwebroot(repo_section)
 
     sys.exit(0)