From c79cc2abcf9d4bb7aa56ad7a88060f92158b4320 Mon Sep 17 00:00:00 2001 From: Emiliano Vavassori Date: Sun, 20 Mar 2022 14:33:07 +0100 Subject: [PATCH] Preparato layout cartelle per libreria. --- .../loappimage-helpers/__init__.py | 0 .../loappimage-helpers/versions.py | 0 scripts/loaih-getversion | 88 +++++++++++++++++++ 3 files changed, 88 insertions(+) rename build.py => lib/loappimage-helpers/__init__.py (100%) rename getversions.py => lib/loappimage-helpers/versions.py (100%) create mode 100644 scripts/loaih-getversion diff --git a/build.py b/lib/loappimage-helpers/__init__.py similarity index 100% rename from build.py rename to lib/loappimage-helpers/__init__.py diff --git a/getversions.py b/lib/loappimage-helpers/versions.py similarity index 100% rename from getversions.py rename to lib/loappimage-helpers/versions.py diff --git a/scripts/loaih-getversion b/scripts/loaih-getversion new file mode 100644 index 0000000..b6acdd8 --- /dev/null +++ b/scripts/loaih-getversion @@ -0,0 +1,88 @@ +#!/usr/bin/env python +# encoding: utf-8 + +import urllib.request +from lxml import etree +from packaging.version import parse as parse_version +import re, sys, json + +ARCHIVE = "https://downloadarchive.documentfoundation.org/libreoffice/old/" +RELEASE = "https://download.documentfoundation.org/libreoffice/stable/" +DAILY = "https://dev-builds.libreoffice.org/daily/master/Linux-rpm_deb-x86_64@tb87-TDF/current/" + +def getlatestrel(basever): + """Search in downloadarchive for the latest version matching baseversion.""" + versionlist = etree.HTML(urllib.request.urlopen(ARCHIVE).read()).xpath('//td/a') + # Getting a more polished matching list + cleanlist = list(dict.fromkeys([x.text.strip('/') for x in versionlist if x.text.startswith(basever)])) + + # Sorting, then returning the last version + return sorted(cleanlist)[-1] + +def getbranchrel(branch): + """Based on branch names, get the release number.""" + basedirurl = {} + version = '' + if branch == 'daily': + basedirurl = { 'x86_64': DAILY, 'x86': '-' } + version = etree.HTML(urllib.request.urlopen(DAILY).read()).xpath('//td/a')[1].text.split('_')[1] + + return { 'version': version, 'basedirurl': basedirurl } + + versions = etree.HTML(urllib.request.urlopen(RELEASE).read()).xpath('//td/a') + index = 1 + if branch == 'still': + index = 2 + elif branch == 'fresh': + index = 3 + version = getlatestrel(versions[index].text.strip('/')) + + return { 'version': version, 'basedirurl': getbaseurl(version) } + +def getbaseurl(version): + """Returns the links based on the numeric version.""" + basediriurl = {} + url = ARCHIVE + '/' + version + '/deb/' + # x86 binaries are not anymore offered after 6.3.0. + if parse_version(version) < parse_version('6.3.0'): + basedirurl['x86'] = url + 'x86/' + else: + basedirurl['x86'] = '-' + + basedirurl['x86_64'] = url + 'x86_64/' + + return basedirurl + +if __name__ == '__main__': + # Preparing variables for outputting + version = '' + basedirurl = {} + basever = 'fresh' + + # At the end of the checks, we need a version string and a basedirurl, which + # should be a dictionaly for x86, x86_64 with the base of the directory where + # to download the files. + if len(sys.argv) > 1: + # A version has been specified. + basever = sys.argv[1] + + # Once overridden with Argv, parse the inputs + if '.' in basever: + # Numbered version. Let's check it is a 4 dotted release + if len(basever.split('.')) == 4: + version = basever + else: + version = getlatestrel(basever) + + basedirurl = getbaseurl(version) + else: + # String versions. + a = getbranchrel(basever) + version = a['version'] + basedirurl = a['basedirurl'] + + output = """RUNDECK:DATA: query = %s +RUNDECK:DATA: version = %s +RUNDECK:DATA: x86 = %s +RUNDECK:DATA: x86_64 = %s""" % (basever, version, basedirurl['x86'] or '-', basedirurl['x86_64']) +print(output)