envhub-cli 0.3.1 → 0.4.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 (61) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +96 -34
  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 +111 -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
@@ -1,57 +1,62 @@
1
- import { type Ora } from "ora";
1
+ interface TableRenderOptions {
2
+ indent?: string;
3
+ maxSeparatorWidth?: number;
4
+ }
5
+ interface SpinnerLike {
6
+ start(text?: string): SpinnerLike;
7
+ succeed(text?: string): SpinnerLike;
8
+ fail(text?: string): SpinnerLike;
9
+ stop(text?: string): SpinnerLike;
10
+ clear?(): SpinnerLike;
11
+ }
12
+ interface PromptConfirmOptions {
13
+ message: string;
14
+ default?: boolean;
15
+ cancelMessage?: string;
16
+ }
17
+ interface PromptInputOptions {
18
+ message: string;
19
+ default?: string;
20
+ validate?: (value: string) => true | string;
21
+ cancelMessage?: string;
22
+ }
23
+ interface PromptSelectChoice<T> {
24
+ value: T;
25
+ name?: string;
26
+ label?: string;
27
+ hint?: string;
28
+ disabled?: boolean;
29
+ }
30
+ interface PromptSelectOptions<T> {
31
+ message: string;
32
+ choices: PromptSelectChoice<T>[];
33
+ default?: T;
34
+ cancelMessage?: string;
35
+ }
2
36
  /**
3
37
  * Centralized logger for consistent CLI output formatting.
4
38
  */
5
39
  export declare const logger: {
6
- /**
7
- * Print a success message with a green checkmark.
8
- */
9
40
  success(message: string): void;
10
- /**
11
- * Print an error message with a red cross.
12
- */
13
41
  error(message: string): void;
14
- /**
15
- * Print a warning message with a yellow exclamation mark.
16
- */
17
42
  warn(message: string): void;
18
- /**
19
- * Print an informational message.
20
- */
21
43
  info(message: string): void;
22
- /**
23
- * Print a plain message without any prefix.
24
- */
25
44
  log(message: string): void;
26
- /**
27
- * Print a dimmed/subtle message.
28
- */
29
45
  dim(message: string): void;
30
- /**
31
- * Print a key-value pair with formatting.
32
- */
33
46
  keyValue(key: string, value: string): void;
34
- /**
35
- * Print a blank line.
36
- */
37
47
  newline(): void;
38
- /**
39
- * Create and start a spinner for async operations.
40
- */
41
- spinner(text: string): Ora;
42
- /**
43
- * Print a table header.
44
- */
45
- tableHeader(...columns: {
48
+ spinner(text: string): SpinnerLike;
49
+ promptConfirm(options: PromptConfirmOptions): Promise<boolean | "cancelled">;
50
+ promptInput(options: PromptInputOptions): Promise<string | "cancelled">;
51
+ promptSelect<T extends string | number | boolean>(options: PromptSelectOptions<T>): Promise<T | "cancelled">;
52
+ tableHeader(...args: Array<{
46
53
  label: string;
47
54
  width: number;
48
- }[]): void;
49
- /**
50
- * Print a table row.
51
- */
52
- tableRow(...cells: {
55
+ } | TableRenderOptions>): void;
56
+ tableRow(...args: Array<{
53
57
  value: string;
54
58
  width: number;
55
- }[]): void;
59
+ } | TableRenderOptions>): void;
56
60
  };
61
+ export type { SpinnerLike, PromptSelectChoice };
57
62
  //# sourceMappingURL=logger.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AACA,OAAY,EAAE,KAAK,GAAG,EAAE,MAAM,KAAK,CAAC;AAEpC;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB;;OAEG;qBACc,MAAM,GAAG,IAAI;IAI9B;;OAEG;mBACY,MAAM,GAAG,IAAI;IAI5B;;OAEG;kBACW,MAAM,GAAG,IAAI;IAI3B;;OAEG;kBACW,MAAM,GAAG,IAAI;IAI3B;;OAEG;iBACU,MAAM,GAAG,IAAI;IAI1B;;OAEG;iBACU,MAAM,GAAG,IAAI;IAI1B;;OAEG;kBACW,MAAM,SAAS,MAAM,GAAG,IAAI;IAI1C;;OAEG;eACQ,IAAI;IAIf;;OAEG;kBACW,MAAM,GAAG,GAAG;IAO1B;;OAEG;4BACqB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;IAQjE;;OAEG;uBACgB;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,GAAG,IAAI;CAI7D,CAAC"}
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAWA,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,WAAW;IACnB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IAClC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACpC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;IACjC,KAAK,CAAC,IAAI,WAAW,CAAC;CACvB;AAED,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,kBAAkB;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,CAAC;IAC5C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,UAAU,kBAAkB,CAAC,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC;IACT,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,UAAU,mBAAmB,CAAC,CAAC;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjC,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AA+FD;;GAEG;AACH,eAAO,MAAM,MAAM;qBACA,MAAM,GAAG,IAAI;mBAQf,MAAM,GAAG,IAAI;kBAQd,MAAM,GAAG,IAAI;kBAQb,MAAM,GAAG,IAAI;iBAQd,MAAM,GAAG,IAAI;iBAIb,MAAM,GAAG,IAAI;kBAIZ,MAAM,SAAS,MAAM,GAAG,IAAI;eAI/B,IAAI;kBAQD,MAAM,GAAG,WAAW;2BAIL,oBAAoB,GAAG,OAAO,CAAC,OAAO,GAAG,WAAW,CAAC;yBAiBvD,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;iBAqB1D,CAAC,SAAS,MAAM,GAAG,MAAM,GAAG,OAAO,WAC3C,mBAAmB,CAAC,CAAC,CAAC,GAC9B,OAAO,CAAC,CAAC,GAAG,WAAW,CAAC;yBAwBhB,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,CAAC,GACpE,IAAI;sBAuBI,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,kBAAkB,CAAC,GACpE,IAAI;CAYR,CAAC;AAEF,YAAY,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,82 +1,208 @@
1
1
  import chalk from "chalk";
2
- import ora from "ora";
2
+ import { confirm as clackConfirm, text as clackText, select as clackSelect, spinner as clackSpinner, log as clackLog, isCancel, } from "@clack/prompts";
3
+ function isTableRenderOptions(value) {
4
+ if (!value || typeof value !== "object")
5
+ return false;
6
+ return "indent" in value || "maxSeparatorWidth" in value;
7
+ }
8
+ function shouldUseClack() {
9
+ return Boolean(process.stdout.isTTY && process.stderr.isTTY);
10
+ }
11
+ function shouldUseInteractivePrompts() {
12
+ return Boolean(process.stdin.isTTY && process.stdout.isTTY && process.stderr.isTTY);
13
+ }
14
+ function printLine(message) {
15
+ if (shouldUseClack()) {
16
+ clackLog.message(message, { spacing: 0 });
17
+ return;
18
+ }
19
+ console.log(message);
20
+ }
21
+ function mapValidationResult(value) {
22
+ return value === true ? undefined : value;
23
+ }
24
+ function createPlainSpinner(text) {
25
+ let currentText = text;
26
+ let started = false;
27
+ const wrapped = {
28
+ start(nextText) {
29
+ if (nextText) {
30
+ currentText = nextText;
31
+ }
32
+ if (!started) {
33
+ console.log(`- ${currentText}`);
34
+ started = true;
35
+ }
36
+ return wrapped;
37
+ },
38
+ succeed(nextText) {
39
+ console.log(`${chalk.green("✔")} ${nextText ?? currentText}`);
40
+ return wrapped;
41
+ },
42
+ fail(nextText) {
43
+ console.log(`${chalk.red("✖")} ${nextText ?? currentText}`);
44
+ return wrapped;
45
+ },
46
+ stop(nextText) {
47
+ if (nextText) {
48
+ console.log(nextText);
49
+ }
50
+ return wrapped;
51
+ },
52
+ clear() {
53
+ return wrapped;
54
+ },
55
+ };
56
+ wrapped.start(text);
57
+ return wrapped;
58
+ }
59
+ function createClackSpinner(text) {
60
+ const spinnerInstance = clackSpinner();
61
+ spinnerInstance.start(text);
62
+ const wrapped = {
63
+ start(nextText) {
64
+ spinnerInstance.start(nextText ?? text);
65
+ return wrapped;
66
+ },
67
+ succeed(nextText) {
68
+ spinnerInstance.stop(nextText ?? text);
69
+ return wrapped;
70
+ },
71
+ fail(nextText) {
72
+ spinnerInstance.error(nextText ?? text);
73
+ return wrapped;
74
+ },
75
+ stop(nextText) {
76
+ spinnerInstance.stop(nextText);
77
+ return wrapped;
78
+ },
79
+ clear() {
80
+ spinnerInstance.clear();
81
+ return wrapped;
82
+ },
83
+ };
84
+ return wrapped;
85
+ }
3
86
  /**
4
87
  * Centralized logger for consistent CLI output formatting.
5
88
  */
6
89
  export const logger = {
7
- /**
8
- * Print a success message with a green checkmark.
9
- */
10
90
  success(message) {
91
+ if (shouldUseClack()) {
92
+ clackLog.success(message, { spacing: 0 });
93
+ return;
94
+ }
11
95
  console.log(chalk.green("✔") + " " + message);
12
96
  },
13
- /**
14
- * Print an error message with a red cross.
15
- */
16
97
  error(message) {
98
+ if (shouldUseClack()) {
99
+ clackLog.error(message, { spacing: 0 });
100
+ return;
101
+ }
17
102
  console.error(chalk.red("✖") + " " + chalk.red(message));
18
103
  },
19
- /**
20
- * Print a warning message with a yellow exclamation mark.
21
- */
22
104
  warn(message) {
105
+ if (shouldUseClack()) {
106
+ clackLog.warn(message, { spacing: 0 });
107
+ return;
108
+ }
23
109
  console.warn(chalk.yellow("⚠") + " " + chalk.yellow(message));
24
110
  },
25
- /**
26
- * Print an informational message.
27
- */
28
111
  info(message) {
112
+ if (shouldUseClack()) {
113
+ clackLog.info(message, { spacing: 0 });
114
+ return;
115
+ }
29
116
  console.log(chalk.blue("ℹ") + " " + message);
30
117
  },
31
- /**
32
- * Print a plain message without any prefix.
33
- */
34
118
  log(message) {
35
- console.log(message);
119
+ printLine(message);
36
120
  },
37
- /**
38
- * Print a dimmed/subtle message.
39
- */
40
121
  dim(message) {
41
- console.log(chalk.dim(message));
122
+ printLine(chalk.dim(message));
42
123
  },
43
- /**
44
- * Print a key-value pair with formatting.
45
- */
46
124
  keyValue(key, value) {
47
- console.log(` ${chalk.bold(key)}: ${value}`);
125
+ printLine(` ${chalk.bold(key)}: ${value}`);
48
126
  },
49
- /**
50
- * Print a blank line.
51
- */
52
127
  newline() {
128
+ if (shouldUseClack()) {
129
+ clackLog.message("", { spacing: 0 });
130
+ return;
131
+ }
53
132
  console.log();
54
133
  },
55
- /**
56
- * Create and start a spinner for async operations.
57
- */
58
134
  spinner(text) {
59
- return ora({
60
- text,
61
- color: "cyan",
62
- }).start();
135
+ return shouldUseClack() ? createClackSpinner(text) : createPlainSpinner(text);
63
136
  },
64
- /**
65
- * Print a table header.
66
- */
67
- tableHeader(...columns) {
137
+ async promptConfirm(options) {
138
+ if (!shouldUseInteractivePrompts()) {
139
+ return "cancelled";
140
+ }
141
+ const result = await clackConfirm({
142
+ message: options.message,
143
+ initialValue: options.default,
144
+ });
145
+ if (isCancel(result)) {
146
+ return "cancelled";
147
+ }
148
+ return result;
149
+ },
150
+ async promptInput(options) {
151
+ if (!shouldUseInteractivePrompts()) {
152
+ return "cancelled";
153
+ }
154
+ const validate = options.validate;
155
+ const result = await clackText({
156
+ message: options.message,
157
+ defaultValue: options.default,
158
+ validate: validate
159
+ ? (value) => mapValidationResult(validate(value ?? ""))
160
+ : undefined,
161
+ });
162
+ if (isCancel(result)) {
163
+ return "cancelled";
164
+ }
165
+ return result;
166
+ },
167
+ async promptSelect(options) {
168
+ if (!shouldUseInteractivePrompts()) {
169
+ return "cancelled";
170
+ }
171
+ const result = await clackSelect({
172
+ message: options.message,
173
+ initialValue: options.default,
174
+ options: options.choices.map((choice) => ({
175
+ value: choice.value,
176
+ label: choice.label ?? choice.name ?? String(choice.value),
177
+ hint: choice.hint,
178
+ disabled: choice.disabled,
179
+ })),
180
+ });
181
+ if (isCancel(result)) {
182
+ return "cancelled";
183
+ }
184
+ return result;
185
+ },
186
+ tableHeader(...args) {
187
+ const maybeOptions = args[args.length - 1];
188
+ const options = isTableRenderOptions(maybeOptions) ? maybeOptions : {};
189
+ const columns = (isTableRenderOptions(maybeOptions) ? args.slice(0, -1) : args);
190
+ const indent = options.indent ?? "";
191
+ const plainHeader = columns.map((col) => col.label.padEnd(col.width)).join(" ");
68
192
  const header = columns
69
193
  .map((col) => chalk.bold(col.label.padEnd(col.width)))
70
194
  .join(" ");
71
- console.log(header);
72
- console.log(chalk.dim("─".repeat(header.length)));
195
+ const separatorWidth = Math.min(plainHeader.length, options.maxSeparatorWidth ?? plainHeader.length);
196
+ printLine(indent + header);
197
+ printLine(indent + chalk.dim("─".repeat(separatorWidth)));
73
198
  },
74
- /**
75
- * Print a table row.
76
- */
77
- tableRow(...cells) {
199
+ tableRow(...args) {
200
+ const maybeOptions = args[args.length - 1];
201
+ const options = isTableRenderOptions(maybeOptions) ? maybeOptions : {};
202
+ const cells = (isTableRenderOptions(maybeOptions) ? args.slice(0, -1) : args);
203
+ const indent = options.indent ?? "";
78
204
  const row = cells.map((cell) => cell.value.padEnd(cell.width)).join(" ");
79
- console.log(row);
205
+ printLine(indent + row);
80
206
  },
81
207
  };
82
208
  //# sourceMappingURL=logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAiB,MAAM,KAAK,CAAC;AAEpC;;GAEG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB;;OAEG;IACH,OAAO,CAAC,OAAe;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAe;QACnB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAe;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe;QACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,OAAe;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,GAAW,EAAE,KAAa;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,OAAO;QACL,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAY;QAClB,OAAO,GAAG,CAAC;YACT,IAAI;YACJ,KAAK,EAAE,MAAM;SACd,CAAC,CAAC,KAAK,EAAE,CAAC;IACb,CAAC;IAED;;OAEG;IACH,WAAW,CAAC,GAAG,OAA2C;QACxD,MAAM,MAAM,GAAG,OAAO;aACnB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;aACrD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,GAAG,KAAyC;QACnD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { EnvChange } from "./diff.js";
2
+ interface DryRunRenderContext {
3
+ environment: string;
4
+ displayPath: string;
5
+ localVersion: number;
6
+ remoteVersion: number;
7
+ changes: EnvChange[];
8
+ }
9
+ export declare function renderPullDryRunResult(context: DryRunRenderContext): void;
10
+ export {};
11
+ //# sourceMappingURL=pull-dry-run-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-dry-run-ui.d.ts","sourceRoot":"","sources":["../../src/utils/pull-dry-run-ui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,UAAU,mBAAmB;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,SAAS,EAAE,CAAC;CACtB;AA+LD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAQzE"}
@@ -0,0 +1,157 @@
1
+ import { log, note } from "@clack/prompts";
2
+ import chalk from "chalk";
3
+ import { logger } from "./logger.js";
4
+ function versionStatusText(localVersion, remoteVersion) {
5
+ if (localVersion === remoteVersion) {
6
+ return "equal";
7
+ }
8
+ if (localVersion === 0 && remoteVersion > 0) {
9
+ return "untracked";
10
+ }
11
+ if (localVersion < remoteVersion) {
12
+ return "remote ahead";
13
+ }
14
+ return "local ahead";
15
+ }
16
+ function colorVersionStatus(localVersion, remoteVersion) {
17
+ const status = versionStatusText(localVersion, remoteVersion);
18
+ if (status === "equal")
19
+ return chalk.green(status);
20
+ if (status === "untracked" || status === "remote ahead")
21
+ return chalk.yellow(status);
22
+ return chalk.cyan(status);
23
+ }
24
+ function truncateCell(value, maxLength) {
25
+ if (value.length <= maxLength) {
26
+ return value;
27
+ }
28
+ return value.slice(0, maxLength - 3) + "...";
29
+ }
30
+ function formatChangeValues(change) {
31
+ const localValue = truncateCell(change.oldValue ?? "-", 84);
32
+ const remoteValue = truncateCell(change.newValue ?? "-", 84);
33
+ return {
34
+ localValue: change.type === "added" ? "-" : localValue,
35
+ remoteValue: change.type === "removed" ? "-" : remoteValue,
36
+ };
37
+ }
38
+ function groupChanges(changes) {
39
+ return {
40
+ added: changes.filter((change) => change.type === "added"),
41
+ changed: changes.filter((change) => change.type === "changed"),
42
+ removed: changes.filter((change) => change.type === "removed"),
43
+ };
44
+ }
45
+ function summarize(changes) {
46
+ const grouped = groupChanges(changes);
47
+ return {
48
+ added: grouped.added.length,
49
+ changed: grouped.changed.length,
50
+ removed: grouped.removed.length,
51
+ };
52
+ }
53
+ function renderClack(context) {
54
+ const { environment, displayPath, localVersion, remoteVersion, changes } = context;
55
+ const versionText = `local=v${localVersion}, remote=v${remoteVersion} (${colorVersionStatus(localVersion, remoteVersion)})`;
56
+ log.step("Dry Run Pull Preview", { spacing: 0 });
57
+ log.message(`Environment: ${chalk.bold(environment)}\nVersion: ${versionText}`, {
58
+ spacing: 0,
59
+ });
60
+ if (changes.length === 0) {
61
+ log.message("", { spacing: 0 });
62
+ log.info("No changes detected. Local file is already up to date.");
63
+ log.info(`Dry-run only compares ${displayPath} with remote; no changes were applied.`);
64
+ return;
65
+ }
66
+ log.message("", { spacing: 0 });
67
+ log.message(chalk.bold("Changes if pulled:"), { spacing: 0 });
68
+ const grouped = groupChanges(changes);
69
+ const groupMeta = {
70
+ added: {
71
+ label: "ADDED",
72
+ symbol: "+",
73
+ headingColor: chalk.greenBright,
74
+ keyColor: chalk.greenBright,
75
+ valueColor: chalk.greenBright,
76
+ },
77
+ changed: {
78
+ label: "CHANGED",
79
+ symbol: "~",
80
+ headingColor: chalk.yellowBright,
81
+ keyColor: chalk.yellowBright,
82
+ valueColor: chalk.yellowBright,
83
+ },
84
+ removed: {
85
+ label: "REMOVED",
86
+ symbol: "-",
87
+ headingColor: chalk.redBright,
88
+ keyColor: chalk.redBright,
89
+ valueColor: chalk.redBright,
90
+ },
91
+ };
92
+ ["added", "changed", "removed"].forEach((type) => {
93
+ const group = grouped[type];
94
+ if (group.length === 0) {
95
+ return;
96
+ }
97
+ const meta = groupMeta[type];
98
+ const lines = [];
99
+ group.forEach((change) => {
100
+ const { localValue, remoteValue } = formatChangeValues(change);
101
+ lines.push(` ${meta.symbol} ${meta.keyColor(change.key)}`);
102
+ lines.push(` local : ${meta.valueColor(localValue)}`);
103
+ lines.push(` remote: ${meta.valueColor(remoteValue)}`);
104
+ });
105
+ note(lines.join("\n"), meta.headingColor(`${meta.label} (${group.length})`), {
106
+ format: (text) => text,
107
+ });
108
+ });
109
+ const summary = summarize(changes);
110
+ log.message(`${chalk.green(`${summary.added} added`)}, ${chalk.yellow(`${summary.changed} changed`)}, ${chalk.red(`${summary.removed} removed`)}`);
111
+ log.info(`Dry-run only compares ${displayPath} with remote; no changes were applied.`);
112
+ }
113
+ function renderPlaintext(context) {
114
+ const { environment, displayPath, localVersion, remoteVersion, changes } = context;
115
+ logger.log(" Dry Run Pull Preview");
116
+ logger.log(` Environment: ${environment}`);
117
+ logger.log(` Version: local=v${localVersion}, remote=v${remoteVersion} (${versionStatusText(localVersion, remoteVersion)})`);
118
+ if (changes.length === 0) {
119
+ logger.newline();
120
+ logger.log(" No changes detected. Local file is already up to date.");
121
+ logger.log(` Dry-run only compares ${displayPath} with remote; no changes were applied.`);
122
+ return;
123
+ }
124
+ logger.log(` ${chalk.bold("Changes if pulled:")}`);
125
+ logger.newline();
126
+ const grouped = groupChanges(changes);
127
+ const groupLabels = {
128
+ added: "ADDED",
129
+ changed: "CHANGED",
130
+ removed: "REMOVED",
131
+ };
132
+ ["added", "changed", "removed"].forEach((type) => {
133
+ const group = grouped[type];
134
+ if (group.length === 0) {
135
+ return;
136
+ }
137
+ logger.log(` ${groupLabels[type]} (${group.length})`);
138
+ group.forEach((change) => {
139
+ const { localValue, remoteValue } = formatChangeValues(change);
140
+ logger.log(` ${change.key}`);
141
+ logger.log(` local : ${localValue}`);
142
+ logger.log(` remote: ${remoteValue}`);
143
+ });
144
+ });
145
+ const summary = summarize(changes);
146
+ logger.log(` ${summary.added} added, ${summary.changed} changed, ${summary.removed} removed`);
147
+ logger.log(` Dry-run only compares ${displayPath} with remote; no changes were applied.`);
148
+ }
149
+ export function renderPullDryRunResult(context) {
150
+ const useClack = Boolean(process.stdout.isTTY && process.stderr.isTTY);
151
+ if (useClack) {
152
+ renderClack(context);
153
+ return;
154
+ }
155
+ renderPlaintext(context);
156
+ }
157
+ //# sourceMappingURL=pull-dry-run-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pull-dry-run-ui.js","sourceRoot":"","sources":["../../src/utils/pull-dry-run-ui.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { EnvChange } from "./diff.js";
2
+ interface PushPreviewContext {
3
+ environment: string;
4
+ filePath: string;
5
+ changes: EnvChange[];
6
+ force?: boolean;
7
+ }
8
+ export declare function renderPushPreview(context: PushPreviewContext): void;
9
+ export {};
10
+ //# sourceMappingURL=push-preview-ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push-preview-ui.d.ts","sourceRoot":"","sources":["../../src/utils/push-preview-ui.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAG3C,UAAU,kBAAkB;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAuJD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAOnE"}