@sembix/cli 1.3.0 → 1.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 (196) hide show
  1. package/COMMANDS.md +1522 -0
  2. package/QUICKSTART.md +829 -0
  3. package/README.md +1949 -285
  4. package/USAGE-EXAMPLES.md +872 -0
  5. package/dist/commands/configure.d.ts.map +1 -1
  6. package/dist/commands/configure.js +172 -2
  7. package/dist/commands/configure.js.map +1 -1
  8. package/dist/commands/index.d.ts +10 -0
  9. package/dist/commands/index.d.ts.map +1 -0
  10. package/dist/commands/index.js +11 -0
  11. package/dist/commands/index.js.map +1 -0
  12. package/dist/commands/login.d.ts +19 -0
  13. package/dist/commands/login.d.ts.map +1 -0
  14. package/dist/commands/login.js +118 -0
  15. package/dist/commands/login.js.map +1 -0
  16. package/dist/commands/logout.d.ts +21 -0
  17. package/dist/commands/logout.d.ts.map +1 -0
  18. package/dist/commands/logout.js +66 -0
  19. package/dist/commands/logout.js.map +1 -0
  20. package/dist/commands/profile-project.d.ts +14 -0
  21. package/dist/commands/profile-project.d.ts.map +1 -0
  22. package/dist/commands/profile-project.js +123 -0
  23. package/dist/commands/profile-project.js.map +1 -0
  24. package/dist/commands/profile.d.ts +26 -0
  25. package/dist/commands/profile.d.ts.map +1 -0
  26. package/dist/commands/profile.js +177 -0
  27. package/dist/commands/profile.js.map +1 -0
  28. package/dist/commands/project.d.ts +16 -0
  29. package/dist/commands/project.d.ts.map +1 -0
  30. package/dist/commands/project.js +153 -0
  31. package/dist/commands/project.js.map +1 -0
  32. package/dist/commands/workflow.d.ts +91 -0
  33. package/dist/commands/workflow.d.ts.map +1 -0
  34. package/dist/commands/workflow.js +1201 -0
  35. package/dist/commands/workflow.js.map +1 -0
  36. package/dist/config-schema.d.ts +23 -0
  37. package/dist/config-schema.d.ts.map +1 -1
  38. package/dist/config-schema.js +21 -1
  39. package/dist/config-schema.js.map +1 -1
  40. package/dist/config.d.ts +4 -0
  41. package/dist/config.d.ts.map +1 -1
  42. package/dist/config.js +23 -2
  43. package/dist/config.js.map +1 -1
  44. package/dist/index.js +318 -1
  45. package/dist/index.js.map +1 -1
  46. package/dist/prompts/project-selection.d.ts +8 -0
  47. package/dist/prompts/project-selection.d.ts.map +1 -0
  48. package/dist/prompts/project-selection.js +132 -0
  49. package/dist/prompts/project-selection.js.map +1 -0
  50. package/dist/prompts/workflow-inputs.d.ts +10 -0
  51. package/dist/prompts/workflow-inputs.d.ts.map +1 -0
  52. package/dist/prompts/workflow-inputs.js +71 -0
  53. package/dist/prompts/workflow-inputs.js.map +1 -0
  54. package/dist/prompts/workflow-selection.d.ts +8 -0
  55. package/dist/prompts/workflow-selection.d.ts.map +1 -0
  56. package/dist/prompts/workflow-selection.js +147 -0
  57. package/dist/prompts/workflow-selection.js.map +1 -0
  58. package/dist/sembix-cli-1.4.0.tgz +0 -0
  59. package/dist/services/cognito-auth.d.ts +92 -0
  60. package/dist/services/cognito-auth.d.ts.map +1 -0
  61. package/dist/services/cognito-auth.js +319 -0
  62. package/dist/services/cognito-auth.js.map +1 -0
  63. package/dist/services/studio-api-client.d.ts +127 -0
  64. package/dist/services/studio-api-client.d.ts.map +1 -0
  65. package/dist/services/studio-api-client.js +291 -0
  66. package/dist/services/studio-api-client.js.map +1 -0
  67. package/dist/types/studio.d.ts +82 -0
  68. package/dist/types/studio.d.ts.map +1 -0
  69. package/dist/types/studio.js +7 -0
  70. package/dist/types/studio.js.map +1 -0
  71. package/dist/types.d.ts +283 -0
  72. package/dist/types.d.ts.map +1 -1
  73. package/dist/types.js +5 -0
  74. package/dist/types.js.map +1 -1
  75. package/dist/utils/browser-auth.d.ts +45 -0
  76. package/dist/utils/browser-auth.d.ts.map +1 -0
  77. package/dist/utils/browser-auth.js +168 -0
  78. package/dist/utils/browser-auth.js.map +1 -0
  79. package/dist/utils/cognito-auth.d.ts +3 -0
  80. package/dist/utils/cognito-auth.d.ts.map +1 -0
  81. package/dist/utils/cognito-auth.js +3 -0
  82. package/dist/utils/cognito-auth.js.map +1 -0
  83. package/dist/utils/config-file.d.ts +40 -0
  84. package/dist/utils/config-file.d.ts.map +1 -1
  85. package/dist/utils/config-file.js +158 -4
  86. package/dist/utils/config-file.js.map +1 -1
  87. package/dist/utils/environment.d.ts +22 -0
  88. package/dist/utils/environment.d.ts.map +1 -0
  89. package/dist/utils/environment.js +39 -0
  90. package/dist/utils/environment.js.map +1 -0
  91. package/dist/utils/error-handler.d.ts +53 -0
  92. package/dist/utils/error-handler.d.ts.map +1 -0
  93. package/dist/utils/error-handler.js +174 -0
  94. package/dist/utils/error-handler.js.map +1 -0
  95. package/dist/utils/fuzzy-match.d.ts +31 -0
  96. package/dist/utils/fuzzy-match.d.ts.map +1 -0
  97. package/dist/utils/fuzzy-match.js +138 -0
  98. package/dist/utils/fuzzy-match.js.map +1 -0
  99. package/dist/utils/input-parser.d.ts +14 -0
  100. package/dist/utils/input-parser.d.ts.map +1 -0
  101. package/dist/utils/input-parser.js +34 -0
  102. package/dist/utils/input-parser.js.map +1 -0
  103. package/dist/utils/output.d.ts +55 -0
  104. package/dist/utils/output.d.ts.map +1 -0
  105. package/dist/utils/output.js +80 -0
  106. package/dist/utils/output.js.map +1 -0
  107. package/dist/utils/recent-workflows.d.ts +37 -0
  108. package/dist/utils/recent-workflows.d.ts.map +1 -0
  109. package/dist/utils/recent-workflows.js +172 -0
  110. package/dist/utils/recent-workflows.js.map +1 -0
  111. package/dist/utils/studio-api-client.d.ts +3 -0
  112. package/dist/utils/studio-api-client.d.ts.map +1 -0
  113. package/dist/utils/studio-api-client.js +3 -0
  114. package/dist/utils/studio-api-client.js.map +1 -0
  115. package/dist/utils/studio-api.d.ts +53 -0
  116. package/dist/utils/studio-api.d.ts.map +1 -0
  117. package/dist/utils/studio-api.js +102 -0
  118. package/dist/utils/studio-api.js.map +1 -0
  119. package/dist/utils/studio-config.d.ts +74 -0
  120. package/dist/utils/studio-config.d.ts.map +1 -0
  121. package/dist/utils/studio-config.js +213 -0
  122. package/dist/utils/studio-config.js.map +1 -0
  123. package/dist/utils/token-manager.d.ts +4 -0
  124. package/dist/utils/token-manager.d.ts.map +1 -0
  125. package/dist/utils/token-manager.js +3 -0
  126. package/dist/utils/token-manager.js.map +1 -0
  127. package/dist/utils/ui.d.ts +55 -1
  128. package/dist/utils/ui.d.ts.map +1 -1
  129. package/dist/utils/ui.js +151 -2
  130. package/dist/utils/ui.js.map +1 -1
  131. package/package.json +4 -1
  132. package/dist/__tests__/config-schema.test.d.ts +0 -2
  133. package/dist/__tests__/config-schema.test.d.ts.map +0 -1
  134. package/dist/__tests__/config-schema.test.js +0 -471
  135. package/dist/__tests__/config-schema.test.js.map +0 -1
  136. package/dist/__tests__/config.test.d.ts +0 -2
  137. package/dist/__tests__/config.test.d.ts.map +0 -1
  138. package/dist/__tests__/config.test.js +0 -75
  139. package/dist/__tests__/config.test.js.map +0 -1
  140. package/dist/__tests__/integration/configure.test.d.ts +0 -2
  141. package/dist/__tests__/integration/configure.test.d.ts.map +0 -1
  142. package/dist/__tests__/integration/configure.test.js +0 -247
  143. package/dist/__tests__/integration/configure.test.js.map +0 -1
  144. package/dist/__tests__/integration/fixtures/configs.d.ts +0 -477
  145. package/dist/__tests__/integration/fixtures/configs.d.ts.map +0 -1
  146. package/dist/__tests__/integration/fixtures/configs.js +0 -175
  147. package/dist/__tests__/integration/fixtures/configs.js.map +0 -1
  148. package/dist/__tests__/integration/helpers/cli-runner.d.ts +0 -63
  149. package/dist/__tests__/integration/helpers/cli-runner.d.ts.map +0 -1
  150. package/dist/__tests__/integration/helpers/cli-runner.js +0 -152
  151. package/dist/__tests__/integration/helpers/cli-runner.js.map +0 -1
  152. package/dist/__tests__/integration/helpers/command-runner.d.ts +0 -53
  153. package/dist/__tests__/integration/helpers/command-runner.d.ts.map +0 -1
  154. package/dist/__tests__/integration/helpers/command-runner.js +0 -117
  155. package/dist/__tests__/integration/helpers/command-runner.js.map +0 -1
  156. package/dist/__tests__/integration/studio-create.test.d.ts +0 -2
  157. package/dist/__tests__/integration/studio-create.test.d.ts.map +0 -1
  158. package/dist/__tests__/integration/studio-create.test.js +0 -209
  159. package/dist/__tests__/integration/studio-create.test.js.map +0 -1
  160. package/dist/__tests__/integration/studio-update.test.d.ts +0 -2
  161. package/dist/__tests__/integration/studio-update.test.d.ts.map +0 -1
  162. package/dist/__tests__/integration/studio-update.test.js +0 -166
  163. package/dist/__tests__/integration/studio-update.test.js.map +0 -1
  164. package/dist/commands/__tests__/configure.test.d.ts +0 -2
  165. package/dist/commands/__tests__/configure.test.d.ts.map +0 -1
  166. package/dist/commands/__tests__/configure.test.js +0 -229
  167. package/dist/commands/__tests__/configure.test.js.map +0 -1
  168. package/dist/prompts/__tests__/environment-setup.test.d.ts +0 -2
  169. package/dist/prompts/__tests__/environment-setup.test.d.ts.map +0 -1
  170. package/dist/prompts/__tests__/environment-setup.test.js +0 -206
  171. package/dist/prompts/__tests__/environment-setup.test.js.map +0 -1
  172. package/dist/prompts/__tests__/hub-integration.test.d.ts +0 -2
  173. package/dist/prompts/__tests__/hub-integration.test.d.ts.map +0 -1
  174. package/dist/prompts/__tests__/hub-integration.test.js +0 -126
  175. package/dist/prompts/__tests__/hub-integration.test.js.map +0 -1
  176. package/dist/prompts/__tests__/prompt-helpers.test.d.ts +0 -2
  177. package/dist/prompts/__tests__/prompt-helpers.test.d.ts.map +0 -1
  178. package/dist/prompts/__tests__/prompt-helpers.test.js +0 -235
  179. package/dist/prompts/__tests__/prompt-helpers.test.js.map +0 -1
  180. package/dist/sembix-cli-1.3.0.tgz +0 -0
  181. package/dist/utils/__tests__/config-file.test.d.ts +0 -2
  182. package/dist/utils/__tests__/config-file.test.d.ts.map +0 -1
  183. package/dist/utils/__tests__/config-file.test.js +0 -218
  184. package/dist/utils/__tests__/config-file.test.js.map +0 -1
  185. package/dist/utils/__tests__/config-loader.test.d.ts +0 -2
  186. package/dist/utils/__tests__/config-loader.test.d.ts.map +0 -1
  187. package/dist/utils/__tests__/config-loader.test.js +0 -325
  188. package/dist/utils/__tests__/config-loader.test.js.map +0 -1
  189. package/dist/utils/__tests__/github.test.d.ts +0 -2
  190. package/dist/utils/__tests__/github.test.d.ts.map +0 -1
  191. package/dist/utils/__tests__/github.test.js +0 -282
  192. package/dist/utils/__tests__/github.test.js.map +0 -1
  193. package/dist/utils/__tests__/ui.test.d.ts +0 -2
  194. package/dist/utils/__tests__/ui.test.d.ts.map +0 -1
  195. package/dist/utils/__tests__/ui.test.js +0 -256
  196. package/dist/utils/__tests__/ui.test.js.map +0 -1
@@ -1,63 +0,0 @@
1
- /**
2
- * Helper utilities for running CLI commands in integration tests
3
- */
4
- export interface CLIResult {
5
- exitCode: number;
6
- stdout: string;
7
- stderr: string;
8
- duration: number;
9
- }
10
- export interface CLIOptions {
11
- cwd?: string;
12
- env?: Record<string, string>;
13
- timeout?: number;
14
- input?: string;
15
- }
16
- /**
17
- * Run the CLI with given arguments
18
- */
19
- export declare function runCLI(args: string[], options?: CLIOptions): Promise<CLIResult>;
20
- /**
21
- * Create a temporary YAML config file
22
- */
23
- export declare function createTempConfigFile(config: Record<string, unknown>): Promise<string>;
24
- /**
25
- * Clean up temporary config file
26
- */
27
- export declare function removeTempConfigFile(filePath: string): Promise<void>;
28
- /**
29
- * Run CLI command with config file
30
- */
31
- export declare function runCLIWithConfig(command: string[], config: Record<string, unknown>, options?: CLIOptions): Promise<{
32
- result: CLIResult;
33
- configPath: string;
34
- }>;
35
- /**
36
- * Extract environment name from CLI output
37
- */
38
- export declare function extractEnvironmentName(output: string): string | null;
39
- /**
40
- * Extract repository from CLI output
41
- */
42
- export declare function extractRepository(output: string): string | null;
43
- /**
44
- * Check if output contains success message
45
- */
46
- export declare function hasSuccessMessage(output: string): boolean;
47
- /**
48
- * Check if output contains error message
49
- */
50
- export declare function hasErrorMessage(output: string): boolean;
51
- /**
52
- * Extract validation errors from output
53
- */
54
- export declare function extractValidationErrors(output: string): string[];
55
- /**
56
- * Mock GitHub token for tests
57
- */
58
- export declare const TEST_GITHUB_TOKEN = "ghp_test_token_1234567890abcdefghijklmnopqrstu";
59
- /**
60
- * Create environment variables for test
61
- */
62
- export declare function createTestEnv(overrides?: Record<string, string>): Record<string, string>;
63
- //# sourceMappingURL=cli-runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-runner.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/cli-runner.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,UAAe,GAAG,OAAO,CAAC,SAAS,CAAC,CA6DzF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAI3F;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EAAE,EACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,GAAE,UAAe,GACvB,OAAO,CAAC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAUpD;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGpE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAG/D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAWhE;AAED;;GAEG;AACH,eAAO,MAAM,iBAAiB,mDAAmD,CAAC;AAElF;;GAEG;AACH,wBAAgB,aAAa,CAAC,SAAS,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAM5F"}
@@ -1,152 +0,0 @@
1
- /**
2
- * Helper utilities for running CLI commands in integration tests
3
- */
4
- import { spawn } from 'child_process';
5
- import { join } from 'path';
6
- import { writeFile, unlink } from 'fs/promises';
7
- import { tmpdir } from 'os';
8
- import yaml from 'js-yaml';
9
- /**
10
- * Run the CLI with given arguments
11
- */
12
- export async function runCLI(args, options = {}) {
13
- const startTime = Date.now();
14
- const cwd = options.cwd || process.cwd();
15
- const env = {
16
- ...process.env,
17
- ...(options.env || {}),
18
- // Disable colors for easier assertion
19
- NO_COLOR: '1',
20
- FORCE_COLOR: '0',
21
- };
22
- return new Promise((resolve) => {
23
- const child = spawn('node', ['dist/index.js', ...args], {
24
- cwd,
25
- env,
26
- stdio: ['pipe', 'pipe', 'pipe'],
27
- });
28
- let stdout = '';
29
- let stderr = '';
30
- child.stdout?.on('data', (data) => {
31
- stdout += data.toString();
32
- });
33
- child.stderr?.on('data', (data) => {
34
- stderr += data.toString();
35
- });
36
- // Handle input for interactive prompts
37
- if (options.input && child.stdin) {
38
- child.stdin.write(options.input);
39
- child.stdin.end();
40
- }
41
- // Set timeout
42
- const timeout = options.timeout || 30000;
43
- const timeoutId = setTimeout(() => {
44
- child.kill('SIGTERM');
45
- }, timeout);
46
- child.on('close', (code) => {
47
- clearTimeout(timeoutId);
48
- resolve({
49
- exitCode: code || 0,
50
- stdout,
51
- stderr,
52
- duration: Date.now() - startTime,
53
- });
54
- });
55
- child.on('error', (error) => {
56
- clearTimeout(timeoutId);
57
- resolve({
58
- exitCode: 1,
59
- stdout,
60
- stderr: stderr + error.message,
61
- duration: Date.now() - startTime,
62
- });
63
- });
64
- });
65
- }
66
- /**
67
- * Create a temporary YAML config file
68
- */
69
- export async function createTempConfigFile(config) {
70
- const tempFile = join(tmpdir(), `sembix-test-${Date.now()}-${Math.random().toString(36).slice(2)}.yaml`);
71
- await writeFile(tempFile, yaml.dump(config), 'utf-8');
72
- return tempFile;
73
- }
74
- /**
75
- * Clean up temporary config file
76
- */
77
- export async function removeTempConfigFile(filePath) {
78
- try {
79
- await unlink(filePath);
80
- }
81
- catch {
82
- // Ignore errors if file doesn't exist
83
- }
84
- }
85
- /**
86
- * Run CLI command with config file
87
- */
88
- export async function runCLIWithConfig(command, config, options = {}) {
89
- const configPath = await createTempConfigFile(config);
90
- try {
91
- const result = await runCLI([...command, '--config', configPath], options);
92
- return { result, configPath };
93
- }
94
- catch (error) {
95
- await removeTempConfigFile(configPath);
96
- throw error;
97
- }
98
- }
99
- /**
100
- * Extract environment name from CLI output
101
- */
102
- export function extractEnvironmentName(output) {
103
- const match = output.match(/Environment:\s+(\S+)/);
104
- return match ? match[1] : null;
105
- }
106
- /**
107
- * Extract repository from CLI output
108
- */
109
- export function extractRepository(output) {
110
- const match = output.match(/Repository:\s+(\S+\/\S+)/);
111
- return match ? match[1] : null;
112
- }
113
- /**
114
- * Check if output contains success message
115
- */
116
- export function hasSuccessMessage(output) {
117
- return output.includes('✓') || output.includes('successfully') || output.includes('Success');
118
- }
119
- /**
120
- * Check if output contains error message
121
- */
122
- export function hasErrorMessage(output) {
123
- return output.includes('✗') || output.includes('Error') || output.includes('failed');
124
- }
125
- /**
126
- * Extract validation errors from output
127
- */
128
- export function extractValidationErrors(output) {
129
- const errors = [];
130
- const lines = output.split('\n');
131
- for (const line of lines) {
132
- if (line.includes('•') && (line.includes('Error') || line.includes('Invalid') || line.includes('Must'))) {
133
- errors.push(line.trim());
134
- }
135
- }
136
- return errors;
137
- }
138
- /**
139
- * Mock GitHub token for tests
140
- */
141
- export const TEST_GITHUB_TOKEN = 'ghp_test_token_1234567890abcdefghijklmnopqrstu';
142
- /**
143
- * Create environment variables for test
144
- */
145
- export function createTestEnv(overrides = {}) {
146
- return {
147
- GITHUB_TOKEN: TEST_GITHUB_TOKEN,
148
- NODE_ENV: 'test',
149
- ...overrides,
150
- };
151
- }
152
- //# sourceMappingURL=cli-runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli-runner.js","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/cli-runner.ts"],"names":[],"mappings":"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"}
@@ -1,53 +0,0 @@
1
- /**
2
- * Command Runner for Integration Tests
3
- *
4
- * This helper runs CLI commands directly by importing and calling command functions,
5
- * rather than spawning separate processes. This allows mocks to work properly while
6
- * still testing the full command flow.
7
- */
8
- import { removeTempConfigFile } from './cli-runner.js';
9
- interface CommandResult {
10
- success: boolean;
11
- error?: Error;
12
- stdout: string;
13
- stderr: string;
14
- }
15
- /**
16
- * Run 'studio create' command with config file
17
- */
18
- export declare function runCreateWithConfig(config: Record<string, unknown>, environmentName?: string, options?: {
19
- token?: string;
20
- }): Promise<CommandResult & {
21
- configPath: string;
22
- }>;
23
- /**
24
- * Run 'studio create' command with CLI flags only
25
- */
26
- export declare function runCreateWithFlags(environmentName: string, flags: Record<string, unknown>, token?: string): Promise<CommandResult>;
27
- /**
28
- * Run 'studio update' command with config file
29
- */
30
- export declare function runUpdateWithConfig(config: Record<string, unknown>, environmentName: string, options?: {
31
- token?: string;
32
- repo?: string;
33
- }): Promise<CommandResult & {
34
- configPath: string;
35
- }>;
36
- /**
37
- * Run 'studio update' command with CLI flags
38
- */
39
- export declare function runUpdateWithFlags(environmentName: string, flags: Record<string, unknown>, token?: string): Promise<CommandResult>;
40
- /**
41
- * Helper to check if result indicates success
42
- */
43
- export declare function isSuccess(result: CommandResult): boolean;
44
- /**
45
- * Helper to check if result contains error
46
- */
47
- export declare function hasError(result: CommandResult): boolean;
48
- /**
49
- * Helper to extract error message
50
- */
51
- export declare function getErrorMessage(result: CommandResult): string;
52
- export { removeTempConfigFile };
53
- //# sourceMappingURL=command-runner.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-runner.d.ts","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/command-runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAwB,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE7E,UAAU,aAAa;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAqDD;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,MAAM,EACxB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAajD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,MAAqB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,EAAE,MAAM,EACvB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9C,OAAO,CAAC,aAAa,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAajD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,eAAe,EAAE,MAAM,EACvB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,KAAK,GAAE,MAAqB,GAC3B,OAAO,CAAC,aAAa,CAAC,CAMxB;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAExD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAEvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAK7D;AAGD,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
@@ -1,117 +0,0 @@
1
- /**
2
- * Command Runner for Integration Tests
3
- *
4
- * This helper runs CLI commands directly by importing and calling command functions,
5
- * rather than spawning separate processes. This allows mocks to work properly while
6
- * still testing the full command flow.
7
- */
8
- import { createTempConfigFile, removeTempConfigFile } from './cli-runner.js';
9
- /**
10
- * Capture console output during command execution
11
- */
12
- function captureConsoleOutput(fn) {
13
- const stdoutLines = [];
14
- const stderrLines = [];
15
- // Save original console methods and process.exit
16
- const originalLog = console.log;
17
- const originalError = console.error;
18
- const originalWarn = console.warn;
19
- const originalInfo = console.info;
20
- const originalExit = process.exit;
21
- let exitCode;
22
- // Override console methods
23
- console.log = (...args) => stdoutLines.push(args.join(' '));
24
- console.error = (...args) => stderrLines.push(args.join(' '));
25
- console.warn = (...args) => stderrLines.push(args.join(' '));
26
- console.info = (...args) => stdoutLines.push(args.join(' '));
27
- // Override process.exit to capture exit code without actually exiting
28
- process.exit = ((code) => {
29
- exitCode = code || 0;
30
- throw new Error(`process.exit(${code})`);
31
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
32
- });
33
- return fn()
34
- .then(() => ({
35
- success: true,
36
- stdout: stdoutLines.join('\n'),
37
- stderr: stderrLines.join('\n'),
38
- }))
39
- .catch((error) => ({
40
- success: exitCode === 0 || exitCode === undefined,
41
- error,
42
- stdout: stdoutLines.join('\n'),
43
- stderr: stderrLines.join('\n'),
44
- }))
45
- .finally(() => {
46
- // Restore original console methods and process.exit
47
- console.log = originalLog;
48
- console.error = originalError;
49
- console.warn = originalWarn;
50
- console.info = originalInfo;
51
- process.exit = originalExit;
52
- });
53
- }
54
- /**
55
- * Run 'studio create' command with config file
56
- */
57
- export async function runCreateWithConfig(config, environmentName, options = {}) {
58
- const { setupEnvironment } = await import('../../../commands/setup.js');
59
- const configPath = await createTempConfigFile(config);
60
- const result = await captureConsoleOutput(async () => {
61
- await setupEnvironment(options.token || 'test-token', environmentName, { config: configPath });
62
- });
63
- return { ...result, configPath };
64
- }
65
- /**
66
- * Run 'studio create' command with CLI flags only
67
- */
68
- export async function runCreateWithFlags(environmentName, flags, token = 'test-token') {
69
- const { setupEnvironment } = await import('../../../commands/setup.js');
70
- return captureConsoleOutput(async () => {
71
- await setupEnvironment(token, environmentName, flags);
72
- });
73
- }
74
- /**
75
- * Run 'studio update' command with config file
76
- */
77
- export async function runUpdateWithConfig(config, environmentName, options = {}) {
78
- const { updateEnvironment } = await import('../../../commands/update.js');
79
- const configPath = await createTempConfigFile(config);
80
- const result = await captureConsoleOutput(async () => {
81
- await updateEnvironment(options.token || 'test-token', environmentName, { config: configPath, repo: options.repo });
82
- });
83
- return { ...result, configPath };
84
- }
85
- /**
86
- * Run 'studio update' command with CLI flags
87
- */
88
- export async function runUpdateWithFlags(environmentName, flags, token = 'test-token') {
89
- const { updateEnvironment } = await import('../../../commands/update.js');
90
- return captureConsoleOutput(async () => {
91
- await updateEnvironment(token, environmentName, flags);
92
- });
93
- }
94
- /**
95
- * Helper to check if result indicates success
96
- */
97
- export function isSuccess(result) {
98
- return result.success && !result.error;
99
- }
100
- /**
101
- * Helper to check if result contains error
102
- */
103
- export function hasError(result) {
104
- return !result.success || !!result.error;
105
- }
106
- /**
107
- * Helper to extract error message
108
- */
109
- export function getErrorMessage(result) {
110
- if (result.error) {
111
- return result.error.message;
112
- }
113
- return result.stderr || result.stdout;
114
- }
115
- // Re-export cleanup helper
116
- export { removeTempConfigFile };
117
- //# sourceMappingURL=command-runner.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"command-runner.js","sourceRoot":"","sources":["../../../../src/__tests__/integration/helpers/command-runner.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=studio-create.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"studio-create.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration/studio-create.test.ts"],"names":[],"mappings":""}
@@ -1,209 +0,0 @@
1
- import { describe, it, expect, vi, beforeEach } from 'vitest';
2
- import { runCreateWithConfig, runCreateWithFlags, removeTempConfigFile, } from './helpers/command-runner.js';
3
- import { validMinimalConfig, validFullConfig, validConfigWithHub, invalidConfigs, } from './fixtures/configs.js';
4
- import { GitHubClient } from '../../utils/github.js';
5
- // Mock GitHub Client
6
- vi.mock('../../utils/github.js');
7
- // Mock prompts to return defaults without hanging
8
- vi.mock('@inquirer/prompts', () => ({
9
- input: vi.fn().mockResolvedValue('default-value'),
10
- select: vi.fn().mockResolvedValue('default-option'),
11
- confirm: vi.fn().mockResolvedValue(true), // Confirm operations
12
- password: vi.fn().mockResolvedValue('secret'),
13
- }));
14
- // Mock chalk to avoid ANSI codes in tests
15
- const createChalkMock = () => {
16
- const mockFn = (str) => str;
17
- return new Proxy(mockFn, {
18
- get: () => createChalkMock(),
19
- apply: (target, thisArg, args) => args[0]
20
- });
21
- };
22
- vi.mock('chalk', () => ({
23
- default: createChalkMock()
24
- }));
25
- describe('studio create command - Integration Tests', () => {
26
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
27
- let mockGitHubClient;
28
- beforeEach(() => {
29
- // Setup GitHub Client mock
30
- mockGitHubClient = {
31
- listRepositories: vi.fn().mockResolvedValue([
32
- { owner: 'test-org', repo: 'test-repo', full_name: 'test-org/test-repo' },
33
- ]),
34
- getRepository: vi.fn().mockResolvedValue({
35
- owner: 'test-org',
36
- repo: 'test-repo',
37
- full_name: 'test-org/test-repo',
38
- }),
39
- createEnvironment: vi.fn().mockResolvedValue({}),
40
- environmentExists: vi.fn().mockResolvedValue(false),
41
- createEnvironmentVariables: vi.fn().mockResolvedValue({}),
42
- createEnvironmentSecrets: vi.fn().mockResolvedValue({}),
43
- };
44
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
45
- vi.mocked(GitHubClient).mockImplementation(function () {
46
- return mockGitHubClient;
47
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
48
- });
49
- });
50
- describe('Config File Tests', () => {
51
- it('should create environment using minimal valid config file', async () => {
52
- const { success, stdout, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
53
- await removeTempConfigFile(configPath);
54
- expect(success).toBe(true);
55
- expect(stdout).toContain('Configuration file loaded successfully');
56
- });
57
- it('should create environment using full config file with all options', async () => {
58
- const { success, stdout, configPath } = await runCreateWithConfig(validFullConfig, 'test-env');
59
- await removeTempConfigFile(configPath);
60
- expect(success).toBe(true);
61
- expect(stdout).toContain('Configuration file loaded successfully');
62
- });
63
- it('should create environment with Hub integration from config', async () => {
64
- const { success, stdout, configPath } = await runCreateWithConfig(validConfigWithHub, 'test-env');
65
- await removeTempConfigFile(configPath);
66
- expect(success).toBe(true);
67
- expect(stdout).toContain('Hub');
68
- });
69
- it('should fail with invalid AWS account ID in config', async () => {
70
- const { success, stdout, configPath } = await runCreateWithConfig(invalidConfigs.invalidAwsAccountId, 'test-env');
71
- await removeTempConfigFile(configPath);
72
- expect(success).toBe(false);
73
- expect(stdout).toContain('validation failed');
74
- });
75
- it('should fail with invalid environment name in config', async () => {
76
- const { success, stdout, configPath } = await runCreateWithConfig(invalidConfigs.invalidEnvironmentName, 'test-env');
77
- await removeTempConfigFile(configPath);
78
- expect(success).toBe(false);
79
- expect(stdout).toContain('validation failed');
80
- });
81
- it('should fail with invalid IAM role ARN in config', async () => {
82
- const { success, stdout, configPath } = await runCreateWithConfig(invalidConfigs.invalidIamRoleArn, 'test-env');
83
- await removeTempConfigFile(configPath);
84
- expect(success).toBe(false);
85
- expect(stdout).toContain('validation failed');
86
- });
87
- it('should fail with non-existent config file', async () => {
88
- const { setupEnvironment } = await import('../../commands/setup.js');
89
- await expect(setupEnvironment('test-token', 'test-env', { config: '/nonexistent/config.yaml' })).rejects.toThrow();
90
- });
91
- it('should handle YAML parsing errors gracefully', async () => {
92
- const { setupEnvironment } = await import('../../commands/setup.js');
93
- const fs = await import('fs/promises');
94
- const path = await import('path');
95
- const os = await import('os');
96
- // Create a temp file with invalid YAML
97
- const tmpDir = os.tmpdir();
98
- const invalidYamlPath = path.join(tmpDir, `invalid-${Date.now()}.yaml`);
99
- await fs.writeFile(invalidYamlPath, 'invalid: yaml: content: [unclosed');
100
- await expect(setupEnvironment('test-token', 'test-env', { config: invalidYamlPath })).rejects.toThrow();
101
- // Clean up - use try/catch in case already deleted
102
- try {
103
- await fs.unlink(invalidYamlPath);
104
- }
105
- catch {
106
- // File may have been deleted already, ignore
107
- }
108
- });
109
- });
110
- describe('CLI Flags Tests', () => {
111
- it('should create environment using only CLI flags', async () => {
112
- const { success, stdout } = await runCreateWithFlags('test-env', {
113
- repo: 'test-org/test-repo',
114
- awsAccountId: '123456789012',
115
- awsRegion: 'us-east-1',
116
- customerRoleArn: 'arn:aws:iam::123456789012:role/test-role',
117
- terraformStateBucket: 'test-bucket',
118
- databaseName: 'testdb',
119
- });
120
- expect(success).toBe(true);
121
- expect(stdout).toContain('test-env');
122
- });
123
- it('should override config file with CLI flags', async () => {
124
- const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
125
- await removeTempConfigFile(configPath);
126
- expect(success).toBe(true);
127
- // Note: This test verifies the config was loaded successfully
128
- // Full override testing would require more complex setup
129
- });
130
- it('should fail with invalid AWS account ID flag', async () => {
131
- const { success } = await runCreateWithFlags('test-env', {
132
- repo: 'test-org/test-repo',
133
- awsAccountId: '12345', // Invalid - too short
134
- awsRegion: 'us-east-1',
135
- });
136
- expect(success).toBe(false);
137
- });
138
- it('should accept boolean flags correctly', async () => {
139
- const { success } = await runCreateWithFlags('test-env', {
140
- repo: 'test-org/test-repo',
141
- awsAccountId: '123456789012',
142
- awsRegion: 'us-east-1',
143
- customerRoleArn: 'arn:aws:iam::123456789012:role/test-role',
144
- terraformStateBucket: 'test-bucket',
145
- databaseName: 'testdb',
146
- enableMemory: true,
147
- enableNotifications: false,
148
- });
149
- expect(success).toBe(true);
150
- });
151
- });
152
- describe('Environment Name Tests', () => {
153
- it('should accept environment name as positional argument', async () => {
154
- const { success, stdout, configPath } = await runCreateWithConfig(validMinimalConfig, 'my-environment');
155
- await removeTempConfigFile(configPath);
156
- expect(success).toBe(true);
157
- expect(stdout).toContain('my-environment');
158
- });
159
- it('should accept environment name via environmentName in config', async () => {
160
- const configWithEnv = {
161
- ...validMinimalConfig,
162
- environmentName: 'config-environment',
163
- };
164
- const { success, stdout, configPath } = await runCreateWithConfig(configWithEnv);
165
- await removeTempConfigFile(configPath);
166
- expect(success).toBe(true);
167
- expect(stdout).toContain('config-environment');
168
- });
169
- });
170
- describe('GitHub Integration', () => {
171
- it('should call GitHub API to create environment', async () => {
172
- const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
173
- await removeTempConfigFile(configPath);
174
- expect(success).toBe(true);
175
- expect(mockGitHubClient.createEnvironment).toHaveBeenCalled();
176
- expect(mockGitHubClient.createEnvironmentVariables).toHaveBeenCalled();
177
- expect(mockGitHubClient.createEnvironmentSecrets).toHaveBeenCalled();
178
- });
179
- it('should handle GitHub API errors gracefully', async () => {
180
- mockGitHubClient.createEnvironment.mockRejectedValue(new Error('API Error'));
181
- const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
182
- await removeTempConfigFile(configPath);
183
- expect(success).toBe(false);
184
- });
185
- });
186
- describe('Hub Integration', () => {
187
- it('should include Hub configuration when provided', async () => {
188
- const { success, stdout, configPath } = await runCreateWithConfig(validConfigWithHub, 'test-env');
189
- await removeTempConfigFile(configPath);
190
- expect(success).toBe(true);
191
- expect(stdout).toContain('Hub');
192
- });
193
- it('should skip Hub integration when not in config', async () => {
194
- const { success, configPath } = await runCreateWithConfig(validMinimalConfig, 'test-env');
195
- await removeTempConfigFile(configPath);
196
- expect(success).toBe(true);
197
- // Hub-specific secrets should not be created
198
- });
199
- });
200
- describe('Config Priority', () => {
201
- it('should follow priority: CLI flags > Config file > Defaults', async () => {
202
- // This is tested implicitly through other tests
203
- // CLI flags override config files (tested in override tests)
204
- // Config files provide defaults (tested in config file tests)
205
- expect(true).toBe(true);
206
- });
207
- });
208
- });
209
- //# sourceMappingURL=studio-create.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"studio-create.test.js","sourceRoot":"","sources":["../../../src/__tests__/integration/studio-create.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=studio-update.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"studio-update.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/integration/studio-update.test.ts"],"names":[],"mappings":""}