@scitus/hazel 0.0.1 → 0.0.3
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/dist/cli/index.js +3 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/updater.d.ts +13 -0
- package/dist/cli/updater.d.ts.map +1 -0
- package/dist/cli/updater.js +106 -0
- package/dist/cli/updater.js.map +1 -0
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -11,11 +11,14 @@ import { resolve } from 'path';
|
|
|
11
11
|
loadEnv({ path: resolve(process.cwd(), '.env') });
|
|
12
12
|
import chalk from 'chalk';
|
|
13
13
|
import { runApiMode } from './api-mode.js';
|
|
14
|
+
import { checkForUpdates } from './updater.js';
|
|
14
15
|
const hazel = {
|
|
15
16
|
error: chalk.red,
|
|
16
17
|
};
|
|
17
18
|
async function main() {
|
|
18
19
|
try {
|
|
20
|
+
// Auto-update silently if new version available
|
|
21
|
+
await checkForUpdates(true);
|
|
19
22
|
await runApiMode();
|
|
20
23
|
}
|
|
21
24
|
catch (error) {
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,uBAAuB;AACvB,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAElD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AAEA;;;;;GAKG;AAEH,uBAAuB;AACvB,OAAO,EAAE,MAAM,IAAI,OAAO,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC/B,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAElD,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE/C,MAAM,KAAK,GAAG;IACZ,KAAK,EAAE,KAAK,CAAC,GAAG;CACjB,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,gDAAgD;QAChD,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QAE5B,MAAM,UAAU,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-updater for Hazel CLI
|
|
3
|
+
*
|
|
4
|
+
* Checks npm registry for updates and can auto-update.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Check for updates and auto-update if available
|
|
8
|
+
*
|
|
9
|
+
* @param autoUpdate - If true, automatically updates and restarts
|
|
10
|
+
* @returns true if was updated, false otherwise
|
|
11
|
+
*/
|
|
12
|
+
export declare function checkForUpdates(autoUpdate?: boolean): Promise<boolean>;
|
|
13
|
+
//# sourceMappingURL=updater.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updater.d.ts","sourceRoot":"","sources":["../../src/cli/updater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AA6EH;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,UAAU,UAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CA2BzE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-updater for Hazel CLI
|
|
3
|
+
*
|
|
4
|
+
* Checks npm registry for updates and can auto-update.
|
|
5
|
+
*/
|
|
6
|
+
import { execSync } from 'child_process';
|
|
7
|
+
import { readFileSync } from 'fs';
|
|
8
|
+
import { fileURLToPath } from 'url';
|
|
9
|
+
import { dirname, join } from 'path';
|
|
10
|
+
import chalk from 'chalk';
|
|
11
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
12
|
+
const PACKAGE_NAME = '@scitus/hazel';
|
|
13
|
+
/**
|
|
14
|
+
* Get current installed version
|
|
15
|
+
*/
|
|
16
|
+
function getCurrentVersion() {
|
|
17
|
+
try {
|
|
18
|
+
const pkgPath = join(__dirname, '../../package.json');
|
|
19
|
+
const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
|
|
20
|
+
return pkg.version;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return '0.0.0';
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Get latest version from npm registry
|
|
28
|
+
*/
|
|
29
|
+
async function getLatestVersion() {
|
|
30
|
+
try {
|
|
31
|
+
const res = await fetch(`https://registry.npmjs.org/${PACKAGE_NAME}/latest`, {
|
|
32
|
+
headers: { 'Accept': 'application/json' },
|
|
33
|
+
});
|
|
34
|
+
if (!res.ok)
|
|
35
|
+
return null;
|
|
36
|
+
const data = await res.json();
|
|
37
|
+
return data.version;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Compare semantic versions
|
|
45
|
+
* Returns: 1 if a > b, -1 if a < b, 0 if equal
|
|
46
|
+
*/
|
|
47
|
+
function compareVersions(a, b) {
|
|
48
|
+
const pa = a.split('.').map(Number);
|
|
49
|
+
const pb = b.split('.').map(Number);
|
|
50
|
+
for (let i = 0; i < 3; i++) {
|
|
51
|
+
if (pa[i] > pb[i])
|
|
52
|
+
return 1;
|
|
53
|
+
if (pa[i] < pb[i])
|
|
54
|
+
return -1;
|
|
55
|
+
}
|
|
56
|
+
return 0;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Perform the update silently
|
|
60
|
+
*/
|
|
61
|
+
function performUpdate() {
|
|
62
|
+
try {
|
|
63
|
+
console.log(chalk.cyan(' Updating Hazel...'));
|
|
64
|
+
execSync(`npm install -g ${PACKAGE_NAME}@latest`, {
|
|
65
|
+
stdio: 'pipe',
|
|
66
|
+
timeout: 60000
|
|
67
|
+
});
|
|
68
|
+
console.log(chalk.green(' ✓ Updated! Restarting...\n'));
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
// Silent fail - continue with current version
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Check for updates and auto-update if available
|
|
78
|
+
*
|
|
79
|
+
* @param autoUpdate - If true, automatically updates and restarts
|
|
80
|
+
* @returns true if was updated, false otherwise
|
|
81
|
+
*/
|
|
82
|
+
export async function checkForUpdates(autoUpdate = true) {
|
|
83
|
+
if (process.env.HAZEL_SKIP_UPDATE === 'true') {
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
const current = getCurrentVersion();
|
|
87
|
+
const latest = await getLatestVersion();
|
|
88
|
+
if (!latest || compareVersions(latest, current) <= 0) {
|
|
89
|
+
return false;
|
|
90
|
+
}
|
|
91
|
+
// Update available
|
|
92
|
+
console.log(chalk.yellow(` ⬆ Updating: ${current} → ${latest}`));
|
|
93
|
+
if (autoUpdate && performUpdate()) {
|
|
94
|
+
// Re-execute with skip flag to prevent update loop
|
|
95
|
+
try {
|
|
96
|
+
execSync(`HAZEL_SKIP_UPDATE=true ${PACKAGE_NAME}`, { stdio: 'inherit' });
|
|
97
|
+
process.exit(0);
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// Continue with current session
|
|
101
|
+
}
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=updater.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updater.js","sourceRoot":"","sources":["../../src/cli/updater.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,YAAY,GAAG,eAAe,CAAC;AAMrC;;GAEG;AACH,SAAS,iBAAiB;IACxB,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QACtD,MAAM,GAAG,GAAgB,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;QACpE,OAAO,GAAG,CAAC,OAAO,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,gBAAgB;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,8BAA8B,YAAY,SAAS,EAAE;YAC3E,OAAO,EAAE,EAAE,QAAQ,EAAE,kBAAkB,EAAE;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAyB,CAAC;QACrD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,eAAe,CAAC,CAAS,EAAE,CAAS;IAC3C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;QAC5B,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;GAEG;AACH,SAAS,aAAa;IACpB,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC/C,QAAQ,CAAC,kBAAkB,YAAY,SAAS,EAAE;YAChD,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,8CAA8C;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAU,GAAG,IAAI;IACrD,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,KAAK,MAAM,EAAE,CAAC;QAC7C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IAExC,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,mBAAmB;IACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,iBAAiB,OAAO,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC;IAElE,IAAI,UAAU,IAAI,aAAa,EAAE,EAAE,CAAC;QAClC,mDAAmD;QACnD,IAAI,CAAC;YACH,QAAQ,CAAC,0BAA0B,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|