envhub-cli 0.3.1 → 0.4.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.
Files changed (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +103 -31
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +19 -6
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/cat.d.ts +5 -1
  7. package/dist/commands/cat.d.ts.map +1 -1
  8. package/dist/commands/cat.js +27 -6
  9. package/dist/commands/cat.js.map +1 -1
  10. package/dist/commands/delete.d.ts.map +1 -1
  11. package/dist/commands/delete.js +5 -2
  12. package/dist/commands/delete.js.map +1 -1
  13. package/dist/commands/doctor.d.ts +39 -0
  14. package/dist/commands/doctor.d.ts.map +1 -0
  15. package/dist/commands/doctor.js +946 -0
  16. package/dist/commands/doctor.js.map +1 -0
  17. package/dist/commands/init.d.ts.map +1 -1
  18. package/dist/commands/init.js +89 -16
  19. package/dist/commands/init.js.map +1 -1
  20. package/dist/commands/list.d.ts +5 -1
  21. package/dist/commands/list.d.ts.map +1 -1
  22. package/dist/commands/list.js +13 -3
  23. package/dist/commands/list.js.map +1 -1
  24. package/dist/commands/pull.d.ts +6 -1
  25. package/dist/commands/pull.d.ts.map +1 -1
  26. package/dist/commands/pull.js +75 -12
  27. package/dist/commands/pull.js.map +1 -1
  28. package/dist/commands/push.d.ts.map +1 -1
  29. package/dist/commands/push.js +112 -33
  30. package/dist/commands/push.js.map +1 -1
  31. package/dist/config/config.d.ts.map +1 -1
  32. package/dist/config/config.js +7 -2
  33. package/dist/config/config.js.map +1 -1
  34. package/dist/config/config.schema.d.ts.map +1 -1
  35. package/dist/config/config.schema.js +6 -0
  36. package/dist/config/config.schema.js.map +1 -1
  37. package/dist/utils/diff.d.ts +9 -1
  38. package/dist/utils/diff.d.ts.map +1 -1
  39. package/dist/utils/diff.js +22 -8
  40. package/dist/utils/diff.js.map +1 -1
  41. package/dist/utils/env-parser.d.ts +9 -1
  42. package/dist/utils/env-parser.d.ts.map +1 -1
  43. package/dist/utils/env-parser.js +35 -4
  44. package/dist/utils/env-parser.js.map +1 -1
  45. package/dist/utils/envhub-header.d.ts +4 -0
  46. package/dist/utils/envhub-header.d.ts.map +1 -1
  47. package/dist/utils/envhub-header.js +18 -0
  48. package/dist/utils/envhub-header.js.map +1 -1
  49. package/dist/utils/logger.d.ts +44 -39
  50. package/dist/utils/logger.d.ts.map +1 -1
  51. package/dist/utils/logger.js +172 -46
  52. package/dist/utils/logger.js.map +1 -1
  53. package/dist/utils/pull-dry-run-ui.d.ts +11 -0
  54. package/dist/utils/pull-dry-run-ui.d.ts.map +1 -0
  55. package/dist/utils/pull-dry-run-ui.js +157 -0
  56. package/dist/utils/pull-dry-run-ui.js.map +1 -0
  57. package/dist/utils/push-preview-ui.d.ts +10 -0
  58. package/dist/utils/push-preview-ui.d.ts.map +1 -0
  59. package/dist/utils/push-preview-ui.js +134 -0
  60. package/dist/utils/push-preview-ui.js.map +1 -0
  61. package/package.json +4 -4
@@ -0,0 +1,134 @@
1
+ import { log, note } from "@clack/prompts";
2
+ import chalk from "chalk";
3
+ import { logger } from "./logger.js";
4
+ function truncateCell(value, maxLength) {
5
+ if (value.length <= maxLength) {
6
+ return value;
7
+ }
8
+ return value.slice(0, maxLength - 3) + "...";
9
+ }
10
+ function groupChanges(changes) {
11
+ return {
12
+ added: changes.filter((change) => change.type === "added"),
13
+ changed: changes.filter((change) => change.type === "changed"),
14
+ removed: changes.filter((change) => change.type === "removed"),
15
+ };
16
+ }
17
+ function summarize(changes) {
18
+ const grouped = groupChanges(changes);
19
+ return {
20
+ added: grouped.added.length,
21
+ changed: grouped.changed.length,
22
+ removed: grouped.removed.length,
23
+ };
24
+ }
25
+ function renderClack(context) {
26
+ const { environment, filePath, changes } = context;
27
+ const heading = "Changes to push";
28
+ log.step(heading, { spacing: 0 });
29
+ log.message(`Environment: ${chalk.bold(environment)}\nFile: ${chalk.bold(filePath)}`, {
30
+ spacing: 0,
31
+ });
32
+ log.message("", { spacing: 0 });
33
+ const grouped = groupChanges(changes);
34
+ const groupMeta = {
35
+ added: {
36
+ label: "ADDED",
37
+ symbol: "+",
38
+ headingColor: chalk.greenBright,
39
+ keyColor: chalk.greenBright,
40
+ valueColor: chalk.greenBright,
41
+ },
42
+ changed: {
43
+ label: "CHANGED",
44
+ symbol: "~",
45
+ headingColor: chalk.yellowBright,
46
+ keyColor: chalk.yellowBright,
47
+ valueColor: chalk.yellowBright,
48
+ },
49
+ removed: {
50
+ label: "REMOVED",
51
+ symbol: "-",
52
+ headingColor: chalk.redBright,
53
+ keyColor: chalk.redBright,
54
+ valueColor: chalk.redBright,
55
+ },
56
+ };
57
+ ["added", "changed", "removed"].forEach((type) => {
58
+ const group = grouped[type];
59
+ if (group.length === 0) {
60
+ return;
61
+ }
62
+ const meta = groupMeta[type];
63
+ const lines = [];
64
+ group.forEach((change) => {
65
+ const localValue = truncateCell(change.newValue ?? "-", 84);
66
+ const remoteValue = truncateCell(change.oldValue ?? "-", 84);
67
+ lines.push(` ${meta.symbol} ${meta.keyColor(change.key)}`);
68
+ if (change.type === "added") {
69
+ lines.push(` local : ${meta.valueColor(localValue)}`);
70
+ }
71
+ else if (change.type === "removed") {
72
+ lines.push(` remote: ${meta.valueColor(remoteValue)}`);
73
+ }
74
+ else {
75
+ lines.push(` local : ${meta.valueColor(localValue)}`);
76
+ lines.push(` remote: ${meta.valueColor(remoteValue)}`);
77
+ }
78
+ });
79
+ note(lines.join("\n"), meta.headingColor(`${meta.label} (${group.length})`), {
80
+ format: (text) => text,
81
+ });
82
+ });
83
+ const summary = summarize(changes);
84
+ log.message(`${chalk.green(`${summary.added} added`)}, ${chalk.yellow(`${summary.changed} changed`)}, ${chalk.red(`${summary.removed} removed`)}`);
85
+ }
86
+ function renderPlaintext(context) {
87
+ const { environment, filePath, changes } = context;
88
+ const heading = "Changes to push";
89
+ logger.log(` ${heading}`);
90
+ logger.log(` Environment: ${environment}`);
91
+ logger.log(` File: ${filePath}`);
92
+ logger.newline();
93
+ logger.newline();
94
+ const grouped = groupChanges(changes);
95
+ const labels = {
96
+ added: "ADDED",
97
+ changed: "CHANGED",
98
+ removed: "REMOVED",
99
+ };
100
+ ["added", "changed", "removed"].forEach((type) => {
101
+ const group = grouped[type];
102
+ if (group.length === 0) {
103
+ return;
104
+ }
105
+ logger.log(` ${labels[type]} (${group.length})`);
106
+ group.forEach((change) => {
107
+ const localValue = truncateCell(change.newValue ?? "-", 84);
108
+ const remoteValue = truncateCell(change.oldValue ?? "-", 84);
109
+ logger.log(` ${change.key}`);
110
+ if (change.type === "added") {
111
+ logger.log(` local : ${localValue}`);
112
+ }
113
+ else if (change.type === "removed") {
114
+ logger.log(` remote: ${remoteValue}`);
115
+ }
116
+ else {
117
+ logger.log(` local : ${localValue}`);
118
+ logger.log(` remote: ${remoteValue}`);
119
+ }
120
+ });
121
+ logger.newline();
122
+ });
123
+ const summary = summarize(changes);
124
+ logger.log(` ${summary.added} added, ${summary.changed} changed, ${summary.removed} removed`);
125
+ }
126
+ export function renderPushPreview(context) {
127
+ const useClack = Boolean(process.stdout.isTTY && process.stderr.isTTY);
128
+ if (useClack) {
129
+ renderClack(context);
130
+ return;
131
+ }
132
+ renderPlaintext(context);
133
+ }
134
+ //# sourceMappingURL=push-preview-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-preview-ui.js","sourceRoot":"","sources":["../../src/utils/push-preview-ui.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "envhub-cli",
3
- "version": "0.3.1",
3
+ "version": "0.4.1",
4
4
  "description": "Securely share .env files between developers using cloud providers",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -54,15 +54,15 @@
54
54
  "dependencies": {
55
55
  "@aws-sdk/client-iam": "^3.0.0",
56
56
  "@aws-sdk/client-secrets-manager": "^3.0.0",
57
+ "@aws-sdk/client-sts": "^3.1023.0",
57
58
  "@aws-sdk/credential-providers": "^3.0.0",
58
59
  "@azure/identity": "^4.11.1",
59
60
  "@azure/keyvault-secrets": "^4.10.0",
61
+ "@clack/prompts": "^1.2.0",
60
62
  "@google-cloud/secret-manager": "^6.1.1",
61
- "@inquirer/prompts": "^7.0.0",
62
63
  "chalk": "^5.4.1",
63
64
  "commander": "^13.0.0",
64
- "cosmiconfig": "^9.0.0",
65
- "ora": "^8.2.0"
65
+ "cosmiconfig": "^9.0.0"
66
66
  },
67
67
  "devDependencies": {
68
68
  "@types/node": "^22.0.0",