@vaharoni/devops 1.1.11 → 1.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.
- package/dist/cli/core/affected.d.ts +9 -0
- package/dist/cli/core/affected.d.ts.map +1 -0
- package/dist/cli/{affected.js → core/affected.js} +4 -6
- package/dist/cli/core/cloudrun.d.ts +9 -0
- package/dist/cli/core/cloudrun.d.ts.map +1 -0
- package/dist/cli/{cloudrun.js → core/cloudrun.js} +3 -5
- package/dist/cli/core/console.d.ts +9 -0
- package/dist/cli/core/console.d.ts.map +1 -0
- package/dist/cli/{console.js → core/console.js} +5 -7
- package/dist/cli/core/constant.d.ts +9 -0
- package/dist/cli/core/constant.d.ts.map +1 -0
- package/dist/cli/{constant.js → core/constant.js} +3 -5
- package/dist/cli/core/env.d.ts +9 -0
- package/dist/cli/core/env.d.ts.map +1 -0
- package/dist/cli/{env.js → core/env.js} +4 -6
- package/dist/cli/core/exec.d.ts +9 -0
- package/dist/cli/core/exec.d.ts.map +1 -0
- package/dist/cli/{exec.js → core/exec.js} +5 -7
- package/dist/cli/core/image.d.ts +9 -0
- package/dist/cli/core/image.d.ts.map +1 -0
- package/dist/cli/{image.js → core/image.js} +6 -8
- package/dist/cli/core/index.d.ts +16 -0
- package/dist/cli/core/index.d.ts.map +1 -0
- package/dist/cli/core/index.js +15 -0
- package/dist/cli/core/init.d.ts +9 -0
- package/dist/cli/core/init.d.ts.map +1 -0
- package/dist/cli/{init.js → core/init.js} +3 -5
- package/dist/cli/core/job.d.ts +9 -0
- package/dist/cli/core/job.d.ts.map +1 -0
- package/dist/cli/{job.js → core/job.js} +7 -9
- package/dist/cli/core/namespace.d.ts +9 -0
- package/dist/cli/core/namespace.d.ts.map +1 -0
- package/dist/cli/{namespace.js → core/namespace.js} +4 -7
- package/dist/cli/core/prep-build.d.ts +10 -0
- package/dist/cli/core/prep-build.d.ts.map +1 -0
- package/dist/cli/{prep-build.js → core/prep-build.js} +6 -8
- package/dist/cli/core/registry.d.ts +9 -0
- package/dist/cli/core/registry.d.ts.map +1 -0
- package/dist/cli/{registry.js → core/registry.js} +5 -7
- package/dist/cli/core/run-many.d.ts +10 -0
- package/dist/cli/core/run-many.d.ts.map +1 -0
- package/dist/cli/{run-many.js → core/run-many.js} +3 -5
- package/dist/cli/core/run.d.ts +9 -0
- package/dist/cli/core/run.d.ts.map +1 -0
- package/dist/cli/{run.js → core/run.js} +6 -8
- package/dist/cli/core/test.d.ts +9 -0
- package/dist/cli/core/test.d.ts.map +1 -0
- package/dist/cli/{test.js → core/test.js} +2 -4
- package/dist/cli/exec.sh +21 -0
- package/dist/cli/extensions/dml.d.ts +9 -0
- package/dist/cli/extensions/dml.d.ts.map +1 -0
- package/dist/cli/{dml.js → extensions/dml.js} +2 -4
- package/dist/cli/extensions/index.d.ts +9 -0
- package/dist/cli/extensions/index.d.ts.map +1 -0
- package/dist/cli/extensions/index.js +8 -0
- package/dist/cli/extensions/internal-curl.d.ts +10 -0
- package/dist/cli/extensions/internal-curl.d.ts.map +1 -0
- package/dist/cli/{internal-curl.js → extensions/internal-curl.js} +3 -5
- package/dist/cli/extensions/jwt.d.ts +9 -0
- package/dist/cli/extensions/jwt.d.ts.map +1 -0
- package/dist/cli/{jwt.js → extensions/jwt.js} +3 -5
- package/dist/cli/extensions/prisma.d.ts +9 -0
- package/dist/cli/extensions/prisma.d.ts.map +1 -0
- package/dist/cli/{prisma.js → extensions/prisma.js} +4 -6
- package/dist/cli/extensions/redis-bitnami.d.ts +11 -0
- package/dist/cli/extensions/redis-bitnami.d.ts.map +1 -0
- package/dist/cli/{redis.js → extensions/redis-bitnami.js} +4 -6
- package/dist/cli/extensions/redis-ha.d.ts +11 -0
- package/dist/cli/extensions/redis-ha.d.ts.map +1 -0
- package/dist/cli/extensions/redis-ha.js +51 -0
- package/dist/cli/extensions/stackgres.d.ts +10 -0
- package/dist/cli/extensions/stackgres.d.ts.map +1 -0
- package/dist/cli/{db.js → extensions/stackgres.js} +3 -5
- package/dist/cli/extensions/template.d.ts +9 -0
- package/dist/cli/extensions/template.d.ts.map +1 -0
- package/dist/cli/{template.js → extensions/template.js} +7 -9
- package/dist/devops.js +84 -62
- package/dist/libs/{k8s-redis.d.ts → k8s-redis-bitnami.d.ts} +1 -1
- package/dist/libs/k8s-redis-bitnami.d.ts.map +1 -0
- package/dist/libs/k8s-redis-ha.d.ts +3 -0
- package/dist/libs/k8s-redis-ha.d.ts.map +1 -0
- package/dist/libs/k8s-redis-ha.js +15 -0
- package/dist/libs/k8s-secrets-manager.js +2 -2
- package/dist/plugins.d.ts +4 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +7 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -0
- package/package.json +12 -2
- package/src/cli/{affected.ts → core/affected.ts} +4 -6
- package/src/cli/{cloudrun.ts → core/cloudrun.ts} +3 -5
- package/src/cli/{console.ts → core/console.ts} +5 -7
- package/src/cli/{constant.ts → core/constant.ts} +3 -5
- package/src/cli/{env.ts → core/env.ts} +4 -6
- package/src/cli/{exec.ts → core/exec.ts} +5 -7
- package/src/cli/{image.ts → core/image.ts} +6 -8
- package/src/cli/core/index.ts +15 -0
- package/src/cli/{init.ts → core/init.ts} +4 -6
- package/src/cli/{job.ts → core/job.ts} +7 -9
- package/src/cli/{namespace.ts → core/namespace.ts} +4 -8
- package/src/cli/{prep-build.ts → core/prep-build.ts} +6 -8
- package/src/cli/{registry.ts → core/registry.ts} +5 -7
- package/src/cli/{run-many.ts → core/run-many.ts} +3 -5
- package/src/cli/{run.ts → core/run.ts} +6 -8
- package/src/cli/{test.ts → core/test.ts} +2 -4
- package/src/cli/{dml.ts → extensions/dml.ts} +2 -4
- package/src/cli/extensions/index.ts +8 -0
- package/src/cli/{internal-curl.ts → extensions/internal-curl.ts} +3 -5
- package/src/cli/{jwt.ts → extensions/jwt.ts} +3 -5
- package/src/cli/{prisma.ts → extensions/prisma.ts} +4 -6
- package/src/cli/{redis.ts → extensions/redis-bitnami.ts} +4 -6
- package/src/cli/extensions/redis-ha.ts +57 -0
- package/src/cli/{db.ts → extensions/stackgres.ts} +3 -5
- package/src/cli/{template.ts → extensions/template.ts} +7 -9
- package/src/devops.ts +100 -64
- package/src/libs/k8s-redis-ha.ts +16 -0
- package/src/libs/k8s-secrets-manager.ts +2 -2
- package/src/plugins.ts +8 -0
- package/src/types/index.ts +1 -0
- package/dist/cli/affected.d.ts +0 -11
- package/dist/cli/affected.d.ts.map +0 -1
- package/dist/cli/cloudrun.d.ts +0 -11
- package/dist/cli/cloudrun.d.ts.map +0 -1
- package/dist/cli/console.d.ts +0 -11
- package/dist/cli/console.d.ts.map +0 -1
- package/dist/cli/constant.d.ts +0 -11
- package/dist/cli/constant.d.ts.map +0 -1
- package/dist/cli/db.d.ts +0 -11
- package/dist/cli/db.d.ts.map +0 -1
- package/dist/cli/dml.d.ts +0 -11
- package/dist/cli/dml.d.ts.map +0 -1
- package/dist/cli/env.d.ts +0 -11
- package/dist/cli/env.d.ts.map +0 -1
- package/dist/cli/exec.d.ts +0 -11
- package/dist/cli/exec.d.ts.map +0 -1
- package/dist/cli/image.d.ts +0 -11
- package/dist/cli/image.d.ts.map +0 -1
- package/dist/cli/init.d.ts +0 -11
- package/dist/cli/init.d.ts.map +0 -1
- package/dist/cli/internal-curl.d.ts +0 -11
- package/dist/cli/internal-curl.d.ts.map +0 -1
- package/dist/cli/job.d.ts +0 -11
- package/dist/cli/job.d.ts.map +0 -1
- package/dist/cli/jwt.d.ts +0 -11
- package/dist/cli/jwt.d.ts.map +0 -1
- package/dist/cli/namespace.d.ts +0 -11
- package/dist/cli/namespace.d.ts.map +0 -1
- package/dist/cli/prep-build.d.ts +0 -11
- package/dist/cli/prep-build.d.ts.map +0 -1
- package/dist/cli/prisma.d.ts +0 -11
- package/dist/cli/prisma.d.ts.map +0 -1
- package/dist/cli/redis.d.ts +0 -11
- package/dist/cli/redis.d.ts.map +0 -1
- package/dist/cli/registry.d.ts +0 -11
- package/dist/cli/registry.d.ts.map +0 -1
- package/dist/cli/run-many.d.ts +0 -11
- package/dist/cli/run-many.d.ts.map +0 -1
- package/dist/cli/run.d.ts +0 -11
- package/dist/cli/run.d.ts.map +0 -1
- package/dist/cli/template.d.ts +0 -11
- package/dist/cli/template.d.ts.map +0 -1
- package/dist/cli/test.d.ts +0 -11
- package/dist/cli/test.d.ts.map +0 -1
- package/dist/libs/k8s-redis.d.ts.map +0 -1
- /package/dist/libs/{k8s-redis.js → k8s-redis-bitnami.js} +0 -0
- /package/src/libs/{k8s-redis.ts → k8s-redis-bitnami.ts} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from "./dml";
|
|
2
|
+
export * from "./internal-curl";
|
|
3
|
+
export * from "./jwt";
|
|
4
|
+
export * from "./prisma";
|
|
5
|
+
export * from "./redis-bitnami";
|
|
6
|
+
export * from "./redis-ha";
|
|
7
|
+
export * from "./stackgres";
|
|
8
|
+
export * from "./template";
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,iBAAiB,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CLICommandParser } from "../common";
|
|
2
|
+
declare function run(cmdObj: CLICommandParser): Promise<void>;
|
|
3
|
+
export declare const internalCurl: {
|
|
4
|
+
command: string;
|
|
5
|
+
oneLiner: string;
|
|
6
|
+
keyExamples: string;
|
|
7
|
+
run: typeof run;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=internal-curl.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"internal-curl.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/internal-curl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,WAAW,CAAC;AAuBhE,iBAAe,GAAG,CAAC,MAAM,EAAE,gBAAgB,iBAmB1C;AAED,eAAO,MAAM,YAAY;;;;;CAA2D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { InternalToken } from "
|
|
2
|
-
import { CLICommandParser, printUsageAndExit } from "
|
|
1
|
+
import { InternalToken } from "../../app-support/crypto";
|
|
2
|
+
import { CLICommandParser, printUsageAndExit } from "../common";
|
|
3
3
|
const oneLiner = "Runs a curl command bearing an internal jwt-like token to allow verifying internal communication within the namespace";
|
|
4
4
|
const keyExamples = `$ devops internal-curl jobs http://service-name:port/path`;
|
|
5
5
|
const usage = `
|
|
@@ -38,6 +38,4 @@ async function run(cmdObj) {
|
|
|
38
38
|
}
|
|
39
39
|
cmdObj.executorFromEnv(`curl -H "Authorization: Bearer ${token}" ${rest.join(" ")}`).exec();
|
|
40
40
|
}
|
|
41
|
-
export
|
|
42
|
-
'internal-curl': { oneLiner, keyExamples, run },
|
|
43
|
-
};
|
|
41
|
+
export const internalCurl = { command: 'internal-curl', oneLiner, keyExamples, run };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/jwt.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAqB,MAAM,WAAW,CAAC;AAqBhE,iBAAe,GAAG,CAAC,MAAM,EAAE,gBAAgB,iBAK1C;AAED,eAAO,MAAM,GAAG;;;;CAAiC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { InternalToken } from "
|
|
2
|
-
import { CLICommandParser, printUsageAndExit } from "
|
|
1
|
+
import { InternalToken } from "../../app-support/crypto";
|
|
2
|
+
import { CLICommandParser, printUsageAndExit } from "../common";
|
|
3
3
|
const oneLiner = "Returns a JWT-like token to allow verifying internal communication within the namespace";
|
|
4
4
|
const keyExamples = `$ devops jwt jobs`;
|
|
5
5
|
const usage = `
|
|
@@ -22,6 +22,4 @@ async function run(cmdObj) {
|
|
|
22
22
|
const subject = cmdObj.args[0];
|
|
23
23
|
console.log(new InternalToken(subject).generate());
|
|
24
24
|
}
|
|
25
|
-
export
|
|
26
|
-
jwt: { oneLiner, keyExamples, run },
|
|
27
|
-
};
|
|
25
|
+
export const jwt = { oneLiner, keyExamples, run };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/prisma.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAuB7C,iBAAe,GAAG,CAAC,MAAM,EAAE,gBAAgB,iBAK1C;AAED,eAAO,MAAM,MAAM;;;;CAAiC,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { CLICommandParser
|
|
1
|
+
import { CLICommandParser } from "../common";
|
|
2
2
|
import url from "url";
|
|
3
3
|
import path from "path";
|
|
4
4
|
const __file__ = url.fileURLToPath(import.meta.url);
|
|
5
|
-
const
|
|
6
|
-
const execShPath = path.join(
|
|
5
|
+
const __cli__ = path.join(path.dirname(__file__), "../..", "cli");
|
|
6
|
+
const execShPath = path.join(__cli__, "exec.sh");
|
|
7
7
|
const oneLiner = "Runs prisma commands in the db project after injecting the environment variables";
|
|
8
8
|
const keyExamples = `$ devops prisma migrate dev`;
|
|
9
9
|
const usage = `
|
|
@@ -20,6 +20,4 @@ EXAMPLES
|
|
|
20
20
|
async function run(cmdObj) {
|
|
21
21
|
cmdObj.executorFromEnv(`${execShPath} db prisma ${cmdObj.args.join(" ")}`, { checkEnvYaml: false }).spawn();
|
|
22
22
|
}
|
|
23
|
-
export
|
|
24
|
-
prisma: { oneLiner, keyExamples, run },
|
|
25
|
-
};
|
|
23
|
+
export const prisma = { oneLiner, keyExamples, run };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CLICommandParser } from "../common";
|
|
2
|
+
declare function run(cmdObj: CLICommandParser): void;
|
|
3
|
+
export declare const redisBitnami: {
|
|
4
|
+
name: string;
|
|
5
|
+
command: string;
|
|
6
|
+
oneLiner: string;
|
|
7
|
+
keyExamples: string;
|
|
8
|
+
run: typeof run;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=redis-bitnami.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-bitnami.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/redis-bitnami.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAmC,MAAM,WAAW,CAAC;AA2D9E,iBAAS,GAAG,CAAC,MAAM,EAAE,gBAAgB,QAiBpC;AAED,eAAO,MAAM,YAAY;;;;;;CAA0E,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import chalk from "chalk";
|
|
2
|
-
import { establishRedisTunnel, getRedisList, getRedisPassword } from "
|
|
3
|
-
import { CLICommandParser, printUsageAndExit, StrongParams } from "
|
|
4
|
-
const oneLiner = "Utilities to help accessing production and staging redis";
|
|
2
|
+
import { establishRedisTunnel, getRedisList, getRedisPassword } from "../../libs/k8s-redis-bitnami";
|
|
3
|
+
import { CLICommandParser, printUsageAndExit, StrongParams } from "../common";
|
|
4
|
+
const oneLiner = "Utilities to help accessing production and staging redis installation from Bitnami";
|
|
5
5
|
const keyExamples = `
|
|
6
6
|
$ devops redis list
|
|
7
7
|
$ devops redis password redis-staging
|
|
@@ -71,6 +71,4 @@ function run(cmdObj) {
|
|
|
71
71
|
});
|
|
72
72
|
handler(params);
|
|
73
73
|
}
|
|
74
|
-
export
|
|
75
|
-
redis: { oneLiner, keyExamples, run },
|
|
76
|
-
};
|
|
74
|
+
export const redisBitnami = { name: 'redis-bitnami', command: 'redis', oneLiner, keyExamples, run };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { CLICommandParser } from "../common";
|
|
2
|
+
declare function run(cmdObj: CLICommandParser): void;
|
|
3
|
+
export declare const redisHa: {
|
|
4
|
+
name: string;
|
|
5
|
+
command: string;
|
|
6
|
+
oneLiner: string;
|
|
7
|
+
keyExamples: string;
|
|
8
|
+
run: typeof run;
|
|
9
|
+
};
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=redis-ha.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redis-ha.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/redis-ha.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAmC,MAAM,WAAW,CAAC;AAqC9E,iBAAS,GAAG,CAAC,MAAM,EAAE,gBAAgB,QAiBpC;AAED,eAAO,MAAM,OAAO;;;;;;CAAqE,CAAC"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { CLICommandParser, printUsageAndExit, StrongParams } from "../common";
|
|
2
|
+
import { establishRedisTunnel, getRedisList } from "../../libs/k8s-redis-ha";
|
|
3
|
+
const oneLiner = "Utilities to help accessing production and staging redis installation from redis-ha";
|
|
4
|
+
const keyExamples = `
|
|
5
|
+
$ devops redis list
|
|
6
|
+
$ devops redis tunnel redis-staging
|
|
7
|
+
`.trim();
|
|
8
|
+
const usage = `
|
|
9
|
+
${oneLiner}
|
|
10
|
+
|
|
11
|
+
COMMANDS
|
|
12
|
+
list Lists the available redis installations
|
|
13
|
+
tunnel <namespace> [-p <port>] Sets up a tunnel to the remote Redis instance so you can access the DB from your local machine on port 9379 by default
|
|
14
|
+
|
|
15
|
+
NOTES
|
|
16
|
+
This command assumes the namespace and the helm release name are the same.
|
|
17
|
+
The --env flag should not be used with these commands, as the Redis namespaces follow different conventions than the monorepo env.
|
|
18
|
+
|
|
19
|
+
EXAMPLES
|
|
20
|
+
${keyExamples}
|
|
21
|
+
`;
|
|
22
|
+
const handlers = {
|
|
23
|
+
list: () => {
|
|
24
|
+
const res = getRedisList();
|
|
25
|
+
console.log(res);
|
|
26
|
+
},
|
|
27
|
+
tunnel: (opts) => {
|
|
28
|
+
const namespace = opts.required("namespace");
|
|
29
|
+
const port = opts.optional("port") ?? '9379';
|
|
30
|
+
establishRedisTunnel(namespace, port);
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
function run(cmdObj) {
|
|
34
|
+
if (cmdObj.help || cmdObj.args.length < 1)
|
|
35
|
+
printUsageAndExit(usage);
|
|
36
|
+
const parsed = cmdObj.parseOptions({ params: ["-p"] });
|
|
37
|
+
const [command, namespace] = parsed.args;
|
|
38
|
+
const port = parsed.options["-p"];
|
|
39
|
+
// @ts-expect-error left as an exercise for the reader
|
|
40
|
+
const handler = handlers[command];
|
|
41
|
+
if (!handler) {
|
|
42
|
+
console.error(`Unknown command: ${command}`);
|
|
43
|
+
printUsageAndExit(usage);
|
|
44
|
+
}
|
|
45
|
+
const params = new StrongParams(usage, {
|
|
46
|
+
namespace,
|
|
47
|
+
port,
|
|
48
|
+
});
|
|
49
|
+
handler(params);
|
|
50
|
+
}
|
|
51
|
+
export const redisHa = { name: 'redis-ha', command: 'redis', oneLiner, keyExamples, run };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { CLICommandParser } from "../common";
|
|
2
|
+
declare function run(cmdObj: CLICommandParser): void;
|
|
3
|
+
export declare const stackgres: {
|
|
4
|
+
command: string;
|
|
5
|
+
oneLiner: string;
|
|
6
|
+
keyExamples: string;
|
|
7
|
+
run: typeof run;
|
|
8
|
+
};
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=stackgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stackgres.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/stackgres.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,gBAAgB,EAAmC,MAAM,WAAW,CAAC;AAsG9E,iBAAS,GAAG,CAAC,MAAM,EAAE,gBAAgB,QAiBpC;AAED,eAAO,MAAM,SAAS;;;;;CAAgD,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { connectToPatroni, connectToPsql, establishTunnel, getDbAdminPassword, getDbBackups, getDbList, getDbPasswords, } from "
|
|
2
|
-
import { CLICommandParser, printUsageAndExit, StrongParams } from "
|
|
1
|
+
import { connectToPatroni, connectToPsql, establishTunnel, getDbAdminPassword, getDbBackups, getDbList, getDbPasswords, } from "../../libs/k8s-db";
|
|
2
|
+
import { CLICommandParser, printUsageAndExit, StrongParams } from "../common";
|
|
3
3
|
const oneLiner = "Utilities to help day to day operations of production and staging databases";
|
|
4
4
|
const keyExamples = `
|
|
5
5
|
$ devops db list
|
|
@@ -114,6 +114,4 @@ function run(cmdObj) {
|
|
|
114
114
|
});
|
|
115
115
|
handler(params);
|
|
116
116
|
}
|
|
117
|
-
export
|
|
118
|
-
db: { oneLiner, keyExamples, run },
|
|
119
|
-
};
|
|
117
|
+
export const stackgres = { command: 'db', oneLiner, keyExamples, run };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../../../src/cli/extensions/template.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAmC,MAAM,WAAW,CAAC;AA4I9E,iBAAS,GAAG,CAAC,MAAM,EAAE,gBAAgB,QAsBpC;AAED,eAAO,MAAM,QAAQ;;;;CAAiC,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {} from "
|
|
2
|
-
import { CLICommandParser, printUsageAndExit, StrongParams } from "
|
|
3
|
-
import { generateDbMigrateJob, generateDebugDeployment, generateWorkspaceDeployment, ImageContextGenerator } from "
|
|
1
|
+
import {} from "../../libs/k8s-image-config";
|
|
2
|
+
import { CLICommandParser, printUsageAndExit, StrongParams } from "../common";
|
|
3
|
+
import { generateDbMigrateJob, generateDebugDeployment, generateWorkspaceDeployment, ImageContextGenerator } from "../../libs/k8s-generate";
|
|
4
4
|
import chalk from "chalk";
|
|
5
|
-
import { getWorkspace } from "
|
|
6
|
-
import { getWorkspaceImages } from "
|
|
7
|
-
import { getImageData, getImageNames } from "
|
|
5
|
+
import { getWorkspace } from "../../libs/discovery";
|
|
6
|
+
import { getWorkspaceImages } from "../../libs/discovery/images";
|
|
7
|
+
import { getImageData, getImageNames } from "../../libs/config";
|
|
8
8
|
const SUPPORTED_CONTEXT_TYPES = ['deployment', 'db-migrate', 'debug'];
|
|
9
9
|
const oneLiner = "Utilities to help validate manifest templates rendering.";
|
|
10
10
|
const keyExamples = `
|
|
@@ -118,6 +118,4 @@ function run(cmdObj) {
|
|
|
118
118
|
});
|
|
119
119
|
handler(params);
|
|
120
120
|
}
|
|
121
|
-
export
|
|
122
|
-
template: { oneLiner, keyExamples, run },
|
|
123
|
-
};
|
|
121
|
+
export const template = { oneLiner, keyExamples, run };
|
package/dist/devops.js
CHANGED
|
@@ -1,65 +1,73 @@
|
|
|
1
1
|
#!/usr/bin/env bun
|
|
2
2
|
// This file behaves as a façade for various devops scripts
|
|
3
|
+
import { globSync } from "glob";
|
|
3
4
|
import { CLICommandParser, printUsageAndExit } from "./cli/common";
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import registry from "./cli/registry";
|
|
10
|
-
import env from "./cli/env";
|
|
11
|
-
import exec from "./cli/exec";
|
|
12
|
-
import prepBuild from "./cli/prep-build";
|
|
13
|
-
import prisma from "./cli/prisma";
|
|
14
|
-
import run from "./cli/run";
|
|
15
|
-
import runMany from "./cli/run-many";
|
|
16
|
-
import test from "./cli/test";
|
|
17
|
-
import init from "./cli/init";
|
|
18
|
-
import redis from "./cli/redis";
|
|
19
|
-
import internalCurl from "./cli/internal-curl";
|
|
20
|
-
import jwt from "./cli/jwt";
|
|
21
|
-
import namespace from "./cli/namespace";
|
|
22
|
-
import image from "./cli/image";
|
|
23
|
-
import template from "./cli/template";
|
|
24
|
-
import job from "./cli/job";
|
|
25
|
-
import cloudrun from "./cli/cloudrun";
|
|
5
|
+
import * as coreImports from "./cli/core";
|
|
6
|
+
import * as extensionImports from "./cli/extensions";
|
|
7
|
+
import { getConst } from "./libs/config";
|
|
8
|
+
import { existsSync, readdirSync } from "fs";
|
|
9
|
+
import path from "path";
|
|
26
10
|
const [_node, _scriptPath, ...commandArgs] = process.argv;
|
|
27
|
-
|
|
28
|
-
// day-to-day
|
|
29
|
-
init,
|
|
30
|
-
run,
|
|
31
|
-
runMany,
|
|
32
|
-
exec,
|
|
33
|
-
env,
|
|
34
|
-
prisma,
|
|
35
|
-
dml,
|
|
36
|
-
db,
|
|
37
|
-
redis,
|
|
38
|
-
console,
|
|
39
|
-
test,
|
|
40
|
-
//= Infra
|
|
41
|
-
namespace,
|
|
42
|
-
image,
|
|
43
|
-
template,
|
|
44
|
-
job,
|
|
45
|
-
//= Deployment
|
|
46
|
-
prepBuild,
|
|
47
|
-
cloudrun,
|
|
48
|
-
affected,
|
|
49
|
-
constant,
|
|
50
|
-
registry,
|
|
51
|
-
internalCurl,
|
|
52
|
-
jwt,
|
|
53
|
-
];
|
|
54
|
-
const commands = {};
|
|
55
|
-
allImports.forEach((imported) => {
|
|
56
|
-
Object.entries(imported).forEach(([key, object]) => {
|
|
57
|
-
const { oneLiner, keyExamples, run } = object;
|
|
58
|
-
commands[key] = { oneLiner, keyExamples, run, key };
|
|
59
|
-
});
|
|
60
|
-
});
|
|
61
|
-
const keyLength = Math.max(...Object.keys(commands).map((x) => x.length)) + 10;
|
|
11
|
+
// Presentation
|
|
62
12
|
const newLine = "\n ";
|
|
13
|
+
function maxKeyLength(commands) {
|
|
14
|
+
return Math.max(...Object.keys(commands).map((x) => x.length)) + 10;
|
|
15
|
+
}
|
|
16
|
+
// Core commands
|
|
17
|
+
const coreCommands = {};
|
|
18
|
+
Object.entries(coreImports).forEach(([constKey, imported]) => {
|
|
19
|
+
const { oneLiner, keyExamples, run } = imported;
|
|
20
|
+
const key = 'command' in imported ? imported.command : constKey;
|
|
21
|
+
coreCommands[key] = { oneLiner, keyExamples, run, key };
|
|
22
|
+
});
|
|
23
|
+
const coreCommandsKeyLength = maxKeyLength(coreCommands);
|
|
24
|
+
// Extensions
|
|
25
|
+
const extensionCommands = {};
|
|
26
|
+
const activeExtensions = getConst('extensions', { ignoreIfInvalid: true });
|
|
27
|
+
if (activeExtensions?.length) {
|
|
28
|
+
const availableExtensionsLookup = Object.fromEntries(Object.entries(extensionImports).map(([constKey, value]) => {
|
|
29
|
+
const { oneLiner, keyExamples, run } = value;
|
|
30
|
+
const keyInYaml = 'name' in value ? value.name : constKey;
|
|
31
|
+
const key = 'command' in value ? value.command : constKey;
|
|
32
|
+
return [keyInYaml, { oneLiner, keyExamples, run, key }];
|
|
33
|
+
}));
|
|
34
|
+
for (const extension of activeExtensions) {
|
|
35
|
+
const extensionData = availableExtensionsLookup[extension];
|
|
36
|
+
if (!extensionData) {
|
|
37
|
+
console.error(`\nExtension "${extension}" referenced in constants.yaml is not supported\n\n`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
extensionCommands[extensionData.key] = extensionData;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const extensionCommandsKeyLength = maxKeyLength(extensionCommands);
|
|
44
|
+
// Plugins
|
|
45
|
+
const pluginCommands = {};
|
|
46
|
+
if (existsSync('.devops/plugins')) {
|
|
47
|
+
const pluginsDir = path.join(process.cwd(), '.devops/plugins');
|
|
48
|
+
const pluginFiles = globSync(path.join(pluginsDir, '*.ts'));
|
|
49
|
+
for (const pluginFile of pluginFiles) {
|
|
50
|
+
const plugin = await import(pluginFile);
|
|
51
|
+
const keys = Object.keys(plugin);
|
|
52
|
+
if (keys.length !== 1) {
|
|
53
|
+
console.error(`Plugin ${pluginFile} must export exactly one command`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
const constKey = keys[0];
|
|
57
|
+
const { oneLiner, keyExamples, run, command } = plugin[constKey];
|
|
58
|
+
const key = command ?? constKey;
|
|
59
|
+
if (!oneLiner || !keyExamples || !run) {
|
|
60
|
+
console.error(`Plugin ${pluginFile} must export oneLiner, keyExamples, and run`);
|
|
61
|
+
process.exit(1);
|
|
62
|
+
}
|
|
63
|
+
if (typeof run !== 'function') {
|
|
64
|
+
console.error(`Plugin ${pluginFile} must export a run function`);
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
pluginCommands[key] = { oneLiner, keyExamples, run, key };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
const pluginCommandsKeyLength = maxKeyLength(pluginCommands);
|
|
63
71
|
const GENERAL_USAGE = `
|
|
64
72
|
Devops utilities for the monorepo.
|
|
65
73
|
|
|
@@ -83,11 +91,25 @@ CHOOSING ENV with <env-options>
|
|
|
83
91
|
To skip this check, use --skip-env-check.
|
|
84
92
|
|
|
85
93
|
|
|
86
|
-
COMMANDS
|
|
87
|
-
${Object.values(
|
|
88
|
-
.map((cmd) => [cmd.key, " ".repeat(
|
|
94
|
+
CORE COMMANDS
|
|
95
|
+
${Object.values(coreCommands)
|
|
96
|
+
.map((cmd) => [cmd.key, " ".repeat(coreCommandsKeyLength - cmd.key.length), cmd.oneLiner].join(""))
|
|
89
97
|
.join(newLine)}
|
|
90
98
|
`;
|
|
99
|
+
const EXTENSION_USAGE = Object.keys(extensionCommands).length ? `
|
|
100
|
+
ACTIVE EXTENSIONS
|
|
101
|
+
${Object.values(extensionCommands)
|
|
102
|
+
.map((cmd) => [cmd.key, " ".repeat(extensionCommandsKeyLength - cmd.key.length), cmd.oneLiner].join(""))
|
|
103
|
+
.join(newLine)}
|
|
104
|
+
` : '';
|
|
105
|
+
const PLUGIN_USAGE = Object.keys(pluginCommands).length ? `
|
|
106
|
+
ACTIVE PLUGINS
|
|
107
|
+
${Object.values(pluginCommands)
|
|
108
|
+
.map((cmd) => [cmd.key, " ".repeat(pluginCommandsKeyLength - cmd.key.length), cmd.oneLiner].join(""))
|
|
109
|
+
.join(newLine)}
|
|
110
|
+
` : '';
|
|
111
|
+
const ALL_USAGE = [GENERAL_USAGE, EXTENSION_USAGE, PLUGIN_USAGE].filter(Boolean).join("");
|
|
112
|
+
const allCommands = { ...coreCommands, ...extensionCommands, ...pluginCommands };
|
|
91
113
|
// EXAMPLES
|
|
92
114
|
// ${Object.values(commands)
|
|
93
115
|
// .map((cmd) =>
|
|
@@ -99,7 +121,7 @@ COMMANDS
|
|
|
99
121
|
// )
|
|
100
122
|
// .join(newLine)}
|
|
101
123
|
const commandObj = new CLICommandParser(commandArgs);
|
|
102
|
-
const chosenCommand =
|
|
124
|
+
const chosenCommand = allCommands[commandObj.command];
|
|
103
125
|
if (!chosenCommand)
|
|
104
|
-
printUsageAndExit(
|
|
126
|
+
printUsageAndExit(ALL_USAGE);
|
|
105
127
|
chosenCommand.run(commandObj);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"k8s-redis-bitnami.d.ts","sourceRoot":"","sources":["../../src/libs/k8s-redis-bitnami.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,kBAK3B;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM;;SAajD;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAKnE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"k8s-redis-ha.d.ts","sourceRoot":"","sources":["../../src/libs/k8s-redis-ha.ts"],"names":[],"mappings":"AAGA,wBAAgB,YAAY,kBAK3B;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAKnE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { CommandExecutor } from "../cli/common";
|
|
2
|
+
import { kubectlCommand } from "./k8s-helpers";
|
|
3
|
+
export function getRedisList() {
|
|
4
|
+
const cmd = kubectlCommand(`get pods -l app=redis-ha -A`);
|
|
5
|
+
const res = new CommandExecutor(cmd, { quiet: true }).exec();
|
|
6
|
+
if (!res)
|
|
7
|
+
return null;
|
|
8
|
+
return res;
|
|
9
|
+
}
|
|
10
|
+
export function establishRedisTunnel(namespace, port) {
|
|
11
|
+
const cmd = kubectlCommand(`port-forward svc/${namespace}-redis-ha ${port}:6379`, {
|
|
12
|
+
namespace,
|
|
13
|
+
});
|
|
14
|
+
new CommandExecutor(cmd).spawn();
|
|
15
|
+
}
|
|
@@ -33,7 +33,7 @@ function updateSecret(monorepoEnv, vars) {
|
|
|
33
33
|
execUpdateSecret(monorepoEnv, newVars);
|
|
34
34
|
}
|
|
35
35
|
function deleteSecretKeys(monorepoEnv, keys = []) {
|
|
36
|
-
if (!keys
|
|
36
|
+
if (!keys?.length) {
|
|
37
37
|
console.error("Keys to delete must be provided");
|
|
38
38
|
process.exit(1);
|
|
39
39
|
}
|
|
@@ -44,7 +44,7 @@ function deleteSecretKeys(monorepoEnv, keys = []) {
|
|
|
44
44
|
//= Interface (L3)
|
|
45
45
|
export function getMonorepoSecretStr(monorepoEnv, keys = []) {
|
|
46
46
|
const value = getMonorepoSecretObject(monorepoEnv, keys);
|
|
47
|
-
if (
|
|
47
|
+
if (keys.length === 1) {
|
|
48
48
|
return Object.values(value)[0];
|
|
49
49
|
}
|
|
50
50
|
return Object.entries(value)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAMpD,eAAO,MAAM,UAAU,QAAgC,CAAC"}
|
package/dist/plugins.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export { CommandExecutor, CLICommandParser, printUsageAndExit, StrongParams } from "./cli/common";
|
|
2
|
+
export { kubectlCommand } from "./libs/k8s-helpers";
|
|
3
|
+
import url from "url";
|
|
4
|
+
import path from "path";
|
|
5
|
+
const __file__ = url.fileURLToPath(import.meta.url);
|
|
6
|
+
const __cli__ = path.join(path.dirname(__file__), "cli");
|
|
7
|
+
export const execShPath = path.join(__cli__, "exec.sh");
|
package/dist/types/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export declare const constFileSchema: z.ZodObject<{
|
|
|
10
10
|
"cloudrun-artifact-registry-repo-path": z.ZodOptional<z.ZodString>;
|
|
11
11
|
"extra-remote-environments": z.ZodArray<z.ZodString, "many">;
|
|
12
12
|
"extra-local-environments": z.ZodArray<z.ZodString, "many">;
|
|
13
|
+
extensions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
13
14
|
}, "strip", z.ZodTypeAny, {
|
|
14
15
|
"project-name": string;
|
|
15
16
|
infra: "hetzner" | "digitalocean" | "gcloud";
|
|
@@ -19,6 +20,7 @@ export declare const constFileSchema: z.ZodObject<{
|
|
|
19
20
|
"image-versions-to-keep"?: number | undefined;
|
|
20
21
|
"registry-image-path-prefix"?: string | undefined;
|
|
21
22
|
"cloudrun-artifact-registry-repo-path"?: string | undefined;
|
|
23
|
+
extensions?: string[] | undefined;
|
|
22
24
|
}, {
|
|
23
25
|
"project-name": string;
|
|
24
26
|
infra: "hetzner" | "digitalocean" | "gcloud";
|
|
@@ -28,6 +30,7 @@ export declare const constFileSchema: z.ZodObject<{
|
|
|
28
30
|
"image-versions-to-keep"?: number | undefined;
|
|
29
31
|
"registry-image-path-prefix"?: string | undefined;
|
|
30
32
|
"cloudrun-artifact-registry-repo-path"?: string | undefined;
|
|
33
|
+
extensions?: string[] | undefined;
|
|
31
34
|
}>;
|
|
32
35
|
export type ConstFileSchema = z.infer<typeof constFileSchema>;
|
|
33
36
|
declare const singleTemplateSchema: z.ZodObject<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,mBAAmB,6BAA8B,CAAC;AAC/D,MAAM,MAAM,kBAAkB,GAAG,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAC;AAIpE,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types/index.js
CHANGED
|
@@ -10,6 +10,7 @@ export const constFileSchema = z.object({
|
|
|
10
10
|
"cloudrun-artifact-registry-repo-path": z.string().optional(),
|
|
11
11
|
"extra-remote-environments": z.array(z.string()),
|
|
12
12
|
"extra-local-environments": z.array(z.string()),
|
|
13
|
+
"extensions": z.array(z.string()).optional(),
|
|
13
14
|
});
|
|
14
15
|
const singleTemplateSchema = z.object({
|
|
15
16
|
"copy-common": z.boolean().optional(),
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaharoni/devops",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.2.0",
|
|
5
5
|
"description": "Devops utility",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
@@ -12,8 +12,18 @@
|
|
|
12
12
|
"bin": {
|
|
13
13
|
"devops": "dist/devops.js"
|
|
14
14
|
},
|
|
15
|
+
"exports": {
|
|
16
|
+
".": {
|
|
17
|
+
"types": "./dist/index.d.ts",
|
|
18
|
+
"default": "./dist/index.js"
|
|
19
|
+
},
|
|
20
|
+
"./plugins": {
|
|
21
|
+
"types": "./dist/plugins.d.ts",
|
|
22
|
+
"default": "./dist/plugins.js"
|
|
23
|
+
}
|
|
24
|
+
},
|
|
15
25
|
"scripts": {
|
|
16
|
-
"build": "tsc",
|
|
26
|
+
"build": "tsc && cp src/cli/exec.sh dist/cli/exec.sh",
|
|
17
27
|
"test": "vitest run"
|
|
18
28
|
},
|
|
19
29
|
"repository": {
|