@suronai/cli 0.1.2 → 0.1.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.
- package/README.md +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/login.js +31 -14
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/rotate.js +1 -1
- package/dist/commands/rotate.js.map +1 -1
- package/dist/commands/whoami.js +1 -1
- package/dist/commands/whoami.js.map +1 -1
- package/dist/utils/config.d.ts +7 -1
- package/dist/utils/config.js +90 -6
- package/dist/utils/config.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -43,5 +43,5 @@ Re-encrypts `.env` with a new private key, updates Convex, deletes `.env.keys`.
|
|
|
43
43
|
|---|---|---|
|
|
44
44
|
| `.suron.json` | yes | app name + id |
|
|
45
45
|
| `.env` | yes | encrypted by dotenvx |
|
|
46
|
-
| `~/.suron` | no | your API key |
|
|
46
|
+
| `~/.suron-config` | no | your API key + deployment URL |
|
|
47
47
|
| `.env.keys` | no | deleted by suron init |
|
package/dist/commands/init.js
CHANGED
|
@@ -12,7 +12,7 @@ exports.initCommand = new commander_1.Command("init")
|
|
|
12
12
|
.action(async (opts) => {
|
|
13
13
|
const cwd = process.cwd();
|
|
14
14
|
const apiKey = (0, config_1.requireApiKey)();
|
|
15
|
-
const apiUrl = (0, config_1.
|
|
15
|
+
const apiUrl = (0, config_1.requireApiUrl)();
|
|
16
16
|
// 1. Check .env exists
|
|
17
17
|
if (!(0, fs_1.existsSync)((0, path_1.join)(cwd, ".env"))) {
|
|
18
18
|
console.error("error: .env not found in current directory");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,2BAA+C;AAC/C,+BAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,2BAA+C;AAC/C,+BAA4B;AAC5B,4CAA+D;AAC/D,8CAAiF;AAEpE,QAAA,WAAW,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,+CAA+C,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,IAAuB,EAAE,EAAE;IACxC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;IAE/B,uBAAuB;IACvB,IAAI,CAAC,IAAA,eAAU,EAAC,IAAA,WAAI,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GACX,IAAI,CAAC,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,YAAY,CAAC;IAE7D,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAEvD,wDAAwD;IACxD,IAAI,CAAC;QACH,IAAA,uBAAa,EAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,qCAAqC;IACrC,IAAI,UAAkB,CAAC;IACvB,IAAI,CAAC;QACH,UAAU,GAAG,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAE1C,0EAA0E;IAC1E,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,mBAAmB,EAAE;YAC9C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC;SACjE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,+BAA+B,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuB,CAAC;IAEtD,kEAAkE;IAClE,IAAA,wBAAc,EAAC,GAAG,CAAC,CAAC;IAEpB,uBAAuB;IACvB,MAAM,SAAS,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACpD,IAAA,kBAAa,EACX,IAAA,WAAI,EAAC,GAAG,EAAE,aAAa,CAAC,EACxB,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EACzC,OAAO,CACR,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;IACxD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC"}
|
package/dist/commands/login.js
CHANGED
|
@@ -7,33 +7,50 @@ const config_1 = require("../utils/config");
|
|
|
7
7
|
exports.loginCommand = new commander_1.Command("login")
|
|
8
8
|
.description("Link your Telegram account to Suron")
|
|
9
9
|
.action(async () => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
console.log("\n Suron Login\n");
|
|
11
|
+
// Step 1: Get the API URL — prompt if not already saved
|
|
12
|
+
let apiUrl = (0, config_1.getApiUrl)();
|
|
13
|
+
if (!apiUrl) {
|
|
14
|
+
const input = await (0, config_1.prompt)(" Convex deployment URL (https://xxx.convex.site): ");
|
|
15
|
+
if (!input) {
|
|
16
|
+
console.error("\nerror: URL is required");
|
|
17
|
+
process.exit(1);
|
|
18
|
+
}
|
|
19
|
+
apiUrl = input.replace(/\/$/, "");
|
|
20
|
+
(0, config_1.saveConfig)({ apiUrl });
|
|
21
|
+
console.log(` Saved to ~/.suron-config\n`);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
console.log(` Using API URL: ${apiUrl}\n`);
|
|
25
|
+
}
|
|
26
|
+
// Step 2: Request a one-time login token from the backend
|
|
27
|
+
console.log(" Contacting Suron backend...");
|
|
13
28
|
let res;
|
|
14
29
|
try {
|
|
15
30
|
res = await fetch(`${apiUrl}/cli/start-login`, { method: "POST" });
|
|
16
31
|
}
|
|
17
32
|
catch (err) {
|
|
18
|
-
console.error(
|
|
19
|
-
console.error(`
|
|
33
|
+
console.error(`\nerror: could not reach ${apiUrl}`);
|
|
34
|
+
console.error(` Is the Convex deployment running?`);
|
|
20
35
|
process.exit(1);
|
|
21
36
|
}
|
|
22
37
|
if (!res.ok) {
|
|
23
38
|
const text = await res.text().catch(() => "");
|
|
24
|
-
console.error(
|
|
39
|
+
console.error(`\nerror: /cli/start-login failed (${res.status}): ${text}`);
|
|
25
40
|
process.exit(1);
|
|
26
41
|
}
|
|
27
42
|
const data = (await res.json());
|
|
28
43
|
const telegramUrl = `https://t.me/${data.bot_username}?start=${data.token}`;
|
|
29
|
-
console.log(`\n Open Telegram and tap Start:\n
|
|
30
|
-
|
|
44
|
+
console.log(`\n Open this URL in Telegram and tap Start:\n`);
|
|
45
|
+
console.log(` ${telegramUrl}\n`);
|
|
46
|
+
// Try to open browser automatically (best effort)
|
|
31
47
|
const opener = process.platform === "win32" ? "start" :
|
|
32
48
|
process.platform === "darwin" ? "open" : "xdg-open";
|
|
33
49
|
(0, child_process_1.exec)(`${opener} "${telegramUrl}"`);
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
50
|
+
await (0, config_1.prompt)(" Press Enter once you have tapped Start in Telegram...");
|
|
51
|
+
// Step 3: Poll until Telegram confirms the link
|
|
52
|
+
console.log("\n Waiting for Telegram confirmation...");
|
|
53
|
+
const deadline = Date.now() + 120000;
|
|
37
54
|
while (Date.now() < deadline) {
|
|
38
55
|
await sleep(2000);
|
|
39
56
|
let statusRes;
|
|
@@ -47,12 +64,12 @@ exports.loginCommand = new commander_1.Command("login")
|
|
|
47
64
|
continue;
|
|
48
65
|
const status = (await statusRes.json());
|
|
49
66
|
if (status.confirmed && status.api_key) {
|
|
50
|
-
(0, config_1.
|
|
51
|
-
console.log("
|
|
67
|
+
(0, config_1.saveConfig)({ apiKey: status.api_key });
|
|
68
|
+
console.log("\n Logged in. Credentials saved to ~/.suron-config\n");
|
|
52
69
|
return;
|
|
53
70
|
}
|
|
54
71
|
}
|
|
55
|
-
console.error("
|
|
72
|
+
console.error("\nerror: login timed out after 2 minutes. Run: suron login");
|
|
56
73
|
process.exit(1);
|
|
57
74
|
});
|
|
58
75
|
function sleep(ms) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,iDAAqC;AACrC,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/rotate.js
CHANGED
|
@@ -11,7 +11,7 @@ exports.rotateCommand = new commander_1.Command("rotate")
|
|
|
11
11
|
.action(async () => {
|
|
12
12
|
const cwd = process.cwd();
|
|
13
13
|
const apiKey = (0, config_1.requireApiKey)();
|
|
14
|
-
const apiUrl = (0, config_1.
|
|
14
|
+
const apiUrl = (0, config_1.requireApiUrl)();
|
|
15
15
|
// 1. Read existing .suron.json
|
|
16
16
|
const suronJsonPath = (0, path_1.join)(cwd, ".suron.json");
|
|
17
17
|
if (!(0, fs_1.existsSync)(suronJsonPath)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,2BAA8C;AAC9C,+BAA4B;AAC5B,
|
|
1
|
+
{"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/commands/rotate.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/whoami.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.whoamiCommand = new commander_1.Command("whoami")
|
|
|
7
7
|
.description("Show your linked Telegram account and app info")
|
|
8
8
|
.action(async () => {
|
|
9
9
|
const apiKey = (0, config_1.requireApiKey)();
|
|
10
|
-
const apiUrl = (0, config_1.
|
|
10
|
+
const apiUrl = (0, config_1.requireApiUrl)();
|
|
11
11
|
let res;
|
|
12
12
|
try {
|
|
13
13
|
res = await fetch(`${apiUrl}/cli/whoami`, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../src/commands/whoami.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,4CAA+D;AAElD,QAAA,aAAa,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC/C,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAA,sBAAa,GAAE,CAAC;IAE/B,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,aAAa,EAAE;YACxC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;aAClC;SACF,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,qCAAqC,GAAG,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9C,OAAO,CAAC,KAAK,CAAC,yBAAyB,GAAG,CAAC,MAAM,MAAM,IAAI,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAG7B,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/C,CAAC,CAAC,CAAC"}
|
package/dist/utils/config.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
export declare function getApiKey(): string | null;
|
|
2
|
+
export declare function getApiUrl(): string | null;
|
|
3
|
+
export declare function saveConfig(values: {
|
|
4
|
+
apiKey?: string;
|
|
5
|
+
apiUrl?: string;
|
|
6
|
+
}): void;
|
|
2
7
|
export declare function saveApiKey(key: string): void;
|
|
3
8
|
export declare function requireApiKey(): string;
|
|
4
|
-
export declare function
|
|
9
|
+
export declare function requireApiUrl(): string;
|
|
10
|
+
export declare function prompt(question: string): Promise<string>;
|
package/dist/utils/config.js
CHANGED
|
@@ -1,13 +1,50 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.getApiKey = getApiKey;
|
|
37
|
+
exports.getApiUrl = getApiUrl;
|
|
38
|
+
exports.saveConfig = saveConfig;
|
|
4
39
|
exports.saveApiKey = saveApiKey;
|
|
5
40
|
exports.requireApiKey = requireApiKey;
|
|
6
|
-
exports.
|
|
41
|
+
exports.requireApiUrl = requireApiUrl;
|
|
42
|
+
exports.prompt = prompt;
|
|
7
43
|
const os_1 = require("os");
|
|
8
44
|
const path_1 = require("path");
|
|
9
45
|
const fs_1 = require("fs");
|
|
10
|
-
const
|
|
46
|
+
const readline = __importStar(require("readline"));
|
|
47
|
+
const CONFIG_PATH = (0, path_1.join)((0, os_1.homedir)(), ".suron-config");
|
|
11
48
|
function getApiKey() {
|
|
12
49
|
if (!(0, fs_1.existsSync)(CONFIG_PATH))
|
|
13
50
|
return null;
|
|
@@ -20,8 +57,43 @@ function getApiKey() {
|
|
|
20
57
|
return null;
|
|
21
58
|
}
|
|
22
59
|
}
|
|
60
|
+
function getApiUrl() {
|
|
61
|
+
// Check env var first, then config file
|
|
62
|
+
if (process.env.SURON_API_URL)
|
|
63
|
+
return process.env.SURON_API_URL.replace(/\/$/, "");
|
|
64
|
+
if (!(0, fs_1.existsSync)(CONFIG_PATH))
|
|
65
|
+
return null;
|
|
66
|
+
try {
|
|
67
|
+
const content = (0, fs_1.readFileSync)(CONFIG_PATH, "utf-8");
|
|
68
|
+
const match = content.match(/SURON_API_URL=(.+)/);
|
|
69
|
+
return match?.[1]?.trim() ?? null;
|
|
70
|
+
}
|
|
71
|
+
catch {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
function saveConfig(values) {
|
|
76
|
+
let content = (0, fs_1.existsSync)(CONFIG_PATH) ? (0, fs_1.readFileSync)(CONFIG_PATH, "utf-8") : "";
|
|
77
|
+
if (values.apiUrl) {
|
|
78
|
+
if (content.match(/SURON_API_URL=.*/)) {
|
|
79
|
+
content = content.replace(/SURON_API_URL=.*/, `SURON_API_URL=${values.apiUrl}`);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
content += `SURON_API_URL=${values.apiUrl}\n`;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
if (values.apiKey) {
|
|
86
|
+
if (content.match(/VAULT_API_KEY=.*/)) {
|
|
87
|
+
content = content.replace(/VAULT_API_KEY=.*/, `VAULT_API_KEY=${values.apiKey}`);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
content += `VAULT_API_KEY=${values.apiKey}\n`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
(0, fs_1.writeFileSync)(CONFIG_PATH, content, { mode: 0o600 });
|
|
94
|
+
}
|
|
23
95
|
function saveApiKey(key) {
|
|
24
|
-
(
|
|
96
|
+
saveConfig({ apiKey: key });
|
|
25
97
|
}
|
|
26
98
|
function requireApiKey() {
|
|
27
99
|
const key = getApiKey();
|
|
@@ -31,12 +103,24 @@ function requireApiKey() {
|
|
|
31
103
|
}
|
|
32
104
|
return key;
|
|
33
105
|
}
|
|
34
|
-
function
|
|
35
|
-
const url =
|
|
106
|
+
function requireApiUrl() {
|
|
107
|
+
const url = getApiUrl();
|
|
36
108
|
if (!url) {
|
|
37
|
-
console.error("error: SURON_API_URL
|
|
109
|
+
console.error("error: SURON_API_URL not set. Run: suron login");
|
|
38
110
|
process.exit(1);
|
|
39
111
|
}
|
|
40
112
|
return url;
|
|
41
113
|
}
|
|
114
|
+
function prompt(question) {
|
|
115
|
+
const rl = readline.createInterface({
|
|
116
|
+
input: process.stdin,
|
|
117
|
+
output: process.stdout,
|
|
118
|
+
});
|
|
119
|
+
return new Promise((resolve) => {
|
|
120
|
+
rl.question(question, (answer) => {
|
|
121
|
+
rl.close();
|
|
122
|
+
resolve(answer.trim());
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
42
126
|
//# sourceMappingURL=config.js.map
|
package/dist/utils/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|