lim 0.53.0 → 0.53.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/JSON_OUTPUT.md +17 -0
- package/README.md +48 -1
- package/dist/base-command.d.ts +2 -0
- package/dist/base-command.d.ts.map +1 -1
- package/dist/base-command.js +10 -1
- package/dist/base-command.js.map +1 -1
- package/dist/commands/android/adb-shell.d.ts +1 -0
- package/dist/commands/android/adb-shell.d.ts.map +1 -1
- package/dist/commands/android/adb-shell.js +6 -1
- package/dist/commands/android/adb-shell.js.map +1 -1
- package/dist/commands/android/create.d.ts +1 -0
- package/dist/commands/android/create.d.ts.map +1 -1
- package/dist/commands/android/create.js +7 -1
- package/dist/commands/android/create.js.map +1 -1
- package/dist/commands/android/set/env-from-secret.d.ts +3 -0
- package/dist/commands/android/set/env-from-secret.d.ts.map +1 -0
- package/dist/commands/android/set/env-from-secret.js +5 -0
- package/dist/commands/android/set/env-from-secret.js.map +1 -0
- package/dist/commands/gradle/build.d.ts +2 -0
- package/dist/commands/gradle/build.d.ts.map +1 -1
- package/dist/commands/gradle/build.js +8 -0
- package/dist/commands/gradle/build.js.map +1 -1
- package/dist/commands/gradle/create.d.ts +2 -0
- package/dist/commands/gradle/create.d.ts.map +1 -1
- package/dist/commands/gradle/create.js +6 -0
- package/dist/commands/gradle/create.js.map +1 -1
- package/dist/commands/gradle/set/env-from-secret.d.ts +3 -0
- package/dist/commands/gradle/set/env-from-secret.d.ts.map +1 -0
- package/dist/commands/gradle/set/env-from-secret.js +5 -0
- package/dist/commands/gradle/set/env-from-secret.js.map +1 -0
- package/dist/commands/gradle/set/file-from-secret.d.ts +3 -0
- package/dist/commands/gradle/set/file-from-secret.d.ts.map +1 -0
- package/dist/commands/gradle/set/file-from-secret.js +5 -0
- package/dist/commands/gradle/set/file-from-secret.js.map +1 -0
- package/dist/commands/ios/create.d.ts +1 -0
- package/dist/commands/ios/create.d.ts.map +1 -1
- package/dist/commands/ios/create.js +8 -1
- package/dist/commands/ios/create.js.map +1 -1
- package/dist/commands/ios/launch-app.d.ts +1 -0
- package/dist/commands/ios/launch-app.d.ts.map +1 -1
- package/dist/commands/ios/launch-app.js +7 -1
- package/dist/commands/ios/launch-app.js.map +1 -1
- package/dist/commands/ios/launch-app.test.js +24 -2
- package/dist/commands/ios/launch-app.test.js.map +1 -1
- package/dist/commands/ios/set/env-from-secret.d.ts +3 -0
- package/dist/commands/ios/set/env-from-secret.d.ts.map +1 -0
- package/dist/commands/ios/set/env-from-secret.js +5 -0
- package/dist/commands/ios/set/env-from-secret.js.map +1 -0
- package/dist/commands/ios/simctl.d.ts +1 -0
- package/dist/commands/ios/simctl.d.ts.map +1 -1
- package/dist/commands/ios/simctl.js +9 -1
- package/dist/commands/ios/simctl.js.map +1 -1
- package/dist/commands/secret/commands.test.d.ts +2 -0
- package/dist/commands/secret/commands.test.d.ts.map +1 -0
- package/dist/commands/secret/commands.test.js +137 -0
- package/dist/commands/secret/commands.test.js.map +1 -0
- package/dist/commands/secret/create.d.ts +19 -0
- package/dist/commands/secret/create.d.ts.map +1 -0
- package/dist/commands/secret/create.js +32 -0
- package/dist/commands/secret/create.js.map +1 -0
- package/dist/commands/secret/delete.d.ts +16 -0
- package/dist/commands/secret/delete.d.ts.map +1 -0
- package/dist/commands/secret/delete.js +22 -0
- package/dist/commands/secret/delete.js.map +1 -0
- package/dist/commands/secret/get.d.ts +20 -0
- package/dist/commands/secret/get.d.ts.map +1 -0
- package/dist/commands/secret/get.js +33 -0
- package/dist/commands/secret/get.js.map +1 -0
- package/dist/commands/secret/read.d.ts +18 -0
- package/dist/commands/secret/read.d.ts.map +1 -0
- package/dist/commands/secret/read.js +42 -0
- package/dist/commands/secret/read.js.map +1 -0
- package/dist/commands/secret/update.d.ts +17 -0
- package/dist/commands/secret/update.d.ts.map +1 -0
- package/dist/commands/secret/update.js +26 -0
- package/dist/commands/secret/update.js.map +1 -0
- package/dist/commands/secret/write.d.ts +20 -0
- package/dist/commands/secret/write.d.ts.map +1 -0
- package/dist/commands/secret/write.js +50 -0
- package/dist/commands/secret/write.js.map +1 -0
- package/dist/commands/xcode/build.d.ts +2 -0
- package/dist/commands/xcode/build.d.ts.map +1 -1
- package/dist/commands/xcode/build.js +10 -1
- package/dist/commands/xcode/build.js.map +1 -1
- package/dist/commands/xcode/create.d.ts +2 -0
- package/dist/commands/xcode/create.d.ts.map +1 -1
- package/dist/commands/xcode/create.js +6 -0
- package/dist/commands/xcode/create.js.map +1 -1
- package/dist/commands/xcode/set/env-from-secret.d.ts +3 -0
- package/dist/commands/xcode/set/env-from-secret.d.ts.map +1 -0
- package/dist/commands/xcode/set/env-from-secret.js +5 -0
- package/dist/commands/xcode/set/env-from-secret.js.map +1 -0
- package/dist/commands/xcode/set/file-from-secret.d.ts +3 -0
- package/dist/commands/xcode/set/file-from-secret.d.ts.map +1 -0
- package/dist/commands/xcode/set/file-from-secret.js +5 -0
- package/dist/commands/xcode/set/file-from-secret.js.map +1 -0
- package/dist/commands/xcode/test.d.ts +2 -0
- package/dist/commands/xcode/test.d.ts.map +1 -1
- package/dist/commands/xcode/test.js +9 -1
- package/dist/commands/xcode/test.js.map +1 -1
- package/dist/lib/build-run-command.d.ts.map +1 -1
- package/dist/lib/build-run-command.js +9 -0
- package/dist/lib/build-run-command.js.map +1 -1
- package/dist/lib/delegated-permissions.d.ts.map +1 -1
- package/dist/lib/delegated-permissions.js +7 -1
- package/dist/lib/delegated-permissions.js.map +1 -1
- package/dist/lib/launch-app-runtime.d.ts +4 -1
- package/dist/lib/launch-app-runtime.d.ts.map +1 -1
- package/dist/lib/launch-app-runtime.js +9 -2
- package/dist/lib/launch-app-runtime.js.map +1 -1
- package/dist/lib/secret-env-flags.d.ts +7 -0
- package/dist/lib/secret-env-flags.d.ts.map +1 -0
- package/dist/lib/secret-env-flags.js +19 -0
- package/dist/lib/secret-env-flags.js.map +1 -0
- package/dist/lib/secret-env.d.ts +7 -0
- package/dist/lib/secret-env.d.ts.map +1 -0
- package/dist/lib/secret-env.js +105 -0
- package/dist/lib/secret-env.js.map +1 -0
- package/dist/lib/secret-env.test.d.ts +2 -0
- package/dist/lib/secret-env.test.d.ts.map +1 -0
- package/dist/lib/secret-env.test.js +79 -0
- package/dist/lib/secret-env.test.js.map +1 -0
- package/dist/lib/secret-input.d.ts +5 -0
- package/dist/lib/secret-input.d.ts.map +1 -0
- package/dist/lib/secret-input.js +47 -0
- package/dist/lib/secret-input.js.map +1 -0
- package/dist/lib/set-secret-env-command.d.ts +3 -0
- package/dist/lib/set-secret-env-command.d.ts.map +1 -0
- package/dist/lib/set-secret-env-command.js +96 -0
- package/dist/lib/set-secret-env-command.js.map +1 -0
- package/dist/lib/set-secret-env-command.test.d.ts +2 -0
- package/dist/lib/set-secret-env-command.test.d.ts.map +1 -0
- package/dist/lib/set-secret-env-command.test.js +115 -0
- package/dist/lib/set-secret-env-command.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const core_1 = require("@oclif/core");
|
|
7
|
+
const node_fs_1 = require("node:fs");
|
|
8
|
+
const node_os_1 = require("node:os");
|
|
9
|
+
const node_path_1 = require("node:path");
|
|
10
|
+
const create_1 = __importDefault(require("./create"));
|
|
11
|
+
const get_1 = __importDefault(require("./get"));
|
|
12
|
+
const update_1 = __importDefault(require("./update"));
|
|
13
|
+
const delete_1 = __importDefault(require("./delete"));
|
|
14
|
+
const read_1 = __importDefault(require("./read"));
|
|
15
|
+
const write_1 = __importDefault(require("./write"));
|
|
16
|
+
const secret_input_1 = require("../../lib/secret-input");
|
|
17
|
+
function setup(command, args = {}, flags = {}) {
|
|
18
|
+
const value = { id: 'secret_test', name: 'npm/token', metadata: {} };
|
|
19
|
+
const secrets = {
|
|
20
|
+
create: jest.fn().mockResolvedValue(value),
|
|
21
|
+
get: jest.fn().mockResolvedValue(value),
|
|
22
|
+
update: jest.fn().mockResolvedValue(value),
|
|
23
|
+
delete: jest.fn().mockResolvedValue(undefined),
|
|
24
|
+
list: jest.fn().mockResolvedValue({ secrets: [value] }),
|
|
25
|
+
read: jest.fn().mockResolvedValue(new Uint8Array([0, 255, 10])),
|
|
26
|
+
write: jest.fn().mockResolvedValue(undefined),
|
|
27
|
+
};
|
|
28
|
+
const instance = Object.assign(Object.create(command.prototype), {
|
|
29
|
+
parse: async () => ({ args, flags: { json: true, ...flags } }),
|
|
30
|
+
setParsedFlags: jest.fn(),
|
|
31
|
+
withAuth: async (run) => run(),
|
|
32
|
+
outputResult: jest.fn(),
|
|
33
|
+
outputJson: jest.fn(),
|
|
34
|
+
error: (message) => {
|
|
35
|
+
throw new Error(message);
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(instance, 'client', { value: { secrets } });
|
|
39
|
+
return { instance, secrets };
|
|
40
|
+
}
|
|
41
|
+
test('metadata commands never call value access methods', async () => {
|
|
42
|
+
for (const command of [create_1.default, get_1.default, update_1.default, delete_1.default]) {
|
|
43
|
+
const { instance, secrets } = setup(command, { name: 'npm/token', target: 'npm/token' }, { type: 'generic', metadata: '{"registry":"npm"}' });
|
|
44
|
+
await instance.run();
|
|
45
|
+
expect(secrets.read).not.toHaveBeenCalled();
|
|
46
|
+
expect(secrets.write).not.toHaveBeenCalled();
|
|
47
|
+
if (command === create_1.default)
|
|
48
|
+
expect(secrets.create).toHaveBeenCalledWith({
|
|
49
|
+
name: 'npm/token',
|
|
50
|
+
type: 'generic',
|
|
51
|
+
metadata: { registry: 'npm' },
|
|
52
|
+
});
|
|
53
|
+
if (command === update_1.default)
|
|
54
|
+
expect(secrets.update).toHaveBeenCalledWith('name/npm/token', { metadata: { registry: 'npm' } });
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
test('write takes its value argument by default and does not echo it', async () => {
|
|
58
|
+
const { instance, secrets } = setup(write_1.default, { target: 'npm/token', value: 'private-value' });
|
|
59
|
+
let received;
|
|
60
|
+
secrets.write.mockImplementation(async (_target, bytes) => {
|
|
61
|
+
received = Buffer.from(bytes);
|
|
62
|
+
});
|
|
63
|
+
await instance.run();
|
|
64
|
+
expect(received.toString()).toBe('private-value');
|
|
65
|
+
expect(JSON.stringify(instance.outputResult.mock.calls)).not.toContain('private-value');
|
|
66
|
+
expect(secrets.write.mock.calls[0][1].every((byte) => byte === 0)).toBe(true);
|
|
67
|
+
});
|
|
68
|
+
test.each([
|
|
69
|
+
[{ target: 'npm/token' }, {}],
|
|
70
|
+
[{ target: 'npm/token', value: 'secret' }, { file: '/tmp/input' }],
|
|
71
|
+
[{ target: 'npm/token', value: 'secret' }, { stdin: true }],
|
|
72
|
+
])('write requires exactly one input source', async (args, flags) => {
|
|
73
|
+
const { instance, secrets } = setup(write_1.default, args, flags);
|
|
74
|
+
await expect(instance.run()).rejects.toThrow('exactly one');
|
|
75
|
+
expect(secrets.write).not.toHaveBeenCalled();
|
|
76
|
+
});
|
|
77
|
+
test('file writes preserve bytes, enforce the size limit, and read output is private without overwrite', async () => {
|
|
78
|
+
const dir = (0, node_fs_1.mkdtempSync)((0, node_path_1.join)((0, node_os_1.tmpdir)(), 'lim-secret-test-'));
|
|
79
|
+
try {
|
|
80
|
+
const input = (0, node_path_1.join)(dir, 'input');
|
|
81
|
+
const output = (0, node_path_1.join)(dir, 'output');
|
|
82
|
+
(0, node_fs_1.writeFileSync)(input, Buffer.from([0, 255, 10]));
|
|
83
|
+
const write = setup(write_1.default, { target: 'npm/token' }, { file: input });
|
|
84
|
+
let received;
|
|
85
|
+
write.secrets.write.mockImplementation(async (_target, bytes) => {
|
|
86
|
+
received = Buffer.from(bytes);
|
|
87
|
+
});
|
|
88
|
+
await write.instance.run();
|
|
89
|
+
expect(received).toEqual(Buffer.from([0, 255, 10]));
|
|
90
|
+
const read = setup(read_1.default, { target: 'npm/token' }, { output });
|
|
91
|
+
await read.instance.run();
|
|
92
|
+
expect((0, node_fs_1.readFileSync)(output)).toEqual(Buffer.from([0, 255, 10]));
|
|
93
|
+
expect((0, node_fs_1.statSync)(output).mode & 0o777).toBe(0o600);
|
|
94
|
+
await expect(read.instance.run()).rejects.toThrow('EEXIST');
|
|
95
|
+
(0, node_fs_1.writeFileSync)(input, Buffer.alloc(65537));
|
|
96
|
+
await expect((0, secret_input_1.secretBytes)(input)).rejects.toThrow('64 KiB');
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
(0, node_fs_1.rmSync)(dir, { recursive: true, force: true });
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
test('JSON reads are explicitly base64 and preserve binary values', async () => {
|
|
103
|
+
const { instance } = setup(read_1.default, { target: 'npm/token' });
|
|
104
|
+
await instance.run();
|
|
105
|
+
expect(instance.outputJson).toHaveBeenCalledWith({ encoding: 'base64', data: 'AP8K' });
|
|
106
|
+
});
|
|
107
|
+
test('names are literal and metadata must be a bounded object', () => {
|
|
108
|
+
expect((0, secret_input_1.secretTarget)('npm/token')).toBe('name/npm/token');
|
|
109
|
+
expect((0, secret_input_1.secretTarget)('name/npm/token')).toBe('name/npm/token');
|
|
110
|
+
expect(() => (0, secret_input_1.secretTarget)('npm/*')).toThrow();
|
|
111
|
+
for (const value of ['[]', 'null', 'invalid', JSON.stringify({ text: 'x'.repeat(16384) })])
|
|
112
|
+
expect(() => (0, secret_input_1.secretMetadata)(value)).toThrow();
|
|
113
|
+
});
|
|
114
|
+
test.each(['', 'x'.repeat(65537)])('write rejects invalid argument sizes before authentication', async (value) => {
|
|
115
|
+
const { instance, secrets } = setup(write_1.default, { target: 'npm/token', value });
|
|
116
|
+
instance.withAuth = jest.fn();
|
|
117
|
+
await expect(instance.run()).rejects.toThrow('64 KiB');
|
|
118
|
+
expect(instance.withAuth).not.toHaveBeenCalled();
|
|
119
|
+
expect(secrets.write).not.toHaveBeenCalled();
|
|
120
|
+
});
|
|
121
|
+
test.each([['--stdin'], ['--file', '-']])('parser leaves piped values for the explicit input handler: %s', async (...inputFlags) => {
|
|
122
|
+
const globals = globalThis;
|
|
123
|
+
const original = globals.oclif;
|
|
124
|
+
globals.oclif = { ...original, stdinCache: ' private-value\n' };
|
|
125
|
+
try {
|
|
126
|
+
const parsed = await core_1.Parser.parse(['npm/token', ...inputFlags], {
|
|
127
|
+
args: write_1.default.args,
|
|
128
|
+
flags: write_1.default.flags,
|
|
129
|
+
});
|
|
130
|
+
expect(parsed.args.target).toBe('npm/token');
|
|
131
|
+
expect(parsed.args.value).toBeUndefined();
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
globals.oclif = original;
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
//# sourceMappingURL=commands.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.test.js","sourceRoot":"","sources":["../../../src/commands/secret/commands.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command';
|
|
2
|
+
export default class SecretCreate extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
name: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
type: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
metadata: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
15
|
+
};
|
|
16
|
+
static examples: string[];
|
|
17
|
+
run(): Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/create.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,OAAO,SAA+B;IAC7C,MAAM,CAAC,WAAW,SACiH;IACnI,MAAM,CAAC,IAAI;;MAA2F;IACtG,MAAM,CAAC,KAAK;;;;;;;MAOV;IACF,MAAM,CAAC,QAAQ,WAEb;IACI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAY3B"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../base-command");
|
|
5
|
+
const secret_input_1 = require("../../lib/secret-input");
|
|
6
|
+
class SecretCreate extends base_command_1.BaseCommand {
|
|
7
|
+
async run() {
|
|
8
|
+
const { args, flags } = await this.parse(SecretCreate);
|
|
9
|
+
this.setParsedFlags(flags);
|
|
10
|
+
const metadata = (0, secret_input_1.secretMetadata)(flags.metadata);
|
|
11
|
+
await this.withAuth(async () => {
|
|
12
|
+
const secret = await this.client.secrets.create({ name: args.name, type: flags.type, metadata });
|
|
13
|
+
this.outputResult(secret, `Created secret ${secret.name} (${secret.id}). Use lim secret write to save its value.`);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
SecretCreate.summary = 'Create a secret container';
|
|
18
|
+
SecretCreate.description = 'Creates metadata only. Use secret write to save the value directly in Google Secret Manager. Existing names return a conflict.';
|
|
19
|
+
SecretCreate.args = { name: core_1.Args.string({ required: true, description: 'Exact name, such as npm/token' }) };
|
|
20
|
+
SecretCreate.flags = {
|
|
21
|
+
...base_command_1.BaseCommand.readOnlyFlags,
|
|
22
|
+
type: core_1.Flags.string({ default: 'generic', description: 'Payload type; descriptive only' }),
|
|
23
|
+
metadata: core_1.Flags.string({
|
|
24
|
+
default: '{}',
|
|
25
|
+
description: 'Non-sensitive JSON object stored by Limrun; never include credentials',
|
|
26
|
+
}),
|
|
27
|
+
};
|
|
28
|
+
SecretCreate.examples = [
|
|
29
|
+
'<%= config.bin %> secret create npm/token --type generic --metadata \'{"registry":"npm"}\'',
|
|
30
|
+
];
|
|
31
|
+
exports.default = SecretCreate;
|
|
32
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/secret/create.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,yDAAwD;AAExD,MAAqB,YAAa,SAAQ,0BAAW;IAgBnD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAA,6BAAc,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjG,IAAI,CAAC,YAAY,CACf,MAAM,EACN,kBAAkB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,4CAA4C,CACxF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;;AA1BM,oBAAO,GAAG,2BAA2B,CAAC;AACtC,wBAAW,GAChB,gIAAgI,CAAC;AAC5H,iBAAI,GAAG,EAAE,IAAI,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC;AAC/F,kBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,aAAa;IAC5B,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,gCAAgC,EAAE,CAAC;IACzF,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC;QACrB,OAAO,EAAE,IAAI;QACb,WAAW,EAAE,uEAAuE;KACrF,CAAC;CACH,CAAC;AACK,qBAAQ,GAAG;IAChB,4FAA4F;CAC7F,CAAC;kBAfiB,YAAY"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command';
|
|
2
|
+
export default class SecretDelete extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
target: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
11
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
};
|
|
14
|
+
run(): Promise<void>;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=delete.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/delete.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,OAAO,SAAwC;IACtD,MAAM,CAAC,WAAW,SAAuE;IACzF,MAAM,CAAC,IAAI;;MAAuF;IAClG,MAAM,CAAC,KAAK;;;;;MAAoC;IAC1C,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAS3B"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../base-command");
|
|
5
|
+
const secret_input_1 = require("../../lib/secret-input");
|
|
6
|
+
class SecretDelete extends base_command_1.BaseCommand {
|
|
7
|
+
async run() {
|
|
8
|
+
const { args, flags } = await this.parse(SecretDelete);
|
|
9
|
+
this.setParsedFlags(flags);
|
|
10
|
+
const target = (0, secret_input_1.secretTarget)(args.target);
|
|
11
|
+
await this.withAuth(async () => {
|
|
12
|
+
await this.client.secrets.delete(target);
|
|
13
|
+
this.outputResult({ ok: true, target }, `Deleted secret ${target}.`);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
SecretDelete.summary = 'Delete a secret and all its values';
|
|
18
|
+
SecretDelete.description = 'Permanently deletes the secret container and all stored versions.';
|
|
19
|
+
SecretDelete.args = { target: core_1.Args.string({ required: true, description: 'Secret ID or exact name' }) };
|
|
20
|
+
SecretDelete.flags = { ...base_command_1.BaseCommand.readOnlyFlags };
|
|
21
|
+
exports.default = SecretDelete;
|
|
22
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/secret/delete.ts"],"names":[],"mappings":";;AAAA,sCAAmC;AACnC,qDAAiD;AACjD,yDAAsD;AAEtD,MAAqB,YAAa,SAAQ,0BAAW;IAKnD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAA,2BAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,kBAAkB,MAAM,GAAG,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACL,CAAC;;AAZM,oBAAO,GAAG,oCAAoC,CAAC;AAC/C,wBAAW,GAAG,mEAAmE,CAAC;AAClF,iBAAI,GAAG,EAAE,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,EAAE,CAAC;AAC3F,kBAAK,GAAG,EAAE,GAAG,0BAAW,CAAC,aAAa,EAAE,CAAC;kBAJ7B,YAAY"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command';
|
|
2
|
+
export default class SecretGet extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static aliases: string[];
|
|
6
|
+
static args: {
|
|
7
|
+
target: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
limit: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
offset: import("@oclif/core/lib/interfaces").OptionFlag<number, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
12
|
+
name: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
16
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
17
|
+
};
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=get.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/get.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAAW;IAChD,MAAM,CAAC,OAAO,SAAkD;IAChE,MAAM,CAAC,WAAW,SAC4F;IAC9G,MAAM,CAAC,OAAO,WAAmB;IACjC,MAAM,CAAC,IAAI;;MAAsF;IACjG,MAAM,CAAC,KAAK;;;;;;;;MAKV;IACI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAe3B"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../base-command");
|
|
5
|
+
const secret_input_1 = require("../../lib/secret-input");
|
|
6
|
+
class SecretGet extends base_command_1.BaseCommand {
|
|
7
|
+
async run() {
|
|
8
|
+
const { args, flags } = await this.parse(SecretGet);
|
|
9
|
+
this.setParsedFlags(flags);
|
|
10
|
+
await this.withAuth(async () => {
|
|
11
|
+
const result = args.target ?
|
|
12
|
+
await this.client.secrets.get((0, secret_input_1.secretTarget)(args.target))
|
|
13
|
+
: await this.client.secrets.list({
|
|
14
|
+
limit: flags.limit,
|
|
15
|
+
offset: flags.offset,
|
|
16
|
+
...(flags.name ? { nameFilter: flags.name } : {}),
|
|
17
|
+
});
|
|
18
|
+
this.outputResult(result, JSON.stringify(result, null, 2));
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
SecretGet.summary = 'Get secret metadata, or list visible secrets';
|
|
23
|
+
SecretGet.description = 'Returns metadata only. Use secret read to fetch a value. Listing is paginated using --limit and --offset.';
|
|
24
|
+
SecretGet.aliases = ['secret:list'];
|
|
25
|
+
SecretGet.args = { target: core_1.Args.string({ description: 'Secret ID or exact name. Omit to list.' }) };
|
|
26
|
+
SecretGet.flags = {
|
|
27
|
+
...base_command_1.BaseCommand.readOnlyFlags,
|
|
28
|
+
limit: core_1.Flags.integer({ min: 1, max: 100, default: 50 }),
|
|
29
|
+
offset: core_1.Flags.integer({ min: 0, max: 100000, default: 0 }),
|
|
30
|
+
name: core_1.Flags.string({ description: 'Exact name filter for listing' }),
|
|
31
|
+
};
|
|
32
|
+
exports.default = SecretGet;
|
|
33
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/secret/get.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,yDAAsD;AAEtD,MAAqB,SAAU,SAAQ,0BAAW;IAYhD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GACV,IAAI,CAAC,MAAM,CAAC,CAAC;gBACX,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAA,2BAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1D,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAC7B,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;iBAClD,CAAC,CAAC;YACP,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;IACL,CAAC;;AAzBM,iBAAO,GAAG,8CAA8C,CAAC;AACzD,qBAAW,GAChB,2GAA2G,CAAC;AACvG,iBAAO,GAAG,CAAC,aAAa,CAAC,CAAC;AAC1B,cAAI,GAAG,EAAE,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,wCAAwC,EAAE,CAAC,EAAE,CAAC;AAC1F,eAAK,GAAG;IACb,GAAG,0BAAW,CAAC,aAAa;IAC5B,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IACvD,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC1D,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE,CAAC;CACrE,CAAC;kBAXiB,SAAS"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command';
|
|
2
|
+
export default class SecretRead extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
target: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
output: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
static examples: string[];
|
|
16
|
+
run(): Promise<void>;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/read.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,OAAO,SAA8C;IAC5D,MAAM,CAAC,WAAW,SACmL;IACrM,MAAM,CAAC,IAAI;;MAAuF;IAClG,MAAM,CAAC,KAAK;;;;;;MAGV;IACF,MAAM,CAAC,QAAQ,WAGb;IACI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAqB3B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const promises_1 = require("node:fs/promises");
|
|
5
|
+
const base_command_1 = require("../../base-command");
|
|
6
|
+
const secret_input_1 = require("../../lib/secret-input");
|
|
7
|
+
class SecretRead extends base_command_1.BaseCommand {
|
|
8
|
+
async run() {
|
|
9
|
+
const { args, flags } = await this.parse(SecretRead);
|
|
10
|
+
this.setParsedFlags(flags);
|
|
11
|
+
const target = (0, secret_input_1.secretTarget)(args.target);
|
|
12
|
+
await this.withAuth(async () => {
|
|
13
|
+
const bytes = await this.client.secrets.read(target);
|
|
14
|
+
try {
|
|
15
|
+
if (flags.output) {
|
|
16
|
+
await (0, promises_1.writeFile)(flags.output, bytes, { mode: 0o600, flag: 'wx' });
|
|
17
|
+
this.outputResult({ ok: true, target, path: flags.output }, `Saved secret to ${flags.output}.`);
|
|
18
|
+
}
|
|
19
|
+
else if (flags.json)
|
|
20
|
+
this.outputJson({ encoding: 'base64', data: Buffer.from(bytes).toString('base64') });
|
|
21
|
+
else
|
|
22
|
+
await new Promise((resolve, reject) => process.stdout.write(bytes, (error) => (error ? reject(error) : resolve())));
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
bytes.fill(0);
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
SecretRead.summary = 'Read a secret value directly from Google';
|
|
31
|
+
SecretRead.description = 'Writes exact bytes to stdout with no added newline, or creates a private file with --output. --json returns base64 data. Requires secret read permission; values never pass through Limrun APIs.';
|
|
32
|
+
SecretRead.args = { target: core_1.Args.string({ required: true, description: 'Secret ID or exact name' }) };
|
|
33
|
+
SecretRead.flags = {
|
|
34
|
+
...base_command_1.BaseCommand.readOnlyFlags,
|
|
35
|
+
output: core_1.Flags.string({ description: 'Create an output file with mode 0600; refuses to overwrite' }),
|
|
36
|
+
};
|
|
37
|
+
SecretRead.examples = [
|
|
38
|
+
'<%= config.bin %> secret read npm/token',
|
|
39
|
+
'<%= config.bin %> secret read npm/config --output .npmrc',
|
|
40
|
+
];
|
|
41
|
+
exports.default = SecretRead;
|
|
42
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/commands/secret/read.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,+CAA6C;AAC7C,qDAAiD;AACjD,yDAAsD;AAEtD,MAAqB,UAAW,SAAQ,0BAAW;IAajD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAA,2BAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,CAAC;gBACH,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;oBACjB,MAAM,IAAA,oBAAS,EAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBAClE,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,mBAAmB,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClG,CAAC;qBAAM,IAAI,KAAK,CAAC,IAAI;oBACnB,IAAI,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;;oBAErF,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAC5E,CAAC;YACN,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;AAhCM,kBAAO,GAAG,0CAA0C,CAAC;AACrD,sBAAW,GAChB,kMAAkM,CAAC;AAC9L,eAAI,GAAG,EAAE,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,EAAE,CAAC;AAC3F,gBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,aAAa;IAC5B,MAAM,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4DAA4D,EAAE,CAAC;CACpG,CAAC;AACK,mBAAQ,GAAG;IAChB,yCAAyC;IACzC,0DAA0D;CAC3D,CAAC;kBAZiB,UAAU"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command';
|
|
2
|
+
export default class SecretUpdate extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
target: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
};
|
|
8
|
+
static flags: {
|
|
9
|
+
metadata: import("@oclif/core/lib/interfaces").OptionFlag<string, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
10
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
13
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
14
|
+
};
|
|
15
|
+
run(): Promise<void>;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAW;IACnD,MAAM,CAAC,OAAO,SAAyC;IACvD,MAAM,CAAC,WAAW,SACqI;IACvJ,MAAM,CAAC,IAAI;;MAAuF;IAClG,MAAM,CAAC,KAAK;;;;;;MAGV;IACI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAU3B"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../base-command");
|
|
5
|
+
const secret_input_1 = require("../../lib/secret-input");
|
|
6
|
+
class SecretUpdate extends base_command_1.BaseCommand {
|
|
7
|
+
async run() {
|
|
8
|
+
const { args, flags } = await this.parse(SecretUpdate);
|
|
9
|
+
this.setParsedFlags(flags);
|
|
10
|
+
const target = (0, secret_input_1.secretTarget)(args.target);
|
|
11
|
+
const metadata = (0, secret_input_1.secretMetadata)(flags.metadata);
|
|
12
|
+
await this.withAuth(async () => {
|
|
13
|
+
const result = await this.client.secrets.update(target, { metadata });
|
|
14
|
+
this.outputResult(result, `Updated metadata for ${result.name}.`);
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
SecretUpdate.summary = 'Replace descriptive secret metadata';
|
|
19
|
+
SecretUpdate.description = 'Requires secret update permission. Does not change the name, type, or secret value. Metadata is stored by Limrun and must not contain credentials.';
|
|
20
|
+
SecretUpdate.args = { target: core_1.Args.string({ required: true, description: 'Secret ID or exact name' }) };
|
|
21
|
+
SecretUpdate.flags = {
|
|
22
|
+
...base_command_1.BaseCommand.readOnlyFlags,
|
|
23
|
+
metadata: core_1.Flags.string({ required: true, description: 'Replacement JSON object; use {} to clear' }),
|
|
24
|
+
};
|
|
25
|
+
exports.default = SecretUpdate;
|
|
26
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/secret/update.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,yDAAsE;AAEtE,MAAqB,YAAa,SAAQ,0BAAW;IASnD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACvD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAA,2BAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAA,6BAAc,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAC7B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,wBAAwB,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;QACpE,CAAC,CAAC,CAAC;IACL,CAAC;;AAjBM,oBAAO,GAAG,qCAAqC,CAAC;AAChD,wBAAW,GAChB,oJAAoJ,CAAC;AAChJ,iBAAI,GAAG,EAAE,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC,EAAE,CAAC;AAC3F,kBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,aAAa;IAC5B,QAAQ,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,0CAA0C,EAAE,CAAC;CACpG,CAAC;kBARiB,YAAY"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command';
|
|
2
|
+
export default class SecretWrite extends BaseCommand {
|
|
3
|
+
static summary: string;
|
|
4
|
+
static description: string;
|
|
5
|
+
static args: {
|
|
6
|
+
target: import("@oclif/core/lib/interfaces").Arg<string, Record<string, unknown>>;
|
|
7
|
+
value: import("@oclif/core/lib/interfaces").Arg<string | undefined, Record<string, unknown>>;
|
|
8
|
+
};
|
|
9
|
+
static flags: {
|
|
10
|
+
file: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
11
|
+
stdin: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
12
|
+
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
13
|
+
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
14
|
+
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
15
|
+
workspace: import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
16
|
+
};
|
|
17
|
+
static examples: string[];
|
|
18
|
+
run(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=write.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/commands/secret/write.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,WAAW;IAClD,MAAM,CAAC,OAAO,SAA6C;IAC3D,MAAM,CAAC,WAAW,SACsN;IACxO,MAAM,CAAC,IAAI;;;MAMT;IACF,MAAM,CAAC,KAAK;;;;;;;MAIV;IACF,MAAM,CAAC,QAAQ,WAIb;IACI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;CAsB3B"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const core_1 = require("@oclif/core");
|
|
4
|
+
const base_command_1 = require("../../base-command");
|
|
5
|
+
const secret_input_1 = require("../../lib/secret-input");
|
|
6
|
+
class SecretWrite extends base_command_1.BaseCommand {
|
|
7
|
+
async run() {
|
|
8
|
+
const { args, flags } = await this.parse(SecretWrite);
|
|
9
|
+
this.setParsedFlags(flags);
|
|
10
|
+
const target = (0, secret_input_1.secretTarget)(args.target);
|
|
11
|
+
const sources = Number(args.value !== undefined) + Number(flags.file !== undefined) + Number(Boolean(flags.stdin));
|
|
12
|
+
if (sources !== 1)
|
|
13
|
+
this.error('Provide VALUE, --file PATH, or --stdin, exactly one.');
|
|
14
|
+
const bytes = args.value !== undefined ?
|
|
15
|
+
Buffer.from(args.value, 'utf8')
|
|
16
|
+
: await (0, secret_input_1.secretBytes)(flags.stdin ? '-' : flags.file);
|
|
17
|
+
try {
|
|
18
|
+
if (!bytes.length || bytes.length > 65536)
|
|
19
|
+
this.error('Secret values must contain between 1 byte and 64 KiB.');
|
|
20
|
+
await this.withAuth(async () => {
|
|
21
|
+
await this.client.secrets.write(target, bytes);
|
|
22
|
+
this.outputResult({ ok: true, target }, `Saved secret ${target}.`);
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
finally {
|
|
26
|
+
bytes.fill(0);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
SecretWrite.summary = 'Write a secret value directly to Google';
|
|
31
|
+
SecretWrite.description = 'Adds a new version to an existing secret. Takes VALUE as an argument by default. Use --file PATH or --stdin to read exact bytes without trimming newlines. Values never pass through Limrun APIs. Requires secret write permission.';
|
|
32
|
+
SecretWrite.args = {
|
|
33
|
+
target: core_1.Args.string({ ignoreStdin: true, required: true, description: 'Secret ID or exact name' }),
|
|
34
|
+
value: core_1.Args.string({
|
|
35
|
+
ignoreStdin: true,
|
|
36
|
+
description: 'Value to save; alternatively use --file or --stdin',
|
|
37
|
+
}),
|
|
38
|
+
};
|
|
39
|
+
SecretWrite.flags = {
|
|
40
|
+
...base_command_1.BaseCommand.readOnlyFlags,
|
|
41
|
+
file: core_1.Flags.string({ description: 'Read value from a file; use - for stdin', exclusive: ['stdin'] }),
|
|
42
|
+
stdin: core_1.Flags.boolean({ description: 'Read the value from stdin', exclusive: ['file'] }),
|
|
43
|
+
};
|
|
44
|
+
SecretWrite.examples = [
|
|
45
|
+
'<%= config.bin %> secret write npm/token "$NPM_TOKEN"',
|
|
46
|
+
'<%= config.bin %> secret write npm/token --file ./npm-token',
|
|
47
|
+
'printf %s "$NPM_TOKEN" | <%= config.bin %> secret write npm/token --stdin',
|
|
48
|
+
];
|
|
49
|
+
exports.default = SecretWrite;
|
|
50
|
+
//# sourceMappingURL=write.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/commands/secret/write.ts"],"names":[],"mappings":";;AAAA,sCAA0C;AAC1C,qDAAiD;AACjD,yDAAmE;AAEnE,MAAqB,WAAY,SAAQ,0BAAW;IAqBlD,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3B,MAAM,MAAM,GAAG,IAAA,2BAAY,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACrG,IAAI,OAAO,KAAK,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACtF,MAAM,KAAK,GACT,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC;YACjC,CAAC,CAAC,MAAM,IAAA,0BAAW,EAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtD,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,KAAK;gBACvC,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;YACtE,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;gBAC7B,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,gBAAgB,MAAM,GAAG,CAAC,CAAC;YACrE,CAAC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;;AAzCM,mBAAO,GAAG,yCAAyC,CAAC;AACpD,uBAAW,GAChB,qOAAqO,CAAC;AACjO,gBAAI,GAAG;IACZ,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,EAAE,yBAAyB,EAAE,CAAC;IAClG,KAAK,EAAE,WAAI,CAAC,MAAM,CAAC;QACjB,WAAW,EAAE,IAAI;QACjB,WAAW,EAAE,oDAAoD;KAClE,CAAC;CACH,CAAC;AACK,iBAAK,GAAG;IACb,GAAG,0BAAW,CAAC,aAAa;IAC5B,IAAI,EAAE,YAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,yCAAyC,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACpG,KAAK,EAAE,YAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,2BAA2B,EAAE,SAAS,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;CACxF,CAAC;AACK,oBAAQ,GAAG;IAChB,uDAAuD;IACvD,6DAA6D;IAC7D,2EAA2E;CAC5E,CAAC;kBApBiB,WAAW"}
|
|
@@ -58,6 +58,8 @@ export default class XcodeBuild extends BaseCommand {
|
|
|
58
58
|
'xcodegen-project': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
59
59
|
'xcodegen-project-root': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
60
60
|
permission: import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
61
|
+
'file-from-secret': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
62
|
+
'env-from-secret': import("@oclif/core/lib/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
61
63
|
'api-key': import("@oclif/core/lib/interfaces").OptionFlag<string | undefined, import("@oclif/core/lib/interfaces").CustomOptions>;
|
|
62
64
|
json: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
63
65
|
quiet: import("@oclif/core/lib/interfaces").BooleanFlag<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/build.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/commands/xcode/build.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAiDjD,MAAM,CAAC,OAAO,OAAO,UAAW,SAAQ,WAAW;IACjD,MAAM,CAAC,OAAO,SAAwC;IACtD,MAAM,CAAC,WAAW,SACoU;IAEtV,MAAM,CAAC,QAAQ,WAkCb;IAEF,MAAM,CAAC,IAAI;;MAKT;IAEF,MAAM,CAAC,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+KV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAmUZ,mBAAmB;YAgBnB,wBAAwB;YA8BxB,cAAc;YAQd,oBAAoB;YAcpB,yBAAyB;CAkBxC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var _a;
|
|
3
3
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
const secret_env_flags_1 = require("../../lib/secret-env-flags");
|
|
5
|
+
const secret_env_1 = require("../../lib/secret-env");
|
|
4
6
|
const promises_1 = require("node:fs/promises");
|
|
5
7
|
const core_1 = require("@oclif/core");
|
|
6
8
|
const base_command_1 = require("../../base-command");
|
|
@@ -88,7 +90,11 @@ class XcodeBuild extends base_command_1.BaseCommand {
|
|
|
88
90
|
}
|
|
89
91
|
settings.artifactName = artifactName;
|
|
90
92
|
}
|
|
91
|
-
const options = {
|
|
93
|
+
const options = {
|
|
94
|
+
envFromSecret: (0, secret_env_1.parseSecretEnv)(flags['env-from-secret']),
|
|
95
|
+
fileFromSecret: (0, secret_env_1.parseSecretFiles)(flags['file-from-secret']),
|
|
96
|
+
};
|
|
97
|
+
await this.ensureSecretPermissions(id, options.envFromSecret, options.fileFromSecret);
|
|
92
98
|
if (flags['git-init']) {
|
|
93
99
|
options.gitInit = true;
|
|
94
100
|
}
|
|
@@ -395,6 +401,7 @@ _a = XcodeBuild;
|
|
|
395
401
|
XcodeBuild.summary = 'Run xcodebuild on an Xcode sandbox';
|
|
396
402
|
XcodeBuild.description = 'Sync a local project path once (or the current working directory if omitted), then trigger a remote xcodebuild with streaming output. Use `--detach` for headless builds that should return as soon as the build starts, optionally with a webhook for the terminal result. Use `--ios` to build and run on an iOS simulator-backed Xcode target.';
|
|
397
403
|
XcodeBuild.examples = [
|
|
404
|
+
"<%= config.bin %> xcode build --file-from-secret '~/.npmrc=packages/npmrc'",
|
|
398
405
|
'<%= config.bin %> xcode build',
|
|
399
406
|
'<%= config.bin %> xcode build ./MyProject',
|
|
400
407
|
'<%= config.bin %> xcode build ./MyProject --ios',
|
|
@@ -436,6 +443,8 @@ XcodeBuild.args = {
|
|
|
436
443
|
};
|
|
437
444
|
XcodeBuild.flags = {
|
|
438
445
|
...base_command_1.BaseCommand.baseFlags,
|
|
446
|
+
...secret_env_flags_1.secretEnvFlags,
|
|
447
|
+
...secret_env_flags_1.secretFileFlags,
|
|
439
448
|
...base_command_1.BaseCommand.permissionFlags,
|
|
440
449
|
...xcode_project_flags_1.xcodeProjectFlags,
|
|
441
450
|
...sync_flags_1.syncFlags,
|