mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-09-14 06:52:39 +03:00
split out mirrors data structure into standalone, tested function
This commit is contained in:
parent
9749282b44
commit
cff3364fdf
2 changed files with 36 additions and 17 deletions
|
@ -486,14 +486,7 @@ def read_config(opts=None):
|
||||||
fill_config_defaults(config)
|
fill_config_defaults(config)
|
||||||
|
|
||||||
if 'serverwebroot' in config:
|
if 'serverwebroot' in config:
|
||||||
if isinstance(config['serverwebroot'], str):
|
roots = parse_mirrors_config(config['serverwebroot'])
|
||||||
roots = [{'url': config['serverwebroot']}]
|
|
||||||
elif all(isinstance(item, str) for item in config['serverwebroot']):
|
|
||||||
roots = [{'url': i} for i in config['serverwebroot']]
|
|
||||||
elif all(isinstance(item, dict) for item in config['serverwebroot']):
|
|
||||||
roots = config['serverwebroot']
|
|
||||||
else:
|
|
||||||
raise TypeError(_('only accepts strings, lists, and tuples'))
|
|
||||||
rootlist = []
|
rootlist = []
|
||||||
for d in roots:
|
for d in roots:
|
||||||
# since this is used with rsync, where trailing slashes have
|
# since this is used with rsync, where trailing slashes have
|
||||||
|
@ -506,15 +499,7 @@ def read_config(opts=None):
|
||||||
config['serverwebroot'] = rootlist
|
config['serverwebroot'] = rootlist
|
||||||
|
|
||||||
if 'servergitmirrors' in config:
|
if 'servergitmirrors' in config:
|
||||||
if isinstance(config['servergitmirrors'], str):
|
config['servergitmirrors'] = parse_mirrors_config(config['servergitmirrors'])
|
||||||
roots = [{"url": config['servergitmirrors']}]
|
|
||||||
elif all(isinstance(item, str) for item in config['servergitmirrors']):
|
|
||||||
roots = [{'url': i} for i in config['servergitmirrors']]
|
|
||||||
elif all(isinstance(item, dict) for item in config['servergitmirrors']):
|
|
||||||
roots = config['servergitmirrors']
|
|
||||||
else:
|
|
||||||
raise TypeError(_('only accepts strings, lists, and tuples'))
|
|
||||||
config['servergitmirrors'] = roots
|
|
||||||
|
|
||||||
limit = config['git_mirror_size_limit']
|
limit = config['git_mirror_size_limit']
|
||||||
config['git_mirror_size_limit'] = parse_human_readable_size(limit)
|
config['git_mirror_size_limit'] = parse_human_readable_size(limit)
|
||||||
|
@ -557,6 +542,18 @@ def read_config(opts=None):
|
||||||
return config
|
return config
|
||||||
|
|
||||||
|
|
||||||
|
def parse_mirrors_config(mirrors):
|
||||||
|
"""Mirrors can be specified as a string, list of strings, or dictionary map."""
|
||||||
|
if isinstance(mirrors, str):
|
||||||
|
return [{"url": mirrors}]
|
||||||
|
elif all(isinstance(item, str) for item in mirrors):
|
||||||
|
return [{'url': i} for i in mirrors]
|
||||||
|
elif all(isinstance(item, dict) for item in mirrors):
|
||||||
|
return mirrors
|
||||||
|
else:
|
||||||
|
raise TypeError(_('only accepts strings, lists, and tuples'))
|
||||||
|
|
||||||
|
|
||||||
def file_entry(filename, hash_value=None):
|
def file_entry(filename, hash_value=None):
|
||||||
meta = {}
|
meta = {}
|
||||||
meta["name"] = "/" + filename.split("/", 1)[1]
|
meta["name"] = "/" + filename.split("/", 1)[1]
|
||||||
|
|
|
@ -12,6 +12,7 @@ import logging
|
||||||
import optparse
|
import optparse
|
||||||
import os
|
import os
|
||||||
import re
|
import re
|
||||||
|
import ruamel.yaml
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
@ -2892,6 +2893,27 @@ class CommonTest(unittest.TestCase):
|
||||||
fdroidserver.common.read_config()['serverwebroot'],
|
fdroidserver.common.read_config()['serverwebroot'],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_parse_mirrors_config_str(self):
|
||||||
|
s = 'foo@example.com:/var/www'
|
||||||
|
mirrors = ruamel.yaml.YAML(typ='safe').load("""'%s'""" % s)
|
||||||
|
self.assertEqual(
|
||||||
|
[{'url': s}], fdroidserver.common.parse_mirrors_config(mirrors)
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_parse_mirrors_config_list(self):
|
||||||
|
s = 'foo@example.com:/var/www'
|
||||||
|
mirrors = ruamel.yaml.YAML(typ='safe').load("""- '%s'""" % s)
|
||||||
|
self.assertEqual(
|
||||||
|
[{'url': s}], fdroidserver.common.parse_mirrors_config(mirrors)
|
||||||
|
)
|
||||||
|
|
||||||
|
def test_parse_mirrors_config_dict(self):
|
||||||
|
s = 'foo@example.com:/var/www'
|
||||||
|
mirrors = ruamel.yaml.YAML(typ='safe').load("""- url: '%s'""" % s)
|
||||||
|
self.assertEqual(
|
||||||
|
[{'url': s}], fdroidserver.common.parse_mirrors_config(mirrors)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
os.chdir(os.path.dirname(__file__))
|
os.chdir(os.path.dirname(__file__))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue