chiark / gitweb /
added parse release filename function
authorMichael Pöhn <michael.poehn@fsfe.org>
Sat, 23 Sep 2017 11:10:52 +0000 (13:10 +0200)
committerMichael Pöhn <michael.poehn@fsfe.org>
Tue, 26 Sep 2017 12:11:09 +0000 (14:11 +0200)
fdroidserver/common.py
tests/common.TestCase

index 4ab4aaf192c5d6a025a5b8169cb7007be310d094..2857ac06323489b1f4f7f0822185f18707e486d2 100644 (file)
@@ -511,6 +511,20 @@ def publishednameinfo(filename):
     return result
 
 
+apk_release_filename = re.compile('(?P<appid>[a-z0-9_\.]+)_(?P<vercode>[0-9]+)\.apk')
+apk_release_filename_with_sigfp = re.compile('(?P<appid>[a-z0-9_\.]+)_(?P<vercode>[0-9]+)_(?P<sigfp>[0-9a-f]{7})\.apk')
+
+
+def apk_parse_release_filename(apkname):
+    m = apk_release_filename_with_sigfp.match(apkname)
+    if m:
+        return m.group('appid'), m.group('vercode'), m.group('sigfp')
+    m = apk_release_filename.match(apkname)
+    if m:
+        return m.group('appid'), m.group('vercode'), None
+    return None, None, None
+
+
 def get_release_filename(app, build):
     if build.output:
         return "%s_%s.%s" % (app.id, build.versionCode, get_file_extension(build.output))
index 9badf3696c936cdab435e754d0609140e87185e3..64264b17f1a7fcb1d5a995eabeee10764fbce21f 100755 (executable)
@@ -418,6 +418,22 @@ class CommonTest(unittest.TestCase):
         with self.assertRaises(FDroidException):
             fdroidserver.common.get_apk_id_aapt('nope')
 
+    def test_apk_release_name(self):
+        appid, vercode, sigfp = fdroidserver.common.apk_parse_release_filename('com.serwylo.lexica_905.apk')
+        self.assertEqual(appid, 'com.serwylo.lexica')
+        self.assertEqual(vercode, '905')
+        self.assertEqual(sigfp, None)
+
+        appid, vercode, sigfp = fdroidserver.common.apk_parse_release_filename('com.serwylo.lexica_905_c82e0f6.apk')
+        self.assertEqual(appid, 'com.serwylo.lexica')
+        self.assertEqual(vercode, '905')
+        self.assertEqual(sigfp, 'c82e0f6')
+
+        appid, vercode, sigfp = fdroidserver.common.apk_parse_release_filename('beverly_hills-90210.apk')
+        self.assertEqual(appid, None)
+        self.assertEqual(vercode, None)
+        self.assertEqual(sigfp, None)
+
 
 if __name__ == "__main__":
     parser = optparse.OptionParser()