Devel RC release channel should also track Maintenance RCs
That way people don't have to toggle between Maintenance and Devel RCs just to get _all_ RCs.
This commit is contained in:
parent
cbd94a9020
commit
981110d4b2
2 changed files with 44 additions and 18 deletions
|
|
@ -218,9 +218,13 @@ class SoftwareUpdatePlugin(octoprint.plugin.BlueprintPlugin,
|
|||
"repo": "OctoPrint",
|
||||
"update_script": "{{python}} \"{update_script}\" --branch={{branch}} --force={{force}} \"{{folder}}\" {{target}}".format(update_script=update_script),
|
||||
"restart": "octoprint",
|
||||
"stable_branch": dict(branch="master", name="Stable"),
|
||||
"prerelease_branches": [dict(branch="rc/maintenance", name="Maintenance RCs"),
|
||||
dict(branch="rc/devel", name="Devel RCs")]
|
||||
"stable_branch": dict(branch="master", commitish=["master"], name="Stable"),
|
||||
"prerelease_branches": [dict(branch="rc/maintenance",
|
||||
commitish=["rc/maintenance"], # maintenance RCs
|
||||
name="Maintenance RCs"),
|
||||
dict(branch="rc/devel",
|
||||
commitish=["rc/maintenance", "rc/devel"], # devel & maintenance RCs
|
||||
name="Devel RCs")]
|
||||
},
|
||||
},
|
||||
"pip_command": None,
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ logger = logging.getLogger("octoprint.plugins.softwareupdate.version_checks.gith
|
|||
def _filter_out_latest(releases,
|
||||
sort_key=None,
|
||||
include_prerelease=False,
|
||||
prerelease_channel=None):
|
||||
commitish=None):
|
||||
"""
|
||||
Filters out the newest of all matching releases.
|
||||
|
||||
|
|
@ -26,31 +26,43 @@ def _filter_out_latest(releases,
|
|||
>>> release_1_2_16rc2 = dict(name="1.2.16rc2", tag_name="1.2.16rc2", html_url="some_url", published_at="2016-08-30T12:00:00Z", prerelease=True, draft=False, target_commitish="rc/maintenance")
|
||||
>>> release_1_2_17rc1 = dict(name="1.2.17rc1", tag_name="1.2.17rc1", html_url="some_url", published_at="2016-08-31T12:00:00Z", prerelease=True, draft=True, target_commitish="rc/maintenance")
|
||||
>>> release_1_3_0rc1 = dict(name="1.3.0rc1", tag_name="1.3.0rc1", html_url="some_url", published_at="2016-12-12T12:00:00Z", prerelease=True, draft=False, target_commitish="rc/devel")
|
||||
>>> release_1_3_5rc1 = dict(name="1.3.5rc1", tag_name="1.3.5rc1", html_url="some_url", published_at="2017-06-14T10:00:00Z", prerelease=True, draft=False, target_commitish="rc/maintenance")
|
||||
>>> release_1_2_18 = dict(name="1.2.18", tag_name="1.2.18", html_url="some_url", published_at="2016-12-13T12:00:00Z", prerelease=False, draft=False, target_commitish="master")
|
||||
>>> release_1_4_0rc1 = dict(name="1.4.0rc1", tag_name="1.4.0rc1", html_url="some_url", published_at="2017-12-12T12:00:00Z", prerelease=True, draft=False, target_commitish="rc/future")
|
||||
>>> release_1_4_0rc1_devel = dict(name="1.4.0rc1", tag_name="1.4.0rc1", html_url="some_url", published_at="2017-12-12T12:00:00Z", prerelease=True, draft=False, target_commitish="rc/devel")
|
||||
>>> releases = [release_1_2_15, release_1_2_16rc1, release_1_2_16rc2, release_1_2_17rc1, release_1_3_0rc1, release_1_4_0rc1]
|
||||
>>> _filter_out_latest(releases, include_prerelease=False, prerelease_channel=None)
|
||||
>>> _filter_out_latest(releases, include_prerelease=False, commitish=None)
|
||||
('1.2.15', '1.2.15', 'some_url')
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, prerelease_channel="rc/maintenance")
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, commitish=["rc/maintenance"])
|
||||
('1.2.16rc2', '1.2.16rc2', 'some_url')
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, prerelease_channel="rc/devel")
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, commitish=["rc/devel"])
|
||||
('1.3.0rc1', '1.3.0rc1', 'some_url')
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, prerelease_channel=None)
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, commitish=None)
|
||||
('1.4.0rc1', '1.4.0rc1', 'some_url')
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, prerelease_channel="rc/doesntexist")
|
||||
>>> _filter_out_latest(releases, include_prerelease=True, commitish=["rc/doesntexist"])
|
||||
('1.2.15', '1.2.15', 'some_url')
|
||||
>>> _filter_out_latest([release_1_2_17rc1])
|
||||
(None, None, None)
|
||||
>>> _filter_out_latest([release_1_2_16rc1, release_1_2_16rc2])
|
||||
(None, None, None)
|
||||
|
||||
>>> comparable_factory = _get_comparable_factory("python", force_base=True)
|
||||
>>> sort_key = lambda release: comparable_factory(_get_sanitized_version(release["tag_name"]))
|
||||
>>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=False, prerelease_channel=None, sort_key=sort_key)
|
||||
>>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=False, commitish=None, sort_key=sort_key)
|
||||
('1.2.18', '1.2.18', 'some_url')
|
||||
>>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=True, prerelease_channel="rc/maintenance", sort_key=sort_key)
|
||||
>>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=True, commitish=["rc/maintenance"], sort_key=sort_key)
|
||||
('1.2.18', '1.2.18', 'some_url')
|
||||
>>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=True, prerelease_channel="rc/devel", sort_key=sort_key)
|
||||
>>> _filter_out_latest(releases + [release_1_2_18], include_prerelease=True, commitish=["rc/devel"], sort_key=sort_key)
|
||||
('1.3.0rc1', '1.3.0rc1', 'some_url')
|
||||
|
||||
>>> _filter_out_latest([release_1_2_18, release_1_3_5rc1], include_prerelease=True, commitish=["rc/maintenance"])
|
||||
('1.3.5rc1', '1.3.5rc1', 'some_url')
|
||||
>>> _filter_out_latest([release_1_2_18, release_1_3_5rc1], include_prerelease=True, commitish=["rc/maintenance", "rc/devel"])
|
||||
('1.3.5rc1', '1.3.5rc1', 'some_url')
|
||||
>>> _filter_out_latest([release_1_2_18, release_1_3_5rc1, release_1_4_0rc1_devel], include_prerelease=True, commitish=["rc/maintenance"])
|
||||
('1.3.5rc1', '1.3.5rc1', 'some_url')
|
||||
>>> _filter_out_latest([release_1_2_18, release_1_3_5rc1, release_1_4_0rc1_devel], include_prerelease=True, commitish=["rc/maintenance", "rc/devel"])
|
||||
('1.4.0rc1', '1.4.0rc1', 'some_url')
|
||||
"""
|
||||
|
||||
nothing = None, None, None
|
||||
|
|
@ -61,9 +73,9 @@ def _filter_out_latest(releases,
|
|||
# filter out prereleases and drafts
|
||||
filter_function = lambda rel: not rel["prerelease"] and not rel["draft"]
|
||||
if include_prerelease:
|
||||
if prerelease_channel:
|
||||
filter_function = lambda rel: not rel["draft"] and (
|
||||
not rel["prerelease"] or rel["target_commitish"] == prerelease_channel)
|
||||
if commitish:
|
||||
filter_function = lambda rel: not rel["draft"] and \
|
||||
(not rel["prerelease"] or rel["target_commitish"] in commitish)
|
||||
else:
|
||||
filter_function = lambda rel: not rel["draft"]
|
||||
|
||||
|
|
@ -82,7 +94,7 @@ def _filter_out_latest(releases,
|
|||
|
||||
def _get_latest_release(user, repo, compare_type,
|
||||
include_prerelease=False,
|
||||
prerelease_channel=None,
|
||||
commitish=None,
|
||||
force_base=True):
|
||||
nothing = None, None, None
|
||||
r = requests.get(RELEASE_URL.format(user=user, repo=repo), timeout=30)
|
||||
|
|
@ -107,7 +119,7 @@ def _get_latest_release(user, repo, compare_type,
|
|||
return _filter_out_latest(releases,
|
||||
sort_key=sort_key,
|
||||
include_prerelease=include_prerelease,
|
||||
prerelease_channel=prerelease_channel)
|
||||
commitish=commitish)
|
||||
|
||||
|
||||
def _get_sanitized_version(version_string):
|
||||
|
|
@ -257,6 +269,16 @@ def get_latest(target, check, custom_compare=None):
|
|||
|
||||
include_prerelease = check.get("prerelease", False)
|
||||
prerelease_channel = check.get("prerelease_channel", None)
|
||||
|
||||
# determine valid "commitish" values in case we track prereleases
|
||||
commitish = None
|
||||
if prerelease_channel:
|
||||
prerelease_branches = check.get("prerelease_branches", None)
|
||||
if prerelease_branches:
|
||||
# fetch valid commitish list from configured prerelease_branches for selected channel
|
||||
commitishes = dict((x["branch"], x.get("commitish", [x["branch"]])) for x in prerelease_branches)
|
||||
commitish = commitishes.get(prerelease_channel, [prerelease_channel])
|
||||
|
||||
force_base = check.get("force_base", True)
|
||||
compare_type = _get_sanitized_compare_type(check.get("release_compare", "python"),
|
||||
custom=custom_compare)
|
||||
|
|
@ -265,7 +287,7 @@ def get_latest(target, check, custom_compare=None):
|
|||
check["repo"],
|
||||
compare_type,
|
||||
include_prerelease=include_prerelease,
|
||||
prerelease_channel=prerelease_channel,
|
||||
commitish=commitish,
|
||||
force_base=force_base)
|
||||
|
||||
information =dict(
|
||||
|
|
|
|||
Loading…
Reference in a new issue