@fork-hu/cli2 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/dist/fork.mjs +25 -10
- package/package.json +49 -49
package/README.md
CHANGED
|
@@ -108,6 +108,7 @@ C:\fork-deploy\
|
|
|
108
108
|
| Hiba | Teendő |
|
|
109
109
|
|---|---|
|
|
110
110
|
| `GitHub 401` / `404 … check the release token` | A token lejárt, visszavonták, vagy nincs olvasási joga a `fork-releases`-re: `fork2 token <új token>`. |
|
|
111
|
+
| `has no stable release yet` | Még csak béta (prerelease) kiadás van: `fork2 install beta` vagy `fork2 update beta`. |
|
|
111
112
|
| `signature is invalid` / `is corrupted` | A letöltött csomag nem a Forktól jött, vagy megsérült; a CLI nem telepíti. Próbáld újra, és ha ismétlődik, jelezd. |
|
|
112
113
|
| `Update … failed, … is running again` | Az új verzió nem indult el, a régi fut. Az okot a `fork2 logs` mutatja (gyakran DB-kapcsolat vagy foglalt port). |
|
|
113
114
|
| `needs administrator rights` | Rendszergazdaként megnyitott PowerShellből futtasd. |
|
package/dist/fork.mjs
CHANGED
|
@@ -158,6 +158,7 @@ var GitHubError = class extends Error {
|
|
|
158
158
|
}
|
|
159
159
|
};
|
|
160
160
|
var API = "https://api.github.com";
|
|
161
|
+
var TOKEN_HINT = " (check the release token: it needs read access to the release repository)";
|
|
161
162
|
var request = async (fetchImpl, token, path, accept = "application/vnd.github+json") => {
|
|
162
163
|
const response = await fetchImpl(API + path, {
|
|
163
164
|
headers: {
|
|
@@ -169,28 +170,42 @@ var request = async (fetchImpl, token, path, accept = "application/vnd.github+js
|
|
|
169
170
|
redirect: "follow"
|
|
170
171
|
});
|
|
171
172
|
if (!response.ok) {
|
|
172
|
-
const hint = response.status === 401 || response.status === 404 ?
|
|
173
|
+
const hint = response.status === 401 || response.status === 404 ? TOKEN_HINT : "";
|
|
173
174
|
throw new GitHubError(`GitHub ${response.status} for ${path}${hint}`, response.status);
|
|
174
175
|
}
|
|
175
176
|
return response;
|
|
176
177
|
};
|
|
177
178
|
var toRelease = (r) => ({ tag: r.tag_name, prerelease: r.prerelease, assets: r.assets });
|
|
178
|
-
var
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
179
|
+
var explainNotFound = async (fetchImpl, token, repo, selector) => {
|
|
180
|
+
await request(fetchImpl, token, `/repos/${repo}`);
|
|
181
|
+
if (selector !== "latest") throw new GitHubError(`Release ${selector} does not exist in ${repo}`, 404);
|
|
182
|
+
const response = await request(fetchImpl, token, `/repos/${repo}/releases?per_page=30`);
|
|
183
|
+
const newest = (await response.json()).find((r) => !r.draft);
|
|
184
|
+
throw new GitHubError(
|
|
185
|
+
newest ? `${repo} has no stable release yet (the newest is the prerelease ${newest.tag_name}): use "beta" or "${newest.tag_name}"` : `${repo} has no releases yet`,
|
|
186
|
+
404
|
|
187
|
+
);
|
|
188
|
+
};
|
|
189
|
+
var fetchRelease = async (fetchImpl, token, repo, path, selector) => {
|
|
190
|
+
try {
|
|
191
|
+
return toRelease(await (await request(fetchImpl, token, path)).json());
|
|
192
|
+
} catch (err) {
|
|
193
|
+
if (err instanceof GitHubError && err.status === 404) return explainNotFound(fetchImpl, token, repo, selector);
|
|
194
|
+
throw err;
|
|
182
195
|
}
|
|
196
|
+
};
|
|
197
|
+
var resolveRelease = async (repo, token, selector, fetchImpl = fetch) => {
|
|
198
|
+
if (selector === "latest") return fetchRelease(fetchImpl, token, repo, `/repos/${repo}/releases/latest`, selector);
|
|
183
199
|
if (selector === "beta") {
|
|
184
|
-
const
|
|
185
|
-
const releases = (await
|
|
186
|
-
if (!releases.length) throw new GitHubError(
|
|
200
|
+
const response = await request(fetchImpl, token, `/repos/${repo}/releases?per_page=30`);
|
|
201
|
+
const releases = (await response.json()).filter((r) => !r.draft);
|
|
202
|
+
if (!releases.length) throw new GitHubError(`${repo} has no releases yet`, 404);
|
|
187
203
|
return toRelease(releases[0]);
|
|
188
204
|
}
|
|
189
205
|
if (!/^v\d+\.\d+\.\d+(-[0-9A-Za-z.-]+)?$/.test(selector)) {
|
|
190
206
|
throw new Error(`Unknown release "${selector}": use latest, beta or a version tag such as v1.6.0`);
|
|
191
207
|
}
|
|
192
|
-
|
|
193
|
-
return toRelease(await response.json());
|
|
208
|
+
return fetchRelease(fetchImpl, token, repo, `/repos/${repo}/releases/tags/${selector}`, selector);
|
|
194
209
|
};
|
|
195
210
|
var findAsset = (release, name2) => {
|
|
196
211
|
const asset = release.assets.find((a) => a.name === name2);
|
package/package.json
CHANGED
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@fork-hu/cli2",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "Installs and updates the Fork server on-premise from GitHub Releases",
|
|
5
|
-
"license": "UNLICENSED",
|
|
6
|
-
"author": "Fork <admin@fork.hu> (https://fork.hu)",
|
|
7
|
-
"keywords": [
|
|
8
|
-
"fork",
|
|
9
|
-
"Fork"
|
|
10
|
-
],
|
|
11
|
-
"repository": {
|
|
12
|
-
"type": "git",
|
|
13
|
-
"url": "git+https://github.com/fork-hu/fork-2026-refactor.git",
|
|
14
|
-
"directory": "packages/cli"
|
|
15
|
-
},
|
|
16
|
-
"type": "module",
|
|
17
|
-
"bin": {
|
|
18
|
-
"fork2": "dist/fork.mjs"
|
|
19
|
-
},
|
|
20
|
-
"files": [
|
|
21
|
-
"dist"
|
|
22
|
-
],
|
|
23
|
-
"os": [
|
|
24
|
-
"win32"
|
|
25
|
-
],
|
|
26
|
-
"engines": {
|
|
27
|
-
"node": ">=24"
|
|
28
|
-
},
|
|
29
|
-
"publishConfig": {
|
|
30
|
-
"access": "public"
|
|
31
|
-
},
|
|
32
|
-
"scripts": {
|
|
33
|
-
"build": "tsup",
|
|
34
|
-
"dev": "node --experimental-strip-types src/main.ts",
|
|
35
|
-
"typecheck": "tsc -p tsconfig.json",
|
|
36
|
-
"prepublishOnly": "tsup"
|
|
37
|
-
},
|
|
38
|
-
"dependencies": {
|
|
39
|
-
"adm-zip": "0.6.1",
|
|
40
|
-
"hostile": "1.4.0",
|
|
41
|
-
"node-windows": "1.0.0-beta.8"
|
|
42
|
-
},
|
|
43
|
-
"devDependencies": {
|
|
44
|
-
"@types/adm-zip": "0.6.0",
|
|
45
|
-
"@types/node": "24.9.1",
|
|
46
|
-
"tsup": "8.5.1",
|
|
47
|
-
"typescript": "5.9.3"
|
|
48
|
-
}
|
|
49
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@fork-hu/cli2",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "Installs and updates the Fork server on-premise from GitHub Releases",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"author": "Fork <admin@fork.hu> (https://fork.hu)",
|
|
7
|
+
"keywords": [
|
|
8
|
+
"fork",
|
|
9
|
+
"Fork"
|
|
10
|
+
],
|
|
11
|
+
"repository": {
|
|
12
|
+
"type": "git",
|
|
13
|
+
"url": "git+https://github.com/fork-hu/fork-2026-refactor.git",
|
|
14
|
+
"directory": "packages/cli"
|
|
15
|
+
},
|
|
16
|
+
"type": "module",
|
|
17
|
+
"bin": {
|
|
18
|
+
"fork2": "dist/fork.mjs"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist"
|
|
22
|
+
],
|
|
23
|
+
"os": [
|
|
24
|
+
"win32"
|
|
25
|
+
],
|
|
26
|
+
"engines": {
|
|
27
|
+
"node": ">=24"
|
|
28
|
+
},
|
|
29
|
+
"publishConfig": {
|
|
30
|
+
"access": "public"
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsup",
|
|
34
|
+
"dev": "node --experimental-strip-types src/main.ts",
|
|
35
|
+
"typecheck": "tsc -p tsconfig.json",
|
|
36
|
+
"prepublishOnly": "tsup"
|
|
37
|
+
},
|
|
38
|
+
"dependencies": {
|
|
39
|
+
"adm-zip": "0.6.1",
|
|
40
|
+
"hostile": "1.4.0",
|
|
41
|
+
"node-windows": "1.0.0-beta.8"
|
|
42
|
+
},
|
|
43
|
+
"devDependencies": {
|
|
44
|
+
"@types/adm-zip": "0.6.0",
|
|
45
|
+
"@types/node": "24.9.1",
|
|
46
|
+
"tsup": "8.5.1",
|
|
47
|
+
"typescript": "5.9.3"
|
|
48
|
+
}
|
|
49
|
+
}
|