return config
+def assert_config_keystore(config):
+ """Check weather keystore is configured correctly and raise exception if not."""
+
+ nosigningkey = False
+ if 'repo_keyalias' not in config:
+ nosigningkey = True
+ logging.critical(_("'repo_keyalias' not found in config.py!"))
+ if 'keystore' not in config:
+ nosigningkey = True
+ logging.critical(_("'keystore' not found in config.py!"))
+ elif not os.path.exists(config['keystore']):
+ nosigningkey = True
+ logging.critical("'" + config['keystore'] + "' does not exist!")
+ if 'keystorepass' not in config:
+ nosigningkey = True
+ logging.critical(_("'keystorepass' not found in config.py!"))
+ if 'keypass' not in config:
+ nosigningkey = True
+ logging.critical(_("'keypass' not found in config.py!"))
+ if nosigningkey:
+ raise FDroidException("This command requires a signing key, " +
+ "you can create one using: fdroid update --create-key")
+
+
def find_sdk_tools_cmd(cmd):
'''find a working path to a tool from the Android SDK'''
return "fdroid.app:" + appid, apps[appid].Name
raise MetaDataException("Cannot resolve app id " + appid)
- nosigningkey = False
if not common.options.nosign:
- if 'repo_keyalias' not in common.config:
- nosigningkey = True
- logging.critical(_("'repo_keyalias' not found in config.py!"))
- if 'keystore' not in common.config:
- nosigningkey = True
- logging.critical(_("'keystore' not found in config.py!"))
- if 'keystorepass' not in common.config:
- nosigningkey = True
- logging.critical(_("'keystorepass' not found in config.py!"))
- if 'keypass' not in common.config:
- nosigningkey = True
- logging.critical(_("'keypass' not found in config.py!"))
- if not os.path.exists(common.config['keystore']):
- nosigningkey = True
- logging.critical("'" + common.config['keystore'] + "' does not exist!")
- if nosigningkey:
- raise FDroidException("`fdroid update` requires a signing key, " +
- "you can create one using: fdroid update --create-key")
+ common.assert_config_keystore(common.config)
repodict = collections.OrderedDict()
repodict['timestamp'] = datetime.utcnow()
logging.critical(_('Java JDK not found! Install in standard location or set java_paths!'))
sys.exit(1)
+ common.assert_config_keystore(config)
+
log_dir = 'logs'
if not os.path.isdir(log_dir):
logging.info(_("Creating log directory"))
import fdroidserver.signindex
import fdroidserver.common
import fdroidserver.metadata
+from testcommon import TmpCwd
from fdroidserver.exception import FDroidException
os.makedirs(self.tmpdir)
os.chdir(self.basedir)
+ def test_assert_config_keystore(self):
+ with tempfile.TemporaryDirectory() as tmpdir, TmpCwd(tmpdir):
+ with self.assertRaises(FDroidException):
+ fdroidserver.common.assert_config_keystore({})
+
+ with tempfile.TemporaryDirectory() as tmpdir, TmpCwd(tmpdir):
+ c = {'repo_keyalias': 'localhost',
+ 'keystore': 'keystore.jks',
+ 'keystorepass': '12345',
+ 'keypass': '12345'}
+ with open('keystore.jks', 'w'):
+ pass
+ fdroidserver.common.assert_config_keystore(c)
+
def _set_build_tools(self):
build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools')
if os.path.exists(build_tools):