@secr/cli 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const importCommand: Command;
3
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,eAAO,MAAM,aAAa,SA2JtB,CAAC"}
@@ -0,0 +1,200 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { requireProjectConfig } from "../lib/config.js";
5
+ import { apiImportPreview, apiImportExecute } from "../lib/api.js";
6
+ import { ALL_PROVIDERS } from "@secr/shared";
7
+ const AWS_PROVIDERS = ["aws-parameter-store", "aws-secrets-manager"];
8
+ export const importCommand = new Command("import")
9
+ .description("Import environment variables from an external provider")
10
+ .requiredOption("--from <provider>", `Provider to import from (${ALL_PROVIDERS.join(", ")})`)
11
+ .option("--key <apiKey>", "Provider API key / token")
12
+ .option("--service-id <id>", "Service/project/app/site ID (provider-specific)")
13
+ .option("--env <environment>", "Override the default environment")
14
+ .option("--railway-env <id>", "Railway environment ID (optional)")
15
+ .option("--railway-service <id>", "Railway service ID (optional)")
16
+ .option("--access-key-id <id>", "AWS Access Key ID")
17
+ .option("--secret-access-key <key>", "AWS Secret Access Key")
18
+ .option("--region <region>", "AWS region (default: us-east-1)")
19
+ .option("--path-prefix <prefix>", "AWS Parameter Store path prefix (default: /)")
20
+ .option("--account-id <id>", "Cloudflare account ID")
21
+ .option("--cf-environment <env>", "Cloudflare Pages environment (production/preview)")
22
+ .option("--owner <owner>", "GitHub repository owner")
23
+ .option("--repo <repo>", "GitHub repository name")
24
+ .option("--all", "Import all variables without prompting")
25
+ .action(async (opts) => {
26
+ const config = requireProjectConfig();
27
+ const env = opts.env || config.defaultEnvironment;
28
+ const provider = opts.from;
29
+ if (!ALL_PROVIDERS.includes(provider)) {
30
+ console.error(chalk.red(`✗ Unknown provider: ${provider}`));
31
+ console.error(chalk.dim(` Supported: ${ALL_PROVIDERS.join(", ")}`));
32
+ process.exit(1);
33
+ }
34
+ // Validate required options based on provider
35
+ if (AWS_PROVIDERS.includes(provider)) {
36
+ if (!opts.accessKeyId) {
37
+ console.error(chalk.red("✗ --access-key-id is required for AWS providers"));
38
+ process.exit(1);
39
+ }
40
+ if (!opts.secretAccessKey) {
41
+ console.error(chalk.red("✗ --secret-access-key is required for AWS providers"));
42
+ process.exit(1);
43
+ }
44
+ }
45
+ else if (provider === "github") {
46
+ if (!opts.key) {
47
+ console.error(chalk.red("✗ --key is required (GitHub personal access token)"));
48
+ process.exit(1);
49
+ }
50
+ if (!opts.owner || !opts.repo) {
51
+ console.error(chalk.red("✗ --owner and --repo are required for GitHub"));
52
+ process.exit(1);
53
+ }
54
+ }
55
+ else if (provider === "cloudflare-pages") {
56
+ if (!opts.key) {
57
+ console.error(chalk.red("✗ --key is required (Cloudflare API token)"));
58
+ process.exit(1);
59
+ }
60
+ if (!opts.serviceId) {
61
+ console.error(chalk.red("✗ --service-id is required (project name)"));
62
+ process.exit(1);
63
+ }
64
+ if (!opts.accountId) {
65
+ console.error(chalk.red("✗ --account-id is required for Cloudflare"));
66
+ process.exit(1);
67
+ }
68
+ }
69
+ else {
70
+ if (!opts.key) {
71
+ console.error(chalk.red("✗ --key is required (provider API key or token)"));
72
+ process.exit(1);
73
+ }
74
+ if (!opts.serviceId) {
75
+ console.error(chalk.red("✗ --service-id is required (provider-specific identifier)"));
76
+ process.exit(1);
77
+ }
78
+ }
79
+ const providerConfig = buildProviderConfig(provider, opts);
80
+ // Step 1: Preview
81
+ const spinner = ora(`Connecting to ${provider}...`).start();
82
+ let vars;
83
+ try {
84
+ const preview = await apiImportPreview({
85
+ config: providerConfig,
86
+ orgSlug: config.org,
87
+ projectSlug: config.project,
88
+ envSlug: env,
89
+ });
90
+ vars = preview.vars;
91
+ spinner.succeed(chalk.green(`Found ${chalk.bold(preview.count)} variables from ${provider}`) +
92
+ (preview.skipped ? chalk.dim(` (${preview.skipped} sensitive/unreadable)`) : ""));
93
+ }
94
+ catch (err) {
95
+ spinner.fail(chalk.red(err.message));
96
+ process.exit(1);
97
+ }
98
+ if (vars.length === 0) {
99
+ console.log(chalk.yellow("No variables found to import."));
100
+ return;
101
+ }
102
+ // Filter out sensitive vars with no value
103
+ const importable = vars.filter((v) => v.value);
104
+ if (importable.length === 0) {
105
+ console.log(chalk.yellow("All variables are sensitive/unreadable. Nothing to import."));
106
+ return;
107
+ }
108
+ // Display table
109
+ console.log("");
110
+ console.log(chalk.bold(" Variables to import:"));
111
+ for (const v of importable) {
112
+ const preview = v.value.length > 40 ? v.value.slice(0, 37) + "..." : v.value;
113
+ console.log(` ${chalk.cyan(v.key.padEnd(30))} ${chalk.dim(preview)}${v.sensitive ? chalk.yellow(" [sensitive]") : ""}`);
114
+ }
115
+ console.log("");
116
+ const selectedKeys = importable.map((v) => v.key);
117
+ // Confirm if not --all
118
+ if (!opts.all) {
119
+ const readline = await import("node:readline");
120
+ const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
121
+ const answer = await new Promise((resolve) => {
122
+ rl.question(chalk.bold(`Import ${selectedKeys.length} variables into ${config.project}/${env}? [y/N] `), resolve);
123
+ });
124
+ rl.close();
125
+ if (answer.toLowerCase() !== "y") {
126
+ console.log(chalk.dim("Import cancelled."));
127
+ return;
128
+ }
129
+ }
130
+ // Step 2: Execute
131
+ const importSpinner = ora(`Importing ${selectedKeys.length} variables...`).start();
132
+ try {
133
+ const result = await apiImportExecute({
134
+ config: providerConfig,
135
+ orgSlug: config.org,
136
+ projectSlug: config.project,
137
+ envSlug: env,
138
+ selectedKeys,
139
+ });
140
+ importSpinner.succeed(chalk.green(`Imported ${chalk.bold(result.total)} secrets (${result.created} new, ${result.updated} updated)`));
141
+ }
142
+ catch (err) {
143
+ importSpinner.fail(chalk.red(err.message));
144
+ process.exit(1);
145
+ }
146
+ });
147
+ function buildProviderConfig(provider, opts) {
148
+ switch (provider) {
149
+ case "render":
150
+ return { provider: "render", apiKey: opts.key, serviceId: opts.serviceId };
151
+ case "vercel":
152
+ return { provider: "vercel", apiKey: opts.key, projectId: opts.serviceId };
153
+ case "heroku":
154
+ return { provider: "heroku", apiKey: opts.key, appName: opts.serviceId };
155
+ case "netlify":
156
+ return { provider: "netlify", apiKey: opts.key, siteId: opts.serviceId };
157
+ case "supabase":
158
+ return { provider: "supabase", apiKey: opts.key, projectRef: opts.serviceId };
159
+ case "railway":
160
+ return {
161
+ provider: "railway",
162
+ apiKey: opts.key,
163
+ projectId: opts.serviceId,
164
+ environmentId: opts.railwayEnv || undefined,
165
+ serviceId: opts.railwayService || undefined,
166
+ };
167
+ case "aws-parameter-store":
168
+ return {
169
+ provider: "aws-parameter-store",
170
+ accessKeyId: opts.accessKeyId,
171
+ secretAccessKey: opts.secretAccessKey,
172
+ region: opts.region || "us-east-1",
173
+ pathPrefix: opts.pathPrefix || "/",
174
+ };
175
+ case "aws-secrets-manager":
176
+ return {
177
+ provider: "aws-secrets-manager",
178
+ accessKeyId: opts.accessKeyId,
179
+ secretAccessKey: opts.secretAccessKey,
180
+ region: opts.region || "us-east-1",
181
+ };
182
+ case "cloudflare-pages":
183
+ return {
184
+ provider: "cloudflare-pages",
185
+ apiToken: opts.key,
186
+ accountId: opts.accountId,
187
+ projectName: opts.serviceId,
188
+ environment: opts.cfEnvironment || "production",
189
+ };
190
+ case "fly":
191
+ return { provider: "fly", apiToken: opts.key, appName: opts.serviceId };
192
+ case "digitalocean":
193
+ return { provider: "digitalocean", apiToken: opts.key, appId: opts.serviceId };
194
+ case "github":
195
+ return { provider: "github", token: opts.key, owner: opts.owner, repo: opts.repo };
196
+ default:
197
+ throw new Error(`Unknown provider: ${provider}`);
198
+ }
199
+ }
200
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAwBpC,eAAO,MAAM,WAAW,SA6FpB,CAAC"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyBpC,eAAO,MAAM,WAAW,SAgMpB,CAAC"}
@@ -2,8 +2,9 @@ import { Command } from "commander";
2
2
  import chalk from "chalk";
3
3
  import ora from "ora";
4
4
  import readline from "node:readline";
5
- import { apiGetMe, apiCreateProject } from "../lib/api.js";
6
- import { saveProjectConfig, loadProjectConfig } from "../lib/config.js";
5
+ import { apiGetMe, apiCreateProject, apiAddTemplate, apiBulkSetSecrets } from "../lib/api.js";
6
+ import { saveProjectConfig, loadProjectConfig, parseEnvFile } from "../lib/config.js";
7
+ import { discoverProjectType } from "../lib/discover.js";
7
8
  function prompt(question) {
8
9
  const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
9
10
  return new Promise((resolve) => {
@@ -101,6 +102,76 @@ export const initCommand = new Command("init")
101
102
  console.log(chalk.dim(` Org: ${chalk.white(org.slug)}`));
102
103
  console.log();
103
104
  console.log(chalk.dim(` Created .secr.json — commit this file to your repo.`));
105
+ // Auto-discover project type and offer to import secrets
106
+ if (process.stdin.isTTY) {
107
+ const discovered = discoverProjectType();
108
+ if (discovered) {
109
+ const frameworkLabel = discovered.framework
110
+ ? `${discovered.framework} (${discovered.type})`
111
+ : discovered.type;
112
+ console.log();
113
+ console.log(chalk.dim(` Detected ${chalk.white(frameworkLabel)} project`));
114
+ if (discovered.envFilePath) {
115
+ console.log(chalk.dim(` Found ${chalk.white(discovered.envFilePath)} with ${discovered.envFileKeys.length} keys`));
116
+ }
117
+ // 1. Offer to import secrets from .env (the immediate, tangible action)
118
+ if (discovered.envFilePath === ".env") {
119
+ console.log();
120
+ const doImport = await prompt(` Import ${discovered.envFileKeys.length} secrets from .env to development? (Y/n) `);
121
+ if (doImport.toLowerCase() !== "n") {
122
+ const importSpinner = ora("Importing secrets...").start();
123
+ try {
124
+ const secrets = parseEnvFile(".env");
125
+ const result = await apiBulkSetSecrets(org.slug, slug, "development", secrets);
126
+ importSpinner.succeed(chalk.green(`Imported ${result.total} secrets (${result.created} new, ${result.updated} updated)`));
127
+ }
128
+ catch (err) {
129
+ importSpinner.fail(chalk.red(err.message));
130
+ }
131
+ }
132
+ }
133
+ else if (discovered.envFilePath && discovered.envFileKeys.length > 0) {
134
+ // .env.example/.env.sample/.env.template — keys only, create a template
135
+ console.log();
136
+ const createTemplate = await prompt(` Create a template from ${discovered.envFileKeys.length} keys in ${discovered.envFilePath}? (Y/n) `);
137
+ if (createTemplate.toLowerCase() !== "n") {
138
+ const templateSpinner = ora("Creating template...").start();
139
+ let created = 0;
140
+ for (const key of discovered.envFileKeys) {
141
+ try {
142
+ await apiAddTemplate(org.slug, slug, { key });
143
+ created++;
144
+ }
145
+ catch {
146
+ // key may already exist, skip
147
+ }
148
+ }
149
+ templateSpinner.succeed(chalk.green(`Template created with ${created} keys`));
150
+ }
151
+ }
152
+ // 2. Offer to create a template from detected keys (if not already created above)
153
+ if (discovered.suggestedKeys.length > 0 &&
154
+ discovered.envFilePath === ".env") {
155
+ console.log();
156
+ const createTemplate = await prompt(` Also create a template to enforce these ${discovered.suggestedKeys.length} keys? (y/N) `);
157
+ if (createTemplate.toLowerCase() === "y") {
158
+ const templateSpinner = ora("Creating template...").start();
159
+ let created = 0;
160
+ for (const key of discovered.suggestedKeys) {
161
+ try {
162
+ await apiAddTemplate(org.slug, slug, { key });
163
+ created++;
164
+ }
165
+ catch {
166
+ // key may already exist, skip
167
+ }
168
+ }
169
+ templateSpinner.succeed(chalk.green(`Template created with ${created} keys`));
170
+ }
171
+ }
172
+ }
173
+ }
174
+ console.log();
104
175
  console.log(chalk.dim(` Run ${chalk.cyan("secr set KEY=value")} to add secrets or ${chalk.cyan('secr run "npm start"')} to start with secrets injected.`));
105
176
  console.log();
106
177
  });
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAmB,gBAAgB,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAEzD,SAAS,MAAM,CAAC,QAAgB;IAC9B,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE;YAC/B,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,MAAM,CAAC,IAAY;IAC1B,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,0BAA0B;IAC1B,MAAM,QAAQ,GAAG,iBAAiB,EAAE,CAAC;IACrC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,SAAS,GAAG,MAAM,MAAM,CAC5B,KAAK,CAAC,MAAM,CAAC,uCAAuC,QAAQ,CAAC,OAAO,qBAAqB,CAAC,CAC3F,CAAC;QACF,IAAI,SAAS,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YACvC,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,4BAA4B,CAAC,CAAC,KAAK,EAAE,CAAC;IAE1D,IAAI,EAAwC,CAAC;IAC7C,IAAI,CAAC;QACH,EAAE,GAAG,MAAM,QAAQ,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC,CAAC;QACxE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,aAAa;IACb,IAAI,GAAQ,CAAC;IACb,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7C,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;QACrC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACnD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,eAAe;IACf,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChD,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,yEAAyE,CAAC,CAAC,CAAC;QACpG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAEvD,iBAAiB;IACjB,MAAM,aAAa,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;IACd,iBAAiB,CAAC;QAChB,OAAO,EAAE,IAAI;QACb,kBAAkB,EAAE,aAAa;QACjC,GAAG,EAAE,GAAG,CAAC,IAAI;KACd,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACzE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oBAAoB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAEhF,yDAAyD;IACzD,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACxB,MAAM,UAAU,GAAG,mBAAmB,EAAE,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS;gBACzC,CAAC,CAAC,GAAG,UAAU,CAAC,SAAS,KAAK,UAAU,CAAC,IAAI,GAAG;gBAChD,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;YACpB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,KAAK,CAAC,KAAK,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;YAE5E,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CACP,WAAW,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,UAAU,CAAC,WAAW,CAAC,MAAM,OAAO,CAC5F,CACF,CAAC;YACJ,CAAC;YAED,wEAAwE;YACxE,IAAI,UAAU,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;gBACtC,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,QAAQ,GAAG,MAAM,MAAM,CAC3B,YAAY,UAAU,CAAC,WAAW,CAAC,MAAM,2CAA2C,CACrF,CAAC;gBAEF,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;oBACnC,MAAM,aAAa,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC1D,IAAI,CAAC;wBACH,MAAM,OAAO,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;wBACrC,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,GAAG,CAAC,IAAI,EACR,IAAI,EACJ,aAAa,EACb,OAAO,CACR,CAAC;wBACF,aAAa,CAAC,OAAO,CACnB,KAAK,CAAC,KAAK,CACT,YAAY,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,OAAO,SAAS,MAAM,CAAC,OAAO,WAAW,CACtF,CACF,CAAC;oBACJ,CAAC;oBAAC,OAAO,GAAQ,EAAE,CAAC;wBAClB,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,IAAI,UAAU,CAAC,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvE,wEAAwE;gBACxE,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,cAAc,GAAG,MAAM,MAAM,CACjC,4BAA4B,UAAU,CAAC,WAAW,CAAC,MAAM,YAAY,UAAU,CAAC,WAAW,UAAU,CACtG,CAAC;gBAEF,IAAI,cAAc,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;oBACzC,MAAM,eAAe,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC5D,IAAI,OAAO,GAAG,CAAC,CAAC;oBAChB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,WAAW,EAAE,CAAC;wBACzC,IAAI,CAAC;4BACH,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC9C,OAAO,EAAE,CAAC;wBACZ,CAAC;wBAAC,MAAM,CAAC;4BACP,8BAA8B;wBAChC,CAAC;oBACH,CAAC;oBACD,eAAe,CAAC,OAAO,CACrB,KAAK,CAAC,KAAK,CAAC,yBAAyB,OAAO,OAAO,CAAC,CACrD,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,kFAAkF;YAClF,IACE,UAAU,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBACnC,UAAU,CAAC,WAAW,KAAK,MAAM,EACjC,CAAC;gBACD,OAAO,CAAC,GAAG,EAAE,CAAC;gBACd,MAAM,cAAc,GAAG,MAAM,MAAM,CACjC,6CAA6C,UAAU,CAAC,aAAa,CAAC,MAAM,eAAe,CAC5F,CAAC;gBAEF,IAAI,cAAc,CAAC,WAAW,EAAE,KAAK,GAAG,EAAE,CAAC;oBACzC,MAAM,eAAe,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;oBAC5D,IAAI,OAAO,GAAG,CAAC,CAAC;oBAChB,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,aAAa,EAAE,CAAC;wBAC3C,IAAI,CAAC;4BACH,MAAM,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;4BAC9C,OAAO,EAAE,CAAC;wBACZ,CAAC;wBAAC,MAAM,CAAC;4BACP,8BAA8B;wBAChC,CAAC;oBACH,CAAC;oBACD,eAAe,CAAC,OAAO,CACrB,KAAK,CAAC,KAAK,CAAC,yBAAyB,OAAO,OAAO,CAAC,CACrD,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,sBAAsB,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,kCAAkC,CAAC,CAAC,CAAC;IAC5J,OAAO,CAAC,GAAG,EAAE,CAAC;AAChB,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const migrateCommand: Command;
3
+ //# sourceMappingURL=migrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,eAAO,MAAM,cAAc,SA0HvB,CAAC"}
@@ -0,0 +1,125 @@
1
+ import { Command } from "commander";
2
+ import { existsSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import chalk from "chalk";
5
+ import ora from "ora";
6
+ import { requireProjectConfig, parseEnvFile } from "../lib/config.js";
7
+ import { apiListKeys, apiBulkSetSecrets, resolveOrgId } from "../lib/api.js";
8
+ const ENV_FILE_SEARCH_ORDER = [
9
+ ".env",
10
+ ".env.local",
11
+ ".env.development",
12
+ ".env.development.local",
13
+ ];
14
+ function discoverEnvFile(dir = process.cwd()) {
15
+ for (const name of ENV_FILE_SEARCH_ORDER) {
16
+ const fullPath = join(dir, name);
17
+ if (existsSync(fullPath))
18
+ return fullPath;
19
+ }
20
+ return null;
21
+ }
22
+ export const migrateCommand = new Command("migrate")
23
+ .description("Import secrets from a .env file into secr")
24
+ .argument("[file]", "Path to .env file (auto-discovers if not specified)")
25
+ .option("-e, --env <env>", "Target environment (uses project default)")
26
+ .option("--overwrite", "Include and overwrite keys that already exist in secr", false)
27
+ .option("--dry-run", "Preview without importing", false)
28
+ .action(async (file, opts) => {
29
+ const config = requireProjectConfig();
30
+ const envSlug = opts.env || config.defaultEnvironment;
31
+ // Discover or validate the .env file
32
+ let envFilePath;
33
+ if (file) {
34
+ if (!existsSync(file)) {
35
+ console.error(chalk.red(`File not found: ${file}`));
36
+ process.exit(1);
37
+ }
38
+ envFilePath = file;
39
+ }
40
+ else {
41
+ const discovered = discoverEnvFile();
42
+ if (!discovered) {
43
+ console.error(chalk.red("No .env file found. Specify a path: secr migrate .env"));
44
+ process.exit(1);
45
+ }
46
+ envFilePath = discovered;
47
+ console.log(chalk.dim(`Found ${envFilePath}`));
48
+ }
49
+ // Parse .env file
50
+ let entries;
51
+ try {
52
+ entries = parseEnvFile(envFilePath);
53
+ }
54
+ catch (err) {
55
+ console.error(chalk.red(`Failed to parse .env file: ${err.message}`));
56
+ process.exit(1);
57
+ }
58
+ if (entries.length === 0) {
59
+ console.log(chalk.yellow("No secrets found in the .env file."));
60
+ return;
61
+ }
62
+ console.log(chalk.dim(`Parsed ${entries.length} secret${entries.length !== 1 ? "s" : ""} from ${envFilePath}`));
63
+ // Resolve org and check for existing keys
64
+ const orgId = await resolveOrgId(config.org);
65
+ const spinner = ora("Checking existing keys...").start();
66
+ let existingKeys;
67
+ try {
68
+ const { keys } = await apiListKeys(config.org, config.project, envSlug);
69
+ existingKeys = new Set(keys.map((k) => k.key));
70
+ spinner.stop();
71
+ }
72
+ catch (err) {
73
+ spinner.fail(err.message);
74
+ process.exit(1);
75
+ }
76
+ // Classify entries
77
+ const newEntries = [];
78
+ const duplicateEntries = [];
79
+ for (const entry of entries) {
80
+ if (existingKeys.has(entry.key)) {
81
+ duplicateEntries.push(entry);
82
+ }
83
+ else {
84
+ newEntries.push(entry);
85
+ }
86
+ }
87
+ // Preview table
88
+ console.log();
89
+ console.log(chalk.bold(` Migration Preview (${config.org}/${config.project}/${envSlug})\n`));
90
+ for (const entry of newEntries) {
91
+ const truncVal = entry.value.length > 30 ? entry.value.slice(0, 30) + "..." : entry.value;
92
+ console.log(` ${chalk.green("new")} ${entry.key.padEnd(30)} ${chalk.dim(truncVal)}`);
93
+ }
94
+ for (const entry of duplicateEntries) {
95
+ const truncVal = entry.value.length > 30 ? entry.value.slice(0, 30) + "..." : entry.value;
96
+ const tag = opts.overwrite ? chalk.yellow("overwrite") : chalk.dim("exists");
97
+ console.log(` ${tag} ${entry.key.padEnd(30)} ${chalk.dim(truncVal)}`);
98
+ }
99
+ console.log();
100
+ console.log(` ${chalk.green(`${newEntries.length} new`)}` +
101
+ (duplicateEntries.length > 0
102
+ ? `, ${opts.overwrite ? chalk.yellow(`${duplicateEntries.length} to overwrite`) : chalk.dim(`${duplicateEntries.length} skipped (use --overwrite to include)`)}`
103
+ : ""));
104
+ console.log();
105
+ if (opts.dryRun) {
106
+ console.log(chalk.dim("Dry run — no changes made."));
107
+ return;
108
+ }
109
+ // Determine which entries to import
110
+ const toImport = opts.overwrite ? entries : newEntries;
111
+ if (toImport.length === 0) {
112
+ console.log(chalk.yellow("Nothing to import. All keys already exist in secr."));
113
+ return;
114
+ }
115
+ const importSpinner = ora(`Importing ${toImport.length} secret${toImport.length !== 1 ? "s" : ""}...`).start();
116
+ try {
117
+ const result = await apiBulkSetSecrets(config.org, config.project, envSlug, toImport);
118
+ importSpinner.succeed(`Imported ${result.total} secrets (${result.created} created, ${result.updated} updated)`);
119
+ }
120
+ catch (err) {
121
+ importSpinner.fail(err.message);
122
+ process.exit(1);
123
+ }
124
+ });
125
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7E,MAAM,qBAAqB,GAAG;IAC5B,MAAM;IACN,YAAY;IACZ,kBAAkB;IAClB,wBAAwB;CACzB,CAAC;AAEF,SAAS,eAAe,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE;IAC1C,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,QAAQ,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,OAAO,CAAC,SAAS,CAAC;KACjD,WAAW,CAAC,2CAA2C,CAAC;KACxD,QAAQ,CAAC,QAAQ,EAAE,qDAAqD,CAAC;KACzE,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;KACtE,MAAM,CAAC,aAAa,EAAE,uDAAuD,EAAE,KAAK,CAAC;KACrF,MAAM,CAAC,WAAW,EAAE,2BAA2B,EAAE,KAAK,CAAC;KACvD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC3B,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC;IAEtD,qCAAqC;IACrC,IAAI,WAAmB,CAAC;IACxB,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC,CAAC;YACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,WAAW,GAAG,IAAI,CAAC;IACrB,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,eAAe,EAAE,CAAC;QACrC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,WAAW,GAAG,UAAU,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,WAAW,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAyC,CAAC;IAC9C,IAAI,CAAC;QACH,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,OAAO,CAAC,MAAM,UAAU,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC,CAAC,CAAC;IAEhH,0CAA0C;IAC1C,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;IAEzD,IAAI,YAAyB,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACxE,YAAY,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,IAAI,EAAE,CAAC;IACjB,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,mBAAmB;IACnB,MAAM,UAAU,GAAqC,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAqC,EAAE,CAAC;IAE9D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,IAAI,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,wBAAwB,MAAM,CAAC,GAAG,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,KAAK,CAAC,CAAC,CAAC;IAE9F,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAC1F,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,OAAO,CAAC,GAAG,CACT,KAAK,KAAK,CAAC,KAAK,CAAC,GAAG,UAAU,CAAC,MAAM,MAAM,CAAC,EAAE;QAC9C,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC;YAC1B,CAAC,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,MAAM,uCAAuC,CAAC,EAAE;YAChK,CAAC,CAAC,EAAE,CAAC,CACR,CAAC;IACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAEd,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,oCAAoC;IACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC;IAEvD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,MAAM,aAAa,GAAG,GAAG,CAAC,aAAa,QAAQ,CAAC,MAAM,UAAU,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/G,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CACpC,MAAM,CAAC,GAAG,EACV,MAAM,CAAC,OAAO,EACd,OAAO,EACP,QAAQ,CACT,CAAC;QACF,aAAa,CAAC,OAAO,CACnB,YAAY,MAAM,CAAC,KAAK,aAAa,MAAM,CAAC,OAAO,aAAa,MAAM,CAAC,OAAO,WAAW,CAC1F,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const rollbackCommand: Command;
3
+ //# sourceMappingURL=rollback.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,eAAe,SAyBxB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { requireProjectConfig } from "../lib/config.js";
5
+ import { apiRollbackSecret } from "../lib/api.js";
6
+ export const rollbackCommand = new Command("rollback")
7
+ .description("Rollback a secret to a previous version")
8
+ .argument("<key>", "Secret key to rollback")
9
+ .argument("<version>", "Version number to restore")
10
+ .option("--env <env>", "Environment slug (default: from .secr.json)")
11
+ .action(async (key, versionStr, opts) => {
12
+ const config = requireProjectConfig();
13
+ const env = opts.env || config.defaultEnvironment;
14
+ const version = parseInt(versionStr, 10);
15
+ if (isNaN(version) || version < 1) {
16
+ console.error(chalk.red(" Version must be a positive integer."));
17
+ process.exit(1);
18
+ }
19
+ const spinner = ora(`Rolling back ${chalk.cyan(key)} to v${version}...`).start();
20
+ try {
21
+ const result = await apiRollbackSecret(config.org, config.project, env, key, version);
22
+ spinner.succeed(chalk.green(`Restored ${chalk.bold(key)} to v${result.restoredFrom} (now v${result.version})`));
23
+ }
24
+ catch (err) {
25
+ spinner.fail(chalk.red(err.message));
26
+ process.exit(1);
27
+ }
28
+ });
29
+ //# sourceMappingURL=rollback.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/commands/rollback.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,yCAAyC,CAAC;KACtD,QAAQ,CAAC,OAAO,EAAE,wBAAwB,CAAC;KAC3C,QAAQ,CAAC,WAAW,EAAE,2BAA2B,CAAC;KAClD,MAAM,CAAC,aAAa,EAAE,6CAA6C,CAAC;KACpE,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE;IACtC,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAC;IACtC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,kBAAkB,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEzC,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,OAAO,GAAG,GAAG,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,OAAO,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACjF,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACtF,OAAO,CAAC,OAAO,CACb,KAAK,CAAC,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,MAAM,CAAC,YAAY,UAAU,MAAM,CAAC,OAAO,GAAG,CAAC,CAC/F,CAAC;IACJ,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;QACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const shareCommand: Command;
3
+ //# sourceMappingURL=share.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.d.ts","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,eAAO,MAAM,YAAY,SAmGrB,CAAC"}
@@ -0,0 +1,97 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { requireProjectConfig } from "../lib/config.js";
5
+ import { apiCreateShareLink, apiListShareLinks, apiRevokeShareLink, resolveOrgId } from "../lib/api.js";
6
+ export const shareCommand = new Command("share")
7
+ .description("Create and manage one-time secret sharing links")
8
+ .argument("[value]", "Secret value to share")
9
+ .option("--expires <duration>", "Expiry duration: 1h, 24h, or 7d", "24h")
10
+ .option("--label <label>", "Optional label for the link")
11
+ .option("--views <count>", "Max number of views (1-1000)", "1")
12
+ .option("--list", "List active share links")
13
+ .option("--revoke <id>", "Revoke a share link by ID")
14
+ .action(async (value, opts) => {
15
+ const config = requireProjectConfig();
16
+ if (opts.list) {
17
+ const orgId = await resolveOrgId(config.org);
18
+ const spinner = ora("Loading share links...").start();
19
+ try {
20
+ const { links } = await apiListShareLinks(orgId);
21
+ spinner.stop();
22
+ if (links.length === 0) {
23
+ console.log(chalk.dim("No active share links."));
24
+ return;
25
+ }
26
+ console.log(chalk.bold(`\n Active Share Links (${links.length})\n`));
27
+ for (const link of links) {
28
+ const expired = new Date(link.expiresAt) < new Date();
29
+ const status = expired
30
+ ? chalk.red("expired")
31
+ : chalk.green(`${link.viewCount}/${link.maxViews} views`);
32
+ console.log(` ${chalk.dim(link.id.slice(0, 8))} ${link.label || chalk.dim("untitled")} ${status} ${chalk.dim(`expires ${new Date(link.expiresAt).toLocaleDateString()}`)}`);
33
+ }
34
+ console.log();
35
+ }
36
+ catch (err) {
37
+ spinner.fail(err.message);
38
+ process.exit(1);
39
+ }
40
+ return;
41
+ }
42
+ if (opts.revoke) {
43
+ const orgId = await resolveOrgId(config.org);
44
+ const spinner = ora("Revoking share link...").start();
45
+ try {
46
+ await apiRevokeShareLink(orgId, opts.revoke);
47
+ spinner.succeed("Share link revoked. Secret data destroyed.");
48
+ }
49
+ catch (err) {
50
+ spinner.fail(err.message);
51
+ process.exit(1);
52
+ }
53
+ return;
54
+ }
55
+ // Create a share link
56
+ if (!value) {
57
+ console.error(chalk.red("Error: value is required. Usage: secr share <value>"));
58
+ process.exit(1);
59
+ }
60
+ const validExpiry = ["1h", "24h", "7d"];
61
+ if (!validExpiry.includes(opts.expires)) {
62
+ console.error(chalk.red(`Error: --expires must be one of: ${validExpiry.join(", ")}`));
63
+ process.exit(1);
64
+ }
65
+ const maxViews = parseInt(opts.views, 10);
66
+ if (isNaN(maxViews) || maxViews < 1 || maxViews > 1000) {
67
+ console.error(chalk.red("Error: --views must be between 1 and 1000"));
68
+ process.exit(1);
69
+ }
70
+ const orgId = await resolveOrgId(config.org);
71
+ const spinner = ora("Creating share link...").start();
72
+ try {
73
+ const result = await apiCreateShareLink(orgId, {
74
+ value,
75
+ label: opts.label,
76
+ expiresIn: opts.expires,
77
+ maxViews,
78
+ });
79
+ spinner.succeed("Share link created!");
80
+ const shareUrl = `https://app.secr.dev/shared/${result.link.token}`;
81
+ console.log();
82
+ console.log(chalk.bold(" Share URL:"));
83
+ console.log(` ${chalk.cyan(shareUrl)}`);
84
+ console.log();
85
+ console.log(chalk.dim(` Expires: ${new Date(result.link.expiresAt).toLocaleString()}`));
86
+ console.log(chalk.dim(` Max views: ${result.link.maxViews}`));
87
+ if (result.link.label) {
88
+ console.log(chalk.dim(` Label: ${result.link.label}`));
89
+ }
90
+ console.log();
91
+ }
92
+ catch (err) {
93
+ spinner.fail(err.message);
94
+ process.exit(1);
95
+ }
96
+ });
97
+ //# sourceMappingURL=share.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const tokenCommand: Command;
3
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAKpC,eAAO,MAAM,YAAY,SACqC,CAAC"}
@@ -0,0 +1,71 @@
1
+ import { Command } from "commander";
2
+ import chalk from "chalk";
3
+ import ora from "ora";
4
+ import { apiCreateToken, apiListTokens, apiRevokeToken } from "../lib/api.js";
5
+ export const tokenCommand = new Command("token")
6
+ .description("Manage API tokens for CI/CD and integrations");
7
+ tokenCommand
8
+ .command("create")
9
+ .description("Create a new API token")
10
+ .option("--name <name>", "Token name for identification", "CLI Token")
11
+ .action(async (opts) => {
12
+ const spinner = ora("Creating token...").start();
13
+ try {
14
+ const result = await apiCreateToken(opts.name);
15
+ spinner.succeed(chalk.green("Token created successfully"));
16
+ console.log("");
17
+ console.log(chalk.bold(" Token: ") + chalk.cyan(result.token));
18
+ console.log(chalk.bold(" Name: ") + opts.name);
19
+ console.log("");
20
+ console.log(chalk.yellow(" Save this token now — you won't be able to see it again."));
21
+ }
22
+ catch (err) {
23
+ spinner.fail(chalk.red(err.message));
24
+ process.exit(1);
25
+ }
26
+ });
27
+ tokenCommand
28
+ .command("list")
29
+ .alias("ls")
30
+ .description("List all API tokens")
31
+ .action(async () => {
32
+ const spinner = ora("Fetching tokens...").start();
33
+ try {
34
+ const { tokens } = await apiListTokens();
35
+ spinner.stop();
36
+ if (tokens.length === 0) {
37
+ console.log(chalk.dim("No tokens found."));
38
+ return;
39
+ }
40
+ console.log(chalk.bold(` ${tokens.length} token${tokens.length !== 1 ? "s" : ""}:\n`));
41
+ for (const t of tokens) {
42
+ const expired = t.expiresAt && new Date(t.expiresAt) < new Date();
43
+ const status = expired ? chalk.red("expired") : chalk.green("active");
44
+ const lastUsed = t.lastUsedAt
45
+ ? chalk.dim(`last used ${new Date(t.lastUsedAt).toLocaleDateString()}`)
46
+ : chalk.dim("never used");
47
+ console.log(` ${chalk.cyan(t.name.padEnd(25))} ****${t.lastFour} ${status} ${lastUsed}`);
48
+ console.log(chalk.dim(` ${t.id}`));
49
+ console.log("");
50
+ }
51
+ }
52
+ catch (err) {
53
+ spinner.fail(chalk.red(err.message));
54
+ process.exit(1);
55
+ }
56
+ });
57
+ tokenCommand
58
+ .command("revoke <tokenId>")
59
+ .description("Revoke an API token")
60
+ .action(async (tokenId) => {
61
+ const spinner = ora("Revoking token...").start();
62
+ try {
63
+ await apiRevokeToken(tokenId);
64
+ spinner.succeed(chalk.green("Token revoked"));
65
+ }
66
+ catch (err) {
67
+ spinner.fail(chalk.red(err.message));
68
+ process.exit(1);
69
+ }
70
+ });
71
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/commands/token.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -22,6 +22,11 @@ import { guardCommand } from "./commands/guard.js";
22
22
  import { completionCommand } from "./commands/completion.js";
23
23
  import { orgCommand } from "./commands/org.js";
24
24
  import { configCommand } from "./commands/config.js";
25
+ import { rollbackCommand } from "./commands/rollback.js";
26
+ import { importCommand } from "./commands/import.js";
27
+ import { tokenCommand } from "./commands/token.js";
28
+ import { shareCommand } from "./commands/share.js";
29
+ import { migrateCommand } from "./commands/migrate.js";
25
30
  const program = new Command();
26
31
  program
27
32
  .name("secr")
@@ -48,6 +53,11 @@ program.addCommand(guardCommand);
48
53
  program.addCommand(completionCommand);
49
54
  program.addCommand(orgCommand);
50
55
  program.addCommand(configCommand);
56
+ program.addCommand(rollbackCommand);
57
+ program.addCommand(importCommand);
58
+ program.addCommand(tokenCommand);
59
+ program.addCommand(shareCommand);
60
+ program.addCommand(migrateCommand);
51
61
  // Global error handling
52
62
  program.hook("preAction", () => { });
53
63
  program.parseAsync(process.argv).catch((err) => {
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import type { ApiProject, ApiSecret, ApiUser, ApiAuditEntry, ApiSecretMeta, ApiPromoteResult, ApiBulkDeleteResult, ApiTemplate, ApiTemplateValidation, PaginationInfo, ProjectConfig, ApiProjectConfigImportResult } from "@secr/shared";
1
+ import type { ApiProject, ApiSecret, ApiUser, ApiAuditEntry, ApiSecretMeta, ApiTokenInfo, ApiPromoteResult, ApiBulkDeleteResult, ApiTemplate, ApiTemplateValidation, PaginationInfo, ProjectConfig, ApiProjectConfigImportResult, ImportPreviewResponse, ImportExecuteResponse, ProviderImportConfig, ApiShareLink } from "@secr/shared";
2
2
  export declare function apiGetMe(): Promise<ApiUser & {
3
3
  orgs: any[];
4
4
  }>;
@@ -6,6 +6,12 @@ export declare function apiCreateToken(name: string): Promise<{
6
6
  token: string;
7
7
  lastFour: string;
8
8
  }>;
9
+ export declare function apiListTokens(): Promise<{
10
+ tokens: ApiTokenInfo[];
11
+ }>;
12
+ export declare function apiRevokeToken(tokenId: string): Promise<{
13
+ revoked: boolean;
14
+ }>;
9
15
  export declare function apiListProjects(orgId: string): Promise<{
10
16
  projects: ApiProject[];
11
17
  }>;
@@ -90,5 +96,39 @@ export declare function apiRemoveTemplate(orgSlug: string, projectSlug: string,
90
96
  export declare function apiValidateTemplate(orgSlug: string, projectSlug: string, envSlug: string): Promise<ApiTemplateValidation>;
91
97
  export declare function apiExportProjectConfig(orgId: string, projectSlug: string): Promise<ProjectConfig>;
92
98
  export declare function apiImportProjectConfig(orgId: string, projectSlug: string, config: ProjectConfig): Promise<ApiProjectConfigImportResult>;
99
+ export declare function apiRollbackSecret(orgSlug: string, projectSlug: string, envSlug: string, key: string, version: number): Promise<{
100
+ key: string;
101
+ version: number;
102
+ restoredFrom: number;
103
+ }>;
104
+ export declare function apiImportPreview(body: {
105
+ config: ProviderImportConfig;
106
+ orgSlug: string;
107
+ projectSlug: string;
108
+ envSlug: string;
109
+ }): Promise<ImportPreviewResponse>;
110
+ export declare function apiImportExecute(body: {
111
+ config: ProviderImportConfig;
112
+ orgSlug: string;
113
+ projectSlug: string;
114
+ envSlug: string;
115
+ selectedKeys: string[];
116
+ }): Promise<ImportExecuteResponse>;
117
+ export declare function apiCreateShareLink(orgId: string, data: {
118
+ value: string;
119
+ label?: string;
120
+ expiresIn: string;
121
+ maxViews?: number;
122
+ }): Promise<{
123
+ link: ApiShareLink & {
124
+ token: string;
125
+ };
126
+ }>;
127
+ export declare function apiListShareLinks(orgId: string): Promise<{
128
+ links: ApiShareLink[];
129
+ }>;
130
+ export declare function apiRevokeShareLink(orgId: string, linkId: string): Promise<{
131
+ revoked: boolean;
132
+ }>;
93
133
  export declare function resolveOrgId(slug: string): Promise<string>;
94
134
  //# sourceMappingURL=api.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
package/dist/lib/api.js CHANGED
@@ -54,6 +54,12 @@ export async function apiCreateToken(name) {
54
54
  body: JSON.stringify({ name }),
55
55
  });
56
56
  }
57
+ export async function apiListTokens() {
58
+ return request("/auth/tokens");
59
+ }
60
+ export async function apiRevokeToken(tokenId) {
61
+ return request(`/auth/tokens/${tokenId}`, { method: "DELETE" });
62
+ }
57
63
  // ─── Projects ───────────────────────────────────────────────────────────────
58
64
  export async function apiListProjects(orgId) {
59
65
  return request(`/projects/${orgId}`);
@@ -173,6 +179,39 @@ export async function apiImportProjectConfig(orgId, projectSlug, config) {
173
179
  body: JSON.stringify(config),
174
180
  });
175
181
  }
182
+ // ─── Rollback ────────────────────────────────────────────────────────────────
183
+ export async function apiRollbackSecret(orgSlug, projectSlug, envSlug, key, version) {
184
+ return request(`/secrets/${orgSlug}/${projectSlug}/${envSlug}/rollback/${key}`, {
185
+ method: "POST",
186
+ body: JSON.stringify({ version }),
187
+ });
188
+ }
189
+ // ─── Provider Import ────────────────────────────────────────────────────────
190
+ export async function apiImportPreview(body) {
191
+ return request("/import/preview", {
192
+ method: "POST",
193
+ body: JSON.stringify(body),
194
+ });
195
+ }
196
+ export async function apiImportExecute(body) {
197
+ return request("/import/execute", {
198
+ method: "POST",
199
+ body: JSON.stringify(body),
200
+ });
201
+ }
202
+ // ─── Share Links ────────────────────────────────────────────────────────────
203
+ export async function apiCreateShareLink(orgId, data) {
204
+ return request(`/share/${orgId}`, {
205
+ method: "POST",
206
+ body: JSON.stringify(data),
207
+ });
208
+ }
209
+ export async function apiListShareLinks(orgId) {
210
+ return request(`/share/${orgId}`);
211
+ }
212
+ export async function apiRevokeShareLink(orgId, linkId) {
213
+ return request(`/share/${orgId}/${linkId}`, { method: "DELETE" });
214
+ }
176
215
  // ─── Helpers ────────────────────────────────────────────────────────────────
177
216
  export async function resolveOrgId(slug) {
178
217
  const me = await apiGetMe();
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface DiscoveredProject {
2
+ type: string;
3
+ framework?: string;
4
+ suggestedKeys: string[];
5
+ envFileKeys: string[];
6
+ envFilePath?: string;
7
+ }
8
+ /** Parse env file returning key names only (handles empty values like in .env.example) */
9
+ export declare function parseEnvFileKeys(filePath: string): string[];
10
+ export declare function discoverProjectType(dir?: string): DiscoveredProject | null;
11
+ //# sourceMappingURL=discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../../src/lib/discover.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAyGD,0FAA0F;AAC1F,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,CAY3D;AAED,wBAAgB,mBAAmB,CACjC,GAAG,CAAC,EAAE,MAAM,GACX,iBAAiB,GAAG,IAAI,CA6E1B"}
@@ -0,0 +1,187 @@
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import { join } from "node:path";
3
+ const COMMON_KEYS = ["DATABASE_URL", "PORT"];
4
+ const PROJECT_DETECTORS = [
5
+ {
6
+ file: "package.json",
7
+ type: "node",
8
+ detectFramework(content) {
9
+ try {
10
+ const pkg = JSON.parse(content);
11
+ const allDeps = {
12
+ ...pkg.dependencies,
13
+ ...pkg.devDependencies,
14
+ };
15
+ if (allDeps["next"])
16
+ return "next";
17
+ if (allDeps["nuxt"] || allDeps["nuxt3"])
18
+ return "nuxt";
19
+ if (allDeps["express"])
20
+ return "express";
21
+ }
22
+ catch {
23
+ // ignore
24
+ }
25
+ return undefined;
26
+ },
27
+ baseKeys: ["NODE_ENV", "API_KEY", "JWT_SECRET"],
28
+ frameworkKeys: {
29
+ next: ["NEXTAUTH_SECRET", "NEXTAUTH_URL", "NEXT_PUBLIC_API_URL"],
30
+ nuxt: ["NUXT_PUBLIC_API_BASE", "NITRO_PORT"],
31
+ express: ["SESSION_SECRET", "CORS_ORIGIN"],
32
+ },
33
+ },
34
+ {
35
+ file: "requirements.txt",
36
+ type: "python",
37
+ detectFramework(content) {
38
+ const lower = content.toLowerCase();
39
+ if (lower.includes("django"))
40
+ return "django";
41
+ if (lower.includes("flask"))
42
+ return "flask";
43
+ return undefined;
44
+ },
45
+ baseKeys: ["SECRET_KEY", "DEBUG"],
46
+ frameworkKeys: {
47
+ django: [
48
+ "DJANGO_SETTINGS_MODULE",
49
+ "ALLOWED_HOSTS",
50
+ "DJANGO_SECRET_KEY",
51
+ ],
52
+ flask: ["FLASK_APP", "FLASK_ENV", "FLASK_SECRET_KEY"],
53
+ },
54
+ },
55
+ {
56
+ file: "pyproject.toml",
57
+ type: "python",
58
+ detectFramework(content) {
59
+ const lower = content.toLowerCase();
60
+ if (lower.includes("django"))
61
+ return "django";
62
+ if (lower.includes("flask"))
63
+ return "flask";
64
+ return undefined;
65
+ },
66
+ baseKeys: ["SECRET_KEY", "DEBUG"],
67
+ frameworkKeys: {
68
+ django: [
69
+ "DJANGO_SETTINGS_MODULE",
70
+ "ALLOWED_HOSTS",
71
+ "DJANGO_SECRET_KEY",
72
+ ],
73
+ flask: ["FLASK_APP", "FLASK_ENV", "FLASK_SECRET_KEY"],
74
+ },
75
+ },
76
+ {
77
+ file: "Gemfile",
78
+ type: "ruby",
79
+ detectFramework(content) {
80
+ if (content.includes("rails"))
81
+ return "rails";
82
+ return undefined;
83
+ },
84
+ baseKeys: ["SECRET_KEY_BASE"],
85
+ frameworkKeys: {
86
+ rails: ["RAILS_MASTER_KEY", "RAILS_ENV", "RAILS_LOG_LEVEL"],
87
+ },
88
+ },
89
+ {
90
+ file: "go.mod",
91
+ type: "go",
92
+ baseKeys: ["LOG_LEVEL"],
93
+ },
94
+ {
95
+ file: "Cargo.toml",
96
+ type: "rust",
97
+ baseKeys: ["RUST_LOG"],
98
+ },
99
+ ];
100
+ const ENV_FILE_PRIORITY = [
101
+ ".env.example",
102
+ ".env.sample",
103
+ ".env.template",
104
+ ".env",
105
+ ];
106
+ /** Parse env file returning key names only (handles empty values like in .env.example) */
107
+ export function parseEnvFileKeys(filePath) {
108
+ const content = readFileSync(filePath, "utf-8");
109
+ const keys = [];
110
+ for (const line of content.split("\n")) {
111
+ const trimmed = line.trim();
112
+ if (!trimmed || trimmed.startsWith("#"))
113
+ continue;
114
+ const match = trimmed.match(/^([A-Za-z_][A-Za-z0-9_]*)[\s=]/);
115
+ if (match) {
116
+ keys.push(match[1]);
117
+ }
118
+ }
119
+ return keys;
120
+ }
121
+ export function discoverProjectType(dir) {
122
+ const base = dir || process.cwd();
123
+ // Detect project type
124
+ let detectedType;
125
+ let detectedFramework;
126
+ let suggestedKeys = [...COMMON_KEYS];
127
+ for (const detector of PROJECT_DETECTORS) {
128
+ const filePath = join(base, detector.file);
129
+ if (!existsSync(filePath))
130
+ continue;
131
+ const content = readFileSync(filePath, "utf-8");
132
+ const framework = detector.detectFramework?.(content);
133
+ if (!detectedType) {
134
+ detectedType = detector.type;
135
+ detectedFramework = framework;
136
+ suggestedKeys.push(...detector.baseKeys);
137
+ if (framework && detector.frameworkKeys?.[framework]) {
138
+ suggestedKeys.push(...detector.frameworkKeys[framework]);
139
+ }
140
+ }
141
+ }
142
+ if (!detectedType)
143
+ return null;
144
+ // Stripe is additive — check package.json for stripe dep regardless of framework
145
+ const pkgPath = join(base, "package.json");
146
+ if (existsSync(pkgPath)) {
147
+ try {
148
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf-8"));
149
+ const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
150
+ if (allDeps["stripe"]) {
151
+ suggestedKeys.push("STRIPE_SECRET_KEY", "STRIPE_PUBLISHABLE_KEY", "STRIPE_WEBHOOK_SECRET");
152
+ }
153
+ }
154
+ catch {
155
+ // ignore
156
+ }
157
+ }
158
+ // Find env file
159
+ let envFileKeys = [];
160
+ let envFilePath;
161
+ for (const envFile of ENV_FILE_PRIORITY) {
162
+ const fullPath = join(base, envFile);
163
+ if (existsSync(fullPath)) {
164
+ envFilePath = envFile;
165
+ envFileKeys = parseEnvFileKeys(fullPath);
166
+ break;
167
+ }
168
+ }
169
+ // Deduplicate (merge suggested + env file keys, preserve order)
170
+ const allKeys = [...suggestedKeys, ...envFileKeys];
171
+ const seen = new Set();
172
+ const deduped = [];
173
+ for (const key of allKeys) {
174
+ if (!seen.has(key)) {
175
+ seen.add(key);
176
+ deduped.push(key);
177
+ }
178
+ }
179
+ return {
180
+ type: detectedType,
181
+ framework: detectedFramework,
182
+ suggestedKeys: deduped,
183
+ envFileKeys,
184
+ envFilePath,
185
+ };
186
+ }
187
+ //# sourceMappingURL=discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../../src/lib/discover.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@secr/cli",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "CLI for secr — secrets management for teams",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -31,7 +31,7 @@
31
31
  "configuration"
32
32
  ],
33
33
  "dependencies": {
34
- "@secr/shared": "^0.1.0",
34
+ "@secr/shared": "^0.2.0",
35
35
  "chalk": "^5.3.0",
36
36
  "commander": "^12.1.0",
37
37
  "dotenv": "^16.4.0",