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.
This commit is contained in:
Hans-Christoph Steiner 2014-04-14 23:44:20 -04:00
parent 1ca7949bb1
commit 6b65257516
2 changed files with 32 additions and 26 deletions

View 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 # 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 # standard public repo name of "/fdroid", but can be in up to three levels of
# sub-directories (i.e. /var/www/packagerepos/fdroid). # 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 # If you want to force 'fdroid server' to use a non-standard serverwebroot
#nonstandardwebroot = True #nonstandardwebroot = False
#Wiki details #Wiki details
wiki_protocol = "http" wiki_protocol = "http"

View file

@ -50,19 +50,22 @@ def main():
logging.critical("The only commands currently supported are 'init' and 'update'") logging.critical("The only commands currently supported are 'init' and 'update'")
sys.exit(1) sys.exit(1)
serverwebroot = config['serverwebroot'].rstrip('/').replace('//', '/') if 'serverwebroot' in config:
host, fdroiddir = serverwebroot.split(':') serverwebroot = config['serverwebroot'].rstrip('/').replace('//', '/')
serverrepobase = os.path.basename(fdroiddir) 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: if 'nonstandardwebroot' in config and config['nonstandardwebroot'] == True:
standardwebroot = False standardwebroot = False
else: else:
standardwebroot = True 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'] repodirs = ['repo']
if config['archive_older'] != 0: if config['archive_older'] != 0:
@ -70,24 +73,27 @@ def main():
for repodir in repodirs: for repodir in repodirs:
if args[0] == 'init': 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: 'mkdir -p', fdroiddir + '/' + repodir]) != 0:
sys.exit(1) sys.exit(1)
elif args[0] == 'update': elif args[0] == 'update':
index = os.path.join(repodir, 'index.xml') if serverwebroot != None:
indexjar = os.path.join(repodir, 'index.jar') index = os.path.join(repodir, 'index.xml')
if subprocess.call(['rsync', '-u', '-v', '-r', '--delete', indexjar = os.path.join(repodir, 'index.jar')
'--exclude', index, '--exclude', indexjar, if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
repodir, config['serverwebroot']]) != 0: '--exclude', index, '--exclude', indexjar,
sys.exit(1) repodir, config['serverwebroot']]) != 0:
if subprocess.call(['rsync', '-u', '-v', '-r', '--delete', sys.exit(1)
index, if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
config['serverwebroot'] + '/' + repodir]) != 0: index,
sys.exit(1) config['serverwebroot'] + '/' + repodir]) != 0:
if subprocess.call(['rsync', '-u', '-v', '-r', '--delete', sys.exit(1)
indexjar, if subprocess.call(['rsync', '-u', '-v', '-r', '--delete',
config['serverwebroot'] + '/' + repodir]) != 0: indexjar,
sys.exit(1) config['serverwebroot'] + '/' + repodir]) != 0:
sys.exit(1)
sys.exit(0) sys.exit(0)