psycgod-sage 1.0.26 → 1.1.0
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 +85 -12
- package/dist/cli/index.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,14 +1,87 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
2
|
+
import { spawnSync } from 'node:child_process';
|
|
3
|
+
import { readFileSync } from 'node:fs';
|
|
4
|
+
function packageVersion() {
|
|
5
|
+
try {
|
|
6
|
+
const packageUrl = new URL('../../package.json', import.meta.url);
|
|
7
|
+
const metadata = JSON.parse(readFileSync(packageUrl, 'utf8'));
|
|
8
|
+
return metadata.version || 'unknown';
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
return 'unknown';
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
function usage() {
|
|
15
|
+
console.log('Usage: sage <command> [args...]');
|
|
16
|
+
console.log(' sage run -- <command> [args...]');
|
|
17
|
+
}
|
|
18
|
+
function runPythonSage(args) {
|
|
19
|
+
const candidates = process.platform === 'win32'
|
|
20
|
+
? ['py', 'python']
|
|
21
|
+
: ['python3', 'python'];
|
|
22
|
+
for (const executable of candidates) {
|
|
23
|
+
const probe = spawnSync(executable, ['-c', 'import sage'], {
|
|
24
|
+
cwd: process.cwd(),
|
|
25
|
+
env: process.env,
|
|
26
|
+
stdio: 'ignore',
|
|
27
|
+
shell: false,
|
|
28
|
+
});
|
|
29
|
+
if (probe.error || probe.status !== 0)
|
|
30
|
+
continue;
|
|
31
|
+
const result = spawnSync(executable, ['-m', 'sage', ...args], {
|
|
32
|
+
cwd: process.cwd(),
|
|
33
|
+
env: process.env,
|
|
34
|
+
stdio: 'inherit',
|
|
35
|
+
shell: false,
|
|
36
|
+
});
|
|
37
|
+
if (result.error) {
|
|
38
|
+
console.error(`[SAGE npm] ${result.error.message}`);
|
|
39
|
+
return 1;
|
|
40
|
+
}
|
|
41
|
+
return result.status ?? 1;
|
|
42
|
+
}
|
|
43
|
+
console.error('[SAGE npm] The full SAGE CLI requires the Python package.');
|
|
44
|
+
console.error('[SAGE npm] Install it with: pip install psycgod-sage');
|
|
45
|
+
return 1;
|
|
46
|
+
}
|
|
47
|
+
function main(args) {
|
|
48
|
+
if (args.length === 1 && (args[0] === '--version' || args[0] === '-V')) {
|
|
49
|
+
console.log(packageVersion());
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
if (args[0] !== 'run') {
|
|
53
|
+
return runPythonSage(args);
|
|
54
|
+
}
|
|
55
|
+
const separator = args.indexOf('--');
|
|
56
|
+
const commandParts = separator >= 0 ? args.slice(separator + 1) : args.slice(1);
|
|
57
|
+
if (commandParts.length === 0) {
|
|
58
|
+
usage();
|
|
59
|
+
return 1;
|
|
60
|
+
}
|
|
61
|
+
const [command, ...commandArgs] = commandParts;
|
|
62
|
+
const stdinFile = process.env.SAGE_STDIN_FILE?.trim();
|
|
63
|
+
let input;
|
|
64
|
+
if (stdinFile) {
|
|
65
|
+
try {
|
|
66
|
+
input = readFileSync(stdinFile);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
console.error(`[SAGE npm] Could not read SAGE_STDIN_FILE: ${error instanceof Error ? error.message : String(error)}`);
|
|
70
|
+
return 1;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
const result = spawnSync(command, commandArgs, {
|
|
74
|
+
cwd: process.cwd(),
|
|
75
|
+
env: process.env,
|
|
76
|
+
stdio: input ? ['pipe', 'inherit', 'inherit'] : 'inherit',
|
|
77
|
+
input,
|
|
78
|
+
shell: process.platform === 'win32',
|
|
79
|
+
});
|
|
80
|
+
if (result.error) {
|
|
81
|
+
console.error(`[SAGE npm] ${result.error.message}`);
|
|
82
|
+
return 1;
|
|
83
|
+
}
|
|
84
|
+
return result.status ?? 1;
|
|
85
|
+
}
|
|
86
|
+
process.exit(main(process.argv.slice(2)));
|
|
14
87
|
//# sourceMappingURL=index.js.map
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|