Skip to content

Commit 079de76

Browse files
committed
feat: support version:url tuple for octopi version to use
1 parent 27608c9 commit 079de76

File tree

1 file changed

+56
-46
lines changed

1 file changed

+56
-46
lines changed

.github/workflows/custopize.yml

Lines changed: 56 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66
workflow_dispatch:
77
inputs:
88
octopi_version:
9-
description: "OctoPi version (leave empty to use latest stable release)"
9+
description: "OctoPi version (leave empty to use latest stable release, may also be 'version:url')"
1010
required: false
1111
default: ''
1212
octoprint_version:
@@ -45,64 +45,74 @@ jobs:
4545
console.log(`Version from workflow dispatch: ${version}`);
4646
}
4747
48-
if (version) {
49-
console.log(`Fetching release of ${version}`);
50-
51-
const query = `query {
52-
repository(owner: "guysoft", name: "Octopi") {
53-
release(tagName:"${version}") {
54-
tagName
55-
releaseAssets(first:5) {
56-
nodes {
57-
name
58-
downloadUrl
48+
if (version.includes(":")) {
49+
// version is in "version:url" format
50+
const pos = version.indexOf(":")
51+
const octopiVersion = version.slice(0, pos);
52+
const octopiUrl = version.slice(pos + 1);
53+
54+
} else {
55+
if (version) {
56+
// version provided
57+
console.log(`Fetching release of ${version}`);
58+
59+
const query = `query {
60+
repository(owner: "guysoft", name: "Octopi") {
61+
release(tagName:"${version}") {
62+
tagName
63+
releaseAssets(first:5) {
64+
nodes {
65+
name
66+
downloadUrl
67+
}
5968
}
6069
}
6170
}
62-
}
63-
}`;
64-
65-
const result = await github.graphql(query);
66-
console.log({result});
67-
68-
release = result.repository.release;
69-
70-
} else {
71-
console.log("Fetching latest release");
72-
73-
const query = `query {
74-
repository(owner:"guysoft", name:"OctoPi") {
75-
latestRelease {
76-
tagName
77-
releaseAssets(first:5) {
78-
nodes {
79-
name
80-
downloadUrl
71+
}`;
72+
73+
const result = await github.graphql(query);
74+
console.log({result});
75+
76+
release = result.repository.release;
77+
78+
} else {
79+
// no version provided
80+
console.log("Fetching latest release");
81+
82+
const query = `query {
83+
repository(owner:"guysoft", name:"OctoPi") {
84+
latestRelease {
85+
tagName
86+
releaseAssets(first:5) {
87+
nodes {
88+
name
89+
downloadUrl
90+
}
8191
}
8292
}
8393
}
84-
}
85-
}`;
94+
}`;
8695
87-
const result = await github.graphql(query);
88-
console.log({result});
96+
const result = await github.graphql(query);
97+
console.log({result});
8998
90-
release = result.repository.latestRelease;
91-
}
99+
release = result.repository.latestRelease;
100+
}
92101
93-
if (!release || !release.tagName || !release.releaseAssets || !release.releaseAssets.nodes) core.setFailed("Could not find OctoPi release");
102+
if (!release || !release.tagName || !release.releaseAssets || !release.releaseAssets.nodes) core.setFailed("Could not find OctoPi release");
94103
95-
const octopiVersion = release.tagName;
104+
const octopiVersion = release.tagName;
96105
97-
let octopiUrl = null;
98-
for (const asset of release.releaseAssets.nodes) {
99-
if (asset.name.startsWith("octopi-") && asset.name.includes("-armhf-") && asset.name.endsWith(".zip")) {
100-
octopiUrl = asset.downloadUrl;
101-
break;
106+
let octopiUrl = null;
107+
for (const asset of release.releaseAssets.nodes) {
108+
if (asset.name.startsWith("octopi-") && asset.name.includes("-armhf-") && asset.name.endsWith(".zip")) {
109+
octopiUrl = asset.downloadUrl;
110+
break;
111+
}
102112
}
103-
}
104113
105-
if (!octopiUrl) core.setFailed("Could not find OctoPi download URL");
114+
if (!octopiUrl) core.setFailed("Could not find OctoPi download URL");
115+
}
106116
107117
console.log(`OctoPi version: ${octopiVersion}`)
108118
console.log(`OctoPi download URL: ${octopiUrl}`)

0 commit comments

Comments
 (0)