@rmartz/envctl 3.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 +79 -0
- package/dist/envctl.d.ts +3 -0
- package/dist/envctl.d.ts.map +1 -0
- package/dist/envctl.js +36 -0
- package/dist/envctl.js.map +1 -0
- package/dist/lib/auth.d.ts +21 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +148 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/check-firebase.d.ts +6 -0
- package/dist/lib/check-firebase.d.ts.map +1 -0
- package/dist/lib/check-firebase.js +81 -0
- package/dist/lib/check-firebase.js.map +1 -0
- package/dist/lib/check-live.d.ts +3 -0
- package/dist/lib/check-live.d.ts.map +1 -0
- package/dist/lib/check-live.js +50 -0
- package/dist/lib/check-live.js.map +1 -0
- package/dist/lib/check.d.ts +9 -0
- package/dist/lib/check.d.ts.map +1 -0
- package/dist/lib/check.js +165 -0
- package/dist/lib/check.js.map +1 -0
- package/dist/lib/cli/help.d.ts +4 -0
- package/dist/lib/cli/help.d.ts.map +1 -0
- package/dist/lib/cli/help.js +52 -0
- package/dist/lib/cli/help.js.map +1 -0
- package/dist/lib/cli/registry.d.ts +19 -0
- package/dist/lib/cli/registry.d.ts.map +1 -0
- package/dist/lib/cli/registry.js +111 -0
- package/dist/lib/cli/registry.js.map +1 -0
- package/dist/lib/cli/router.d.ts +22 -0
- package/dist/lib/cli/router.d.ts.map +1 -0
- package/dist/lib/cli/router.js +98 -0
- package/dist/lib/cli/router.js.map +1 -0
- package/dist/lib/cli/version.d.ts +2 -0
- package/dist/lib/cli/version.d.ts.map +1 -0
- package/dist/lib/cli/version.js +58 -0
- package/dist/lib/cli/version.js.map +1 -0
- package/dist/lib/commands/auth.d.ts +2 -0
- package/dist/lib/commands/auth.d.ts.map +1 -0
- package/dist/lib/commands/auth.js +33 -0
- package/dist/lib/commands/auth.js.map +1 -0
- package/dist/lib/commands/bootstrap-args.d.ts +11 -0
- package/dist/lib/commands/bootstrap-args.d.ts.map +1 -0
- package/dist/lib/commands/bootstrap-args.js +111 -0
- package/dist/lib/commands/bootstrap-args.js.map +1 -0
- package/dist/lib/commands/bootstrap.d.ts +5 -0
- package/dist/lib/commands/bootstrap.d.ts.map +1 -0
- package/dist/lib/commands/bootstrap.js +166 -0
- package/dist/lib/commands/bootstrap.js.map +1 -0
- package/dist/lib/commands/check.d.ts +3 -0
- package/dist/lib/commands/check.d.ts.map +1 -0
- package/dist/lib/commands/check.js +47 -0
- package/dist/lib/commands/check.js.map +1 -0
- package/dist/lib/commands/config-pull.d.ts +12 -0
- package/dist/lib/commands/config-pull.d.ts.map +1 -0
- package/dist/lib/commands/config-pull.js +161 -0
- package/dist/lib/commands/config-pull.js.map +1 -0
- package/dist/lib/commands/config-push-args.d.ts +9 -0
- package/dist/lib/commands/config-push-args.d.ts.map +1 -0
- package/dist/lib/commands/config-push-args.js +108 -0
- package/dist/lib/commands/config-push-args.js.map +1 -0
- package/dist/lib/commands/config-push.d.ts +6 -0
- package/dist/lib/commands/config-push.d.ts.map +1 -0
- package/dist/lib/commands/config-push.js +166 -0
- package/dist/lib/commands/config-push.js.map +1 -0
- package/dist/lib/commands/deployment-config.d.ts +9 -0
- package/dist/lib/commands/deployment-config.d.ts.map +1 -0
- package/dist/lib/commands/deployment-config.js +73 -0
- package/dist/lib/commands/deployment-config.js.map +1 -0
- package/dist/lib/commands/env-plan.d.ts +4 -0
- package/dist/lib/commands/env-plan.d.ts.map +1 -0
- package/dist/lib/commands/env-plan.js +85 -0
- package/dist/lib/commands/env-plan.js.map +1 -0
- package/dist/lib/commands/env.d.ts +4 -0
- package/dist/lib/commands/env.d.ts.map +1 -0
- package/dist/lib/commands/env.js +122 -0
- package/dist/lib/commands/env.js.map +1 -0
- package/dist/lib/commands/init.d.ts +3 -0
- package/dist/lib/commands/init.d.ts.map +1 -0
- package/dist/lib/commands/init.js +59 -0
- package/dist/lib/commands/init.js.map +1 -0
- package/dist/lib/commands/secrets-args.d.ts +13 -0
- package/dist/lib/commands/secrets-args.d.ts.map +1 -0
- package/dist/lib/commands/secrets-args.js +136 -0
- package/dist/lib/commands/secrets-args.js.map +1 -0
- package/dist/lib/commands/secrets-plan.d.ts +9 -0
- package/dist/lib/commands/secrets-plan.d.ts.map +1 -0
- package/dist/lib/commands/secrets-plan.js +109 -0
- package/dist/lib/commands/secrets-plan.js.map +1 -0
- package/dist/lib/commands/secrets.d.ts +7 -0
- package/dist/lib/commands/secrets.d.ts.map +1 -0
- package/dist/lib/commands/secrets.js +191 -0
- package/dist/lib/commands/secrets.js.map +1 -0
- package/dist/lib/deployments.d.ts +4 -0
- package/dist/lib/deployments.d.ts.map +1 -0
- package/dist/lib/deployments.js +83 -0
- package/dist/lib/deployments.js.map +1 -0
- package/dist/lib/environments.d.ts +4 -0
- package/dist/lib/environments.d.ts.map +1 -0
- package/dist/lib/environments.js +97 -0
- package/dist/lib/environments.js.map +1 -0
- package/dist/lib/firebase-credential.d.ts +28 -0
- package/dist/lib/firebase-credential.d.ts.map +1 -0
- package/dist/lib/firebase-credential.js +50 -0
- package/dist/lib/firebase-credential.js.map +1 -0
- package/dist/lib/firebase-invalidate.d.ts +4 -0
- package/dist/lib/firebase-invalidate.d.ts.map +1 -0
- package/dist/lib/firebase-invalidate.js +61 -0
- package/dist/lib/firebase-invalidate.js.map +1 -0
- package/dist/lib/firebase-vars.d.ts +14 -0
- package/dist/lib/firebase-vars.d.ts.map +1 -0
- package/dist/lib/firebase-vars.js +40 -0
- package/dist/lib/firebase-vars.js.map +1 -0
- package/dist/lib/firebase.d.ts +20 -0
- package/dist/lib/firebase.d.ts.map +1 -0
- package/dist/lib/firebase.js +189 -0
- package/dist/lib/firebase.js.map +1 -0
- package/dist/lib/gcp.d.ts +4 -0
- package/dist/lib/gcp.d.ts.map +1 -0
- package/dist/lib/gcp.js +53 -0
- package/dist/lib/gcp.js.map +1 -0
- package/dist/lib/generated-secrets.d.ts +16 -0
- package/dist/lib/generated-secrets.d.ts.map +1 -0
- package/dist/lib/generated-secrets.js +68 -0
- package/dist/lib/generated-secrets.js.map +1 -0
- package/dist/lib/logger.d.ts +7 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +60 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/manifest/index.d.ts +6 -0
- package/dist/lib/manifest/index.d.ts.map +1 -0
- package/dist/lib/manifest/index.js +15 -0
- package/dist/lib/manifest/index.js.map +1 -0
- package/dist/lib/manifest/parse.d.ts +11 -0
- package/dist/lib/manifest/parse.d.ts.map +1 -0
- package/dist/lib/manifest/parse.js +214 -0
- package/dist/lib/manifest/parse.js.map +1 -0
- package/dist/lib/manifest/resolve.d.ts +9 -0
- package/dist/lib/manifest/resolve.d.ts.map +1 -0
- package/dist/lib/manifest/resolve.js +34 -0
- package/dist/lib/manifest/resolve.js.map +1 -0
- package/dist/lib/manifest/types.d.ts +57 -0
- package/dist/lib/manifest/types.d.ts.map +1 -0
- package/dist/lib/manifest/types.js +12 -0
- package/dist/lib/manifest/types.js.map +1 -0
- package/dist/lib/manifest/write.d.ts +3 -0
- package/dist/lib/manifest/write.d.ts.map +1 -0
- package/dist/lib/manifest/write.js +110 -0
- package/dist/lib/manifest/write.js.map +1 -0
- package/dist/lib/project.d.ts +6 -0
- package/dist/lib/project.d.ts.map +1 -0
- package/dist/lib/project.js +56 -0
- package/dist/lib/project.js.map +1 -0
- package/dist/lib/providers/deployment.d.ts +19 -0
- package/dist/lib/providers/deployment.d.ts.map +1 -0
- package/dist/lib/providers/deployment.js +62 -0
- package/dist/lib/providers/deployment.js.map +1 -0
- package/dist/lib/providers/registry.d.ts +5 -0
- package/dist/lib/providers/registry.d.ts.map +1 -0
- package/dist/lib/providers/registry.js +31 -0
- package/dist/lib/providers/registry.js.map +1 -0
- package/dist/lib/providers/service.d.ts +35 -0
- package/dist/lib/providers/service.d.ts.map +1 -0
- package/dist/lib/providers/service.js +81 -0
- package/dist/lib/providers/service.js.map +1 -0
- package/dist/lib/rotation-preflight.d.ts +11 -0
- package/dist/lib/rotation-preflight.d.ts.map +1 -0
- package/dist/lib/rotation-preflight.js +47 -0
- package/dist/lib/rotation-preflight.js.map +1 -0
- package/dist/lib/rotation.d.ts +33 -0
- package/dist/lib/rotation.d.ts.map +1 -0
- package/dist/lib/rotation.js +168 -0
- package/dist/lib/rotation.js.map +1 -0
- package/dist/lib/sentry.d.ts +5 -0
- package/dist/lib/sentry.d.ts.map +1 -0
- package/dist/lib/sentry.js +132 -0
- package/dist/lib/sentry.js.map +1 -0
- package/dist/lib/subprocess.d.ts +8 -0
- package/dist/lib/subprocess.d.ts.map +1 -0
- package/dist/lib/subprocess.js +30 -0
- package/dist/lib/subprocess.js.map +1 -0
- package/dist/lib/targets.d.ts +3 -0
- package/dist/lib/targets.d.ts.map +1 -0
- package/dist/lib/targets.js +25 -0
- package/dist/lib/targets.js.map +1 -0
- package/dist/lib/vercel-api.d.ts +50 -0
- package/dist/lib/vercel-api.d.ts.map +1 -0
- package/dist/lib/vercel-api.js +176 -0
- package/dist/lib/vercel-api.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,108 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.PUSH_USAGE = void 0;
|
|
37
|
+
exports.parsePushArgs = parsePushArgs;
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const logger_1 = require("../logger");
|
|
40
|
+
exports.PUSH_USAGE = `Usage: envctl config push [OPTIONS]
|
|
41
|
+
|
|
42
|
+
Upsert public (non-secret) environment variables to a Vercel project from
|
|
43
|
+
deployment configuration files. Reads the list of active environments from
|
|
44
|
+
<deployment-dir>/environments.yml and per-environment values from
|
|
45
|
+
<deployment-dir>/{env}.yml.
|
|
46
|
+
|
|
47
|
+
The development Vercel target is always populated from the same YAML source as
|
|
48
|
+
the staging/preview environment. It does not appear in environments.yml and has
|
|
49
|
+
no dedicated YAML file. Existing variables are updated in place; missing ones
|
|
50
|
+
are created as plain-type records. Variables not present in the config files are
|
|
51
|
+
left untouched.
|
|
52
|
+
|
|
53
|
+
OPTIONS:
|
|
54
|
+
--env <name> Target a specific environment by name as listed in
|
|
55
|
+
environments.yml, or 'development' for the implicit
|
|
56
|
+
development target (default: all active environments
|
|
57
|
+
plus development)
|
|
58
|
+
--deployment-dir <path> Path to the deployment config directory, resolved
|
|
59
|
+
against the project root (default: deployment)
|
|
60
|
+
--dry-run Print what would change without making any API calls
|
|
61
|
+
-h, --help Show this help
|
|
62
|
+
|
|
63
|
+
ENVIRONMENT MAPPING:
|
|
64
|
+
production → production (Vercel target)
|
|
65
|
+
staging → preview (Vercel target)
|
|
66
|
+
preview → preview (Vercel target)
|
|
67
|
+
development → development (implicit — mirrors staging/preview)
|
|
68
|
+
<other> → passed through as-is`;
|
|
69
|
+
// Parses the `config push` argument list. `args` has already had the global
|
|
70
|
+
// -C/--working-dir flag stripped by the router. The (absolute) project root is
|
|
71
|
+
// used to resolve the default and relative --deployment-dir values. Prints
|
|
72
|
+
// usage and exits 0 on -h/--help.
|
|
73
|
+
function parsePushArgs(args, workingDir) {
|
|
74
|
+
let targetEnv = "all";
|
|
75
|
+
let deploymentDir = "deployment";
|
|
76
|
+
let dryRun = false;
|
|
77
|
+
for (let i = 0; i < args.length; i++) {
|
|
78
|
+
const arg = args[i];
|
|
79
|
+
if (arg === "--env") {
|
|
80
|
+
targetEnv =
|
|
81
|
+
args[++i] ?? (0, logger_1.err)('--env requires an environment name or "all"');
|
|
82
|
+
if (!targetEnv)
|
|
83
|
+
(0, logger_1.err)('--env requires an environment name or "all"');
|
|
84
|
+
}
|
|
85
|
+
else if (arg === "--deployment-dir") {
|
|
86
|
+
deploymentDir = args[++i] ?? (0, logger_1.err)("--deployment-dir requires a path");
|
|
87
|
+
if (!deploymentDir)
|
|
88
|
+
(0, logger_1.err)("--deployment-dir requires a path");
|
|
89
|
+
}
|
|
90
|
+
else if (arg === "--dry-run") {
|
|
91
|
+
dryRun = true;
|
|
92
|
+
}
|
|
93
|
+
else if (arg === "-h" || arg === "--help") {
|
|
94
|
+
console.log(exports.PUSH_USAGE);
|
|
95
|
+
process.exit(0);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
(0, logger_1.err)(`Unknown option: ${arg}. Run 'envctl config push --help' for usage.`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
targetEnv,
|
|
103
|
+
workingDir,
|
|
104
|
+
deploymentDir: path.resolve(workingDir, deploymentDir),
|
|
105
|
+
dryRun,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=config-push-args.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-push-args.js","sourceRoot":"","sources":["../../../src/lib/commands/config-push-args.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,sCA8BC;AAnFD,2CAA6B;AAE7B,sCAAgC;AAiBnB,QAAA,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;qCA4BW,CAAC;AAEtC,4EAA4E;AAC5E,+EAA+E;AAC/E,2EAA2E;AAC3E,kCAAkC;AAClC,SAAgB,aAAa,CAAC,IAAc,EAAE,UAAkB;IAC9D,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,aAAa,GAAG,YAAY,CAAC;IACjC,IAAI,MAAM,GAAG,KAAK,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,SAAS;gBACP,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAA,YAAG,EAAC,6CAA6C,CAAC,CAAC;YAClE,IAAI,CAAC,SAAS;gBAAE,IAAA,YAAG,EAAC,6CAA6C,CAAC,CAAC;QACrE,CAAC;aAAM,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YACtC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,IAAA,YAAG,EAAC,kCAAkC,CAAC,CAAC;YACrE,IAAI,CAAC,aAAa;gBAAE,IAAA,YAAG,EAAC,kCAAkC,CAAC,CAAC;QAC9D,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;aAAM,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,kBAAU,CAAC,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,IAAA,YAAG,EAAC,mBAAmB,GAAG,8CAA8C,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAED,OAAO;QACL,SAAS;QACT,UAAU;QACV,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC;QACtD,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CommandContext } from "../cli/registry";
|
|
2
|
+
import { type PushOptions } from "./config-push-args";
|
|
3
|
+
export type { PushOptions };
|
|
4
|
+
export declare function runPush(opts: PushOptions): Promise<void>;
|
|
5
|
+
export declare function configPushCommand(ctx: CommandContext, args: string[]): Promise<void>;
|
|
6
|
+
//# sourceMappingURL=config-push.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-push.d.ts","sourceRoot":"","sources":["../../../src/lib/commands/config-push.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAMtD,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAOrE,YAAY,EAAE,WAAW,EAAE,CAAC;AAwH5B,wBAAsB,OAAO,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAkD9D;AAKD,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,cAAc,EACnB,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAEf"}
|
|
@@ -0,0 +1,166 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runPush = runPush;
|
|
37
|
+
exports.configPushCommand = configPushCommand;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const auth_1 = require("../auth");
|
|
41
|
+
const environments_1 = require("../environments");
|
|
42
|
+
const logger_1 = require("../logger");
|
|
43
|
+
const registry_1 = require("../providers/registry");
|
|
44
|
+
const targets_1 = require("../targets");
|
|
45
|
+
const config_push_args_1 = require("./config-push-args");
|
|
46
|
+
const env_plan_1 = require("./env-plan");
|
|
47
|
+
// Resolves which active environments to push and whether the implicit
|
|
48
|
+
// development target should be synced, validating the requested --env.
|
|
49
|
+
function resolvePlan(opts, activeEnvs, devSource) {
|
|
50
|
+
const envList = (0, env_plan_1.resolveEnvList)(activeEnvs, opts.targetEnv, devSource);
|
|
51
|
+
const syncDev = (opts.targetEnv === "all" || opts.targetEnv === "development") &&
|
|
52
|
+
devSource !== undefined;
|
|
53
|
+
return { envList, syncDev };
|
|
54
|
+
}
|
|
55
|
+
function dryRunPlan(opts, envList, syncDev, devSource, resolveTarget) {
|
|
56
|
+
(0, logger_1.log)("Dry run — no changes will be made");
|
|
57
|
+
for (const envName of envList) {
|
|
58
|
+
const envFile = path.join(opts.deploymentDir, `${envName}.yml`);
|
|
59
|
+
if (!fs.existsSync(envFile)) {
|
|
60
|
+
(0, logger_1.warn)(`No config file for '${envName}': ${envFile}`);
|
|
61
|
+
continue;
|
|
62
|
+
}
|
|
63
|
+
(0, logger_1.log)(`Would push ${envName} → ${resolveTarget(envName)}:`);
|
|
64
|
+
const vars = (0, environments_1.parseDeploymentEnv)(opts.deploymentDir, envName);
|
|
65
|
+
for (const key of Object.keys(vars))
|
|
66
|
+
(0, logger_1.log)(` Would push: ${key}`);
|
|
67
|
+
}
|
|
68
|
+
if (syncDev && devSource) {
|
|
69
|
+
(0, logger_1.log)(`Would push development (from ${devSource}) → development:`);
|
|
70
|
+
const vars = (0, environments_1.parseDeploymentEnv)(opts.deploymentDir, devSource);
|
|
71
|
+
for (const key of Object.keys(vars))
|
|
72
|
+
(0, logger_1.log)(` Would push: ${key}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Upserts every variable in `vars` for the given Vercel target, re-listing the
|
|
76
|
+
// remote env vars first so writes from a prior environment are reflected.
|
|
77
|
+
// Returns the running totals incremented by this pass.
|
|
78
|
+
async function pushVars(deployment, label, target, vars) {
|
|
79
|
+
let created = 0;
|
|
80
|
+
let updated = 0;
|
|
81
|
+
const allEnvs = await deployment.listEnvVars();
|
|
82
|
+
for (const key of Object.keys(vars)) {
|
|
83
|
+
const existing = deployment.findEnvVar(allEnvs.envs, key, target);
|
|
84
|
+
if (existing) {
|
|
85
|
+
await deployment.updateEnvVar(existing, vars[key]);
|
|
86
|
+
(0, logger_1.log)(` Updated : ${key}`);
|
|
87
|
+
updated++;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
await deployment.createEnvVar(key, vars[key], target, "plain");
|
|
91
|
+
(0, logger_1.log)(` Created : ${key}`);
|
|
92
|
+
created++;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
(0, logger_1.log)(` ${label} — ${created} created, ${updated} updated`);
|
|
96
|
+
return { created, updated };
|
|
97
|
+
}
|
|
98
|
+
// Pushes public env vars for a single named environment, skipping (with a
|
|
99
|
+
// warning) when its YAML file is missing or empty.
|
|
100
|
+
async function pushEnv(deployment, opts, envName, target) {
|
|
101
|
+
const envFile = path.join(opts.deploymentDir, `${envName}.yml`);
|
|
102
|
+
if (!fs.existsSync(envFile)) {
|
|
103
|
+
(0, logger_1.warn)(`No config file for '${envName}': ${envFile} — skipping`);
|
|
104
|
+
return { created: 0, updated: 0 };
|
|
105
|
+
}
|
|
106
|
+
(0, logger_1.log)(`Pushing ${envName} → ${target}...`);
|
|
107
|
+
const vars = (0, environments_1.parseDeploymentEnv)(opts.deploymentDir, envName);
|
|
108
|
+
if (Object.keys(vars).length === 0) {
|
|
109
|
+
(0, logger_1.warn)(`No variables found in ${envFile} — skipping`);
|
|
110
|
+
return { created: 0, updated: 0 };
|
|
111
|
+
}
|
|
112
|
+
return pushVars(deployment, envName, target, vars);
|
|
113
|
+
}
|
|
114
|
+
// Pushes the staging/preview YAML to the implicit development target.
|
|
115
|
+
async function pushDev(deployment, opts, devSource) {
|
|
116
|
+
const devEnvFile = path.join(opts.deploymentDir, `${devSource}.yml`);
|
|
117
|
+
if (!fs.existsSync(devEnvFile)) {
|
|
118
|
+
(0, logger_1.warn)(`No config file for development source '${devSource}': ${devEnvFile} — skipping development push`);
|
|
119
|
+
return { created: 0, updated: 0 };
|
|
120
|
+
}
|
|
121
|
+
const vars = (0, environments_1.parseDeploymentEnv)(opts.deploymentDir, devSource);
|
|
122
|
+
if (Object.keys(vars).length === 0) {
|
|
123
|
+
(0, logger_1.warn)(`No variables found in ${devEnvFile} — skipping development push`);
|
|
124
|
+
return { created: 0, updated: 0 };
|
|
125
|
+
}
|
|
126
|
+
(0, logger_1.log)(`Pushing development (from ${devSource}) → development...`);
|
|
127
|
+
return pushVars(deployment, `development (from ${devSource})`, "development", vars);
|
|
128
|
+
}
|
|
129
|
+
// Orchestrates the public-variable push. Accepts fully-resolved options so it
|
|
130
|
+
// is directly unit-testable (mirroring the predecessor's `sync-env` run()).
|
|
131
|
+
async function runPush(opts) {
|
|
132
|
+
const token = (0, auth_1.resolveVercelToken)();
|
|
133
|
+
(0, env_plan_1.assertDeploymentPrereqs)(opts.deploymentDir, token);
|
|
134
|
+
const deployment = (0, registry_1.resolveProjectDeployment)(opts.deploymentDir, opts.workingDir);
|
|
135
|
+
(0, logger_1.log)(`Project: ${deployment.projectId}${deployment.teamId ? ` (team: ${deployment.teamId})` : ""}`);
|
|
136
|
+
const activeEnvs = (0, environments_1.listActiveEnvs)(opts.deploymentDir);
|
|
137
|
+
if (activeEnvs.length === 0)
|
|
138
|
+
(0, logger_1.err)(`No active environments found in ${opts.deploymentDir}/environments.yml`);
|
|
139
|
+
const resolveTarget = (0, targets_1.envTargetResolver)(opts.deploymentDir);
|
|
140
|
+
const devSource = (0, env_plan_1.findDevSource)(opts.deploymentDir, activeEnvs);
|
|
141
|
+
const { envList, syncDev } = resolvePlan(opts, activeEnvs, devSource);
|
|
142
|
+
if (opts.dryRun) {
|
|
143
|
+
dryRunPlan(opts, envList, syncDev, devSource, resolveTarget);
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
let totalCreated = 0;
|
|
147
|
+
let totalUpdated = 0;
|
|
148
|
+
for (const envName of envList) {
|
|
149
|
+
const { created, updated } = await pushEnv(deployment, opts, envName, resolveTarget(envName));
|
|
150
|
+
totalCreated += created;
|
|
151
|
+
totalUpdated += updated;
|
|
152
|
+
}
|
|
153
|
+
if (syncDev && devSource) {
|
|
154
|
+
const { created, updated } = await pushDev(deployment, opts, devSource);
|
|
155
|
+
totalCreated += created;
|
|
156
|
+
totalUpdated += updated;
|
|
157
|
+
}
|
|
158
|
+
(0, logger_1.log)(`Done — ${totalCreated} created, ${totalUpdated} updated across all target environments.`);
|
|
159
|
+
}
|
|
160
|
+
// Command adapter: parses args (with the global -C already stripped by the
|
|
161
|
+
// router) and dispatches to runPush, resolving deployment-dir against the
|
|
162
|
+
// project root from ctx.workingDir.
|
|
163
|
+
async function configPushCommand(ctx, args) {
|
|
164
|
+
await runPush((0, config_push_args_1.parsePushArgs)(args, ctx.workingDir));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=config-push.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-push.js","sourceRoot":"","sources":["../../../src/lib/commands/config-push.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare const VALID_TARGETS: readonly ["production", "preview", "development"];
|
|
2
|
+
export type DeployTarget = (typeof VALID_TARGETS)[number];
|
|
3
|
+
export declare function isValidTarget(value: string): value is DeployTarget;
|
|
4
|
+
export declare function deploymentDir(workingDir: string): string;
|
|
5
|
+
export declare function environmentsFile(workingDir: string): string;
|
|
6
|
+
export declare function envFile(workingDir: string, name: string): string;
|
|
7
|
+
export declare function writeActiveEnvs(workingDir: string, active: string[]): void;
|
|
8
|
+
export declare function writeEnvFile(workingDir: string, name: string, variables: Record<string, string>): void;
|
|
9
|
+
//# sourceMappingURL=deployment-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-config.d.ts","sourceRoot":"","sources":["../../../src/lib/commands/deployment-config.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,aAAa,mDAAoD,CAAC;AAC/E,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE1D,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAElE;AAED,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAgB,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEhE;AAKD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAE1E;AAID,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,IAAI,CAKN"}
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.VALID_TARGETS = void 0;
|
|
37
|
+
exports.isValidTarget = isValidTarget;
|
|
38
|
+
exports.deploymentDir = deploymentDir;
|
|
39
|
+
exports.environmentsFile = environmentsFile;
|
|
40
|
+
exports.envFile = envFile;
|
|
41
|
+
exports.writeActiveEnvs = writeActiveEnvs;
|
|
42
|
+
exports.writeEnvFile = writeEnvFile;
|
|
43
|
+
const fs = __importStar(require("fs"));
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const yaml = __importStar(require("js-yaml"));
|
|
46
|
+
// The deploy targets `env add` accepts. The name→target mapping itself is the
|
|
47
|
+
// ported engine's convention (see vercelTarget); this is the validated set a
|
|
48
|
+
// caller may declare for an environment.
|
|
49
|
+
exports.VALID_TARGETS = ["production", "preview", "development"];
|
|
50
|
+
function isValidTarget(value) {
|
|
51
|
+
return exports.VALID_TARGETS.includes(value);
|
|
52
|
+
}
|
|
53
|
+
function deploymentDir(workingDir) {
|
|
54
|
+
return path.join(workingDir, "deployment");
|
|
55
|
+
}
|
|
56
|
+
function environmentsFile(workingDir) {
|
|
57
|
+
return path.join(deploymentDir(workingDir), "environments.yml");
|
|
58
|
+
}
|
|
59
|
+
function envFile(workingDir, name) {
|
|
60
|
+
return path.join(deploymentDir(workingDir), `${name}.yml`);
|
|
61
|
+
}
|
|
62
|
+
// Reserializes environments.yml from the active list. Per the recorded design
|
|
63
|
+
// decision this is a load→mutate→dump round-trip, so comments and key ordering
|
|
64
|
+
// in an existing file are not preserved.
|
|
65
|
+
function writeActiveEnvs(workingDir, active) {
|
|
66
|
+
fs.writeFileSync(environmentsFile(workingDir), yaml.dump({ active }));
|
|
67
|
+
}
|
|
68
|
+
// Writes a per-environment file in the nested format
|
|
69
|
+
// ({ environment, variables }), the form `init`/`env add` scaffold.
|
|
70
|
+
function writeEnvFile(workingDir, name, variables) {
|
|
71
|
+
fs.writeFileSync(envFile(workingDir, name), yaml.dump({ environment: name, variables }));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=deployment-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployment-config.js","sourceRoot":"","sources":["../../../src/lib/commands/deployment-config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,sCAEC;AAED,sCAEC;AAED,4CAEC;AAED,0BAEC;AAKD,0CAEC;AAID,oCASC;AA7CD,uCAAyB;AACzB,2CAA6B;AAE7B,8CAAgC;AAEhC,8EAA8E;AAC9E,6EAA6E;AAC7E,yCAAyC;AAC5B,QAAA,aAAa,GAAG,CAAC,YAAY,EAAE,SAAS,EAAE,aAAa,CAAU,CAAC;AAG/E,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAQ,qBAAmC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9D,CAAC;AAED,SAAgB,aAAa,CAAC,UAAkB;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;AAC7C,CAAC;AAED,SAAgB,gBAAgB,CAAC,UAAkB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,kBAAkB,CAAC,CAAC;AAClE,CAAC;AAED,SAAgB,OAAO,CAAC,UAAkB,EAAE,IAAY;IACtD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;AAC7D,CAAC;AAED,8EAA8E;AAC9E,+EAA+E;AAC/E,yCAAyC;AACzC,SAAgB,eAAe,CAAC,UAAkB,EAAE,MAAgB;IAClE,EAAE,CAAC,aAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,qDAAqD;AACrD,oEAAoE;AACpE,SAAgB,YAAY,CAC1B,UAAkB,EAClB,IAAY,EACZ,SAAiC;IAEjC,EAAE,CAAC,aAAa,CACd,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,EACzB,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAC5C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function assertDeploymentPrereqs(deploymentDir: string, token: string | undefined): asserts token is string;
|
|
2
|
+
export declare function findDevSource(deploymentDir: string, activeEnvs: string[]): string | undefined;
|
|
3
|
+
export declare function resolveEnvList(activeEnvs: string[], targetEnv: string, devSource: string | undefined): string[];
|
|
4
|
+
//# sourceMappingURL=env-plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-plan.d.ts","sourceRoot":"","sources":["../../../src/lib/commands/env-plan.ts"],"names":[],"mappings":"AAaA,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,KAAK,IAAI,MAAM,CASzB;AAQD,wBAAgB,aAAa,CAC3B,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,GAAG,SAAS,CAGpB;AAOD,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAAE,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,MAAM,EAAE,CAcV"}
|
|
@@ -0,0 +1,85 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.assertDeploymentPrereqs = assertDeploymentPrereqs;
|
|
37
|
+
exports.findDevSource = findDevSource;
|
|
38
|
+
exports.resolveEnvList = resolveEnvList;
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const logger_1 = require("../logger");
|
|
42
|
+
const targets_1 = require("../targets");
|
|
43
|
+
// Environment-planning helpers shared by `config push` and `secrets` — the
|
|
44
|
+
// logic that turns a requested --env value plus the active-environments list
|
|
45
|
+
// into the concrete set of named environments a command acts on.
|
|
46
|
+
// Preflight shared by the deployment-config commands: a Vercel token must
|
|
47
|
+
// resolve and the deployment directory (with its environments.yml) must exist.
|
|
48
|
+
// Narrows `token` to a string for the caller.
|
|
49
|
+
function assertDeploymentPrereqs(deploymentDir, token) {
|
|
50
|
+
if (!token)
|
|
51
|
+
(0, logger_1.err)("No Vercel token found. Set VERCEL_TOKEN or run 'vercel login' to authenticate.");
|
|
52
|
+
if (!fs.existsSync(deploymentDir))
|
|
53
|
+
(0, logger_1.err)(`Deployment directory not found: ${deploymentDir}`);
|
|
54
|
+
const envsFile = path.join(deploymentDir, "environments.yml");
|
|
55
|
+
if (!fs.existsSync(envsFile))
|
|
56
|
+
(0, logger_1.err)(`environments.yml not found: ${envsFile}`);
|
|
57
|
+
}
|
|
58
|
+
// Returns the first active env whose provider target is "preview" (i.e.
|
|
59
|
+
// staging), resolved from the manifest's authoritative targets map (#87) rather
|
|
60
|
+
// than inferred from the name convention. The implicit development target
|
|
61
|
+
// mirrors this source (public vars for `config push`; the shared Firebase
|
|
62
|
+
// project for `secrets`), so a project can now designate the dev source by
|
|
63
|
+
// declaring a `preview` target for a non-conventionally-named env.
|
|
64
|
+
function findDevSource(deploymentDir, activeEnvs) {
|
|
65
|
+
const resolveTarget = (0, targets_1.envTargetResolver)(deploymentDir);
|
|
66
|
+
return activeEnvs.find((e) => resolveTarget(e) === "preview");
|
|
67
|
+
}
|
|
68
|
+
// Resolves the concrete list of named environments from the requested --env:
|
|
69
|
+
// "all" → every active env; "development" → none (the implicit development
|
|
70
|
+
// target is handled separately and requires a devSource); otherwise the single
|
|
71
|
+
// named env, validated against the active list. Errors (via `err`) on an
|
|
72
|
+
// unknown --env or on "development" with no staging/preview source.
|
|
73
|
+
function resolveEnvList(activeEnvs, targetEnv, devSource) {
|
|
74
|
+
if (targetEnv === "all")
|
|
75
|
+
return activeEnvs;
|
|
76
|
+
if (targetEnv === "development") {
|
|
77
|
+
if (!devSource)
|
|
78
|
+
(0, logger_1.err)("--env development requires a staging or preview environment in environments.yml");
|
|
79
|
+
return [];
|
|
80
|
+
}
|
|
81
|
+
if (!activeEnvs.includes(targetEnv))
|
|
82
|
+
(0, logger_1.err)(`--env '${targetEnv}' not in active environments: ${activeEnvs.join(", ")}`);
|
|
83
|
+
return [targetEnv];
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=env-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-plan.js","sourceRoot":"","sources":["../../../src/lib/commands/env-plan.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaA,0DAYC;AAQD,sCAMC;AAOD,wCAkBC;AAhED,uCAAyB;AACzB,2CAA6B;AAE7B,sCAAgC;AAChC,wCAA+C;AAE/C,2EAA2E;AAC3E,6EAA6E;AAC7E,iEAAiE;AAEjE,0EAA0E;AAC1E,+EAA+E;AAC/E,8CAA8C;AAC9C,SAAgB,uBAAuB,CACrC,aAAqB,EACrB,KAAyB;IAEzB,IAAI,CAAC,KAAK;QACR,IAAA,YAAG,EACD,gFAAgF,CACjF,CAAC;IACJ,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;QAC/B,IAAA,YAAG,EAAC,mCAAmC,aAAa,EAAE,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;IAC9D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,IAAA,YAAG,EAAC,+BAA+B,QAAQ,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,wEAAwE;AACxE,gFAAgF;AAChF,0EAA0E;AAC1E,0EAA0E;AAC1E,2EAA2E;AAC3E,mEAAmE;AACnE,SAAgB,aAAa,CAC3B,aAAqB,EACrB,UAAoB;IAEpB,MAAM,aAAa,GAAG,IAAA,2BAAiB,EAAC,aAAa,CAAC,CAAC;IACvD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;AAChE,CAAC;AAED,6EAA6E;AAC7E,2EAA2E;AAC3E,+EAA+E;AAC/E,yEAAyE;AACzE,oEAAoE;AACpE,SAAgB,cAAc,CAC5B,UAAoB,EACpB,SAAiB,EACjB,SAA6B;IAE7B,IAAI,SAAS,KAAK,KAAK;QAAE,OAAO,UAAU,CAAC;IAC3C,IAAI,SAAS,KAAK,aAAa,EAAE,CAAC;QAChC,IAAI,CAAC,SAAS;YACZ,IAAA,YAAG,EACD,iFAAiF,CAClF,CAAC;QACJ,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;QACjC,IAAA,YAAG,EACD,UAAU,SAAS,iCAAiC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC5E,CAAC;IACJ,OAAO,CAAC,SAAS,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../../src/lib/commands/env.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAsEtD,wBAAgB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAuBnE;AAGD,wBAAgB,UAAU,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAepD"}
|
|
@@ -0,0 +1,122 @@
|
|
|
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
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.runEnvAdd = runEnvAdd;
|
|
37
|
+
exports.runEnvList = runEnvList;
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const environments_1 = require("../environments");
|
|
40
|
+
const manifest_1 = require("../manifest");
|
|
41
|
+
const logger_1 = require("../logger");
|
|
42
|
+
const targets_1 = require("../targets");
|
|
43
|
+
const deployment_config_1 = require("./deployment-config");
|
|
44
|
+
const ENV_ADD_USAGE = `Usage: envctl env add <name> --target <${deployment_config_1.VALID_TARGETS.join("|")}>
|
|
45
|
+
|
|
46
|
+
Define an environment: append <name> to environments.yml's active list and
|
|
47
|
+
create deployment/<name>.yml. --target is required and sets the authoritative
|
|
48
|
+
Vercel deployment target for this env (written to manifest.yml), used by config
|
|
49
|
+
push, env pull, and secrets rotation.`;
|
|
50
|
+
function parseAddArgs(args) {
|
|
51
|
+
let name;
|
|
52
|
+
let target;
|
|
53
|
+
for (let i = 0; i < args.length; i++) {
|
|
54
|
+
const arg = args[i];
|
|
55
|
+
if (arg === "--target") {
|
|
56
|
+
target = args[++i] ?? (0, logger_1.err)("--target requires a value");
|
|
57
|
+
}
|
|
58
|
+
else if (arg === "-h" || arg === "--help") {
|
|
59
|
+
console.log(ENV_ADD_USAGE);
|
|
60
|
+
process.exit(0);
|
|
61
|
+
}
|
|
62
|
+
else if (arg.startsWith("-")) {
|
|
63
|
+
(0, logger_1.err)(`Unknown option: ${arg}. Run 'envctl env add --help' for usage.`);
|
|
64
|
+
}
|
|
65
|
+
else if (name === undefined) {
|
|
66
|
+
name = arg;
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
(0, logger_1.err)(`Unexpected argument: ${arg}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (name === undefined)
|
|
73
|
+
return (0, logger_1.err)("env add requires an environment name");
|
|
74
|
+
if (name.includes("/") || name.includes(".."))
|
|
75
|
+
return (0, logger_1.err)(`Invalid environment name '${name}': must not contain '/' or '..'`);
|
|
76
|
+
if (target === undefined)
|
|
77
|
+
return (0, logger_1.err)(`env add requires --target <${deployment_config_1.VALID_TARGETS.join("|")}>`);
|
|
78
|
+
if (!(0, deployment_config_1.isValidTarget)(target))
|
|
79
|
+
return (0, logger_1.err)(`Invalid --target '${target}'. Must be one of: ${deployment_config_1.VALID_TARGETS.join(", ")}`);
|
|
80
|
+
return { name, target };
|
|
81
|
+
}
|
|
82
|
+
function requireConfig(ctx) {
|
|
83
|
+
if (!fs.existsSync((0, deployment_config_1.environmentsFile)(ctx.workingDir)))
|
|
84
|
+
(0, logger_1.err)("No deployment config found. Run 'envctl init' first.");
|
|
85
|
+
}
|
|
86
|
+
// `envctl env add <name> --target <t>` — append the environment to the active
|
|
87
|
+
// list and scaffold its file. Idempotent: an already-active name is a no-op.
|
|
88
|
+
function runEnvAdd(ctx, args) {
|
|
89
|
+
const { name, target } = parseAddArgs(args);
|
|
90
|
+
requireConfig(ctx);
|
|
91
|
+
const dir = (0, deployment_config_1.deploymentDir)(ctx.workingDir);
|
|
92
|
+
const active = (0, environments_1.listActiveEnvs)(dir);
|
|
93
|
+
if (active.includes(name)) {
|
|
94
|
+
(0, logger_1.warn)(`'${name}' is already an active environment — config unchanged.`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
(0, deployment_config_1.writeActiveEnvs)(ctx.workingDir, [...active, name]);
|
|
98
|
+
if (!fs.existsSync((0, deployment_config_1.envFile)(ctx.workingDir, name))) {
|
|
99
|
+
(0, deployment_config_1.writeEnvFile)(ctx.workingDir, name, {});
|
|
100
|
+
}
|
|
101
|
+
// Persist the explicit env→target mapping into the manifest (#87), where it is
|
|
102
|
+
// now authoritative for config push / secrets — rather than validated and
|
|
103
|
+
// dropped as before.
|
|
104
|
+
(0, manifest_1.setManifestTarget)(dir, name, target);
|
|
105
|
+
(0, logger_1.log)(`Added '${name}' → ${target}. Edit ${(0, deployment_config_1.envFile)(ctx.workingDir, name)} to set its vars.`);
|
|
106
|
+
}
|
|
107
|
+
// `envctl env list` — list defined environments and their provider targets.
|
|
108
|
+
function runEnvList(ctx) {
|
|
109
|
+
requireConfig(ctx);
|
|
110
|
+
const dir = (0, deployment_config_1.deploymentDir)(ctx.workingDir);
|
|
111
|
+
const active = (0, environments_1.listActiveEnvs)(dir);
|
|
112
|
+
if (active.length === 0) {
|
|
113
|
+
(0, logger_1.log)("No environments defined.");
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const resolveTarget = (0, targets_1.envTargetResolver)(dir);
|
|
117
|
+
(0, logger_1.log)("Environments:");
|
|
118
|
+
for (const name of active) {
|
|
119
|
+
(0, logger_1.log)(` ${name} → ${resolveTarget(name)}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=env.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/lib/commands/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/lib/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAatD,wBAAgB,OAAO,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAmBjD"}
|