@vaharoni/devops 1.1.12 → 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.
Files changed (165) hide show
  1. package/dist/cli/core/affected.d.ts +9 -0
  2. package/dist/cli/core/affected.d.ts.map +1 -0
  3. package/dist/cli/{affected.js → core/affected.js} +4 -6
  4. package/dist/cli/core/cloudrun.d.ts +9 -0
  5. package/dist/cli/core/cloudrun.d.ts.map +1 -0
  6. package/dist/cli/{cloudrun.js → core/cloudrun.js} +3 -5
  7. package/dist/cli/core/console.d.ts +9 -0
  8. package/dist/cli/core/console.d.ts.map +1 -0
  9. package/dist/cli/{console.js → core/console.js} +5 -7
  10. package/dist/cli/core/constant.d.ts +9 -0
  11. package/dist/cli/core/constant.d.ts.map +1 -0
  12. package/dist/cli/{constant.js → core/constant.js} +3 -5
  13. package/dist/cli/core/env.d.ts +9 -0
  14. package/dist/cli/core/env.d.ts.map +1 -0
  15. package/dist/cli/{env.js → core/env.js} +4 -6
  16. package/dist/cli/core/exec.d.ts +9 -0
  17. package/dist/cli/core/exec.d.ts.map +1 -0
  18. package/dist/cli/{exec.js → core/exec.js} +5 -7
  19. package/dist/cli/core/image.d.ts +9 -0
  20. package/dist/cli/core/image.d.ts.map +1 -0
  21. package/dist/cli/{image.js → core/image.js} +6 -8
  22. package/dist/cli/core/index.d.ts +16 -0
  23. package/dist/cli/core/index.d.ts.map +1 -0
  24. package/dist/cli/core/index.js +15 -0
  25. package/dist/cli/core/init.d.ts +9 -0
  26. package/dist/cli/core/init.d.ts.map +1 -0
  27. package/dist/cli/{init.js → core/init.js} +3 -5
  28. package/dist/cli/core/job.d.ts +9 -0
  29. package/dist/cli/core/job.d.ts.map +1 -0
  30. package/dist/cli/{job.js → core/job.js} +7 -9
  31. package/dist/cli/core/namespace.d.ts +9 -0
  32. package/dist/cli/core/namespace.d.ts.map +1 -0
  33. package/dist/cli/{namespace.js → core/namespace.js} +4 -7
  34. package/dist/cli/core/prep-build.d.ts +10 -0
  35. package/dist/cli/core/prep-build.d.ts.map +1 -0
  36. package/dist/cli/{prep-build.js → core/prep-build.js} +6 -8
  37. package/dist/cli/core/registry.d.ts +9 -0
  38. package/dist/cli/core/registry.d.ts.map +1 -0
  39. package/dist/cli/{registry.js → core/registry.js} +5 -7
  40. package/dist/cli/core/run-many.d.ts +10 -0
  41. package/dist/cli/core/run-many.d.ts.map +1 -0
  42. package/dist/cli/{run-many.js → core/run-many.js} +3 -5
  43. package/dist/cli/core/run.d.ts +9 -0
  44. package/dist/cli/core/run.d.ts.map +1 -0
  45. package/dist/cli/{run.js → core/run.js} +6 -8
  46. package/dist/cli/core/test.d.ts +9 -0
  47. package/dist/cli/core/test.d.ts.map +1 -0
  48. package/dist/cli/{test.js → core/test.js} +2 -4
  49. package/dist/cli/exec.sh +21 -0
  50. package/dist/cli/extensions/dml.d.ts +9 -0
  51. package/dist/cli/extensions/dml.d.ts.map +1 -0
  52. package/dist/cli/{dml.js → extensions/dml.js} +2 -4
  53. package/dist/cli/extensions/index.d.ts +9 -0
  54. package/dist/cli/extensions/index.d.ts.map +1 -0
  55. package/dist/cli/extensions/index.js +8 -0
  56. package/dist/cli/extensions/internal-curl.d.ts +10 -0
  57. package/dist/cli/extensions/internal-curl.d.ts.map +1 -0
  58. package/dist/cli/{internal-curl.js → extensions/internal-curl.js} +3 -5
  59. package/dist/cli/extensions/jwt.d.ts +9 -0
  60. package/dist/cli/extensions/jwt.d.ts.map +1 -0
  61. package/dist/cli/{jwt.js → extensions/jwt.js} +3 -5
  62. package/dist/cli/extensions/prisma.d.ts +9 -0
  63. package/dist/cli/extensions/prisma.d.ts.map +1 -0
  64. package/dist/cli/{prisma.js → extensions/prisma.js} +4 -6
  65. package/dist/cli/extensions/redis-bitnami.d.ts +11 -0
  66. package/dist/cli/extensions/redis-bitnami.d.ts.map +1 -0
  67. package/dist/cli/{redis.js → extensions/redis-bitnami.js} +4 -6
  68. package/dist/cli/extensions/redis-ha.d.ts +11 -0
  69. package/dist/cli/extensions/redis-ha.d.ts.map +1 -0
  70. package/dist/cli/extensions/redis-ha.js +51 -0
  71. package/dist/cli/extensions/stackgres.d.ts +10 -0
  72. package/dist/cli/extensions/stackgres.d.ts.map +1 -0
  73. package/dist/cli/{db.js → extensions/stackgres.js} +3 -5
  74. package/dist/cli/extensions/template.d.ts +9 -0
  75. package/dist/cli/extensions/template.d.ts.map +1 -0
  76. package/dist/cli/{template.js → extensions/template.js} +7 -9
  77. package/dist/devops.js +84 -62
  78. package/dist/libs/{k8s-redis.d.ts → k8s-redis-bitnami.d.ts} +1 -1
  79. package/dist/libs/k8s-redis-bitnami.d.ts.map +1 -0
  80. package/dist/libs/k8s-redis-ha.d.ts +3 -0
  81. package/dist/libs/k8s-redis-ha.d.ts.map +1 -0
  82. package/dist/libs/k8s-redis-ha.js +15 -0
  83. package/dist/plugins.d.ts +4 -0
  84. package/dist/plugins.d.ts.map +1 -0
  85. package/dist/plugins.js +7 -0
  86. package/dist/types/index.d.ts +3 -0
  87. package/dist/types/index.d.ts.map +1 -1
  88. package/dist/types/index.js +1 -0
  89. package/package.json +12 -2
  90. package/src/cli/{affected.ts → core/affected.ts} +4 -6
  91. package/src/cli/{cloudrun.ts → core/cloudrun.ts} +3 -5
  92. package/src/cli/{console.ts → core/console.ts} +5 -7
  93. package/src/cli/{constant.ts → core/constant.ts} +3 -5
  94. package/src/cli/{env.ts → core/env.ts} +4 -6
  95. package/src/cli/{exec.ts → core/exec.ts} +5 -7
  96. package/src/cli/{image.ts → core/image.ts} +6 -8
  97. package/src/cli/core/index.ts +15 -0
  98. package/src/cli/{init.ts → core/init.ts} +4 -6
  99. package/src/cli/{job.ts → core/job.ts} +7 -9
  100. package/src/cli/{namespace.ts → core/namespace.ts} +4 -8
  101. package/src/cli/{prep-build.ts → core/prep-build.ts} +6 -8
  102. package/src/cli/{registry.ts → core/registry.ts} +5 -7
  103. package/src/cli/{run-many.ts → core/run-many.ts} +3 -5
  104. package/src/cli/{run.ts → core/run.ts} +6 -8
  105. package/src/cli/{test.ts → core/test.ts} +2 -4
  106. package/src/cli/{dml.ts → extensions/dml.ts} +2 -4
  107. package/src/cli/extensions/index.ts +8 -0
  108. package/src/cli/{internal-curl.ts → extensions/internal-curl.ts} +3 -5
  109. package/src/cli/{jwt.ts → extensions/jwt.ts} +3 -5
  110. package/src/cli/{prisma.ts → extensions/prisma.ts} +4 -6
  111. package/src/cli/{redis.ts → extensions/redis-bitnami.ts} +4 -6
  112. package/src/cli/extensions/redis-ha.ts +57 -0
  113. package/src/cli/{db.ts → extensions/stackgres.ts} +3 -5
  114. package/src/cli/{template.ts → extensions/template.ts} +7 -9
  115. package/src/devops.ts +100 -64
  116. package/src/libs/k8s-redis-ha.ts +16 -0
  117. package/src/plugins.ts +8 -0
  118. package/src/types/index.ts +1 -0
  119. package/dist/cli/affected.d.ts +0 -11
  120. package/dist/cli/affected.d.ts.map +0 -1
  121. package/dist/cli/cloudrun.d.ts +0 -11
  122. package/dist/cli/cloudrun.d.ts.map +0 -1
  123. package/dist/cli/console.d.ts +0 -11
  124. package/dist/cli/console.d.ts.map +0 -1
  125. package/dist/cli/constant.d.ts +0 -11
  126. package/dist/cli/constant.d.ts.map +0 -1
  127. package/dist/cli/db.d.ts +0 -11
  128. package/dist/cli/db.d.ts.map +0 -1
  129. package/dist/cli/dml.d.ts +0 -11
  130. package/dist/cli/dml.d.ts.map +0 -1
  131. package/dist/cli/env.d.ts +0 -11
  132. package/dist/cli/env.d.ts.map +0 -1
  133. package/dist/cli/exec.d.ts +0 -11
  134. package/dist/cli/exec.d.ts.map +0 -1
  135. package/dist/cli/image.d.ts +0 -11
  136. package/dist/cli/image.d.ts.map +0 -1
  137. package/dist/cli/init.d.ts +0 -11
  138. package/dist/cli/init.d.ts.map +0 -1
  139. package/dist/cli/internal-curl.d.ts +0 -11
  140. package/dist/cli/internal-curl.d.ts.map +0 -1
  141. package/dist/cli/job.d.ts +0 -11
  142. package/dist/cli/job.d.ts.map +0 -1
  143. package/dist/cli/jwt.d.ts +0 -11
  144. package/dist/cli/jwt.d.ts.map +0 -1
  145. package/dist/cli/namespace.d.ts +0 -11
  146. package/dist/cli/namespace.d.ts.map +0 -1
  147. package/dist/cli/prep-build.d.ts +0 -11
  148. package/dist/cli/prep-build.d.ts.map +0 -1
  149. package/dist/cli/prisma.d.ts +0 -11
  150. package/dist/cli/prisma.d.ts.map +0 -1
  151. package/dist/cli/redis.d.ts +0 -11
  152. package/dist/cli/redis.d.ts.map +0 -1
  153. package/dist/cli/registry.d.ts +0 -11
  154. package/dist/cli/registry.d.ts.map +0 -1
  155. package/dist/cli/run-many.d.ts +0 -11
  156. package/dist/cli/run-many.d.ts.map +0 -1
  157. package/dist/cli/run.d.ts +0 -11
  158. package/dist/cli/run.d.ts.map +0 -1
  159. package/dist/cli/template.d.ts +0 -11
  160. package/dist/cli/template.d.ts.map +0 -1
  161. package/dist/cli/test.d.ts +0 -11
  162. package/dist/cli/test.d.ts.map +0 -1
  163. package/dist/libs/k8s-redis.d.ts.map +0 -1
  164. /package/dist/libs/{k8s-redis.js → k8s-redis-bitnami.js} +0 -0
  165. /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,8 @@
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";
@@ -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 "../app-support/crypto";
2
- import { CLICommandParser, printUsageAndExit } from "./common";
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 default {
42
- 'internal-curl': { oneLiner, keyExamples, run },
43
- };
41
+ export const internalCurl = { command: 'internal-curl', oneLiner, keyExamples, run };
@@ -0,0 +1,9 @@
1
+ import { CLICommandParser } from "../common";
2
+ declare function run(cmdObj: CLICommandParser): Promise<void>;
3
+ export declare const jwt: {
4
+ oneLiner: string;
5
+ keyExamples: string;
6
+ run: typeof run;
7
+ };
8
+ export {};
9
+ //# sourceMappingURL=jwt.d.ts.map
@@ -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 "../app-support/crypto";
2
- import { CLICommandParser, printUsageAndExit } from "./common";
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 default {
26
- jwt: { oneLiner, keyExamples, run },
27
- };
25
+ export const jwt = { oneLiner, keyExamples, run };
@@ -0,0 +1,9 @@
1
+ import { CLICommandParser } from "../common";
2
+ declare function run(cmdObj: CLICommandParser): Promise<void>;
3
+ export declare const prisma: {
4
+ oneLiner: string;
5
+ keyExamples: string;
6
+ run: typeof run;
7
+ };
8
+ export {};
9
+ //# sourceMappingURL=prisma.d.ts.map
@@ -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, printUsageAndExit } from "./common";
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 __src__ = path.join(path.dirname(__file__), "../..", "src");
6
- const execShPath = path.join(__src__, "cli/exec.sh");
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 default {
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 "../libs/k8s-redis";
3
- import { CLICommandParser, printUsageAndExit, StrongParams } from "./common";
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 default {
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 "../libs/k8s-db";
2
- import { CLICommandParser, printUsageAndExit, StrongParams } from "./common";
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 default {
118
- db: { oneLiner, keyExamples, run },
119
- };
117
+ export const stackgres = { command: 'db', oneLiner, keyExamples, run };
@@ -0,0 +1,9 @@
1
+ import { CLICommandParser } from "../common";
2
+ declare function run(cmdObj: CLICommandParser): void;
3
+ export declare const template: {
4
+ oneLiner: string;
5
+ keyExamples: string;
6
+ run: typeof run;
7
+ };
8
+ export {};
9
+ //# sourceMappingURL=template.d.ts.map
@@ -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 "../libs/k8s-image-config";
2
- import { CLICommandParser, printUsageAndExit, StrongParams } from "../../src/cli/common";
3
- import { generateDbMigrateJob, generateDebugDeployment, generateWorkspaceDeployment, ImageContextGenerator } from "../libs/k8s-generate";
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 "../libs/discovery";
6
- import { getWorkspaceImages } from "../libs/discovery/images";
7
- import { getImageData, getImageNames } from "../libs/config";
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 default {
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 affected from "./cli/affected";
5
- import constant from "./cli/constant";
6
- import console from "./cli/console";
7
- import db from "./cli/db";
8
- import dml from "./cli/dml";
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
- const allImports = [
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(commands)
88
- .map((cmd) => [cmd.key, " ".repeat(keyLength - cmd.key.length), cmd.oneLiner].join(""))
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 = commands[commandObj.command];
124
+ const chosenCommand = allCommands[commandObj.command];
103
125
  if (!chosenCommand)
104
- printUsageAndExit(GENERAL_USAGE);
126
+ printUsageAndExit(ALL_USAGE);
105
127
  chosenCommand.run(commandObj);
@@ -3,4 +3,4 @@ export declare function getRedisPassword(namespace: string): {
3
3
  password: string;
4
4
  } | null;
5
5
  export declare function establishRedisTunnel(namespace: string, port: string): void;
6
- //# sourceMappingURL=k8s-redis.d.ts.map
6
+ //# sourceMappingURL=k8s-redis-bitnami.d.ts.map
@@ -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,3 @@
1
+ export declare function getRedisList(): string | null;
2
+ export declare function establishRedisTunnel(namespace: string, port: string): void;
3
+ //# sourceMappingURL=k8s-redis-ha.d.ts.map
@@ -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
+ }
@@ -0,0 +1,4 @@
1
+ export { CommandExecutor, CLICommandParser, printUsageAndExit, StrongParams } from "./cli/common";
2
+ export { kubectlCommand } from "./libs/k8s-helpers";
3
+ export declare const execShPath: string;
4
+ //# sourceMappingURL=plugins.d.ts.map
@@ -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"}
@@ -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");
@@ -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":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -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.1.12",
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": {
@@ -3,9 +3,9 @@ import {
3
3
  findImagesWithAffectedWorkspace,
4
4
  isImageAffected,
5
5
  isWorkspaceAffected,
6
- } from "../libs/affected-entities";
7
- import { getImageData } from "../libs/config";
8
- import { CLICommandParser, printUsageAndExit, StrongParams } from "./common";
6
+ } from "../../libs/affected-entities";
7
+ import { getImageData } from "../../libs/config";
8
+ import { CLICommandParser, printUsageAndExit, StrongParams } from "../common";
9
9
 
10
10
  const oneLiner =
11
11
  "Command to check whether an image or a workspace is affected by certain commit(s)";
@@ -111,6 +111,4 @@ async function run(cmdObj: CLICommandParser) {
111
111
  }
112
112
  }
113
113
 
114
- export default {
115
- affected: { oneLiner, keyExamples, run },
116
- };
114
+ export const affected = { oneLiner, keyExamples, run };