From 6b65257516b324f94d81860874ab13fbe34b7916 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Mon, 14 Apr 2014 23:44:20 -0400 Subject: [PATCH] make `fdroid server` check whether serverwebroot is set 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 | 4 ++-- fdroidserver/server.py | 54 +++++++++++++++++++++++------------------- 2 files changed, 32 insertions(+), 26 deletions(-) diff --git a/examples/config.py b/examples/config.py index 4556233e..dcc283a0 100644 --- a/examples/config.py +++ b/examples/config.py @@ -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" diff --git a/fdroidserver/server.py b/fdroidserver/server.py index 83cbce82..6346b778 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -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) -- 2.30.2