summaryrefslogtreecommitdiffstats
path: root/python/mozrelease/mozrelease/paths.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/mozrelease/mozrelease/paths.py')
-rw-r--r--python/mozrelease/mozrelease/paths.py85
1 files changed, 85 insertions, 0 deletions
diff --git a/python/mozrelease/mozrelease/paths.py b/python/mozrelease/mozrelease/paths.py
new file mode 100644
index 0000000000..b3d48c4ac7
--- /dev/null
+++ b/python/mozrelease/mozrelease/paths.py
@@ -0,0 +1,85 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+from six.moves.urllib.parse import urlunsplit
+
+product_ftp_map = {
+ "fennec": "mobile",
+}
+
+
+def product2ftp(product):
+ return product_ftp_map.get(product, product)
+
+
+def getCandidatesDir(product, version, buildNumber, protocol=None, server=None):
+ if protocol:
+ assert server is not None, "server is required with protocol"
+
+ product = product2ftp(product)
+ directory = "/{}/candidates/{}-candidates/build{}".format(
+ product,
+ str(version),
+ str(buildNumber),
+ )
+
+ if protocol:
+ return urlunsplit((protocol, server, directory, None, None))
+ else:
+ return directory
+
+
+def getReleasesDir(product, version=None, protocol=None, server=None):
+ if protocol:
+ assert server is not None, "server is required with protocol"
+
+ directory = "/{}/releases".format(product)
+ if version:
+ directory = "{}/{}".format(directory, version)
+
+ if protocol:
+ return urlunsplit((protocol, server, directory, None, None))
+ else:
+ return directory
+
+
+def getReleaseInstallerPath(productName, brandName, version, platform, locale="en-US"):
+ if productName not in ("fennec",):
+ if platform.startswith("linux"):
+ return "/".join(
+ [
+ p.strip("/")
+ for p in [
+ platform,
+ locale,
+ "%s-%s.tar.bz2" % (productName, version),
+ ]
+ ]
+ )
+ elif "mac" in platform:
+ return "/".join(
+ [
+ p.strip("/")
+ for p in [platform, locale, "%s %s.dmg" % (brandName, version)]
+ ]
+ )
+ elif platform.startswith("win"):
+ return "/".join(
+ [
+ p.strip("/")
+ for p in [
+ platform,
+ locale,
+ "%s Setup %s.exe" % (brandName, version),
+ ]
+ ]
+ )
+ else:
+ raise "Unsupported platform"
+ else:
+ if platform.startswith("android"):
+ filename = "%s-%s.%s.android-arm.apk" % (productName, version, locale)
+ return "/".join([p.strip("/") for p in [platform, locale, filename]])
+ else:
+ raise "Unsupported platform"