@devbie/newbie-cli 0.1.0-stage.1 → 0.1.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.
- package/README.md +244 -0
- package/dist/assemble/assets.js.map +1 -1
- package/dist/assemble/dependencies.js.map +1 -1
- package/dist/assemble/env.js.map +1 -1
- package/dist/assemble/module-graph.d.ts +14 -0
- package/dist/assemble/module-graph.js +51 -0
- package/dist/assemble/module-graph.js.map +1 -0
- package/dist/assemble/modules-copy.js +1 -3
- package/dist/assemble/modules-copy.js.map +1 -1
- package/dist/assemble/modules.js +2 -6
- package/dist/assemble/modules.js.map +1 -1
- package/dist/assemble/pipeline.d.ts +5 -0
- package/dist/assemble/pipeline.js +59 -13
- package/dist/assemble/pipeline.js.map +1 -1
- package/dist/assemble/schema.d.ts +1 -1
- package/dist/assemble/schema.js +28 -15
- package/dist/assemble/schema.js.map +1 -1
- package/dist/commands/agent.d.ts +5 -1
- package/dist/commands/agent.js +214 -7
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/apply.d.ts +1 -0
- package/dist/commands/apply.js +1 -0
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/config.js +39 -13
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/create.js +1 -7
- package/dist/commands/create.js.map +1 -1
- package/dist/commands/default.js +1 -2
- package/dist/commands/default.js.map +1 -1
- package/dist/commands/dev/lint.d.ts +3 -0
- package/dist/commands/dev/lint.js +82 -0
- package/dist/commands/dev/lint.js.map +1 -0
- package/dist/commands/doctor.js +23 -14
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/install.js +4 -1
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/status.d.ts +27 -0
- package/dist/commands/status.js +9 -8
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/update-template.js.map +1 -1
- package/dist/commands/update.d.ts +2 -0
- package/dist/commands/update.js +51 -6
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/watch.d.ts +5 -0
- package/dist/commands/watch.js +128 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/constants/paths.js +1 -4
- package/dist/constants/paths.js.map +1 -1
- package/dist/core/assets.js.map +1 -1
- package/dist/core/dependency-plan.js +1 -4
- package/dist/core/dependency-plan.js.map +1 -1
- package/dist/core/drift.js.map +1 -1
- package/dist/core/env-file.js +2 -5
- package/dist/core/env-file.js.map +1 -1
- package/dist/core/layer-lint.d.ts +15 -0
- package/dist/core/layer-lint.js +165 -0
- package/dist/core/layer-lint.js.map +1 -0
- package/dist/core/module-closure.d.ts +18 -0
- package/dist/core/module-closure.js +71 -0
- package/dist/core/module-closure.js.map +1 -0
- package/dist/core/module-manifest.d.ts +4 -0
- package/dist/core/module-manifest.js +24 -0
- package/dist/core/module-manifest.js.map +1 -1
- package/dist/core/modules-state.js +3 -9
- package/dist/core/modules-state.js.map +1 -1
- package/dist/core/prisma-schema.d.ts +1 -0
- package/dist/core/prisma-schema.js +16 -4
- package/dist/core/prisma-schema.js.map +1 -1
- package/dist/core/semver.js +1 -3
- package/dist/core/semver.js.map +1 -1
- package/dist/core/template-sync.js +1 -2
- package/dist/core/template-sync.js.map +1 -1
- package/dist/core/unified-diff.js +1 -4
- package/dist/core/unified-diff.js.map +1 -1
- package/dist/index.js +71 -61
- package/dist/index.js.map +1 -1
- package/dist/lib/check.js.map +1 -1
- package/dist/lib/cli-runner.d.ts +1 -0
- package/dist/lib/cli-runner.js +26 -0
- package/dist/lib/cli-runner.js.map +1 -0
- package/dist/lib/drift.js +1 -8
- package/dist/lib/drift.js.map +1 -1
- package/dist/lib/exec.js.map +1 -1
- package/dist/lib/fs-util.js.map +1 -1
- package/dist/lib/issues.js.map +1 -1
- package/dist/lib/loading.js.map +1 -1
- package/dist/lib/module-cli.d.ts +13 -0
- package/dist/lib/module-cli.js +76 -0
- package/dist/lib/module-cli.js.map +1 -0
- package/dist/lib/module-install.js.map +1 -1
- package/dist/lib/modules-state.js.map +1 -1
- package/dist/lib/registry.js +1 -3
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/version.d.ts +1 -0
- package/dist/lib/version.js +5 -0
- package/dist/lib/version.js.map +1 -0
- package/dist/public.d.ts +9 -0
- package/dist/public.js +21 -0
- package/dist/public.js.map +1 -0
- package/package.json +7 -5
- package/dist/commands/check.d.ts +0 -2
- package/dist/commands/check.js +0 -37
- package/dist/commands/check.js.map +0 -1
- package/dist/commands/env.d.ts +0 -7
- package/dist/commands/env.js +0 -324
- package/dist/commands/env.js.map +0 -1
- package/dist/lib/env-tool-config.d.ts +0 -17
- package/dist/lib/env-tool-config.js +0 -32
- package/dist/lib/env-tool-config.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"public.js","sourceRoot":"","sources":["../src/public.ts"],"names":[],"mappings":";;;AAYA,uCAA4D;AAAnD,kGAAA,QAAQ,OAAA;AAAE,4GAAA,kBAAkB,OAAA;AACrC,uCAAwC;AAA/B,kGAAA,QAAQ,OAAA;AAEjB,4CAAoE;AAA3D,qGAAA,SAAS,OAAA;AAAE,oGAAA,QAAQ,OAAA;AAAE,wGAAA,YAAY,OAAA;AAC1C,2CAAyE;AAAhE,iGAAA,QAAQ,OAAA;AAAE,mHAAA,0BAA0B,OAAA;AAC7C,mCAAmD;AAA1C,mGAAA,WAAW,OAAA;AAAE,gGAAA,QAAQ,OAAA;AAG9B,+CAAuC;AAA9B,iGAAA,GAAG,OAAA"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devbie/newbie-cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "newbie backend framework CLI",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "worldzhy",
|
|
7
7
|
"bin": {
|
|
8
8
|
"newbie": "dist/index.js"
|
|
9
9
|
},
|
|
10
|
+
"exports": {
|
|
11
|
+
"./lib": "./dist/public.js"
|
|
12
|
+
},
|
|
10
13
|
"files": [
|
|
11
14
|
"dist"
|
|
12
15
|
],
|
|
@@ -15,22 +18,21 @@
|
|
|
15
18
|
},
|
|
16
19
|
"scripts": {
|
|
17
20
|
"build": "tsc -p tsconfig.json && chmod +x dist/index.js",
|
|
18
|
-
"clean": "rimraf dist",
|
|
21
|
+
"clean": "rimraf dist tsconfig.tsbuildinfo",
|
|
19
22
|
"test": "node --import tsx --test test/*.test.ts",
|
|
20
23
|
"prepublishOnly": "npm run build"
|
|
21
24
|
},
|
|
22
25
|
"dependencies": {
|
|
23
|
-
"@aws-sdk/client-secrets-manager": "^3.0.0",
|
|
24
26
|
"@inquirer/prompts": "^7.0.0",
|
|
25
27
|
"colorette": "^2.0.20",
|
|
26
28
|
"commander": "^12.1.0",
|
|
27
|
-
"figlet": "^1.7.0"
|
|
29
|
+
"figlet": "^1.7.0",
|
|
30
|
+
"tsx": "^4.19.0"
|
|
28
31
|
},
|
|
29
32
|
"devDependencies": {
|
|
30
33
|
"@types/figlet": "^1.5.8",
|
|
31
34
|
"@types/node": "^22.0.0",
|
|
32
35
|
"rimraf": "^6.1.3",
|
|
33
|
-
"tsx": "^4.19.0",
|
|
34
36
|
"typescript": "^5.9.3"
|
|
35
37
|
},
|
|
36
38
|
"engines": {
|
package/dist/commands/check.d.ts
DELETED
package/dist/commands/check.js
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.runCheck = runCheck;
|
|
7
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
8
|
-
const figlet_1 = __importDefault(require("figlet"));
|
|
9
|
-
const colorette_1 = require("colorette");
|
|
10
|
-
const check_1 = require("../lib/check");
|
|
11
|
-
const errors_1 = require("../lib/errors");
|
|
12
|
-
const modules_state_1 = require("../lib/modules-state");
|
|
13
|
-
const modules_state_2 = require("../core/modules-state");
|
|
14
|
-
async function runCheck(options) {
|
|
15
|
-
console.info(figlet_1.default.textSync("Newbie", {
|
|
16
|
-
font: "Epic",
|
|
17
|
-
width: 80,
|
|
18
|
-
whitespaceBreak: true,
|
|
19
|
-
}));
|
|
20
|
-
console.info("Checking environment variables...\n");
|
|
21
|
-
const cwd = node_path_1.default.resolve(options.cwd);
|
|
22
|
-
const state = await (0, modules_state_1.readModulesState)(cwd);
|
|
23
|
-
const missing = await (0, check_1.collectMissingEnv)(cwd, (0, modules_state_2.moduleKeys)(state));
|
|
24
|
-
const groups = Object.keys(missing);
|
|
25
|
-
if (groups.length === 0) {
|
|
26
|
-
console.info((0, colorette_1.green)("[info] All environment variables are set."));
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
for (const moduleName of groups) {
|
|
30
|
-
console.info((0, colorette_1.yellow)(`Module ${moduleName} missing:`));
|
|
31
|
-
for (const key of missing[moduleName])
|
|
32
|
-
console.info((0, colorette_1.red)(` ${key}`));
|
|
33
|
-
console.info("");
|
|
34
|
-
}
|
|
35
|
-
throw new errors_1.CliError(`${groups.length} module(s) have missing environment variables.`);
|
|
36
|
-
}
|
|
37
|
-
//# sourceMappingURL=check.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":";;;;;AAWA,4BA6BC;AAxCD,0DAA6B;AAC7B,oDAA4B;AAC5B,yCAA+C;AAE/C,wCAAiD;AACjD,0CAAyC;AACzC,wDAAwD;AACxD,yDAAmD;AAI5C,KAAK,UAAU,QAAQ,CAAC,OAAsB;IACnD,OAAO,CAAC,IAAI,CACV,gBAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE;QACxB,IAAI,EAAE,MAAM;QACZ,KAAK,EAAE,EAAE;QACT,eAAe,EAAE,IAAI;KACtB,CAAC,CACH,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAEpD,MAAM,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,IAAA,gCAAgB,EAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,MAAM,IAAA,yBAAiB,EAAC,GAAG,EAAE,IAAA,0BAAU,EAAC,KAAK,CAAC,CAAC,CAAC;IAEhE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,IAAA,iBAAK,EAAC,2CAA2C,CAAC,CAAC,CAAC;QACjE,OAAO;IACT,CAAC;IAED,KAAK,MAAM,UAAU,IAAI,MAAM,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,IAAA,kBAAM,EAAC,UAAU,UAAU,WAAW,CAAC,CAAC,CAAC;QACtD,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,IAAA,eAAG,EAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,MAAM,IAAI,iBAAQ,CAChB,GAAG,MAAM,CAAC,MAAM,gDAAgD,CACjE,CAAC;AACJ,CAAC"}
|
package/dist/commands/env.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { GlobalOptions } from "./shared";
|
|
2
|
-
export interface EnvCommandOptions extends GlobalOptions {
|
|
3
|
-
environment?: string;
|
|
4
|
-
yes?: boolean;
|
|
5
|
-
}
|
|
6
|
-
export declare function runEnvPull(options: EnvCommandOptions): Promise<void>;
|
|
7
|
-
export declare function runEnvPush(options: EnvCommandOptions): Promise<void>;
|
package/dist/commands/env.js
DELETED
|
@@ -1,324 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.runEnvPull = runEnvPull;
|
|
7
|
-
exports.runEnvPush = runEnvPush;
|
|
8
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
9
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
-
const prompts_1 = require("@inquirer/prompts");
|
|
11
|
-
const colorette_1 = require("colorette");
|
|
12
|
-
const client_secrets_manager_1 = require("@aws-sdk/client-secrets-manager");
|
|
13
|
-
const env_file_1 = require("../core/env-file");
|
|
14
|
-
const paths_1 = require("../constants/paths");
|
|
15
|
-
const errors_1 = require("../lib/errors");
|
|
16
|
-
const issues_1 = require("../lib/issues");
|
|
17
|
-
const env_tool_config_1 = require("../lib/env-tool-config");
|
|
18
|
-
const PLACEHOLDER = "<PLEASE_SET_THIS_VALUE>";
|
|
19
|
-
function createAwsClient(region) {
|
|
20
|
-
return new client_secrets_manager_1.SecretsManagerClient({
|
|
21
|
-
region,
|
|
22
|
-
credentials: process.env.AWS_ACCESS_KEY_ID
|
|
23
|
-
? {
|
|
24
|
-
accessKeyId: process.env.AWS_ACCESS_KEY_ID,
|
|
25
|
-
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY ?? "",
|
|
26
|
-
}
|
|
27
|
-
: undefined,
|
|
28
|
-
});
|
|
29
|
-
}
|
|
30
|
-
function printCredentialHint() {
|
|
31
|
-
if (process.env.AWS_ACCESS_KEY_ID || process.env.AWS_SECRET_ACCESS_KEY)
|
|
32
|
-
return;
|
|
33
|
-
if (process.env.AWS_PROFILE) {
|
|
34
|
-
console.info((0, colorette_1.cyan)(`ℹ️ Using AWS Profile: ${(0, colorette_1.bold)(process.env.AWS_PROFILE)}\n`));
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
console.info((0, colorette_1.cyan)("ℹ️ No AWS credentials in env; falling back to SSO/login, ~/.aws/credentials or IAM role.\n"));
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
async function pickEnvironment(config, preselected) {
|
|
41
|
-
const names = Object.keys(config.environments);
|
|
42
|
-
if (preselected) {
|
|
43
|
-
if (!names.includes(preselected)) {
|
|
44
|
-
throw new errors_1.CliError(`Unknown environment '${preselected}'. Available: ${names.join(", ")}`);
|
|
45
|
-
}
|
|
46
|
-
return preselected;
|
|
47
|
-
}
|
|
48
|
-
return (0, prompts_1.select)({
|
|
49
|
-
message: "Select env set:",
|
|
50
|
-
choices: names.map((name) => ({ name, value: name })),
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
function setEntry(lines, key, value) {
|
|
54
|
-
for (const line of lines) {
|
|
55
|
-
if (line.kind === "entry" && line.key === key) {
|
|
56
|
-
line.value = value;
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
lines.push({ kind: "entry", key, value });
|
|
61
|
-
}
|
|
62
|
-
function parseSecret(secret, secretConfig) {
|
|
63
|
-
const envVars = {};
|
|
64
|
-
const keysOnlyVars = {};
|
|
65
|
-
const placeholderKeys = [];
|
|
66
|
-
const data = JSON.parse(secret);
|
|
67
|
-
const picked = secretConfig.keys && secretConfig.keys.length > 0
|
|
68
|
-
? secretConfig.keys
|
|
69
|
-
: Object.keys(data);
|
|
70
|
-
for (const key of picked) {
|
|
71
|
-
if (!Object.prototype.hasOwnProperty.call(data, key))
|
|
72
|
-
continue;
|
|
73
|
-
const value = String(data[key]);
|
|
74
|
-
envVars[key] = value;
|
|
75
|
-
if (value === PLACEHOLDER)
|
|
76
|
-
placeholderKeys.push(key);
|
|
77
|
-
}
|
|
78
|
-
for (const key of secretConfig.keysOnly ?? []) {
|
|
79
|
-
if (Object.prototype.hasOwnProperty.call(data, key)) {
|
|
80
|
-
delete envVars[key];
|
|
81
|
-
keysOnlyVars[key] = PLACEHOLDER;
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
return { envVars, keysOnlyVars, placeholderKeys };
|
|
85
|
-
}
|
|
86
|
-
async function runEnvPull(options) {
|
|
87
|
-
const { config: toolConfig, path: configPath } = await (0, env_tool_config_1.readEnvToolConfig)(options.cwd);
|
|
88
|
-
const issues = new issues_1.IssueBag();
|
|
89
|
-
const envName = await pickEnvironment(toolConfig, options.environment);
|
|
90
|
-
const envConfig = toolConfig.environments[envName];
|
|
91
|
-
printCredentialHint();
|
|
92
|
-
const client = createAwsClient(envConfig.region);
|
|
93
|
-
const pulled = {};
|
|
94
|
-
const keysOnly = {};
|
|
95
|
-
const placeholderKeys = [];
|
|
96
|
-
console.info((0, colorette_1.cyan)("📥 Pulling secrets...\n"));
|
|
97
|
-
for (const secretConfig of envConfig.secrets) {
|
|
98
|
-
try {
|
|
99
|
-
console.info(` Pulling: ${secretConfig.name}`);
|
|
100
|
-
const response = await client.send(new client_secrets_manager_1.GetSecretValueCommand({ SecretId: secretConfig.name }));
|
|
101
|
-
const secretString = response.SecretString ??
|
|
102
|
-
new TextDecoder().decode(response.SecretBinary);
|
|
103
|
-
const parsed = parseSecret(secretString, secretConfig);
|
|
104
|
-
Object.assign(pulled, parsed.envVars);
|
|
105
|
-
Object.assign(keysOnly, parsed.keysOnlyVars);
|
|
106
|
-
placeholderKeys.push(...parsed.placeholderKeys);
|
|
107
|
-
console.info((0, colorette_1.green)(` ✓ ${Object.keys(parsed.envVars).length + Object.keys(parsed.keysOnlyVars).length} variables\n`));
|
|
108
|
-
}
|
|
109
|
-
catch (error) {
|
|
110
|
-
issues.warn(`Failed to pull ${secretConfig.name}: ${error.message}`);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
const envTarget = node_path_1.default.resolve(options.cwd, paths_1.ENV_PATH);
|
|
114
|
-
let raw = "";
|
|
115
|
-
try {
|
|
116
|
-
raw = await promises_1.default.readFile(envTarget, "utf8");
|
|
117
|
-
}
|
|
118
|
-
catch {
|
|
119
|
-
}
|
|
120
|
-
const lines = (0, env_file_1.parseEnv)(raw);
|
|
121
|
-
const existing = (0, env_file_1.envValues)(lines);
|
|
122
|
-
for (const [key, newValue] of Object.entries(pulled)) {
|
|
123
|
-
if (key in existing && existing[key] !== newValue) {
|
|
124
|
-
let overwrite = false;
|
|
125
|
-
if (!options.yes && !options.dryRun && process.stdin.isTTY) {
|
|
126
|
-
overwrite = await (0, prompts_1.confirm)({
|
|
127
|
-
message: `${key} differs from AWS value. Overwrite?`,
|
|
128
|
-
default: false,
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
if (overwrite)
|
|
132
|
-
setEntry(lines, key, newValue);
|
|
133
|
-
}
|
|
134
|
-
else if (!(key in existing)) {
|
|
135
|
-
setEntry(lines, key, newValue);
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
const addedKeysOnly = [];
|
|
139
|
-
for (const [key, value] of Object.entries(keysOnly)) {
|
|
140
|
-
if (!(key in existing)) {
|
|
141
|
-
setEntry(lines, key, value);
|
|
142
|
-
addedKeysOnly.push(key);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
const next = (0, env_file_1.serializeEnv)(lines);
|
|
146
|
-
if (next === raw) {
|
|
147
|
-
console.info((0, colorette_1.cyan)("[info] .env is already up to date."));
|
|
148
|
-
}
|
|
149
|
-
else if (options.dryRun) {
|
|
150
|
-
console.info((0, colorette_1.yellow)(`[dry-run] would update ${paths_1.ENV_PATH} (config: ${configPath})`));
|
|
151
|
-
}
|
|
152
|
-
else {
|
|
153
|
-
let shouldWrite = options.yes ?? false;
|
|
154
|
-
if (!shouldWrite && process.stdin.isTTY) {
|
|
155
|
-
shouldWrite = await (0, prompts_1.confirm)({
|
|
156
|
-
message: "Write environment variables to .env?",
|
|
157
|
-
default: true,
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
if (!shouldWrite) {
|
|
161
|
-
console.info((0, colorette_1.yellow)("Write cancelled"));
|
|
162
|
-
return;
|
|
163
|
-
}
|
|
164
|
-
await promises_1.default.writeFile(envTarget, next, "utf8");
|
|
165
|
-
console.info((0, colorette_1.green)(`✓ Updated ${paths_1.ENV_PATH}`));
|
|
166
|
-
}
|
|
167
|
-
const placeholders = [...new Set([...placeholderKeys, ...addedKeysOnly])];
|
|
168
|
-
if (placeholders.length > 0) {
|
|
169
|
-
console.info((0, colorette_1.yellow)(`\n⚠️ Placeholder variables needing manual values: ${placeholders.join(", ")}`));
|
|
170
|
-
}
|
|
171
|
-
issues.assertEmpty();
|
|
172
|
-
console.info((0, colorette_1.bold)((0, colorette_1.green)("🍺 Done!\n")));
|
|
173
|
-
}
|
|
174
|
-
async function secretExists(client, name) {
|
|
175
|
-
try {
|
|
176
|
-
await client.send(new client_secrets_manager_1.DescribeSecretCommand({ SecretId: name }));
|
|
177
|
-
return true;
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
if (error.name === "ResourceNotFoundException")
|
|
181
|
-
return false;
|
|
182
|
-
throw error;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
async function getExistingSecret(client, name) {
|
|
186
|
-
try {
|
|
187
|
-
const response = await client.send(new client_secrets_manager_1.GetSecretValueCommand({ SecretId: name }));
|
|
188
|
-
return response.SecretString
|
|
189
|
-
? JSON.parse(response.SecretString)
|
|
190
|
-
: {};
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
if (error.name === "ResourceNotFoundException")
|
|
194
|
-
return null;
|
|
195
|
-
throw error;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
async function runEnvPush(options) {
|
|
199
|
-
const { config: toolConfig } = await (0, env_tool_config_1.readEnvToolConfig)(options.cwd);
|
|
200
|
-
const envName = await pickEnvironment(toolConfig, options.environment);
|
|
201
|
-
const envConfig = toolConfig.environments[envName];
|
|
202
|
-
printCredentialHint();
|
|
203
|
-
const envTarget = node_path_1.default.resolve(options.cwd, paths_1.ENV_PATH);
|
|
204
|
-
let raw;
|
|
205
|
-
try {
|
|
206
|
-
raw = await promises_1.default.readFile(envTarget, "utf8");
|
|
207
|
-
}
|
|
208
|
-
catch {
|
|
209
|
-
throw new errors_1.CliError(`${paths_1.ENV_PATH} not found; nothing to push.`);
|
|
210
|
-
}
|
|
211
|
-
const localEnv = (0, env_file_1.envValues)((0, env_file_1.parseEnv)(raw));
|
|
212
|
-
const client = createAwsClient(envConfig.region);
|
|
213
|
-
for (const secretConfig of envConfig.secrets) {
|
|
214
|
-
console.info((0, colorette_1.cyan)(`\n📦 Secret: ${(0, colorette_1.bold)(secretConfig.name)}`));
|
|
215
|
-
let keys = secretConfig.keys ?? [];
|
|
216
|
-
if (keys.length === 0) {
|
|
217
|
-
if (!process.stdin.isTTY) {
|
|
218
|
-
throw new errors_1.CliError(`Secret ${secretConfig.name} has no "keys" list and cannot prompt in non-interactive mode.`);
|
|
219
|
-
}
|
|
220
|
-
keys = await (0, prompts_1.checkbox)({
|
|
221
|
-
message: `Select variables to push to ${secretConfig.name}:`,
|
|
222
|
-
choices: Object.keys(localEnv).map((key) => ({
|
|
223
|
-
value: key,
|
|
224
|
-
name: key,
|
|
225
|
-
})),
|
|
226
|
-
pageSize: 15,
|
|
227
|
-
});
|
|
228
|
-
if (keys.length === 0) {
|
|
229
|
-
console.info((0, colorette_1.yellow)(" - No variables selected, skipping"));
|
|
230
|
-
continue;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
const valuesToPush = {};
|
|
234
|
-
for (const key of keys) {
|
|
235
|
-
if (key in localEnv)
|
|
236
|
-
valuesToPush[key] = localEnv[key];
|
|
237
|
-
else
|
|
238
|
-
console.warn((0, colorette_1.yellow)(` ⚠️ ${key} not found in ${paths_1.ENV_PATH}`));
|
|
239
|
-
}
|
|
240
|
-
const preserveKeysOnly = new Set();
|
|
241
|
-
if ((secretConfig.keysOnly ?? []).length > 0) {
|
|
242
|
-
const existing = (await secretExists(client, secretConfig.name))
|
|
243
|
-
? await getExistingSecret(client, secretConfig.name)
|
|
244
|
-
: null;
|
|
245
|
-
for (const key of secretConfig.keysOnly ?? []) {
|
|
246
|
-
if (!existing || !(key in existing)) {
|
|
247
|
-
valuesToPush[key] = PLACEHOLDER;
|
|
248
|
-
}
|
|
249
|
-
else {
|
|
250
|
-
preserveKeysOnly.add(key);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
if (Object.keys(valuesToPush).length === 0) {
|
|
255
|
-
console.info((0, colorette_1.yellow)(" - Nothing to push, skipping"));
|
|
256
|
-
continue;
|
|
257
|
-
}
|
|
258
|
-
const exists = await secretExists(client, secretConfig.name);
|
|
259
|
-
if (exists) {
|
|
260
|
-
const existing = (await getExistingSecret(client, secretConfig.name)) ?? {};
|
|
261
|
-
const added = [];
|
|
262
|
-
const modified = [];
|
|
263
|
-
for (const [key, value] of Object.entries(valuesToPush)) {
|
|
264
|
-
if (!(key in existing))
|
|
265
|
-
added.push(key);
|
|
266
|
-
else if (existing[key] !== value && value !== PLACEHOLDER)
|
|
267
|
-
modified.push(key);
|
|
268
|
-
}
|
|
269
|
-
if (added.length === 0 && modified.length === 0) {
|
|
270
|
-
console.info((0, colorette_1.cyan)(" ℹ️ No changes, skipping"));
|
|
271
|
-
continue;
|
|
272
|
-
}
|
|
273
|
-
console.info((0, colorette_1.green)(` added: ${added.join(", ") || "(none)"}`));
|
|
274
|
-
console.info((0, colorette_1.yellow)(` modified: ${modified.join(", ") || "(none)"}`));
|
|
275
|
-
if (options.dryRun) {
|
|
276
|
-
console.info((0, colorette_1.yellow)(" [dry-run] would update secret"));
|
|
277
|
-
continue;
|
|
278
|
-
}
|
|
279
|
-
const confirmed = options.yes ||
|
|
280
|
-
(process.stdin.isTTY &&
|
|
281
|
-
(await (0, prompts_1.confirm)({
|
|
282
|
-
message: `Update ${secretConfig.name}?`,
|
|
283
|
-
default: true,
|
|
284
|
-
})));
|
|
285
|
-
if (!confirmed)
|
|
286
|
-
continue;
|
|
287
|
-
const merged = { ...existing };
|
|
288
|
-
for (const [key, value] of Object.entries(valuesToPush)) {
|
|
289
|
-
if (value === PLACEHOLDER &&
|
|
290
|
-
preserveKeysOnly.has(key) &&
|
|
291
|
-
key in existing)
|
|
292
|
-
continue;
|
|
293
|
-
merged[key] = value;
|
|
294
|
-
}
|
|
295
|
-
await client.send(new client_secrets_manager_1.UpdateSecretCommand({
|
|
296
|
-
SecretId: secretConfig.name,
|
|
297
|
-
SecretString: JSON.stringify(merged, null, 2),
|
|
298
|
-
}));
|
|
299
|
-
console.info((0, colorette_1.green)(` ✓ Updated ${secretConfig.name}`));
|
|
300
|
-
}
|
|
301
|
-
else {
|
|
302
|
-
if (options.dryRun) {
|
|
303
|
-
console.info((0, colorette_1.yellow)(" [dry-run] would create secret"));
|
|
304
|
-
continue;
|
|
305
|
-
}
|
|
306
|
-
const confirmed = options.yes ||
|
|
307
|
-
(process.stdin.isTTY &&
|
|
308
|
-
(await (0, prompts_1.confirm)({
|
|
309
|
-
message: `Create new secret ${secretConfig.name}?`,
|
|
310
|
-
default: true,
|
|
311
|
-
})));
|
|
312
|
-
if (!confirmed)
|
|
313
|
-
continue;
|
|
314
|
-
await client.send(new client_secrets_manager_1.CreateSecretCommand({
|
|
315
|
-
Name: secretConfig.name,
|
|
316
|
-
Description: secretConfig.description || "Created by newbie env tool",
|
|
317
|
-
SecretString: JSON.stringify(valuesToPush, null, 2),
|
|
318
|
-
}));
|
|
319
|
-
console.info((0, colorette_1.green)(` ✓ Created ${secretConfig.name}`));
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
console.info((0, colorette_1.bold)((0, colorette_1.green)("\n🍺 Done!\n")));
|
|
323
|
-
}
|
|
324
|
-
//# sourceMappingURL=env.js.map
|
package/dist/commands/env.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/commands/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface SecretConfig {
|
|
2
|
-
name: string;
|
|
3
|
-
description?: string;
|
|
4
|
-
keys?: string[];
|
|
5
|
-
keysOnly?: string[];
|
|
6
|
-
}
|
|
7
|
-
export interface EnvironmentConfig {
|
|
8
|
-
region: string;
|
|
9
|
-
secrets: SecretConfig[];
|
|
10
|
-
}
|
|
11
|
-
export interface EnvToolConfig {
|
|
12
|
-
environments: Record<string, EnvironmentConfig>;
|
|
13
|
-
}
|
|
14
|
-
export declare function readEnvToolConfig(cwd: string): Promise<{
|
|
15
|
-
config: EnvToolConfig;
|
|
16
|
-
path: string;
|
|
17
|
-
}>;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.readEnvToolConfig = readEnvToolConfig;
|
|
7
|
-
const promises_1 = __importDefault(require("node:fs/promises"));
|
|
8
|
-
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
-
const paths_1 = require("../constants/paths");
|
|
10
|
-
const errors_1 = require("./errors");
|
|
11
|
-
async function readEnvToolConfig(cwd) {
|
|
12
|
-
for (const candidate of paths_1.ENV_TOOL_CONFIG_CANDIDATES) {
|
|
13
|
-
const target = node_path_1.default.resolve(cwd, candidate);
|
|
14
|
-
try {
|
|
15
|
-
const raw = await promises_1.default.readFile(target, "utf8");
|
|
16
|
-
const parsed = JSON.parse(raw);
|
|
17
|
-
if (!parsed.environments || typeof parsed.environments !== "object") {
|
|
18
|
-
throw new errors_1.CliError(`Invalid env-tool config ${candidate}: missing "environments".`);
|
|
19
|
-
}
|
|
20
|
-
return { config: parsed, path: candidate };
|
|
21
|
-
}
|
|
22
|
-
catch (error) {
|
|
23
|
-
if (error.code === "ENOENT")
|
|
24
|
-
continue;
|
|
25
|
-
if (error instanceof errors_1.CliError)
|
|
26
|
-
throw error;
|
|
27
|
-
throw new errors_1.CliError(`Cannot parse env-tool config ${candidate}: ${error.message}`);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
throw new errors_1.CliError(`Env tool config not found. Looked at: ${paths_1.ENV_TOOL_CONFIG_CANDIDATES.join(", ")}`);
|
|
31
|
-
}
|
|
32
|
-
//# sourceMappingURL=env-tool-config.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"env-tool-config.js","sourceRoot":"","sources":["../../src/lib/env-tool-config.ts"],"names":[],"mappings":";;;;;AAwBA,8CA0BC;AAlDD,gEAAkC;AAClC,0DAA6B;AAE7B,8CAAgE;AAChE,qCAAoC;AAoB7B,KAAK,UAAU,iBAAiB,CACrC,GAAW;IAEX,KAAK,MAAM,SAAS,IAAI,kCAA0B,EAAE,CAAC;QACnD,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAkB,CAAC;YAChD,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACpE,MAAM,IAAI,iBAAQ,CAChB,2BAA2B,SAAS,2BAA2B,CAChE,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACjE,IAAI,KAAK,YAAY,iBAAQ;gBAAE,MAAM,KAAK,CAAC;YAC3C,MAAM,IAAI,iBAAQ,CAChB,gCAAgC,SAAS,KAAM,KAAe,CAAC,OAAO,EAAE,CACzE,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,iBAAQ,CAChB,yCAAyC,kCAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACjF,CAAC;AACJ,CAAC"}
|