centy 0.2.2 → 0.2.4

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 (60) hide show
  1. package/dist/commands/get/issue.d.ts +0 -1
  2. package/dist/commands/get/issue.d.ts.map +1 -1
  3. package/dist/commands/get/issue.js +1 -38
  4. package/dist/commands/get/issue.js.map +1 -1
  5. package/dist/commands/info.d.ts.map +1 -1
  6. package/dist/commands/info.js +0 -3
  7. package/dist/commands/info.js.map +1 -1
  8. package/dist/commands/install/all.d.ts.map +1 -1
  9. package/dist/commands/install/all.js +4 -1
  10. package/dist/commands/install/all.js.map +1 -1
  11. package/dist/commands/install/daemon.d.ts.map +1 -1
  12. package/dist/commands/install/daemon.js +8 -1
  13. package/dist/commands/install/daemon.js.map +1 -1
  14. package/dist/commands/install/tui.d.ts.map +1 -1
  15. package/dist/commands/install/tui.js +1 -0
  16. package/dist/commands/install/tui.js.map +1 -1
  17. package/dist/commands/workspace/open.d.ts +0 -1
  18. package/dist/commands/workspace/open.d.ts.map +1 -1
  19. package/dist/commands/workspace/open.js +1 -8
  20. package/dist/commands/workspace/open.js.map +1 -1
  21. package/dist/daemon/load-proto.d.ts +1 -3
  22. package/dist/daemon/load-proto.d.ts.map +1 -1
  23. package/dist/daemon/load-proto.js.map +1 -1
  24. package/dist/daemon/types.d.ts +0 -22
  25. package/dist/daemon/types.d.ts.map +1 -1
  26. package/dist/lib/install-binary/download.d.ts.map +1 -1
  27. package/dist/lib/install-binary/download.js +11 -2
  28. package/dist/lib/install-binary/download.js.map +1 -1
  29. package/dist/lib/install-binary/get-installed-version.d.ts +2 -0
  30. package/dist/lib/install-binary/get-installed-version.d.ts.map +1 -0
  31. package/dist/lib/install-binary/get-installed-version.js +27 -0
  32. package/dist/lib/install-binary/get-installed-version.js.map +1 -0
  33. package/dist/lib/install-binary/install-daemon.d.ts.map +1 -1
  34. package/dist/lib/install-binary/install-daemon.js +31 -0
  35. package/dist/lib/install-binary/install-daemon.js.map +1 -1
  36. package/dist/lib/install-binary/prerelease.d.ts +22 -0
  37. package/dist/lib/install-binary/prerelease.d.ts.map +1 -0
  38. package/dist/lib/install-binary/prerelease.js +82 -0
  39. package/dist/lib/install-binary/prerelease.js.map +1 -0
  40. package/dist/lib/install-binary/types.d.ts +1 -0
  41. package/dist/lib/install-binary/types.d.ts.map +1 -1
  42. package/oclif.manifest.json +169 -266
  43. package/package.json +1 -1
  44. package/proto/centy.proto +485 -154
  45. package/dist/commands/update.d.ts +0 -14
  46. package/dist/commands/update.d.ts.map +0 -1
  47. package/dist/commands/update.js +0 -82
  48. package/dist/commands/update.js.map +0 -1
  49. package/dist/commands/version.d.ts +0 -14
  50. package/dist/commands/version.d.ts.map +0 -1
  51. package/dist/commands/version.js +0 -65
  52. package/dist/commands/version.js.map +0 -1
  53. package/dist/daemon/daemon-get-project-version.d.ts +0 -6
  54. package/dist/daemon/daemon-get-project-version.d.ts.map +0 -1
  55. package/dist/daemon/daemon-get-project-version.js +0 -9
  56. package/dist/daemon/daemon-get-project-version.js.map +0 -1
  57. package/dist/daemon/daemon-update-version.d.ts +0 -6
  58. package/dist/daemon/daemon-update-version.d.ts.map +0 -1
  59. package/dist/daemon/daemon-update-version.js +0 -9
  60. package/dist/daemon/daemon-update-version.js.map +0 -1
@@ -0,0 +1,2 @@
1
+ export declare function getInstalledDaemonVersion(): string | undefined;
2
+ //# sourceMappingURL=get-installed-version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-installed-version.d.ts","sourceRoot":"","sources":["../../../src/lib/install-binary/get-installed-version.ts"],"names":[],"mappings":"AAOA,wBAAgB,yBAAyB,IAAI,MAAM,GAAG,SAAS,CAoB9D"}
@@ -0,0 +1,27 @@
1
+ /* eslint-disable security/detect-non-literal-fs-filename */
2
+ import { execSync } from 'node:child_process';
3
+ import { existsSync } from 'node:fs';
4
+ import { join } from 'node:path';
5
+ import { getInstallDir } from './get-install-dir.js';
6
+ import { getBinaryFileName } from './platform.js';
7
+ export function getInstalledDaemonVersion() {
8
+ const installDir = getInstallDir();
9
+ const binaryName = getBinaryFileName('centy-daemon');
10
+ const binaryPath = join(installDir, binaryName);
11
+ if (!existsSync(binaryPath)) {
12
+ return undefined;
13
+ }
14
+ try {
15
+ const output = execSync(`"${binaryPath}" --version`, {
16
+ encoding: 'utf-8',
17
+ timeout: 5000,
18
+ });
19
+ // Expected format: "centy-daemon 0.2.0-alpha.9" or "centy-daemon 0.2.0"
20
+ const match = output.match(/centy-daemon\s+(\S+)/);
21
+ return match !== null ? match[1] : undefined;
22
+ }
23
+ catch {
24
+ return undefined;
25
+ }
26
+ }
27
+ //# sourceMappingURL=get-installed-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-installed-version.js","sourceRoot":"","sources":["../../../src/lib/install-binary/get-installed-version.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,MAAM,UAAU,yBAAyB;IACvC,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,UAAU,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAE/C,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,UAAU,aAAa,EAAE;YACnD,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,IAAI;SACd,CAAC,CAAA;QACF,wEAAwE;QACxE,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;QAClD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAC9C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"install-daemon.d.ts","sourceRoot":"","sources":["../../../src/lib/install-binary/install-daemon.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAM/D,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CAkDxB"}
1
+ {"version":3,"file":"install-daemon.d.ts","sourceRoot":"","sources":["../../../src/lib/install-binary/install-daemon.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiC/D,wBAAsB,aAAa,CACjC,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,aAAa,CAAC,CA6DxB"}
@@ -3,14 +3,44 @@ import { getDaemonAssetPattern, getBinaryFileName } from './platform.js';
3
3
  import { getDaemonReleaseInfo, getLatestRelease } from './github-release.js';
4
4
  import { downloadAndExtract } from './download.js';
5
5
  import { getInstallDir } from './get-install-dir.js';
6
+ import { getInstalledDaemonVersion } from './get-installed-version.js';
7
+ import { isPrerelease, isNewerVersion } from './prerelease.js';
6
8
  function noop() {
7
9
  // empty progress callback
8
10
  }
11
+ async function checkForNewerPrerelease(installedVersion) {
12
+ // Only check if user is on a prerelease
13
+ if (!isPrerelease(installedVersion)) {
14
+ return undefined;
15
+ }
16
+ try {
17
+ // Fetch the latest prerelease
18
+ const latestPrerelease = await getLatestRelease('centy-io/centy-daemon', true);
19
+ const latestVersion = latestPrerelease.tag_name.replace(/^v/, '');
20
+ // Check if the latest prerelease is newer than the installed version
21
+ if (isNewerVersion(installedVersion, latestVersion)) {
22
+ return latestVersion;
23
+ }
24
+ }
25
+ catch {
26
+ // Silently ignore errors when checking for prerelease updates
27
+ }
28
+ return undefined;
29
+ }
9
30
  export async function installDaemon(options) {
10
31
  const version = options.version;
11
32
  const prerelease = options.prerelease !== undefined ? options.prerelease : false;
12
33
  const onProgress = options.onProgress;
13
34
  const log = onProgress !== undefined ? onProgress : noop;
35
+ // Check for newer prerelease if user is not explicitly requesting prerelease
36
+ // and no specific version was requested
37
+ let newerPrereleaseAvailable;
38
+ if (!prerelease && version === undefined) {
39
+ const installedVersion = getInstalledDaemonVersion();
40
+ if (installedVersion !== undefined) {
41
+ newerPrereleaseAvailable = await checkForNewerPrerelease(installedVersion);
42
+ }
43
+ }
14
44
  log('Detecting platform...');
15
45
  // For daemon, we need the version to construct the asset name
16
46
  // If no version specified, fetch the latest release first
@@ -35,6 +65,7 @@ export async function installDaemon(options) {
35
65
  return {
36
66
  binaryPath,
37
67
  version: releaseInfo.version,
68
+ newerPrereleaseAvailable,
38
69
  };
39
70
  }
40
71
  //# sourceMappingURL=install-daemon.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-daemon.js","sourceRoot":"","sources":["../../../src/lib/install-binary/install-daemon.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGpD,SAAS,IAAI;IACX,0BAA0B;AAC5B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAuB;IAEvB,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC/B,MAAM,UAAU,GACd,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAA;IAC/D,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAA;IACrC,MAAM,GAAG,GAAG,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAA;IAExD,GAAG,CAAC,uBAAuB,CAAC,CAAA;IAE5B,8DAA8D;IAC9D,0DAA0D;IAC1D,IAAI,aAAa,GAAG,OAAO,CAAA;IAC3B,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;QAChC,GAAG,CAAC,iCAAiC,CAAC,CAAA;QACtC,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAC1C,uBAAuB,EACvB,UAAU,CACX,CAAA;QACD,aAAa,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAC1D,CAAC;IAED,MAAM,YAAY,GAAG,qBAAqB,CAAC,aAAa,CAAC,CAAA;IAEzD,GAAG,CAAC,2CAA2C,aAAa,KAAK,CAAC,CAAA;IAClE,uEAAuE;IACvE,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC/D,MAAM,WAAW,GAAG,MAAM,oBAAoB,CAC5C,2BAA2B,WAAW,EAAE,EACxC,aAAa,CACd,CAAA;IAED,GAAG,CAAC,6BAA6B,WAAW,CAAC,OAAO,KAAK,CAAC,CAAA;IAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;IACpD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAElC,MAAM,UAAU,GAAG,MAAM,kBAAkB,CACzC,WAAW,CAAC,WAAW,EACvB,UAAU,EACV,UAAU,EACV,QAAQ,CAAC,EAAE;QACT,GAAG,CAAC,kBAAkB,QAAQ,CAAC,OAAO,GAAG,CAAC,CAAA;IAC5C,CAAC,CACF,CAAA;IAED,GAAG,CAAC,2BAA2B,WAAW,CAAC,OAAO,OAAO,UAAU,EAAE,CAAC,CAAA;IAEtE,OAAO;QACL,UAAU;QACV,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"install-daemon.js","sourceRoot":"","sources":["../../../src/lib/install-binary/install-daemon.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Check if a version string is a prerelease version.
3
+ * Prerelease versions contain a hyphen after the version number.
4
+ * Examples: "0.2.0-alpha.9", "1.0.0-beta.1", "2.0.0-rc.1"
5
+ */
6
+ export declare function isPrerelease(version: string): boolean;
7
+ /**
8
+ * Compare two version strings.
9
+ * Returns:
10
+ * - positive if v1 > v2
11
+ * - negative if v1 < v2
12
+ * - 0 if equal
13
+ *
14
+ * Note: A stable version is considered greater than a prerelease of the same base version.
15
+ * e.g., 1.0.0 > 1.0.0-alpha.1
16
+ */
17
+ export declare function compareVersions(v1: string, v2: string): number;
18
+ /**
19
+ * Check if there's a newer prerelease available given the current version.
20
+ */
21
+ export declare function isNewerVersion(current: string, available: string): boolean;
22
+ //# sourceMappingURL=prerelease.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerelease.d.ts","sourceRoot":"","sources":["../../../src/lib/install-binary/prerelease.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAErD;AAiCD;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAyC9D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAE1E"}
@@ -0,0 +1,82 @@
1
+ /* eslint-disable single-export/single-export, security/detect-unsafe-regex */
2
+ /**
3
+ * Check if a version string is a prerelease version.
4
+ * Prerelease versions contain a hyphen after the version number.
5
+ * Examples: "0.2.0-alpha.9", "1.0.0-beta.1", "2.0.0-rc.1"
6
+ */
7
+ export function isPrerelease(version) {
8
+ return version.includes('-');
9
+ }
10
+ function parseVersion(version) {
11
+ // Match: major.minor.patch[-prerelease.num]
12
+ // This regex is safe: anchored, uses non-greedy patterns, and has bounded repetition
13
+ const versionRegex = /^(\d{1,10})\.(\d{1,10})\.(\d{1,10})(?:-([a-zA-Z]+)(?:\.(\d{1,10}))?)?$/;
14
+ const match = version.match(versionRegex);
15
+ if (match === null) {
16
+ return undefined;
17
+ }
18
+ return {
19
+ major: parseInt(match[1], 10),
20
+ minor: parseInt(match[2], 10),
21
+ patch: parseInt(match[3], 10),
22
+ prerelease: match[4],
23
+ prereleaseNum: match[5] !== undefined ? parseInt(match[5], 10) : undefined,
24
+ };
25
+ }
26
+ /**
27
+ * Compare two version strings.
28
+ * Returns:
29
+ * - positive if v1 > v2
30
+ * - negative if v1 < v2
31
+ * - 0 if equal
32
+ *
33
+ * Note: A stable version is considered greater than a prerelease of the same base version.
34
+ * e.g., 1.0.0 > 1.0.0-alpha.1
35
+ */
36
+ export function compareVersions(v1, v2) {
37
+ const p1 = parseVersion(v1);
38
+ const p2 = parseVersion(v2);
39
+ if (p1 === undefined || p2 === undefined) {
40
+ return v1.localeCompare(v2);
41
+ }
42
+ // Compare major.minor.patch
43
+ if (p1.major !== p2.major)
44
+ return p1.major - p2.major;
45
+ if (p1.minor !== p2.minor)
46
+ return p1.minor - p2.minor;
47
+ if (p1.patch !== p2.patch)
48
+ return p1.patch - p2.patch;
49
+ // Both stable = equal at this point
50
+ if (p1.prerelease === undefined && p2.prerelease === undefined)
51
+ return 0;
52
+ // Stable > prerelease
53
+ if (p1.prerelease === undefined)
54
+ return 1;
55
+ if (p2.prerelease === undefined)
56
+ return -1;
57
+ // Compare prerelease tags (alpha < beta < rc)
58
+ const prereleaseOrder = {
59
+ alpha: 1,
60
+ beta: 2,
61
+ rc: 3,
62
+ };
63
+ const order1 = prereleaseOrder[p1.prerelease] !== undefined
64
+ ? prereleaseOrder[p1.prerelease]
65
+ : 0;
66
+ const order2 = prereleaseOrder[p2.prerelease] !== undefined
67
+ ? prereleaseOrder[p2.prerelease]
68
+ : 0;
69
+ if (order1 !== order2)
70
+ return order1 - order2;
71
+ // Compare prerelease numbers
72
+ const num1 = p1.prereleaseNum !== undefined ? p1.prereleaseNum : 0;
73
+ const num2 = p2.prereleaseNum !== undefined ? p2.prereleaseNum : 0;
74
+ return num1 - num2;
75
+ }
76
+ /**
77
+ * Check if there's a newer prerelease available given the current version.
78
+ */
79
+ export function isNewerVersion(current, available) {
80
+ return compareVersions(available, current) > 0;
81
+ }
82
+ //# sourceMappingURL=prerelease.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prerelease.js","sourceRoot":"","sources":["../../../src/lib/install-binary/prerelease.ts"],"names":[],"mappings":"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"}
@@ -6,5 +6,6 @@ export interface InstallOptions {
6
6
  export interface InstallResult {
7
7
  binaryPath: string;
8
8
  version: string;
9
+ newerPrereleaseAvailable?: string;
9
10
  }
10
11
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/install-binary/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;CAChB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/install-binary/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,wBAAwB,CAAC,EAAE,MAAM,CAAA;CAClC"}