mirror of
https://github.com/f-droid/fdroidserver.git
synced 2025-11-05 15:00:30 +03:00
install: download any app from f-droid.org
This commit is contained in:
parent
dfbf54bbba
commit
b9b4ca9778
1 changed files with 33 additions and 18 deletions
|
|
@ -207,7 +207,10 @@ def install_fdroid_apk(privacy_mode=False):
|
||||||
return _('{path} has the wrong fingerprint ({fingerprint})!').format(
|
return _('{path} has the wrong fingerprint ({fingerprint})!').format(
|
||||||
path=f, fingerprint=fingerprint
|
path=f, fingerprint=fingerprint
|
||||||
)
|
)
|
||||||
|
install_apk(f)
|
||||||
|
|
||||||
|
|
||||||
|
def install_apk(f):
|
||||||
if common.config and common.config.get('adb'):
|
if common.config and common.config.get('adb'):
|
||||||
if devices():
|
if devices():
|
||||||
install_apks_to_devices([f])
|
install_apks_to_devices([f])
|
||||||
|
|
@ -288,6 +291,23 @@ def strtobool(val):
|
||||||
return val.lower() in ('', 'y', 'yes', _('yes'), _('true')) # '' is pressing Enter
|
return val.lower() in ('', 'y', 'yes', _('yes'), _('true')) # '' is pressing Enter
|
||||||
|
|
||||||
|
|
||||||
|
def prompt_user(yes, msg):
|
||||||
|
"""Prompt user for yes/no, supporting Enter and Esc as accepted answers."""
|
||||||
|
run_install = yes
|
||||||
|
if yes is None and sys.stdout.isatty():
|
||||||
|
print(msg, flush=True)
|
||||||
|
answer = ''
|
||||||
|
while True:
|
||||||
|
in_char = read_char()
|
||||||
|
if in_char == '\r': # Enter key
|
||||||
|
break
|
||||||
|
if not in_char.isprintable():
|
||||||
|
sys.exit(1)
|
||||||
|
answer += in_char
|
||||||
|
run_install = strtobool(answer)
|
||||||
|
return run_install
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = ArgumentParser(
|
parser = ArgumentParser(
|
||||||
usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]"
|
usage="%(prog)s [options] [APPID[:VERCODE] [APPID[:VERCODE] ...]]"
|
||||||
|
|
@ -334,23 +354,10 @@ def main():
|
||||||
common.get_config()
|
common.get_config()
|
||||||
|
|
||||||
if not options.appid and not options.all:
|
if not options.appid and not options.all:
|
||||||
run_install = options.yes
|
run_install = prompt_user(
|
||||||
if options.yes is None and sys.stdout.isatty():
|
options.yes,
|
||||||
print(
|
_('Would you like to download and install F-Droid.apk via adb? (YES/no)'),
|
||||||
_(
|
)
|
||||||
'Would you like to download and install F-Droid.apk via adb? (YES/no)'
|
|
||||||
),
|
|
||||||
flush=True,
|
|
||||||
)
|
|
||||||
answer = ''
|
|
||||||
while True:
|
|
||||||
in_char = read_char()
|
|
||||||
if in_char == '\r': # Enter key
|
|
||||||
break
|
|
||||||
if not in_char.isprintable():
|
|
||||||
sys.exit(1)
|
|
||||||
answer += in_char
|
|
||||||
run_install = strtobool(answer)
|
|
||||||
if run_install:
|
if run_install:
|
||||||
sys.exit(install_fdroid_apk(options.privacy_mode))
|
sys.exit(install_fdroid_apk(options.privacy_mode))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
@ -358,7 +365,15 @@ def main():
|
||||||
output_dir = 'repo'
|
output_dir = 'repo'
|
||||||
if (options.appid or options.all) and not os.path.isdir(output_dir):
|
if (options.appid or options.all) and not os.path.isdir(output_dir):
|
||||||
logging.error(_("No signed output directory - nothing to do"))
|
logging.error(_("No signed output directory - nothing to do"))
|
||||||
# TODO prompt user if they want to download from f-droid.org
|
run_install = prompt_user(
|
||||||
|
options.yes,
|
||||||
|
_('Would you like to download the app(s) from f-droid.org? (YES/no)'),
|
||||||
|
)
|
||||||
|
if run_install:
|
||||||
|
for appid in options.appid:
|
||||||
|
f = download_apk(appid)
|
||||||
|
install_apk(f)
|
||||||
|
sys.exit(install_fdroid_apk(options.privacy_mode))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
if options.appid:
|
if options.appid:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue