mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
Merge branch '391-fdroid-publish-unknown-execption' into 'master'
better error message in publish when repo_key is not set Closes #391 See merge request fdroid/fdroidserver!352
This commit is contained in:
commit
3407c67041
@ -302,6 +302,30 @@ def read_config(opts, config_file='config.py'):
|
|||||||
return config
|
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):
|
def find_sdk_tools_cmd(cmd):
|
||||||
'''find a working path to a tool from the Android SDK'''
|
'''find a working path to a tool from the Android SDK'''
|
||||||
|
|
||||||
|
@ -63,26 +63,8 @@ def make(apps, sortedids, apks, repodir, archive):
|
|||||||
return "fdroid.app:" + appid, apps[appid].Name
|
return "fdroid.app:" + appid, apps[appid].Name
|
||||||
raise MetaDataException("Cannot resolve app id " + appid)
|
raise MetaDataException("Cannot resolve app id " + appid)
|
||||||
|
|
||||||
nosigningkey = False
|
|
||||||
if not common.options.nosign:
|
if not common.options.nosign:
|
||||||
if 'repo_keyalias' not in common.config:
|
common.assert_config_keystore(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")
|
|
||||||
|
|
||||||
repodict = collections.OrderedDict()
|
repodict = collections.OrderedDict()
|
||||||
repodict['timestamp'] = datetime.utcnow()
|
repodict['timestamp'] = datetime.utcnow()
|
||||||
|
@ -157,6 +157,8 @@ def main():
|
|||||||
logging.critical(_('Java JDK not found! Install in standard location or set java_paths!'))
|
logging.critical(_('Java JDK not found! Install in standard location or set java_paths!'))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
|
common.assert_config_keystore(config)
|
||||||
|
|
||||||
log_dir = 'logs'
|
log_dir = 'logs'
|
||||||
if not os.path.isdir(log_dir):
|
if not os.path.isdir(log_dir):
|
||||||
logging.info(_("Creating log directory"))
|
logging.info(_("Creating log directory"))
|
||||||
|
@ -25,6 +25,7 @@ if localmodule not in sys.path:
|
|||||||
import fdroidserver.signindex
|
import fdroidserver.signindex
|
||||||
import fdroidserver.common
|
import fdroidserver.common
|
||||||
import fdroidserver.metadata
|
import fdroidserver.metadata
|
||||||
|
from testcommon import TmpCwd
|
||||||
from fdroidserver.exception import FDroidException
|
from fdroidserver.exception import FDroidException
|
||||||
|
|
||||||
|
|
||||||
@ -39,6 +40,20 @@ class CommonTest(unittest.TestCase):
|
|||||||
os.makedirs(self.tmpdir)
|
os.makedirs(self.tmpdir)
|
||||||
os.chdir(self.basedir)
|
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):
|
def _set_build_tools(self):
|
||||||
build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools')
|
build_tools = os.path.join(fdroidserver.common.config['sdk_path'], 'build-tools')
|
||||||
if os.path.exists(build_tools):
|
if os.path.exists(build_tools):
|
||||||
|
Loading…
Reference in New Issue
Block a user