mirror of
https://gitlab.com/fdroid/fdroidserver.git
synced 2024-10-05 18:50:09 +02:00
Add 'fdroid install', more rewriting
This commit is contained in:
parent
a4780c2107
commit
93d8d23cee
@ -45,6 +45,16 @@ __signed_package() {
|
|||||||
COMPREPLY=( $( compgen -W "$files" -- $cur ) )
|
COMPREPLY=( $( compgen -W "$files" -- $cur ) )
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__signed_vercode() {
|
||||||
|
local p
|
||||||
|
p=${cur:0:-1}
|
||||||
|
|
||||||
|
files=( repo/${p}_*.apk )
|
||||||
|
files=( ${files[@]#*_} )
|
||||||
|
files=${files[@]%.apk}
|
||||||
|
COMPREPLY=( $( compgen -P "${p}:" -W "$files" -- $cur ) )
|
||||||
|
}
|
||||||
|
|
||||||
__vercode() {
|
__vercode() {
|
||||||
local p
|
local p
|
||||||
p=${cur:0:-1}
|
p=${cur:0:-1}
|
||||||
@ -88,6 +98,22 @@ __complete_build() {
|
|||||||
__complete_options
|
__complete_options
|
||||||
}
|
}
|
||||||
|
|
||||||
|
__complete_install() {
|
||||||
|
opts="-h -v"
|
||||||
|
lopts="--help --verbose --all"
|
||||||
|
case "${cur}" in
|
||||||
|
-*)
|
||||||
|
__complete_options
|
||||||
|
return 0;;
|
||||||
|
*:)
|
||||||
|
__signed_vercode
|
||||||
|
return 0;;
|
||||||
|
*)
|
||||||
|
__signed_package
|
||||||
|
return 0;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
__complete_update() {
|
__complete_update() {
|
||||||
opts="-h -c -v -q -b -i -I -e -w"
|
opts="-h -c -v -q -b -i -I -e -w"
|
||||||
lopts="--help --createmeta --verbose --quiet --buildreport --interactive
|
lopts="--help --createmeta --verbose --quiet --buildreport --interactive
|
||||||
@ -188,7 +214,8 @@ __complete_init() {
|
|||||||
_fdroid() {
|
_fdroid() {
|
||||||
local cmd cmds aliased
|
local cmd cmds aliased
|
||||||
cmd=${COMP_WORDS[1]}
|
cmd=${COMP_WORDS[1]}
|
||||||
cmds=" build init update publish checkupdates import rewritemeta scanner verify stats server "
|
cmds=" build init install update publish checkupdates import
|
||||||
|
rewritemeta scanner verify stats server "
|
||||||
aliased=false
|
aliased=false
|
||||||
|
|
||||||
for c in $cmds; do eval "_fdroid_${c} () {
|
for c in $cmds; do eval "_fdroid_${c} () {
|
||||||
@ -201,24 +228,6 @@ _fdroid() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_fdroid_build_project() {
|
|
||||||
local cur prev cmds opts lopts aliased
|
|
||||||
__fdroid_init
|
|
||||||
aliased=true
|
|
||||||
(( $COMP_CWORD == 1 )) && prev="-p"
|
|
||||||
|
|
||||||
__complete_build
|
|
||||||
}
|
|
||||||
|
|
||||||
_fdroid_checkupdates_project() {
|
|
||||||
local cur prev cmds opts lopts aliased
|
|
||||||
__fdroid_init
|
|
||||||
aliased=true
|
|
||||||
(( $COMP_CWORD == 1 )) && prev="-p"
|
|
||||||
|
|
||||||
__complete_checkupdates
|
|
||||||
}
|
|
||||||
|
|
||||||
_fd-commit() {
|
_fd-commit() {
|
||||||
__package
|
__package
|
||||||
}
|
}
|
||||||
|
1
fdroid
1
fdroid
@ -22,6 +22,7 @@ import sys
|
|||||||
commands = [
|
commands = [
|
||||||
"build",
|
"build",
|
||||||
"init",
|
"init",
|
||||||
|
"install",
|
||||||
"update",
|
"update",
|
||||||
"publish",
|
"publish",
|
||||||
"verify",
|
"verify",
|
||||||
|
@ -132,7 +132,12 @@ def read_app_args(args, options, allapps):
|
|||||||
print "No such package: %s" % p
|
print "No such package: %s" % p
|
||||||
raise Exception("Found invalid app ids in arguments")
|
raise Exception("Found invalid app ids in arguments")
|
||||||
|
|
||||||
apps = [app for app in apps if (options.force or not app['Disabled']) and
|
if hasattr(options, "force"):
|
||||||
|
force = options.force
|
||||||
|
else:
|
||||||
|
force = False
|
||||||
|
|
||||||
|
apps = [app for app in apps if (force or not app['Disabled']) and
|
||||||
app['builds'] and len(app['Repo Type']) > 0 and len(app['builds']) > 0]
|
app['builds'] and len(app['Repo Type']) > 0 and len(app['builds']) > 0]
|
||||||
if len(apps) == 0:
|
if len(apps) == 0:
|
||||||
raise Exception("No apps to process.")
|
raise Exception("No apps to process.")
|
||||||
|
87
fdroidserver/install.py
Normal file
87
fdroidserver/install.py
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
#!/usr/bin/env python2
|
||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
#
|
||||||
|
# verify.py - part of the FDroid server tools
|
||||||
|
# Copyright (C) 2013, Ciaran Gultnieks, ciaran@ciarang.com
|
||||||
|
#
|
||||||
|
# This program is free software: you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU Affero General Public License as published by
|
||||||
|
# the Free Software Foundation, either version 3 of the License, or
|
||||||
|
# (at your option) any later version.
|
||||||
|
#
|
||||||
|
# This program is distributed in the hope that it will be useful,
|
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
# GNU Affero General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU Affero General Public License
|
||||||
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
from optparse import OptionParser
|
||||||
|
|
||||||
|
import common
|
||||||
|
from common import FDroidPopen
|
||||||
|
import metadata
|
||||||
|
|
||||||
|
options = None
|
||||||
|
config = None
|
||||||
|
|
||||||
|
def devices():
|
||||||
|
p = FDroidPopen(["adb", "devices"])
|
||||||
|
if p.returncode != 0:
|
||||||
|
raise Exception("An error occured when finding devices: %s" % p.stderr)
|
||||||
|
devs = []
|
||||||
|
return [l.split()[0] for l in p.stdout.splitlines()[1:-1]]
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
|
||||||
|
global options, config
|
||||||
|
|
||||||
|
# Parse command line...
|
||||||
|
parser = OptionParser()
|
||||||
|
parser.add_option("-v", "--verbose", action="store_true", default=False,
|
||||||
|
help="Spew out even more information than normal")
|
||||||
|
(options, args) = parser.parse_args()
|
||||||
|
|
||||||
|
config = common.read_config(options)
|
||||||
|
|
||||||
|
output_dir = 'repo'
|
||||||
|
if not os.path.isdir(output_dir):
|
||||||
|
print "No signed output directory - nothing to do"
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
|
# Get all apps...
|
||||||
|
allapps = metadata.read_metadata()
|
||||||
|
|
||||||
|
apps = common.read_app_args(args, options, allapps)
|
||||||
|
|
||||||
|
for app in apps:
|
||||||
|
for thisbuild in app['builds']:
|
||||||
|
apk = os.path.join(output_dir, common.getapkname(app, thisbuild))
|
||||||
|
if not os.path.exists(apk):
|
||||||
|
raise Exception("No such signed apk: %s" % apk)
|
||||||
|
continue
|
||||||
|
# Get device list each time to avoid device not found errors
|
||||||
|
devs = devices()
|
||||||
|
if not devs:
|
||||||
|
raise Exception("No attached devices found")
|
||||||
|
print "Installing %s..." % apk
|
||||||
|
for dev in devs:
|
||||||
|
print "Installing %s on %s..." % (apk, dev)
|
||||||
|
p = FDroidPopen(["adb", "-s", dev, "install", apk ])
|
||||||
|
fail= ""
|
||||||
|
for line in p.stdout.splitlines():
|
||||||
|
if line.startswith("Failure"):
|
||||||
|
fail = line[9:-1]
|
||||||
|
if fail:
|
||||||
|
raise Exception("Failed to install %s on %s: %s" % (
|
||||||
|
apk, dev, fail))
|
||||||
|
|
||||||
|
print "\nFinished"
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
main()
|
||||||
|
|
Loading…
Reference in New Issue
Block a user