From d564c37c35b4b3bc77d56ffbb7a63518ca7d5132 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:46:51 -0400 Subject: [PATCH 01/18] fix "fdroidserver/build.py:41: redefinition of unused 'paramiko' from line 39" pyflakes gave this error based on the `paramiko = None` statement. I used a different way to test whether paramiko was successfully imported that is directly based on the relevant Exceptions. --- fdroidserver/build.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/fdroidserver/build.py b/fdroidserver/build.py index ccb84605..d062cc9e 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -37,8 +37,8 @@ from common import BuildException, VCSException, FDroidPopen, SilentPopen try: import paramiko -except: - paramiko = None +except ImportError: + pass def get_builder_vm_id(): vd = os.path.join('builder', '.vagrant') @@ -244,7 +244,9 @@ def release_vm(): def build_server(app, thisbuild, vcs, build_dir, output_dir, force): """Do a build on the build server.""" - if not paramiko: + try: + paramiko + except NameError: raise BuildException("Paramiko is required to use the buildserver") if options.verbose: logging.getLogger("paramiko").setLevel(logging.DEBUG) From fccb990521b7c67442bf253e5581a6517cabaa8e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:02:40 -0400 Subject: [PATCH 02/18] fix PEP8 "E711 comparison to None should be 'if cond is None:'" --- fdroidserver/common.py | 4 ++-- fdroidserver/init.py | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index e30d188c..4803c4ff 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -121,7 +121,7 @@ def read_config(opts, config_file='config.py'): return config def test_sdk_exists(c): - if c['sdk_path'] == None: + if c['sdk_path'] is None: # c['sdk_path'] is set to the value of ANDROID_HOME by default logging.critical('No Android SDK found! ANDROID_HOME is not set and sdk_path is not in config.py!') logging.info('You can use ANDROID_HOME to set the path to your SDK, i.e.:') @@ -145,7 +145,7 @@ def write_password_file(pwtype, password=None): ''' filename = '.fdroid.' + pwtype + '.txt' fd = os.open(filename, os.O_CREAT | os.O_TRUNC | os.O_WRONLY, 0600) - if password == None: + if password is None: os.write(fd, config[pwtype]) else: os.write(fd, password) diff --git a/fdroidserver/init.py b/fdroidserver/init.py index bf4a05fa..7c1dd243 100644 --- a/fdroidserver/init.py +++ b/fdroidserver/init.py @@ -124,14 +124,14 @@ def main(): # track down where the Android SDK is, the default is to use the path set # in ANDROID_HOME if that exists, otherwise None - if options.android_home != None: + if options.android_home is not None: test_config['sdk_path'] = options.android_home elif not common.test_sdk_exists(test_config): # if neither --android-home nor the default sdk_path exist, prompt the user default_sdk_path = '/opt/android-sdk' while not options.no_prompt: s = raw_input('Enter the path to the Android SDK (' + default_sdk_path + ') here:\n> ') - if re.match('^\s*$', s) != None: + if re.match('^\s*$', s) is not None: test_config['sdk_path'] = default_sdk_path else: test_config['sdk_path'] = s @@ -246,7 +246,7 @@ def main(): password = genpassword() write_to_config('keystorepass', password) write_to_config('keypass', password) - if options.repo_keyalias == None: + if options.repo_keyalias is None: repo_keyalias = socket.getfqdn() write_to_config('repo_keyalias', repo_keyalias) if not options.distinguished_name: @@ -260,7 +260,7 @@ def main(): logging.info(' Android SDK Build Tools:\t' + os.path.dirname(aapt)) logging.info(' Android NDK (optional):\t' + ndk_path) logging.info(' Keystore for signing key:\t' + keystore) - if repo_keyalias != None: + if repo_keyalias is not None: logging.info(' Alias for key in store:\t' + repo_keyalias) logging.info('\nTo complete the setup, add your APKs to "' + os.path.join(fdroiddir, 'repo') + '"' + From f1812d5935a7be71c21cb86782f5acc07243022d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:06:59 -0400 Subject: [PATCH 03/18] fix PEP8 "E203 whitespace before ':' or ','" --- examples/config.py | 4 ++-- fdroidserver/checkupdates.py | 2 +- fdroidserver/common.py | 4 ++-- fdroidserver/install.py | 4 ++-- fdroidserver/metadata.py | 24 ++++++++++++------------ fdroidserver/update.py | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/examples/config.py b/examples/config.py index e04f8a93..b651ca7d 100644 --- a/examples/config.py +++ b/examples/config.py @@ -141,6 +141,6 @@ build_server_always = False # Limit in number of characters that fields can take up # Only the fields listed here are supported, defaults shown char_limits = { - 'Summary' : 50, - 'Description' : 1500 + 'Summary': 50, + 'Description': 1500 } diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index d20ebefc..8ef0c4d3 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -268,7 +268,7 @@ def check_repotrunk(app, branch=None): def check_gplay(app): time.sleep(15) url = 'https://play.google.com/store/apps/details?id=' + app['id'] - headers = {'User-Agent' : 'Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0'} + headers = {'User-Agent': 'Mozilla/5.0 (X11; Linux i686; rv:18.0) Gecko/20100101 Firefox/18.0'} req = urllib2.Request(url, None, headers) try: resp = urllib2.urlopen(req, None, 20) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 4803c4ff..46b0b917 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -50,8 +50,8 @@ def get_default_config(): 'keystore': '$HOME/.local/share/fdroidserver/keystore.jks', 'smartcardoptions': [], 'char_limits': { - 'Summary' : 50, - 'Description' : 1500 + 'Summary': 50, + 'Description': 1500 }, 'keyaliases': { }, } diff --git a/fdroidserver/install.py b/fdroidserver/install.py index ebdae6b7..d65751ca 100644 --- a/fdroidserver/install.py +++ b/fdroidserver/install.py @@ -68,7 +68,7 @@ def main(): if args: vercodes = common.read_pkg_args(args, True) - apks = { appid : None for appid in vercodes } + apks = { appid: None for appid in vercodes } # Get the signed apk with the highest vercode for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))): @@ -86,7 +86,7 @@ def main(): else: - apks = { common.apknameinfo(apkfile)[0] : apkfile for apkfile in + apks = { common.apknameinfo(apkfile)[0]: apkfile for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))) } for appid, apk in apks.iteritems(): diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index cb034812..51597a0c 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -120,62 +120,62 @@ class FieldType(): # Generic value types valuetypes = { - 'int' : FieldType("Integer", + 'int': FieldType("Integer", r'^[1-9][0-9]*$', None, [ 'FlattrID' ], [ 'vercode' ]), - 'http' : FieldType("HTTP link", + 'http': FieldType("HTTP link", r'^http[s]?://', None, [ "Web Site", "Source Code", "Issue Tracker", "Donate" ], []), - 'bitcoin' : FieldType("Bitcoin address", + 'bitcoin': FieldType("Bitcoin address", r'^[a-zA-Z0-9]{27,34}$', None, [ "Bitcoin" ], [ ]), - 'litecoin' : FieldType("Litecoin address", + 'litecoin': FieldType("Litecoin address", r'^L[a-zA-Z0-9]{33}$', None, [ "Litecoin" ], [ ]), - 'dogecoin' : FieldType("Dogecoin address", + 'dogecoin': FieldType("Dogecoin address", r'^D[a-zA-Z0-9]{33}$', None, [ "Dogecoin" ], [ ]), - 'Bool' : FieldType("Boolean", + 'Bool': FieldType("Boolean", ['Yes', 'No'], None, [ "Requires Root" ], [ ]), - 'bool' : FieldType("Boolean", + 'bool': FieldType("Boolean", ['yes', 'no'], None, [ ], [ 'submodules', 'oldsdkloc', 'forceversion', 'forcevercode', 'novcheck' ]), - 'Repo Type' : FieldType("Repo Type", + 'Repo Type': FieldType("Repo Type", [ 'git', 'git-svn', 'svn', 'hg', 'bzr', 'srclib' ], None, [ "Repo Type" ], [ ]), - 'archive' : FieldType("Archive Policy", + 'archive': FieldType("Archive Policy", r'^[0-9]+ versions$', None, [ "Archive Policy" ], [ ]), - 'antifeatures' : FieldType("Anti-Feature", + 'antifeatures': FieldType("Anti-Feature", [ "Ads", "Tracking", "NonFreeNet", "NonFreeDep", "NonFreeAdd", "UpstreamNonFree" ], ',', [ "AntiFeatures" ], [ ]), - 'autoupdatemodes' : FieldType("Auto Update Mode", + 'autoupdatemodes': FieldType("Auto Update Mode", r"^(Version .+|None)$", None, [ "Auto Update Mode" ], [ ]), - 'updatecheckmodes' : FieldType("Update Check Mode", + 'updatecheckmodes': FieldType("Update Check Mode", r"^(Tags|Tags .+|RepoManifest|RepoManifest/.+|RepoTrunk|HTTP|Static|None)$", None, [ "Update Check Mode" ], [ ]) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index d2b02b7b..1b058d21 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -813,7 +813,7 @@ def make_index(apps, apks, repodir, archive, categories): sys.exit(1) # Copy the repo icon into the repo directory... - icon_dir = os.path.join(repodir ,'icons') + icon_dir = os.path.join(repodir, 'icons') iconfilename = os.path.join(icon_dir, os.path.basename(config['repo_icon'])) shutil.copyfile(config['repo_icon'], iconfilename) From 998011d535bb10ad92656c8da7a2c61d984e7a9c Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:16:32 -0400 Subject: [PATCH 04/18] fix PEP8 "E231 missing whitespace after ','" --- fdroid | 2 +- fdroidserver/checkupdates.py | 4 ++-- fdroidserver/common.py | 26 +++++++++++++------------- fdroidserver/lint.py | 2 +- fdroidserver/metadata.py | 10 +++++----- fdroidserver/publish.py | 2 +- fdroidserver/update.py | 4 ++-- 7 files changed, 25 insertions(+), 25 deletions(-) diff --git a/fdroid b/fdroid index 91f50644..1fc8b5f5 100755 --- a/fdroid +++ b/fdroid @@ -42,7 +42,7 @@ def print_help(): print "usage: fdroid [-h|--help] []" print print "Valid commands are:" - for cmd,summary in commands.items(): + for cmd, summary in commands.items(): print " " + cmd + ' '*(15-len(cmd)) + summary print diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 8ef0c4d3..7edfc2c2 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -212,9 +212,9 @@ def check_repomanifest(app, branch=None): if package != appid: return (None, "Package ID mismatch") if not version: - return (None,"Couldn't find latest version name") + return (None, "Couldn't find latest version name") if not vercode: - return (None,"Couldn't find latest version code") + return (None, "Couldn't find latest version code") vercode = str(int(vercode)) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 46b0b917..e71fcdb3 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -686,9 +686,9 @@ def retrieve_string(app_dir, string, xmlfiles=None): if xmlfiles is None: xmlfiles = [] for res_dir in res_dirs: - for r,d,f in os.walk(res_dir): + for r, d, f in os.walk(res_dir): if r.endswith('/values'): - xmlfiles += [os.path.join(r,x) for x in f if x.endswith('.xml')] + xmlfiles += [os.path.join(r, x) for x in f if x.endswith('.xml')] string_search = None if string.startswith('@string/'): @@ -704,7 +704,7 @@ def retrieve_string(app_dir, string, xmlfiles=None): return retrieve_string(app_dir, matches.group(1), xmlfiles) return None - return string.replace("\\'","'") + return string.replace("\\'", "'") # Return list of existing files that will be used to find the highest vercode def manifest_paths(app_dir, flavour): @@ -776,7 +776,7 @@ def ant_subprojects(root_dir): for subpath in subprojects: subrelpath = os.path.join(root_dir, subpath) for p in get_library_references(subrelpath): - relp = os.path.normpath(os.path.join(subpath,p)) + relp = os.path.normpath(os.path.join(subpath, p)) if relp not in subprojects: subprojects.insert(0, relp) return subprojects @@ -787,7 +787,7 @@ def remove_debuggable_flags(root_dir): for root, dirs, files in os.walk(root_dir): if 'AndroidManifest.xml' in files: path = os.path.join(root, 'AndroidManifest.xml') - p = FDroidPopen(['sed','-i', 's/android:debuggable="[^"]*"//g', path]) + p = FDroidPopen(['sed', '-i', 's/android:debuggable="[^"]*"//g', path]) if p.returncode != 0: raise BuildException("Failed to remove debuggable flags of %s" % path) @@ -901,7 +901,7 @@ def getsrclib(spec, srclib_dir, srclibpaths=[], subdir=None, if ':' in name: number, name = name.split(':', 1) if '/' in name: - name, subdir = name.split('/',1) + name, subdir = name.split('/', 1) srclib_path = os.path.join('srclibs', name + ".txt") @@ -936,7 +936,7 @@ def getsrclib(spec, srclib_dir, srclibpaths=[], subdir=None, if srclib["Srclibs"]: n = 1 - for lib in srclib["Srclibs"].replace(';',',').split(','): + for lib in srclib["Srclibs"].replace(';', ',').split(','): s_tuple = None for t in srclibpaths: if t[0] == lib: @@ -1083,7 +1083,7 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver= 's@compileSdkVersion *[0-9]*@compileSdkVersion '+n+'@g', 'build.gradle'], cwd=root_dir) if '@' in build['gradle']: - gradle_dir = os.path.join(root_dir, build['gradle'].split('@',1)[1]) + gradle_dir = os.path.join(root_dir, build['gradle'].split('@', 1)[1]) gradle_dir = os.path.normpath(gradle_dir) FDroidPopen(['sed', '-i', 's@compileSdkVersion *[0-9]*@compileSdkVersion '+n+'@g', @@ -1286,7 +1286,7 @@ def scan_source(build_dir, root_dir, thisbuild): return path.endswith('/%s' % dirname) or '/%s/' % dirname in path # Iterate through all files in the source code - for r,d,f in os.walk(build_dir): + for r, d, f in os.walk(build_dir): if any(insidedir(r, d) for d in ('.hg', '.git', '.svn', '.bzr')): continue @@ -1417,7 +1417,7 @@ class KnownApks: else: apps[appid] = added sortedapps = sorted(apps.iteritems(), key=operator.itemgetter(1))[-num:] - lst = [app for app,_ in sortedapps] + lst = [app for app, _ in sortedapps] lst.reverse() return lst @@ -1566,7 +1566,7 @@ def remove_signing_keys(build_dir): continue o.write(line) - logging.info("Cleaned %s of keysigning configs at %s" % (propfile,path)) + logging.info("Cleaned %s of keysigning configs at %s" % (propfile, path)) def replace_config_vars(cmd): cmd = cmd.replace('$$SDK$$', config['sdk_path']) @@ -1589,10 +1589,10 @@ def place_srclib(root_dir, number, libpath): placed = False for line in lines: if line.startswith('android.library.reference.%d=' % number): - o.write('android.library.reference.%d=%s\n' % (number,relpath)) + o.write('android.library.reference.%d=%s\n' % (number, relpath)) placed = True else: o.write(line) if not placed: - o.write('android.library.reference.%d=%s\n' % (number,relpath)) + o.write('android.library.reference.%d=%s\n' % (number, relpath)) diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index 5c76cd04..1abb0393 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -171,7 +171,7 @@ def main(): lastcommit, app['Update Check Mode'])) # No proper license - if app['License'] in ('Unknown','None',''): + if app['License'] in ('Unknown', 'None', ''): warn("License was not set") # Summary size limit diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 51597a0c..77b07844 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -363,7 +363,7 @@ def description_wiki(lines): # Parse multiple lines of description as written in a metadata file, returning # a single string in HTML format. -def description_html(lines,linkres): +def description_html(lines, linkres): ps = DescriptionFormatter(linkres) for line in lines: ps.parseline(line) @@ -394,7 +394,7 @@ def parse_srclib(metafile, **kw): continue try: - field, value = line.split(':',1) + field, value = line.split(':', 1) except ValueError: raise MetaDataException("Invalid metadata in %s:%d" % (line, n)) @@ -507,7 +507,7 @@ def parse_metadata(metafile): t = flagtype(pk) if t == 'list': # Port legacy ';' separators - thisbuild[pk] = [v.strip() for v in pv.replace(';',',').split(',')] + thisbuild[pk] = [v.strip() for v in pv.replace(';', ',').split(',')] elif t == 'string': thisbuild[pk] = pv elif t == 'script': @@ -610,7 +610,7 @@ def parse_metadata(metafile): curcomments.append(line) continue try: - field, value = line.split(':',1) + field, value = line.split(':', 1) except ValueError: raise MetaDataException("Invalid metadata in "+linedesc) if field != field.strip() or value != value.strip(): @@ -633,7 +633,7 @@ def parse_metadata(metafile): elif fieldtype == 'string': thisinfo[field] = value elif fieldtype == 'list': - thisinfo[field] = [v.strip() for v in value.replace(';',',').split(',')] + thisinfo[field] = [v.strip() for v in value.replace(';', ',').split(',')] elif fieldtype == 'build': if value.endswith("\\"): mode = 2 diff --git a/fdroidserver/publish.py b/fdroidserver/publish.py index 8a9c8aeb..c96146cb 100644 --- a/fdroidserver/publish.py +++ b/fdroidserver/publish.py @@ -152,7 +152,7 @@ def main(): raise BuildException("Failed to sign application") # Zipalign it... - p = FDroidPopen([os.path.join(config['sdk_path'],'tools','zipalign'), + p = FDroidPopen([os.path.join(config['sdk_path'], 'tools', 'zipalign'), '-v', '4', apkfile, os.path.join(output_dir, apkfilename)]) if p.returncode != 0: diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 1b058d21..818508c9 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -296,7 +296,7 @@ def resize_icon(iconpath, density): else: logging.info("%s is small enough: %s" % im.size) - except Exception,e: + except Exception, e: logging.error("Failed resizing {0} - {1}".format(iconpath, e)) def resize_all_icons(repodirs): @@ -503,7 +503,7 @@ def scan_apks(apps, apkcache, repodir, knownapks): os.path.join(get_icon_dir(repodir, density), iconfilename)) empty_densities.remove(density) break - except Exception,e: + except Exception, e: logging.warn("Failed reading {0} - {1}".format(iconpath, e)) if thisinfo['icons']: From 4af2e0004f6f1864297bbf7660393161e29f4174 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:21:47 -0400 Subject: [PATCH 05/18] fix PEP8 "E201 whitespace after '(' or '[' or '{'" --- fdroidserver/common.py | 10 ++++---- fdroidserver/install.py | 4 ++-- fdroidserver/metadata.py | 52 ++++++++++++++++++++-------------------- fdroidserver/server.py | 2 +- 4 files changed, 34 insertions(+), 34 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index e71fcdb3..276efa82 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -53,7 +53,7 @@ def get_default_config(): 'Summary': 50, 'Description': 1500 }, - 'keyaliases': { }, + 'keyaliases': {}, } def read_config(opts, config_file='config.py'): @@ -709,7 +709,7 @@ def retrieve_string(app_dir, string, xmlfiles=None): # Return list of existing files that will be used to find the highest vercode def manifest_paths(app_dir, flavour): - possible_manifests = [ os.path.join(app_dir, 'AndroidManifest.xml'), + possible_manifests = [os.path.join(app_dir, 'AndroidManifest.xml'), os.path.join(app_dir, 'src', 'main', 'AndroidManifest.xml'), os.path.join(app_dir, 'src', 'AndroidManifest.xml'), os.path.join(app_dir, 'build.gradle') ] @@ -1040,9 +1040,9 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver= srclibpaths.append(basesrclib) # Update the local.properties file - localprops = [ os.path.join(build_dir, 'local.properties') ] + localprops = [os.path.join(build_dir, 'local.properties') ] if 'subdir' in build: - localprops += [ os.path.join(root_dir, 'local.properties') ] + localprops += [os.path.join(root_dir, 'local.properties') ] for path in localprops: if not os.path.isfile(path): continue @@ -1364,7 +1364,7 @@ class KnownApks: self.path = os.path.join('stats', 'known_apks.txt') self.apks = {} if os.path.exists(self.path): - for line in file( self.path): + for line in file(self.path): t = line.rstrip().split(' ') if len(t) == 2: self.apks[t[0]] = (t[1], None) diff --git a/fdroidserver/install.py b/fdroidserver/install.py index d65751ca..efd12a91 100644 --- a/fdroidserver/install.py +++ b/fdroidserver/install.py @@ -68,7 +68,7 @@ def main(): if args: vercodes = common.read_pkg_args(args, True) - apks = { appid: None for appid in vercodes } + apks = {appid: None for appid in vercodes } # Get the signed apk with the highest vercode for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))): @@ -86,7 +86,7 @@ def main(): else: - apks = { common.apknameinfo(apkfile)[0]: apkfile for apkfile in + apks = {common.apknameinfo(apkfile)[0]: apkfile for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))) } for appid, apk in apks.iteritems(): diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 77b07844..c3b5d987 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -122,63 +122,63 @@ class FieldType(): valuetypes = { 'int': FieldType("Integer", r'^[1-9][0-9]*$', None, - [ 'FlattrID' ], - [ 'vercode' ]), + ['FlattrID' ], + ['vercode' ]), 'http': FieldType("HTTP link", r'^http[s]?://', None, - [ "Web Site", "Source Code", "Issue Tracker", "Donate" ], []), + ["Web Site", "Source Code", "Issue Tracker", "Donate" ], []), 'bitcoin': FieldType("Bitcoin address", r'^[a-zA-Z0-9]{27,34}$', None, - [ "Bitcoin" ], - [ ]), + ["Bitcoin" ], + []), 'litecoin': FieldType("Litecoin address", r'^L[a-zA-Z0-9]{33}$', None, - [ "Litecoin" ], - [ ]), + ["Litecoin" ], + []), 'dogecoin': FieldType("Dogecoin address", r'^D[a-zA-Z0-9]{33}$', None, - [ "Dogecoin" ], - [ ]), + ["Dogecoin" ], + []), 'Bool': FieldType("Boolean", ['Yes', 'No'], None, - [ "Requires Root" ], - [ ]), + ["Requires Root" ], + []), 'bool': FieldType("Boolean", ['yes', 'no'], None, - [ ], - [ 'submodules', 'oldsdkloc', 'forceversion', 'forcevercode', + [], + ['submodules', 'oldsdkloc', 'forceversion', 'forcevercode', 'novcheck' ]), 'Repo Type': FieldType("Repo Type", - [ 'git', 'git-svn', 'svn', 'hg', 'bzr', 'srclib' ], None, - [ "Repo Type" ], - [ ]), + ['git', 'git-svn', 'svn', 'hg', 'bzr', 'srclib' ], None, + ["Repo Type" ], + []), 'archive': FieldType("Archive Policy", r'^[0-9]+ versions$', None, - [ "Archive Policy" ], - [ ]), + ["Archive Policy" ], + []), 'antifeatures': FieldType("Anti-Feature", - [ "Ads", "Tracking", "NonFreeNet", "NonFreeDep", "NonFreeAdd", "UpstreamNonFree" ], ',', - [ "AntiFeatures" ], - [ ]), + ["Ads", "Tracking", "NonFreeNet", "NonFreeDep", "NonFreeAdd", "UpstreamNonFree" ], ',', + ["AntiFeatures" ], + []), 'autoupdatemodes': FieldType("Auto Update Mode", r"^(Version .+|None)$", None, - [ "Auto Update Mode" ], - [ ]), + ["Auto Update Mode" ], + []), 'updatecheckmodes': FieldType("Update Check Mode", r"^(Tags|Tags .+|RepoManifest|RepoManifest/.+|RepoTrunk|HTTP|Static|None)$", None, - [ "Update Check Mode" ], - [ ]) + ["Update Check Mode" ], + []) } # Check an app's metadata information for integrity errors @@ -753,7 +753,7 @@ def write_metadata(dest, app): mf.write('\n') for build in app['builds']: writecomments('build:' + build['version']) - mf.write("Build:%s,%s\n" % ( build['version'], build['vercode'])) + mf.write("Build:%s,%s\n" % (build['version'], build['vercode'])) def write_builditem(key, value): if key in ['version', 'vercode', 'origlines', 'type']: diff --git a/fdroidserver/server.py b/fdroidserver/server.py index 0875d8dc..9e17154b 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -91,7 +91,7 @@ def update_awsbucket(repo_section): if upload: if options.verbose: logging.info(' uploading "' + file_to_upload + '"...') - extra = { 'acl': 'public-read' } + extra = {'acl': 'public-read' } if file_to_upload.endswith('.sig'): extra['content_type'] = 'application/pgp-signature' elif file_to_upload.endswith('.asc'): From 62204d1fe57e035ab2a76cd8485f363a4d60c7de Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:24:48 -0400 Subject: [PATCH 06/18] fix PEP8 "E202 whitespace before ']' or '}'" --- fdroidserver/common.py | 6 +++--- fdroidserver/install.py | 6 +++--- fdroidserver/metadata.py | 30 +++++++++++++++--------------- fdroidserver/server.py | 2 +- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 276efa82..5e6f23f3 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -712,7 +712,7 @@ def manifest_paths(app_dir, flavour): possible_manifests = [os.path.join(app_dir, 'AndroidManifest.xml'), os.path.join(app_dir, 'src', 'main', 'AndroidManifest.xml'), os.path.join(app_dir, 'src', 'AndroidManifest.xml'), - os.path.join(app_dir, 'build.gradle') ] + os.path.join(app_dir, 'build.gradle')] if flavour: possible_manifests.append( @@ -1040,9 +1040,9 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver= srclibpaths.append(basesrclib) # Update the local.properties file - localprops = [os.path.join(build_dir, 'local.properties') ] + localprops = [os.path.join(build_dir, 'local.properties')] if 'subdir' in build: - localprops += [os.path.join(root_dir, 'local.properties') ] + localprops += [os.path.join(root_dir, 'local.properties')] for path in localprops: if not os.path.isfile(path): continue diff --git a/fdroidserver/install.py b/fdroidserver/install.py index efd12a91..a95ee6fd 100644 --- a/fdroidserver/install.py +++ b/fdroidserver/install.py @@ -68,7 +68,7 @@ def main(): if args: vercodes = common.read_pkg_args(args, True) - apks = {appid: None for appid in vercodes } + apks = {appid: None for appid in vercodes} # Get the signed apk with the highest vercode for apkfile in sorted(glob.glob(os.path.join(output_dir, '*.apk'))): @@ -87,7 +87,7 @@ def main(): else: apks = {common.apknameinfo(apkfile)[0]: apkfile for apkfile in - sorted(glob.glob(os.path.join(output_dir, '*.apk'))) } + sorted(glob.glob(os.path.join(output_dir, '*.apk')))} for appid, apk in apks.iteritems(): # Get device list each time to avoid device not found errors @@ -97,7 +97,7 @@ def main(): logging.info("Installing %s..." % apk) for dev in devs: logging.info("Installing %s on %s..." % (apk, dev)) - p = FDroidPopen(["adb", "-s", dev, "install", apk ]) + p = FDroidPopen(["adb", "-s", dev, "install", apk]) fail= "" for line in p.stdout.splitlines(): if line.startswith("Failure"): diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index c3b5d987..d8022582 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -122,62 +122,62 @@ class FieldType(): valuetypes = { 'int': FieldType("Integer", r'^[1-9][0-9]*$', None, - ['FlattrID' ], - ['vercode' ]), + ['FlattrID'], + ['vercode']), 'http': FieldType("HTTP link", r'^http[s]?://', None, - ["Web Site", "Source Code", "Issue Tracker", "Donate" ], []), + ["Web Site", "Source Code", "Issue Tracker", "Donate"], []), 'bitcoin': FieldType("Bitcoin address", r'^[a-zA-Z0-9]{27,34}$', None, - ["Bitcoin" ], + ["Bitcoin"], []), 'litecoin': FieldType("Litecoin address", r'^L[a-zA-Z0-9]{33}$', None, - ["Litecoin" ], + ["Litecoin"], []), 'dogecoin': FieldType("Dogecoin address", r'^D[a-zA-Z0-9]{33}$', None, - ["Dogecoin" ], + ["Dogecoin"], []), 'Bool': FieldType("Boolean", ['Yes', 'No'], None, - ["Requires Root" ], + ["Requires Root"], []), 'bool': FieldType("Boolean", ['yes', 'no'], None, [], ['submodules', 'oldsdkloc', 'forceversion', 'forcevercode', - 'novcheck' ]), + 'novcheck']), 'Repo Type': FieldType("Repo Type", - ['git', 'git-svn', 'svn', 'hg', 'bzr', 'srclib' ], None, - ["Repo Type" ], + ['git', 'git-svn', 'svn', 'hg', 'bzr', 'srclib'], None, + ["Repo Type"], []), 'archive': FieldType("Archive Policy", r'^[0-9]+ versions$', None, - ["Archive Policy" ], + ["Archive Policy"], []), 'antifeatures': FieldType("Anti-Feature", - ["Ads", "Tracking", "NonFreeNet", "NonFreeDep", "NonFreeAdd", "UpstreamNonFree" ], ',', - ["AntiFeatures" ], + ["Ads", "Tracking", "NonFreeNet", "NonFreeDep", "NonFreeAdd", "UpstreamNonFree"], ',', + ["AntiFeatures"], []), 'autoupdatemodes': FieldType("Auto Update Mode", r"^(Version .+|None)$", None, - ["Auto Update Mode" ], + ["Auto Update Mode"], []), 'updatecheckmodes': FieldType("Update Check Mode", r"^(Tags|Tags .+|RepoManifest|RepoManifest/.+|RepoTrunk|HTTP|Static|None)$", None, - ["Update Check Mode" ], + ["Update Check Mode"], []) } diff --git a/fdroidserver/server.py b/fdroidserver/server.py index 9e17154b..6c80a646 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -91,7 +91,7 @@ def update_awsbucket(repo_section): if upload: if options.verbose: logging.info(' uploading "' + file_to_upload + '"...') - extra = {'acl': 'public-read' } + extra = {'acl': 'public-read'} if file_to_upload.endswith('.sig'): extra['content_type'] = 'application/pgp-signature' elif file_to_upload.endswith('.asc'): From 58a484e74edcec47a69454385b6470b0f28c60a1 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:26:54 -0400 Subject: [PATCH 07/18] fix PEP8 "W291 trailing whitespace" --- fdroidserver/common.py | 2 +- fdroidserver/update.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 5e6f23f3..c61e9a5a 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -527,7 +527,7 @@ class vcs_gitsvn(vcs): svn_rev = rev_split[1] else: - # if no branch is specified, then assume trunk (ie. 'master' + # if no branch is specified, then assume trunk (ie. 'master' # branch): treeish = 'master' svn_rev = rev diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 818508c9..949c53fc 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -476,7 +476,7 @@ def scan_apks(apps, apkcache, repodir, knownapks): iconfile = open(icondest, 'wb') iconfile.write(apk.read(iconsrc)) iconfile.close() - thisinfo['icons'][density] = iconfilename + thisinfo['icons'][density] = iconfilename except: logging.warn("Error retrieving icon file") From 2d271806f1a5d793bb3d90ddfbb19f9d6a947c63 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:27:58 -0400 Subject: [PATCH 08/18] fix PEP8 "E251 unexpected spaces around keyword / parameter equals" --- fdroidserver/common.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index c61e9a5a..992a23b2 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -857,7 +857,7 @@ def parse_androidmanifests(paths): return (max_version, max_vercode, max_package) class BuildException(Exception): - def __init__(self, value, detail = None): + def __init__(self, value, detail=None): self.value = value self.detail = detail From c54cabe7417ab70bf39d60a76f62b2892c2bde4a Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:28:46 -0400 Subject: [PATCH 09/18] fix PEP8 "E228 missing whitespace around modulo operator" --- fdroidserver/update.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 949c53fc..e421c494 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -77,7 +77,7 @@ def update_wiki(apps, apks): if app['AntiFeatures']: for af in app['AntiFeatures'].split(','): wikidata += '{{AntiFeature|' + af + '}}\n' - wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|donate=%s|flattr=%s|bitcoin=%s|litecoin=%s|dogecoin=%s|license=%s|root=%s}}\n'%( + wikidata += '{{App|id=%s|name=%s|added=%s|lastupdated=%s|source=%s|tracker=%s|web=%s|donate=%s|flattr=%s|bitcoin=%s|litecoin=%s|dogecoin=%s|license=%s|root=%s}}\n' % ( app['id'], app['Name'], time.strftime('%Y-%m-%d', app['added']) if 'added' in app else '', From 7e17fafc14f3311d4aeca337ffa1dc3031ae6aff Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:30:44 -0400 Subject: [PATCH 10/18] fix PEP8 "E225 missing whitespace around operator" --- fdroidserver/common.py | 2 +- fdroidserver/import.py | 4 ++-- fdroidserver/install.py | 2 +- fdroidserver/publish.py | 2 +- fdroidserver/update.py | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 992a23b2..f4709dd1 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -1055,7 +1055,7 @@ def prepare_source(vcs, app, build, build_dir, srclib_dir, extlib_dir, onserver= # from sdk.dir, if necessary if build['oldsdkloc']: sdkloc = re.match(r".*^sdk.dir=(\S+)$.*", props, - re.S|re.M).group(1) + re.S | re.M).group(1) props += "sdk-location=%s\n" % sdkloc else: props += "sdk.dir=%s\n" % config['sdk_path'] diff --git a/fdroidserver/import.py b/fdroidserver/import.py index fe94d3fe..4af5ab1c 100644 --- a/fdroidserver/import.py +++ b/fdroidserver/import.py @@ -51,7 +51,7 @@ def getrepofrompage(url): return (repotype, repo) # Works for Google Code and BitBucket... - index=page.find('git clone') + index = page.find('git clone') if index != -1: repotype = 'git' repo = page[index + 10:] @@ -63,7 +63,7 @@ def getrepofrompage(url): return (repotype, repo) # Google Code only... - index=page.find('svn checkout') + index = page.find('svn checkout') if index != -1: repotype = 'git-svn' repo = page[index + 13:] diff --git a/fdroidserver/install.py b/fdroidserver/install.py index a95ee6fd..0c511d18 100644 --- a/fdroidserver/install.py +++ b/fdroidserver/install.py @@ -98,7 +98,7 @@ def main(): for dev in devs: logging.info("Installing %s on %s..." % (apk, dev)) p = FDroidPopen(["adb", "-s", dev, "install", apk]) - fail= "" + fail = "" for line in p.stdout.splitlines(): if line.startswith("Failure"): fail = line[9:-1] diff --git a/fdroidserver/publish.py b/fdroidserver/publish.py index c96146cb..878a5bf6 100644 --- a/fdroidserver/publish.py +++ b/fdroidserver/publish.py @@ -128,7 +128,7 @@ def main(): p = FDroidPopen(['keytool', '-list', '-alias', keyalias, '-keystore', config['keystore'], '-storepass:file', config['keystorepassfile']]) - if p.returncode !=0: + if p.returncode != 0: logging.info("Key does not exist - generating...") p = FDroidPopen(['keytool', '-genkey', '-keystore', config['keystore'], '-alias', keyalias, diff --git a/fdroidserver/update.py b/fdroidserver/update.py index e421c494..461982d5 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -879,7 +879,7 @@ def main(): parser.add_option("-I", "--icons", action="store_true", default=False, help="Resize all the icons exceeding the max pixel size and exit") parser.add_option("-e", "--editor", default="/etc/alternatives/editor", - help="Specify editor to use in interactive mode. Default "+ + help="Specify editor to use in interactive mode. Default " + "is /etc/alternatives/editor") parser.add_option("-w", "--wiki", default=False, action="store_true", help="Update the wiki") From d8bae963a9d501aef71894af74308cc49d525d6d Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:32:19 -0400 Subject: [PATCH 11/18] fix PEP8 "E703 statement ends with a semicolon" --- fdroidserver/import.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fdroidserver/import.py b/fdroidserver/import.py index 4af5ab1c..12c5beb8 100644 --- a/fdroidserver/import.py +++ b/fdroidserver/import.py @@ -163,7 +163,7 @@ def main(): sys.exit(1) elif url.startswith('http://code.google.com/p/'): if not url.endswith('/'): - url += '/'; + url += '/' projecttype = 'googlecode' sourcecode = url + 'source/checkout' if options.repo: From fcca0ddb1f8d3013314b89f051eacd285cc2e5a2 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:32:54 -0400 Subject: [PATCH 12/18] fix PEP8 "E712 comparison to True should be 'if cond is True:' or 'if cond:'" --- fdroidserver/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fdroidserver/server.py b/fdroidserver/server.py index 6c80a646..a817a913 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -154,7 +154,7 @@ def main(): logging.critical("The only commands currently supported are 'init' and 'update'") sys.exit(1) - if config.get('nonstandardwebroot') == True: + if config.get('nonstandardwebroot') is True: standardwebroot = False else: standardwebroot = True From 2f2618e06c9139d9cb3282b83c2f5091ab7593ea Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 22:36:12 -0400 Subject: [PATCH 13/18] fix PEP8 "E401 multiple imports on one line" --- fdroidserver/checkupdates.py | 3 ++- fdroidserver/common.py | 4 +++- fdroidserver/import.py | 3 ++- fdroidserver/lint.py | 3 ++- fdroidserver/metadata.py | 4 +++- fdroidserver/publish.py | 3 ++- fdroidserver/readmeta.py | 3 ++- fdroidserver/rewritemeta.py | 3 ++- fdroidserver/scanner.py | 3 ++- fdroidserver/update.py | 3 ++- 10 files changed, 22 insertions(+), 10 deletions(-) diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 7edfc2c2..29490fe7 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -30,7 +30,8 @@ import HTMLParser from distutils.version import LooseVersion import logging -import common, metadata +import common +import metadata from common import BuildException from common import VCSException from metadata import MetaDataException diff --git a/fdroidserver/common.py b/fdroidserver/common.py index f4709dd1..ef0619a5 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -17,7 +17,9 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import os, sys, re +import os +import sys +import re import shutil import glob import stat diff --git a/fdroidserver/import.py b/fdroidserver/import.py index 12c5beb8..0ec73e8f 100644 --- a/fdroidserver/import.py +++ b/fdroidserver/import.py @@ -25,7 +25,8 @@ import urllib from optparse import OptionParser from ConfigParser import ConfigParser import logging -import common, metadata +import common +import metadata # Get the repo type and address from the given web page. The page is scanned # in a rather naive manner for 'git clone xxxx', 'hg clone xxxx', etc, and diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index 1abb0393..67c20b77 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -20,7 +20,8 @@ from optparse import OptionParser import re import logging -import common, metadata +import common +import metadata config = None options = None diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index d8022582..55dcf519 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -17,7 +17,9 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import os, re, glob +import os +import re +import glob import cgi import logging diff --git a/fdroidserver/publish.py b/fdroidserver/publish.py index 878a5bf6..b9776eb0 100644 --- a/fdroidserver/publish.py +++ b/fdroidserver/publish.py @@ -26,7 +26,8 @@ import glob from optparse import OptionParser import logging -import common, metadata +import common +import metadata from common import FDroidPopen, BuildException config = None diff --git a/fdroidserver/readmeta.py b/fdroidserver/readmeta.py index e9665130..9145068b 100644 --- a/fdroidserver/readmeta.py +++ b/fdroidserver/readmeta.py @@ -17,7 +17,8 @@ # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . -import os, metadata +import os +import metadata def main(): diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index 74c185b1..845f0f81 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -20,7 +20,8 @@ import os from optparse import OptionParser import logging -import common, metadata +import common +import metadata config = None options = None diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index 34293ebb..e54d7011 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -22,7 +22,8 @@ import traceback from optparse import OptionParser import logging -import common, metadata +import common +import metadata from common import BuildException from common import VCSException diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 461982d5..ab540f9d 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -32,7 +32,8 @@ import time from PIL import Image import logging -import common, metadata +import common +import metadata from common import FDroidPopen from metadata import MetaDataException From 3f4f7a544b99ebf8aae522eb1bb14ae0fafce8f3 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 23:39:33 -0400 Subject: [PATCH 14/18] fix PEP8 "E302 expected 2 blank lines, found 1" --- fdroid | 2 ++ fdroidserver/build.py | 1 + fdroidserver/checkupdates.py | 5 +++++ fdroidserver/common.py | 38 ++++++++++++++++++++++++++++++++++++ fdroidserver/import.py | 2 ++ fdroidserver/init.py | 2 ++ fdroidserver/install.py | 1 + fdroidserver/lint.py | 1 + fdroidserver/metadata.py | 12 ++++++++++++ fdroidserver/publish.py | 1 + fdroidserver/readmeta.py | 1 + fdroidserver/rewritemeta.py | 1 + fdroidserver/scanner.py | 1 + fdroidserver/server.py | 3 +++ fdroidserver/update.py | 12 ++++++++++++ fdroidserver/verify.py | 1 + 16 files changed, 84 insertions(+) diff --git a/fdroid b/fdroid index 1fc8b5f5..435ba1ba 100755 --- a/fdroid +++ b/fdroid @@ -38,6 +38,7 @@ commands = { "server": "Interact with the repo HTTP server", } + def print_help(): print "usage: fdroid [-h|--help] []" print @@ -46,6 +47,7 @@ def print_help(): print " " + cmd + ' '*(15-len(cmd)) + summary print + def main(): if len(sys.argv) <= 1: diff --git a/fdroidserver/build.py b/fdroidserver/build.py index d062cc9e..4c7a5bd8 100644 --- a/fdroidserver/build.py +++ b/fdroidserver/build.py @@ -40,6 +40,7 @@ try: except ImportError: pass + def get_builder_vm_id(): vd = os.path.join('builder', '.vagrant') if os.path.isdir(vd): diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 29490fe7..b6b52a27 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -80,6 +80,7 @@ def check_http(app): msg = "Could not complete http check for app {0} due to unknown error: {1}".format(app['id'], traceback.format_exc()) return (None, msg) + # Check for a new version by looking at the tags in the source repo. # Whether this can be used reliably or not depends on # the development procedures used by the project's developers. Use it with @@ -158,6 +159,7 @@ def check_tags(app, pattern): msg = "Could not scan app {0} due to unknown error: {1}".format(app['id'], traceback.format_exc()) return (None, msg, None) + # Check for a new version by looking at the AndroidManifest.xml at the HEAD # of the source repo. Whether this can be used reliably or not depends on # the development procedures used by the project's developers. Use it with @@ -233,6 +235,7 @@ def check_repomanifest(app, branch=None): msg = "Could not scan app {0} due to unknown error: {1}".format(app['id'], traceback.format_exc()) return (None, msg) + def check_repotrunk(app, branch=None): try: @@ -263,6 +266,7 @@ def check_repotrunk(app, branch=None): msg = "Could not scan app {0} due to unknown error: {1}".format(app['id'], traceback.format_exc()) return (None, msg) + # Check for a new version by looking at the Google Play Store. # Returns (None, "a message") if this didn't work, or (version, None) for # the details of the current version. @@ -297,6 +301,7 @@ def check_gplay(app): config = None options = None + def main(): global config, options diff --git a/fdroidserver/common.py b/fdroidserver/common.py index ef0619a5..0436b1f9 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -36,6 +36,7 @@ import metadata config = None options = None + def get_default_config(): return { 'sdk_path': os.getenv("ANDROID_HOME"), @@ -58,6 +59,7 @@ def get_default_config(): 'keyaliases': {}, } + def read_config(opts, config_file='config.py'): """Read the repository config @@ -122,6 +124,7 @@ def read_config(opts, config_file='config.py'): return config + def test_sdk_exists(c): if c['sdk_path'] is None: # c['sdk_path'] is set to the value of ANDROID_HOME by default @@ -140,6 +143,7 @@ def test_sdk_exists(c): return False return True + def write_password_file(pwtype, password=None): ''' writes out passwords to a protected file instead of passing passwords as @@ -154,6 +158,7 @@ def write_password_file(pwtype, password=None): os.close(fd) config[pwtype + 'file'] = filename + # Given the arguments in the form of multiple appid:[vc] strings, this returns # a dictionary with the set of vercodes specified for each package. def read_pkg_args(args, allow_vercodes=False): @@ -175,6 +180,7 @@ def read_pkg_args(args, allow_vercodes=False): return vercodes + # On top of what read_pkg_args does, this returns the whole app metadata, but # limiting the builds list to the builds matching the vercodes specified. def read_app_args(args, allapps, allow_vercodes=False): @@ -213,6 +219,7 @@ def read_app_args(args, allapps, allow_vercodes=False): return apps + def has_extension(filename, extension): name, ext = os.path.splitext(filename) ext = ext.lower()[1:] @@ -220,6 +227,7 @@ def has_extension(filename, extension): apk_regex = None + def apknameinfo(filename): global apk_regex filename = os.path.basename(filename) @@ -232,12 +240,15 @@ def apknameinfo(filename): raise Exception("Invalid apk name: %s" % filename) return result + def getapkname(app, build): return "%s_%s.apk" % (app['id'], build['vercode']) + def getsrcname(app, build): return "%s_%s_src.tar.gz" % (app['id'], build['vercode']) + def getappname(app): if app['Name']: return app['Name'] @@ -245,9 +256,11 @@ def getappname(app): return app['Auto Name'] return app['id'] + def getcvname(app): return '%s (%s)' % (app['Current Version'], app['Current Version Code']) + def getvcs(vcstype, remote, local): if vcstype == 'git': return vcs_git(remote, local) @@ -265,12 +278,14 @@ def getvcs(vcstype, remote, local): return getsrclib(remote, 'build/srclib', raw=True) raise VCSException("Invalid vcs type " + vcstype) + def getsrclibvcs(name): srclib_path = os.path.join('srclibs', name + ".txt") if not os.path.exists(srclib_path): raise VCSException("Missing srclib " + name) return metadata.parse_srclib(srclib_path)['Repo Type'] + class vcs: def __init__(self, remote, local): @@ -356,6 +371,7 @@ class vcs: def getsrclib(self): return self.srclib + class vcs_git(vcs): def repotype(self): @@ -564,6 +580,7 @@ class vcs_gitsvn(vcs): return None return p.stdout.strip() + class vcs_svn(vcs): def repotype(self): @@ -606,6 +623,7 @@ class vcs_svn(vcs): return line[18:] return None + class vcs_hg(vcs): def repotype(self): @@ -678,6 +696,7 @@ class vcs_bzr(vcs): return [tag.split(' ')[0].strip() for tag in p.stdout.splitlines()] + def retrieve_string(app_dir, string, xmlfiles=None): res_dirs = [ @@ -708,6 +727,7 @@ def retrieve_string(app_dir, string, xmlfiles=None): return string.replace("\\'", "'") + # Return list of existing files that will be used to find the highest vercode def manifest_paths(app_dir, flavour): @@ -722,6 +742,7 @@ def manifest_paths(app_dir, flavour): return [path for path in possible_manifests if os.path.isfile(path)] + # Retrieve the package name. Returns the name, or None if not found. def fetch_real_name(app_dir, flavour): app_search = re.compile(r'.* Date: Thu, 1 May 2014 23:41:44 -0400 Subject: [PATCH 15/18] fix PEP8 "E302 expected 1 blank lines, found 0" --- fdroidserver/metadata.py | 5 +++++ fdroidserver/update.py | 2 ++ 2 files changed, 7 insertions(+) diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index ca049646..0adbc8eb 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -218,8 +218,10 @@ class DescriptionFormatter: text_wiki = '' text_html = '' linkResolver = None + def __init__(self, linkres): self.linkResolver = linkres + def endcur(self, notstates=None): if notstates and self.state in notstates: return @@ -229,13 +231,16 @@ class DescriptionFormatter: self.endul() elif self.state == self.stOL: self.endol() + def endpara(self): self.text_plain += '\n' self.text_html += '

' self.state = self.stNONE + def endul(self): self.text_html += '' self.state = self.stNONE + def endol(self): self.text_html += '' self.state = self.stNONE diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 5afb3e0e..648f8266 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -610,6 +610,7 @@ def make_index(apps, apks, repodir, archive, categories): el = doc.createElement(name) el.appendChild(doc.createTextNode(value)) parent.appendChild(el) + def addElementCDATA(name, value, doc, parent): el = doc.createElement(name) el.appendChild(doc.createCDATASection(value)) @@ -696,6 +697,7 @@ def make_index(apps, apks, repodir, archive, categories): addElement('summary', app['Summary'], doc, apel) if app['icon']: addElement('icon', app['icon'], doc, apel) + def linkres(link): for app in apps: if app['id'] == link: From 16dc3b27d65a65b4a3e4b0399238fd5f3aeb53ce Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 23:42:56 -0400 Subject: [PATCH 16/18] fix PEP8 "E303 too many blank lines (2)" --- fdroidserver/checkupdates.py | 1 - fdroidserver/metadata.py | 2 -- fdroidserver/update.py | 1 - 3 files changed, 4 deletions(-) diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index b6b52a27..496cc88b 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -354,7 +354,6 @@ def main(): common.getappname(app), version)) return - for app in apps: if options.autoonly and app['Auto Update Mode'] in ('None', 'Static'): diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 0adbc8eb..208752ba 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -272,7 +272,6 @@ class DescriptionFormatter: self.ital = not self.ital txt = txt[2:] - def linkify(self, txt): linkified_plain = '' linkified_html = '' @@ -805,7 +804,6 @@ def write_metadata(dest, app): mf.write('.\n') mf.write('\n') - if app['Archive Policy']: writefield('Archive Policy') writefield('Auto Update Mode') diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 648f8266..09790fc8 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -840,7 +840,6 @@ def make_index(apps, apks, repodir, archive, categories): f.close() - def archive_old_apks(apps, apks, archapks, repodir, archivedir, defaultkeepversions): for app in apps: From aa5f317c269fd9e28127d665ac418782423e1c07 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 23:45:23 -0400 Subject: [PATCH 17/18] fix PEP8 "W391 blank line at end of file" --- fdroid | 1 - fdroidserver/checkupdates.py | 1 - fdroidserver/common.py | 1 - fdroidserver/import.py | 1 - fdroidserver/install.py | 1 - fdroidserver/lint.py | 1 - fdroidserver/metadata.py | 2 -- fdroidserver/publish.py | 1 - fdroidserver/readmeta.py | 1 - fdroidserver/rewritemeta.py | 1 - fdroidserver/scanner.py | 1 - fdroidserver/update.py | 1 - fdroidserver/verify.py | 2 -- 13 files changed, 15 deletions(-) diff --git a/fdroid b/fdroid index 435ba1ba..9a22f571 100755 --- a/fdroid +++ b/fdroid @@ -87,4 +87,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index 496cc88b..51247e48 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -520,4 +520,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/common.py b/fdroidserver/common.py index 0436b1f9..5cea12b3 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -1635,4 +1635,3 @@ def place_srclib(root_dir, number, libpath): o.write(line) if not placed: o.write('android.library.reference.%d=%s\n' % (number, relpath)) - diff --git a/fdroidserver/import.py b/fdroidserver/import.py index 45925557..15a4414c 100644 --- a/fdroidserver/import.py +++ b/fdroidserver/import.py @@ -308,4 +308,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/install.py b/fdroidserver/install.py index d36234df..840fa295 100644 --- a/fdroidserver/install.py +++ b/fdroidserver/install.py @@ -116,4 +116,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/lint.py b/fdroidserver/lint.py index 4f26bb0f..8cc70859 100644 --- a/fdroidserver/lint.py +++ b/fdroidserver/lint.py @@ -242,4 +242,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 208752ba..116f6e28 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -821,5 +821,3 @@ def write_metadata(dest, app): mf.write('\n') writecomments(None) mf.close() - - diff --git a/fdroidserver/publish.py b/fdroidserver/publish.py index ee9638ee..863610d4 100644 --- a/fdroidserver/publish.py +++ b/fdroidserver/publish.py @@ -172,4 +172,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/readmeta.py b/fdroidserver/readmeta.py index c0210875..ff3533a6 100644 --- a/fdroidserver/readmeta.py +++ b/fdroidserver/readmeta.py @@ -30,4 +30,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/rewritemeta.py b/fdroidserver/rewritemeta.py index 84bdab46..058461b2 100644 --- a/fdroidserver/rewritemeta.py +++ b/fdroidserver/rewritemeta.py @@ -53,4 +53,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/scanner.py b/fdroidserver/scanner.py index c5e055ec..455691ac 100644 --- a/fdroidserver/scanner.py +++ b/fdroidserver/scanner.py @@ -115,4 +115,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/update.py b/fdroidserver/update.py index 09790fc8..cf90c61e 100644 --- a/fdroidserver/update.py +++ b/fdroidserver/update.py @@ -1069,4 +1069,3 @@ def main(): if __name__ == "__main__": main() - diff --git a/fdroidserver/verify.py b/fdroidserver/verify.py index 1ee1859a..3f7d2615 100644 --- a/fdroidserver/verify.py +++ b/fdroidserver/verify.py @@ -117,5 +117,3 @@ def main(): if __name__ == "__main__": main() - - From 6abb39054722cb7834a8719a2e2ca7d1d651ad5e Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 1 May 2014 23:48:12 -0400 Subject: [PATCH 18/18] fix PEP8 "E261 at least two spaces before inline comment" --- fdroidserver/import.py | 2 +- fdroidserver/init.py | 4 ++-- fdroidserver/metadata.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/fdroidserver/import.py b/fdroidserver/import.py index 15a4414c..e5d03572 100644 --- a/fdroidserver/import.py +++ b/fdroidserver/import.py @@ -130,7 +130,7 @@ def main(): projecttype = None issuetracker = None license = None - website = url #by default, we might override it + website = url # by default, we might override it if url.startswith('git://'): projecttype = 'git' repo = url diff --git a/fdroidserver/init.py b/fdroidserver/init.py index b0ca3faa..235a6a82 100644 --- a/fdroidserver/init.py +++ b/fdroidserver/init.py @@ -61,7 +61,7 @@ def disable_in_config(key, value): def genpassword(): '''generate a random password for when generating keys''' h = hashlib.sha256() - h.update(os.urandom(16)) # salt + h.update(os.urandom(16)) # salt h.update(bytes(socket.getfqdn())) return h.digest().encode('base64').strip() @@ -213,7 +213,7 @@ def main(): if options.distinguished_name: keydname = options.distinguished_name write_to_config('keydname', keydname) - if keystore == 'NONE': # we're using a smartcard + if keystore == 'NONE': # we're using a smartcard write_to_config('repo_keyalias', '1') # seems to be the default disable_in_config('keypass', 'never used with smartcard') write_to_config('smartcardoptions', diff --git a/fdroidserver/metadata.py b/fdroidserver/metadata.py index 116f6e28..cd44cbc1 100644 --- a/fdroidserver/metadata.py +++ b/fdroidserver/metadata.py @@ -335,7 +335,7 @@ class DescriptionFormatter: self.text_html += '
    ' self.state = self.stOL self.text_html += '
  1. ' - self.text_plain += '* ' #TODO: lazy - put the numbers in! + self.text_plain += '* ' # TODO: lazy - put the numbers in! self.addtext(line[1:]) self.text_html += '
  2. ' else: