@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.
Files changed (3) hide show
  1. package/README.md +1 -0
  2. package/dist/fork.mjs +25 -10
  3. 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 ? " (check the release token: it needs read access to the release repository)" : "";
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 resolveRelease = async (repo, token, selector, fetchImpl = fetch) => {
179
- if (selector === "latest") {
180
- const response2 = await request(fetchImpl, token, `/repos/${repo}/releases/latest`);
181
- return toRelease(await response2.json());
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 response2 = await request(fetchImpl, token, `/repos/${repo}/releases?per_page=30`);
185
- const releases = (await response2.json()).filter((r) => !r.draft);
186
- if (!releases.length) throw new GitHubError(`No releases in ${repo}`, 404);
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
- const response = await request(fetchImpl, token, `/repos/${repo}/releases/tags/${selector}`);
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.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
+ }