@tinyrack/devsync 1.5.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +7 -0
- package/dist/cli/commands/init.d.ts +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +24 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/prompt.d.ts +2 -0
- package/dist/cli/prompt.d.ts.map +1 -0
- package/dist/cli/prompt.js +66 -0
- package/dist/cli/prompt.js.map +1 -0
- package/dist/services/crypto.d.ts +8 -0
- package/dist/services/crypto.d.ts.map +1 -1
- package/dist/services/crypto.js +27 -0
- package/dist/services/crypto.js.map +1 -1
- package/dist/services/init.d.ts +3 -0
- package/dist/services/init.d.ts.map +1 -1
- package/dist/services/init.js +18 -2
- package/dist/services/init.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -71,6 +71,12 @@ Initialize a local sync repository:
|
|
|
71
71
|
devsync init
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
+
Provide an existing age private key during setup:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
devsync init --key AGE-SECRET-KEY-...
|
|
78
|
+
```
|
|
79
|
+
|
|
74
80
|
Track a few configs:
|
|
75
81
|
|
|
76
82
|
```bash
|
|
@@ -115,6 +121,7 @@ Notes:
|
|
|
115
121
|
- `push` updates the sync repository contents only; it does not create git commits or push to a remote.
|
|
116
122
|
- `pull` updates local files only.
|
|
117
123
|
- Secret paths are stored encrypted in the repository and require the configured `age` identity to decrypt on restore.
|
|
124
|
+
- `init` prompts for an age private key when `--key` is omitted. Submit an empty response to generate a new identity automatically.
|
|
118
125
|
|
|
119
126
|
## 4. Detailed docs
|
|
120
127
|
|
|
@@ -9,6 +9,7 @@ export default class SyncInit extends BaseCommand {
|
|
|
9
9
|
static flags: {
|
|
10
10
|
identity: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
11
|
recipient: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
key: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
13
|
};
|
|
13
14
|
run(): Promise<void>;
|
|
14
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAOvD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAAW;IAC/C,OAAuB,OAAO,SAA8C;IAE5E,OAAuB,WAAW,SAC8N;IAEhQ,OAAuB,QAAQ,WAK7B;IAEF,OAAuB,IAAI;;MAKzB;IAEF,OAAuB,KAAK;;;;MAoB1B;IAEoB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsC3C"}
|
|
@@ -1,13 +1,17 @@
|
|
|
1
1
|
import { Args, Flags } from "@oclif/core";
|
|
2
2
|
import { BaseCommand } from "#app/cli/base-command.js";
|
|
3
|
+
import { promptForSecret } from "#app/cli/prompt.js";
|
|
4
|
+
import { resolveConfiguredAbsolutePath } from "#app/config/xdg.js";
|
|
3
5
|
import { formatSyncInitResult } from "#app/lib/output.js";
|
|
4
|
-
import {
|
|
6
|
+
import { pathExists } from "#app/services/filesystem.js";
|
|
7
|
+
import { defaultSyncIdentityFile, initializeSync } from "#app/services/init.js";
|
|
5
8
|
export default class SyncInit extends BaseCommand {
|
|
6
9
|
static summary = "Initialize the git-backed sync directory";
|
|
7
10
|
static description = "Create or connect the local devsync repository under your XDG config directory, then store the sync settings used by later pull and push operations. If you omit the repository argument, devsync initializes a local git repository in the sync directory.";
|
|
8
11
|
static examples = [
|
|
9
12
|
"<%= config.bin %> <%= command.id %>",
|
|
10
13
|
"<%= config.bin %> <%= command.id %> https://example.com/my-sync-repo.git",
|
|
14
|
+
'<%= config.bin %> <%= command.id %> --key "AGE-SECRET-KEY-..."',
|
|
11
15
|
'<%= config.bin %> <%= command.id %> --identity "$XDG_CONFIG_HOME/devsync/age/keys.txt" --recipient age1...',
|
|
12
16
|
];
|
|
13
17
|
static args = {
|
|
@@ -28,10 +32,29 @@ export default class SyncInit extends BaseCommand {
|
|
|
28
32
|
description: "Add an age recipient public key to manifest.json. Repeat this flag to encrypt secrets for multiple recipients during push operations.",
|
|
29
33
|
multiple: true,
|
|
30
34
|
}),
|
|
35
|
+
key: Flags.string({
|
|
36
|
+
helpValue: "age-private-key",
|
|
37
|
+
summary: "Persist an age private key into the identity file",
|
|
38
|
+
description: "Validate the provided age private key, write it to the configured identity file, and derive its recipient automatically.",
|
|
39
|
+
}),
|
|
31
40
|
};
|
|
32
41
|
async run() {
|
|
33
42
|
const { args, flags } = await this.parse(SyncInit);
|
|
43
|
+
const requestedKey = flags.key?.trim();
|
|
44
|
+
const configuredIdentityFile = flags.identity?.trim() || defaultSyncIdentityFile;
|
|
45
|
+
const identityFile = resolveConfiguredAbsolutePath(configuredIdentityFile, process.env);
|
|
46
|
+
const shouldPrompt = requestedKey === undefined && !(await pathExists(identityFile));
|
|
47
|
+
const promptedKey = shouldPrompt
|
|
48
|
+
? await promptForSecret("Enter an age private key (leave empty to generate a new one): ")
|
|
49
|
+
: undefined;
|
|
50
|
+
const trimmedPromptedKey = promptedKey?.trim();
|
|
34
51
|
const output = formatSyncInitResult(await initializeSync({
|
|
52
|
+
ageIdentity: requestedKey !== undefined
|
|
53
|
+
? requestedKey
|
|
54
|
+
: trimmedPromptedKey !== undefined && trimmedPromptedKey !== ""
|
|
55
|
+
? trimmedPromptedKey
|
|
56
|
+
: undefined,
|
|
57
|
+
generateAgeIdentity: shouldPrompt && trimmedPromptedKey === "",
|
|
35
58
|
identityFile: flags.identity,
|
|
36
59
|
recipients: flags.recipient ?? [],
|
|
37
60
|
repository: args.repository,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,eAAe,GAAU,SAAS,MAAM,oBAoEpD,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { emitKeypressEvents } from "node:readline";
|
|
2
|
+
const readPipedSecret = async () => {
|
|
3
|
+
let buffer = "";
|
|
4
|
+
process.stdin.setEncoding("utf8");
|
|
5
|
+
for await (const chunk of process.stdin) {
|
|
6
|
+
buffer += chunk;
|
|
7
|
+
}
|
|
8
|
+
return buffer.replace(/\r?\n$/, "");
|
|
9
|
+
};
|
|
10
|
+
export const promptForSecret = async (message) => {
|
|
11
|
+
if (!process.stdin.isTTY || !process.stderr.isTTY) {
|
|
12
|
+
return await readPipedSecret();
|
|
13
|
+
}
|
|
14
|
+
const stdin = process.stdin;
|
|
15
|
+
const stderr = process.stderr;
|
|
16
|
+
const previousRawMode = stdin.isRaw ?? false;
|
|
17
|
+
let value = "";
|
|
18
|
+
emitKeypressEvents(stdin);
|
|
19
|
+
stdin.setEncoding("utf8");
|
|
20
|
+
stdin.setRawMode(true);
|
|
21
|
+
stdin.resume();
|
|
22
|
+
stderr.write(message);
|
|
23
|
+
return await new Promise((resolve, reject) => {
|
|
24
|
+
const cancelError = new Error("Age key prompt cancelled.");
|
|
25
|
+
const cleanup = () => {
|
|
26
|
+
stdin.removeListener("keypress", onKeypress);
|
|
27
|
+
stdin.setRawMode(previousRawMode);
|
|
28
|
+
stdin.pause();
|
|
29
|
+
stderr.write("\n");
|
|
30
|
+
};
|
|
31
|
+
const onKeypress = (character, key) => {
|
|
32
|
+
if (character === "\u0003" || character === "\u0004") {
|
|
33
|
+
cleanup();
|
|
34
|
+
reject(cancelError);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (key.name === "escape" ||
|
|
38
|
+
key.name === "tab" ||
|
|
39
|
+
key.name === "delete" ||
|
|
40
|
+
key.name === "up" ||
|
|
41
|
+
key.name === "down" ||
|
|
42
|
+
key.name === "left" ||
|
|
43
|
+
key.name === "right") {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
if (key.name === "return" || key.name === "enter") {
|
|
47
|
+
cleanup();
|
|
48
|
+
resolve(value);
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (key.name === "backspace") {
|
|
52
|
+
if (value.length > 0) {
|
|
53
|
+
value = value.slice(0, -1);
|
|
54
|
+
stderr.write("\b \b");
|
|
55
|
+
}
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
if (character >= " " && character !== "\u007f") {
|
|
59
|
+
value += character;
|
|
60
|
+
stderr.write("*");
|
|
61
|
+
}
|
|
62
|
+
};
|
|
63
|
+
stdin.on("keypress", onKeypress);
|
|
64
|
+
});
|
|
65
|
+
};
|
|
66
|
+
//# sourceMappingURL=prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/cli/prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,17 @@
|
|
|
1
|
+
export declare const resolveAgeIdentity: (identity: string) => Promise<{
|
|
2
|
+
identity: string;
|
|
3
|
+
recipient: string;
|
|
4
|
+
}>;
|
|
1
5
|
export declare const readAgeIdentityLines: (identityFile: string) => Promise<string[]>;
|
|
2
6
|
export declare const readAgeRecipientsFromIdentityFile: (identityFile: string) => Promise<string[]>;
|
|
3
7
|
export declare const createAgeIdentityFile: (identityFile: string) => Promise<{
|
|
4
8
|
identity: string;
|
|
5
9
|
recipient: string;
|
|
6
10
|
}>;
|
|
11
|
+
export declare const writeAgeIdentityFile: (identityFile: string, identity: string) => Promise<{
|
|
12
|
+
identity: string;
|
|
13
|
+
recipient: string;
|
|
14
|
+
}>;
|
|
7
15
|
export declare const encryptSecretFile: (contents: Uint8Array, recipients: readonly string[]) => Promise<string>;
|
|
8
16
|
export declare const decryptSecretFile: (armoredCiphertext: string, identityFile: string) => Promise<Uint8Array<ArrayBufferLike>>;
|
|
9
17
|
//# sourceMappingURL=crypto.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,oBAAoB,GAAU,cAAc,MAAM,sBAqB9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,cAAc,MAAM,sBAwBrB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc,MAAM;;;EAW/D,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,UAAU,EACpB,YAAY,SAAS,MAAM,EAAE,oBAW9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,mBAAmB,MAAM,EACzB,cAAc,MAAM,yCAkBrB,CAAC"}
|
|
1
|
+
{"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,kBAAkB,GAAU,UAAU,MAAM;;;EAqBxD,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAU,cAAc,MAAM,sBAqB9D,CAAC;AAEF,eAAO,MAAM,iCAAiC,GAC5C,cAAc,MAAM,sBAwBrB,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAU,cAAc,MAAM;;;EAW/D,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAC/B,cAAc,MAAM,EACpB,UAAU,MAAM;;;EAYjB,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,UAAU,UAAU,EACpB,YAAY,SAAS,MAAM,EAAE,oBAW9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAC5B,mBAAmB,MAAM,EACzB,cAAc,MAAM,yCAkBrB,CAAC"}
|
package/dist/services/crypto.js
CHANGED
|
@@ -3,6 +3,27 @@ import { dirname } from "node:path";
|
|
|
3
3
|
import { armor, Decrypter, Encrypter, generateIdentity, identityToRecipient, } from "age-encryption";
|
|
4
4
|
import { ensureTrailingNewline } from "#app/lib/string.js";
|
|
5
5
|
import { DevsyncError, wrapUnknownError } from "#app/services/error.js";
|
|
6
|
+
export const resolveAgeIdentity = async (identity) => {
|
|
7
|
+
const normalizedIdentity = identity.trim();
|
|
8
|
+
if (normalizedIdentity === "") {
|
|
9
|
+
throw new DevsyncError("Age private key cannot be empty.", {
|
|
10
|
+
code: "AGE_IDENTITY_INVALID",
|
|
11
|
+
hint: "Provide a valid age private key starting with 'AGE-SECRET-KEY-'.",
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
return {
|
|
16
|
+
identity: normalizedIdentity,
|
|
17
|
+
recipient: await identityToRecipient(normalizedIdentity),
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
throw wrapUnknownError("Invalid age private key.", error, {
|
|
22
|
+
code: "AGE_IDENTITY_INVALID",
|
|
23
|
+
hint: "Provide a valid age private key starting with 'AGE-SECRET-KEY-'.",
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
};
|
|
6
27
|
export const readAgeIdentityLines = async (identityFile) => {
|
|
7
28
|
const contents = await readFile(identityFile, "utf8");
|
|
8
29
|
const identities = contents
|
|
@@ -47,6 +68,12 @@ export const createAgeIdentityFile = async (identityFile) => {
|
|
|
47
68
|
recipient,
|
|
48
69
|
};
|
|
49
70
|
};
|
|
71
|
+
export const writeAgeIdentityFile = async (identityFile, identity) => {
|
|
72
|
+
const resolvedIdentity = await resolveAgeIdentity(identity);
|
|
73
|
+
await mkdir(dirname(identityFile), { recursive: true });
|
|
74
|
+
await writeFile(identityFile, ensureTrailingNewline(resolvedIdentity.identity), "utf8");
|
|
75
|
+
return resolvedIdentity;
|
|
76
|
+
};
|
|
50
77
|
export const encryptSecretFile = async (contents, recipients) => {
|
|
51
78
|
const encrypter = new Encrypter();
|
|
52
79
|
for (const recipient of recipients) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/services/crypto.ts"],"names":[],"mappings":"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"}
|
package/dist/services/init.d.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export type SyncInitRequest = Readonly<{
|
|
2
|
+
ageIdentity?: string;
|
|
3
|
+
generateAgeIdentity?: boolean;
|
|
2
4
|
identityFile?: string;
|
|
3
5
|
recipients: readonly string[];
|
|
4
6
|
repository?: string;
|
|
@@ -14,5 +16,6 @@ export type SyncInitResult = Readonly<{
|
|
|
14
16
|
recipientCount: number;
|
|
15
17
|
syncDirectory: string;
|
|
16
18
|
}>;
|
|
19
|
+
export declare const defaultSyncIdentityFile = "$XDG_CONFIG_HOME/devsync/age/keys.txt";
|
|
17
20
|
export declare const initializeSync: (request: SyncInitRequest, environment: NodeJS.ProcessEnv) => Promise<SyncInitResult>;
|
|
18
21
|
//# sourceMappingURL=init.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAiCA,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,QAAQ,GAAG,UAAU,GAAG,aAAa,CAAC;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;CACvB,CAAC,CAAC;AAEH,eAAO,MAAM,uBAAuB,0CAA0C,CAAC;AA0K/E,eAAO,MAAM,cAAc,GACzB,SAAS,eAAe,EACxB,aAAa,MAAM,CAAC,UAAU,KAC7B,OAAO,CAAC,cAAc,CAoIxB,CAAC"}
|
package/dist/services/init.js
CHANGED
|
@@ -3,12 +3,12 @@ import { dirname } from "node:path";
|
|
|
3
3
|
import { formatGlobalDevsyncConfig, readGlobalDevsyncConfig, resolveConfiguredIdentityFile, } from "#app/config/global-config.js";
|
|
4
4
|
import { createInitialSyncConfig, formatSyncConfig, parseSyncConfig, readSyncConfig, resolveSyncArtifactsDirectoryPath, } from "#app/config/sync.js";
|
|
5
5
|
import { resolveConfiguredAbsolutePath } from "#app/config/xdg.js";
|
|
6
|
-
import { createAgeIdentityFile, readAgeRecipientsFromIdentityFile, } from "./crypto.js";
|
|
6
|
+
import { createAgeIdentityFile, readAgeRecipientsFromIdentityFile, writeAgeIdentityFile, } from "./crypto.js";
|
|
7
7
|
import { DevsyncError, wrapUnknownError } from "./error.js";
|
|
8
8
|
import { pathExists, writeTextFileAtomically } from "./filesystem.js";
|
|
9
9
|
import { ensureRepository, initializeRepository } from "./git.js";
|
|
10
10
|
import { ensureSyncRepository, resolveAgeFromSyncConfig, resolveSyncPaths, } from "./runtime.js";
|
|
11
|
-
const defaultSyncIdentityFile = "$XDG_CONFIG_HOME/devsync/age/keys.txt";
|
|
11
|
+
export const defaultSyncIdentityFile = "$XDG_CONFIG_HOME/devsync/age/keys.txt";
|
|
12
12
|
const normalizeRecipients = (recipients) => {
|
|
13
13
|
return [
|
|
14
14
|
...new Set(recipients.map((recipient) => recipient.trim()).filter(Boolean)),
|
|
@@ -20,6 +20,14 @@ const resolveInitAgeBootstrap = async (request, environment) => {
|
|
|
20
20
|
const configuredIdentityFile = request.identityFile?.trim() || defaultSyncIdentityFile;
|
|
21
21
|
const identityFile = resolveConfiguredAbsolutePath(configuredIdentityFile, environment);
|
|
22
22
|
const explicitRecipients = normalizeRecipients(request.recipients);
|
|
23
|
+
if (request.ageIdentity !== undefined) {
|
|
24
|
+
const { recipient } = await writeAgeIdentityFile(identityFile, request.ageIdentity);
|
|
25
|
+
return {
|
|
26
|
+
configuredIdentityFile,
|
|
27
|
+
generatedIdentity: false,
|
|
28
|
+
recipients: normalizeRecipients([...explicitRecipients, recipient]),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
23
31
|
if (explicitRecipients.length === 0) {
|
|
24
32
|
if (await pathExists(identityFile)) {
|
|
25
33
|
return {
|
|
@@ -35,6 +43,14 @@ const resolveInitAgeBootstrap = async (request, environment) => {
|
|
|
35
43
|
recipients: [recipient],
|
|
36
44
|
};
|
|
37
45
|
}
|
|
46
|
+
if (request.generateAgeIdentity === true) {
|
|
47
|
+
const { recipient } = await createAgeIdentityFile(identityFile);
|
|
48
|
+
return {
|
|
49
|
+
configuredIdentityFile,
|
|
50
|
+
generatedIdentity: true,
|
|
51
|
+
recipients: normalizeRecipients([...explicitRecipients, recipient]),
|
|
52
|
+
};
|
|
53
|
+
}
|
|
38
54
|
if (await pathExists(identityFile)) {
|
|
39
55
|
return {
|
|
40
56
|
configuredIdentityFile,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,yBAAyB,EAEzB,uBAAuB,EACvB,6BAA6B,GAC9B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,eAAe,EACf,cAAc,EACd,iCAAiC,GAElC,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EACL,qBAAqB,EACrB,iCAAiC,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/services/init.ts"],"names":[],"mappings":"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"}
|