chiark / gitweb /
make `fdroid server` check whether serverwebroot is set
authorHans-Christoph Steiner <hans@eds.org>
Tue, 15 Apr 2014 03:44:20 +0000 (23:44 -0400)
committerHans-Christoph Steiner <hans@eds.org>
Wed, 23 Apr 2014 02:59:27 +0000 (22:59 -0400)
Having serverwebroot optional in `fdroid server` means that it can support
multiple methods of hosting, like cloud storage services.  `fdroid server`
can also then support multiple repo hosting options at the same time.

examples/config.py
fdroidserver/server.py

index 4556233edf8b8e3eb1fdb588e547f56edcc7b19d..dcc283a0b56e8d4da171bc8a0374478ac0b878ee 100644 (file)
@@ -100,10 +100,10 @@ keyaliases['com.example.another.plugin'] = '@com.example.another'
 # generated repo to the server that is it hosted on.  It must end in the
 # standard public repo name of "/fdroid", but can be in up to three levels of
 # sub-directories (i.e. /var/www/packagerepos/fdroid).
-serverwebroot = 'user@example:/var/www/fdroid'
+#serverwebroot = 'user@example:/var/www/fdroid'
 
 # If you want to force 'fdroid server' to use a non-standard serverwebroot
-#nonstandardwebroot = True
+#nonstandardwebroot = False
 
 #Wiki details
 wiki_protocol = "http"
index 83cbce8246b9f79e94488efedcd1dbe8503d1711..6346b77829e40c980ca4689a5e77693972836eac 100644 (file)
@@ -50,19 +50,22 @@ def main():
         logging.critical("The only commands currently supported are 'init' and 'update'")
         sys.exit(1)
 
-    serverwebroot = config['serverwebroot'].rstrip('/').replace('//', '/')
-    host, fdroiddir = serverwebroot.split(':')
-    serverrepobase = os.path.basename(fdroiddir)
+    if 'serverwebroot' in config:
+        serverwebroot = config['serverwebroot'].rstrip('/').replace('//', '/')
+        host, fdroiddir = serverwebroot.split(':')
+        serverrepobase = os.path.basename(fdroiddir)
+        if serverrepobase != 'fdroid' and standardwebroot:
+            logging.error('serverwebroot does not end with "fdroid", '
+                          + 'perhaps you meant one of these:\n\t'
+                          + serverwebroot.rstrip('/') + '/fdroid\n\t'
+                          + serverwebroot.rstrip('/').rstrip(serverrepobase) + 'fdroid')
+            sys.exit(1)
+    else:
+        serverwebroot = None
     if 'nonstandardwebroot' in config and config['nonstandardwebroot'] == True:
         standardwebroot = False
     else:
         standardwebroot = True
-    if serverrepobase != 'fdroid' and standardwebroot:
-        print('ERROR: serverwebroot does not end with "fdroid", '
-              + 'perhaps you meant one of these:\n\t'
-              + serverwebroot.rstrip('/') + '/fdroid\n\t'
-              + serverwebroot.rstrip('/').rstrip(serverrepobase) + 'fdroid')
-        sys.exit(1)
 
     repodirs = ['repo']
     if config['archive_older'] != 0:
@@ -70,24 +73,27 @@ def main():
 
     for repodir in repodirs:
         if args[0] == 'init':
-            if subprocess.call(['ssh', '-v', host,
+            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':
-            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:
-                sys.exit(1)
+            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:
+                    sys.exit(1)
 
     sys.exit(0)