@vibe-validate/cli 0.9.11 → 0.10.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 (33) hide show
  1. package/dist/commands/doctor.d.ts.map +1 -1
  2. package/dist/commands/doctor.js +151 -38
  3. package/dist/commands/doctor.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +228 -109
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/utils/config-loader.d.ts +3 -7
  8. package/dist/utils/config-loader.d.ts.map +1 -1
  9. package/dist/utils/config-loader.js +7 -19
  10. package/dist/utils/config-loader.js.map +1 -1
  11. package/dist/utils/git-detection.d.ts +41 -0
  12. package/dist/utils/git-detection.d.ts.map +1 -0
  13. package/dist/utils/git-detection.js +109 -0
  14. package/dist/utils/git-detection.js.map +1 -0
  15. package/dist/utils/runner-adapter.js +3 -3
  16. package/dist/utils/runner-adapter.js.map +1 -1
  17. package/dist/utils/setup-checks/gitignore-check.d.ts +23 -0
  18. package/dist/utils/setup-checks/gitignore-check.d.ts.map +1 -0
  19. package/dist/utils/setup-checks/gitignore-check.js +156 -0
  20. package/dist/utils/setup-checks/gitignore-check.js.map +1 -0
  21. package/dist/utils/setup-checks/hooks-check.d.ts +27 -0
  22. package/dist/utils/setup-checks/hooks-check.d.ts.map +1 -0
  23. package/dist/utils/setup-checks/hooks-check.js +175 -0
  24. package/dist/utils/setup-checks/hooks-check.js.map +1 -0
  25. package/dist/utils/setup-checks/workflow-check.d.ts +22 -0
  26. package/dist/utils/setup-checks/workflow-check.d.ts.map +1 -0
  27. package/dist/utils/setup-checks/workflow-check.js +147 -0
  28. package/dist/utils/setup-checks/workflow-check.js.map +1 -0
  29. package/dist/utils/setup-engine.d.ts +155 -0
  30. package/dist/utils/setup-engine.d.ts.map +1 -0
  31. package/dist/utils/setup-engine.js +31 -0
  32. package/dist/utils/setup-engine.js.map +1 -0
  33. package/package.json +4 -4
@@ -3,61 +3,45 @@
3
3
  *
4
4
  * Interactive setup wizard for vibe-validate configuration.
5
5
  */
6
- import { writeFileSync } from 'fs';
6
+ import { writeFileSync, existsSync } from 'fs';
7
7
  import { join } from 'path';
8
- import { execSync } from 'child_process';
8
+ import { pathToFileURL } from 'url';
9
+ import { dump as stringifyYaml } from 'js-yaml';
9
10
  import chalk from 'chalk';
10
11
  import { configExists } from '../utils/config-loader.js';
11
- import { GIT_DEFAULTS } from '@vibe-validate/config';
12
+ import { detectGitConfig } from '../utils/git-detection.js';
13
+ import { GitignoreSetupCheck } from '../utils/setup-checks/gitignore-check.js';
14
+ import { HooksSetupCheck } from '../utils/setup-checks/hooks-check.js';
15
+ import { WorkflowSetupCheck } from '../utils/setup-checks/workflow-check.js';
12
16
  export function initCommand(program) {
13
17
  program
14
18
  .command('init')
15
19
  .description('Initialize vibe-validate configuration')
16
20
  .option('-p, --preset <preset>', 'Use preset (typescript-library|typescript-nodejs|typescript-react)')
17
21
  .option('-f, --force', 'Overwrite existing configuration')
22
+ .option('--dry-run', 'Preview changes without writing files')
23
+ .option('--setup-hooks', 'Install pre-commit hook')
24
+ .option('--setup-workflow', 'Create GitHub Actions workflow')
25
+ .option('--fix-gitignore', 'Add state file to .gitignore')
26
+ .option('--migrate', 'Migrate .mjs config to .yaml format')
18
27
  .action(async (options) => {
19
28
  try {
20
29
  const cwd = process.cwd();
21
- // Check if config already exists
22
- if (configExists(cwd) && !options.force) {
23
- console.error(chalk.red('❌ Configuration file already exists'));
24
- console.error(chalk.gray(' Use --force to overwrite'));
25
- process.exit(1);
30
+ const isDryRun = options.dryRun || false;
31
+ // Handle migration
32
+ if (options.migrate) {
33
+ await handleMigration(cwd, options, isDryRun);
34
+ return;
26
35
  }
27
- const preset = options.preset || 'typescript-library';
28
- // Validate preset
29
- const validPresets = ['typescript-library', 'typescript-nodejs', 'typescript-react'];
30
- if (!validPresets.includes(preset)) {
31
- console.error(chalk.red(`❌ Invalid preset: ${preset}`));
32
- console.error(chalk.gray(` Valid presets: ${validPresets.join(', ')}`));
33
- process.exit(1);
36
+ // Check if this is a focused operation
37
+ const isFocusedOperation = options.setupHooks || options.setupWorkflow || options.fixGitignore;
38
+ // Handle focused operations
39
+ if (isFocusedOperation) {
40
+ await handleFocusedOperations(cwd, options, isDryRun);
41
+ return;
34
42
  }
35
- // Detect git configuration
36
- const gitConfig = detectGitConfig();
37
- if (gitConfig.detected) {
38
- console.log(chalk.blue('🔍 Auto-detected git configuration:'));
39
- console.log(chalk.gray(` Main branch: ${gitConfig.mainBranch}`));
40
- console.log(chalk.gray(` Remote: ${gitConfig.remoteOrigin}`));
41
- }
42
- else {
43
- console.log(chalk.gray('ℹ️ Using default git configuration (main, origin)'));
44
- }
45
- // Generate config file content
46
- const configContent = generateConfig(preset, gitConfig);
47
- const configPath = join(cwd, 'vibe-validate.config.ts');
48
- // Write config file
49
- writeFileSync(configPath, configContent, 'utf-8');
50
- console.log(chalk.green('✅ Configuration file created successfully'));
51
- console.log(chalk.blue(`📋 Created: ${configPath}`));
52
- console.log(chalk.gray(` Preset: ${preset}`));
53
- console.log();
54
- console.log(chalk.yellow('Next steps:'));
55
- console.log(chalk.gray(' 1. Review and customize vibe-validate.config.ts'));
56
- console.log(chalk.gray(' 2. Run: vibe-validate validate'));
57
- console.log(chalk.gray(' 3. Add to package.json scripts:'));
58
- console.log(chalk.gray(' "validate": "vibe-validate validate"'));
59
- console.log(chalk.gray(' "pre-commit": "vibe-validate pre-commit"'));
60
- process.exit(0);
43
+ // Handle config initialization
44
+ await handleConfigInitialization(cwd, options, isDryRun);
61
45
  }
62
46
  catch (error) {
63
47
  console.error(chalk.red('❌ Failed to initialize configuration:'), error);
@@ -65,86 +49,221 @@ export function initCommand(program) {
65
49
  }
66
50
  });
67
51
  }
68
- function detectGitConfig() {
69
- const defaults = {
70
- mainBranch: GIT_DEFAULTS.MAIN_BRANCH,
71
- remoteOrigin: GIT_DEFAULTS.REMOTE_ORIGIN,
72
- detected: false,
73
- };
74
- try {
75
- // Check if we're in a git repository
76
- execSync('git rev-parse --git-dir', { stdio: 'pipe' });
52
+ /**
53
+ * Handle focused operations (--setup-hooks, --setup-workflow, --fix-gitignore)
54
+ *
55
+ * Executes specific setup tasks independently without creating config files.
56
+ * All operations are idempotent and can be safely run multiple times.
57
+ *
58
+ * @param cwd - Current working directory
59
+ * @param options - Init command options
60
+ * @param isDryRun - Preview mode (no file modifications)
61
+ * @throws Error if setup check fails
62
+ */
63
+ async function handleFocusedOperations(cwd, options, isDryRun) {
64
+ const fixOptions = { cwd, dryRun: isDryRun, force: options.force };
65
+ const operations = [];
66
+ // Setup gitignore check
67
+ if (options.fixGitignore) {
68
+ operations.push({
69
+ name: 'Gitignore',
70
+ check: new GitignoreSetupCheck(),
71
+ enabled: true,
72
+ });
77
73
  }
78
- catch {
79
- // Not a git repository - use defaults
80
- return defaults;
74
+ // Setup hooks check
75
+ if (options.setupHooks) {
76
+ operations.push({
77
+ name: 'Pre-commit hook',
78
+ check: new HooksSetupCheck(),
79
+ enabled: true,
80
+ });
81
81
  }
82
- let mainBranch = GIT_DEFAULTS.MAIN_BRANCH;
83
- let remoteOrigin = GIT_DEFAULTS.REMOTE_ORIGIN;
84
- let detected = false;
85
- // Try to detect main branch from remote HEAD
86
- try {
87
- // First, get list of remotes
88
- const remotesOutput = execSync('git remote', { encoding: 'utf8', stdio: 'pipe' }).trim();
89
- const remotes = remotesOutput.split('\n').filter(Boolean);
90
- if (remotes.length > 0) {
91
- // Prefer 'upstream' if it exists (forked repo workflow), otherwise use first remote
92
- if (remotes.includes('upstream')) {
93
- remoteOrigin = 'upstream';
94
- }
95
- else if (remotes.includes('origin')) {
96
- remoteOrigin = 'origin';
97
- }
98
- else {
99
- remoteOrigin = remotes[0]; // Use first available remote
100
- }
101
- // Try to detect main branch from remote HEAD
102
- try {
103
- const headRef = execSync(`git symbolic-ref refs/remotes/${remoteOrigin}/HEAD`, {
104
- encoding: 'utf8',
105
- stdio: 'pipe',
106
- }).trim();
107
- mainBranch = headRef.replace(`refs/remotes/${remoteOrigin}/`, '');
108
- detected = true;
109
- }
110
- catch {
111
- // Remote HEAD not set, try to detect from common branch names
112
- try {
113
- const branches = execSync(`git ls-remote --heads ${remoteOrigin}`, {
114
- encoding: 'utf8',
115
- stdio: 'pipe',
116
- }).trim();
117
- // Check for common main branch names in order of preference
118
- if (branches.includes('refs/heads/main')) {
119
- mainBranch = 'main';
120
- detected = true;
121
- }
122
- else if (branches.includes('refs/heads/master')) {
123
- mainBranch = 'master';
124
- detected = true;
125
- }
126
- else if (branches.includes('refs/heads/develop')) {
127
- mainBranch = 'develop';
128
- detected = true;
82
+ // Setup workflow check
83
+ if (options.setupWorkflow) {
84
+ operations.push({
85
+ name: 'GitHub Actions workflow',
86
+ check: new WorkflowSetupCheck(),
87
+ enabled: true,
88
+ });
89
+ }
90
+ // Execute operations
91
+ for (const operation of operations) {
92
+ if (!operation.enabled)
93
+ continue;
94
+ if (isDryRun) {
95
+ // Preview mode
96
+ const preview = await operation.check.preview(fixOptions);
97
+ console.log(chalk.blue(`\n🔍 ${operation.name} (dry-run):`));
98
+ console.log(chalk.gray(` ${preview.description}`));
99
+ if (preview.changes && preview.changes.length > 0) {
100
+ console.log(chalk.yellow(' Would create:'));
101
+ for (const change of preview.changes) {
102
+ console.log(chalk.gray(` - ${change.file} (${change.action})`));
103
+ if (change.content && change.content.length < 500) {
104
+ console.log(chalk.gray('\n' + change.content));
129
105
  }
130
106
  }
131
- catch {
132
- // Failed to list remote branches - use defaults
107
+ }
108
+ }
109
+ else {
110
+ // Fix mode
111
+ const result = await operation.check.fix(fixOptions);
112
+ if (result.success) {
113
+ if (result.filesChanged.length > 0) {
114
+ console.log(chalk.green(`✅ ${operation.name}: ${result.message}`));
115
+ }
116
+ else {
117
+ console.log(chalk.gray(`ℹ️ ${operation.name}: ${result.message}`));
133
118
  }
134
119
  }
120
+ else {
121
+ console.error(chalk.red(`❌ ${operation.name}: ${result.message}`));
122
+ }
135
123
  }
136
124
  }
137
- catch {
138
- // Failed to detect - use defaults
125
+ if (isDryRun) {
126
+ console.log(chalk.yellow('\n💡 Run without --dry-run to apply changes'));
139
127
  }
140
- return {
141
- mainBranch,
142
- remoteOrigin,
143
- detected,
144
- };
128
+ process.exit(0);
129
+ }
130
+ /**
131
+ * Handle config file initialization
132
+ *
133
+ * Creates a new vibe-validate configuration file using the specified preset.
134
+ * Auto-detects git configuration and generates appropriate defaults.
135
+ *
136
+ * @param cwd - Current working directory
137
+ * @param options - Init command options
138
+ * @param isDryRun - Preview mode (no file modifications)
139
+ * @throws Error if config already exists (unless force is true)
140
+ */
141
+ async function handleConfigInitialization(cwd, options, isDryRun) {
142
+ // Check if config already exists
143
+ if (configExists(cwd) && !options.force && !isDryRun) {
144
+ console.error(chalk.red('❌ Configuration file already exists'));
145
+ console.error(chalk.gray(' Use --force to overwrite'));
146
+ process.exit(1);
147
+ }
148
+ const preset = options.preset || 'typescript-library';
149
+ // Validate preset
150
+ const validPresets = ['typescript-library', 'typescript-nodejs', 'typescript-react'];
151
+ if (!validPresets.includes(preset)) {
152
+ console.error(chalk.red(`❌ Invalid preset: ${preset}`));
153
+ console.error(chalk.gray(` Valid presets: ${validPresets.join(', ')}`));
154
+ process.exit(1);
155
+ }
156
+ // Detect git configuration
157
+ const gitConfig = detectGitConfig();
158
+ if (!isDryRun) {
159
+ if (gitConfig.detected) {
160
+ console.log(chalk.blue('🔍 Auto-detected git configuration:'));
161
+ console.log(chalk.gray(` Main branch: ${gitConfig.mainBranch}`));
162
+ console.log(chalk.gray(` Remote: ${gitConfig.remoteOrigin}`));
163
+ }
164
+ else {
165
+ console.log(chalk.gray('ℹ️ Using default git configuration (main, origin)'));
166
+ }
167
+ }
168
+ // Generate config file content (still using TypeScript for now)
169
+ const configContent = generateConfig(preset, gitConfig);
170
+ const configPath = join(cwd, 'vibe-validate.config.ts');
171
+ if (isDryRun) {
172
+ // Preview mode - show what would be created
173
+ console.log(chalk.blue('🔍 Configuration preview (dry-run):'));
174
+ console.log(chalk.yellow(' Would create:'));
175
+ console.log(chalk.gray(` - ${configPath}`));
176
+ console.log(chalk.gray(` - Preset: ${preset}`));
177
+ console.log();
178
+ console.log(chalk.yellow('💡 Run without --dry-run to create configuration'));
179
+ process.exit(0);
180
+ }
181
+ // Write config file
182
+ writeFileSync(configPath, configContent, 'utf-8');
183
+ console.log(chalk.green('✅ Configuration file created successfully'));
184
+ console.log(chalk.blue(`📋 Created: ${configPath}`));
185
+ console.log(chalk.gray(` Preset: ${preset}`));
186
+ console.log();
187
+ console.log(chalk.yellow('Next steps:'));
188
+ console.log(chalk.gray(' 1. Review and customize vibe-validate.config.ts'));
189
+ console.log(chalk.gray(' 2. Run: vibe-validate validate'));
190
+ console.log(chalk.gray(' 3. Add to package.json scripts:'));
191
+ console.log(chalk.gray(' "validate": "vibe-validate validate"'));
192
+ console.log(chalk.gray(' "pre-commit": "vibe-validate pre-commit"'));
193
+ process.exit(0);
194
+ }
195
+ /**
196
+ * Handle migration from .mjs to .yaml config format
197
+ *
198
+ * Loads the existing .mjs configuration, converts it to YAML format,
199
+ * and writes it to vibe-validate.config.yaml.
200
+ *
201
+ * @param cwd - Current working directory
202
+ * @param options - Init command options
203
+ * @param isDryRun - Preview mode (no file modifications)
204
+ * @throws Error if .mjs config doesn't exist or .yaml already exists (without --force)
205
+ */
206
+ async function handleMigration(cwd, options, isDryRun) {
207
+ const mjsPath = join(cwd, 'vibe-validate.config.mjs');
208
+ const yamlPath = join(cwd, 'vibe-validate.config.yaml');
209
+ // Check if .mjs config exists
210
+ if (!existsSync(mjsPath)) {
211
+ console.error(chalk.red('❌ No .mjs config found to migrate'));
212
+ console.error(chalk.gray(' Expected: vibe-validate.config.mjs'));
213
+ process.exit(1);
214
+ }
215
+ // Check if .yaml config already exists (unless --force)
216
+ if (existsSync(yamlPath) && !options.force && !isDryRun) {
217
+ console.error(chalk.red('❌ YAML config already exists'));
218
+ console.error(chalk.gray(' Use --force to overwrite'));
219
+ process.exit(1);
220
+ }
221
+ // Load the .mjs config
222
+ const fileUrl = pathToFileURL(mjsPath).href;
223
+ const module = await import(fileUrl);
224
+ const config = module.default || module;
225
+ // Convert to YAML
226
+ const yamlContent = stringifyYaml(config, {
227
+ indent: 2,
228
+ lineWidth: 100,
229
+ noRefs: true,
230
+ });
231
+ if (isDryRun) {
232
+ // Preview mode
233
+ console.log(chalk.blue('🔍 Migration preview (dry-run):'));
234
+ console.log(chalk.yellow(' Would create:'));
235
+ console.log(chalk.gray(` - ${yamlPath}`));
236
+ console.log();
237
+ console.log(chalk.gray('Preview of YAML content:'));
238
+ console.log(chalk.gray('─'.repeat(60)));
239
+ console.log(yamlContent);
240
+ console.log(chalk.gray('─'.repeat(60)));
241
+ console.log();
242
+ console.log(chalk.yellow('💡 Run without --dry-run to apply migration'));
243
+ console.log(chalk.gray(' Original .mjs file will be preserved (you can delete it manually)'));
244
+ process.exit(0);
245
+ }
246
+ // Write YAML config
247
+ writeFileSync(yamlPath, yamlContent, 'utf-8');
248
+ console.log(chalk.green('✅ Migration completed successfully'));
249
+ console.log(chalk.blue(`📋 Created: ${yamlPath}`));
250
+ console.log();
251
+ console.log(chalk.yellow('Next steps:'));
252
+ console.log(chalk.gray(' 1. Review vibe-validate.config.yaml'));
253
+ console.log(chalk.gray(' 2. Test with: vibe-validate validate'));
254
+ console.log(chalk.gray(` 3. Delete old config: rm ${mjsPath}`));
255
+ console.log(chalk.gray(' 4. Commit the new YAML config'));
256
+ process.exit(0);
145
257
  }
146
258
  /**
147
259
  * Generate configuration content based on preset
260
+ *
261
+ * Creates TypeScript configuration file content with the specified preset
262
+ * and git configuration values.
263
+ *
264
+ * @param preset - Preset name (typescript-library, typescript-nodejs, typescript-react)
265
+ * @param gitConfig - Detected git configuration
266
+ * @returns TypeScript configuration file content
148
267
  */
149
268
  function generateConfig(preset, gitConfig) {
150
269
  const configs = {
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -7,13 +7,9 @@ import type { VibeValidateConfig } from '@vibe-validate/config';
7
7
  /**
8
8
  * Load vibe-validate configuration from project root
9
9
  *
10
- * Searches for configuration in multiple file patterns:
11
- * - vibe-validate.config.ts
12
- * - vibe-validate.config.js
13
- * - vibe-validate.config.mjs
14
- * - .vibe-validate.ts
15
- * - .vibe-validate.js
16
- * - .vibe-validate.mjs
10
+ * Searches for configuration files:
11
+ * - vibe-validate.config.yaml (primary format)
12
+ * - vibe-validate.config.mjs (deprecated, legacy support only)
17
13
  *
18
14
  * @param cwd Current working directory (defaults to process.cwd())
19
15
  * @returns Configuration object or null if not found
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE;;;;;;;;;;;;;GAaG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAajF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAYlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmB1D"}
1
+ {"version":3,"file":"config-loader.d.ts","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAGhE;;;;;;;;;GASG;AACH,wBAAsB,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAajF;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAQlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAe1D"}
@@ -10,13 +10,9 @@ import chalk from 'chalk';
10
10
  /**
11
11
  * Load vibe-validate configuration from project root
12
12
  *
13
- * Searches for configuration in multiple file patterns:
14
- * - vibe-validate.config.ts
15
- * - vibe-validate.config.js
16
- * - vibe-validate.config.mjs
17
- * - .vibe-validate.ts
18
- * - .vibe-validate.js
19
- * - .vibe-validate.mjs
13
+ * Searches for configuration files:
14
+ * - vibe-validate.config.yaml (primary format)
15
+ * - vibe-validate.config.mjs (deprecated, legacy support only)
20
16
  *
21
17
  * @param cwd Current working directory (defaults to process.cwd())
22
18
  * @returns Configuration object or null if not found
@@ -44,12 +40,8 @@ export async function loadConfig(cwd) {
44
40
  export function configExists(cwd) {
45
41
  const searchDir = cwd ?? process.cwd();
46
42
  const configPaths = [
47
- 'vibe-validate.config.ts',
48
- 'vibe-validate.config.js',
49
- 'vibe-validate.config.mjs',
50
- '.vibe-validate.ts',
51
- '.vibe-validate.js',
52
- '.vibe-validate.mjs',
43
+ 'vibe-validate.config.yaml',
44
+ 'vibe-validate.config.mjs', // Legacy (deprecated)
53
45
  ];
54
46
  return configPaths.some(path => existsSync(join(searchDir, path)));
55
47
  }
@@ -62,12 +54,8 @@ export function configExists(cwd) {
62
54
  export function findConfigPath(cwd) {
63
55
  const searchDir = cwd ?? process.cwd();
64
56
  const configPaths = [
65
- 'vibe-validate.config.ts',
66
- 'vibe-validate.config.js',
67
- 'vibe-validate.config.mjs',
68
- '.vibe-validate.ts',
69
- '.vibe-validate.js',
70
- '.vibe-validate.mjs',
57
+ 'vibe-validate.config.yaml',
58
+ 'vibe-validate.config.mjs', // Legacy (deprecated)
71
59
  ];
72
60
  for (const path of configPaths) {
73
61
  const fullPath = join(searchDir, path);
@@ -1 +1 @@
1
- {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY;IAC3C,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,mFAAmF;QACnF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,MAAM,IAAI,IAAI,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG;QAClB,yBAAyB;QACzB,yBAAyB;QACzB,0BAA0B;QAC1B,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB;KACrB,CAAC;IAEF,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG;QAClB,yBAAyB;QACzB,yBAAyB;QACzB,0BAA0B;QAC1B,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB;KACrB,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/utils/config-loader.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,GAAY;IAC3C,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEvC,IAAI,CAAC;QACH,mFAAmF;QACnF,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAC;QAClD,OAAO,MAAM,IAAI,IAAI,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,mCAAmC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG;QAClB,2BAA2B;QAC3B,0BAA0B,EAAE,sBAAsB;KACnD,CAAC;IAEF,OAAO,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,MAAM,SAAS,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACvC,MAAM,WAAW,GAAG;QAClB,2BAA2B;QAC3B,0BAA0B,EAAE,sBAAsB;KACnD,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Git Detection Utilities
3
+ *
4
+ * Shared utilities for detecting git configuration (main branch, remote origin).
5
+ * Used by both init and doctor commands.
6
+ */
7
+ /**
8
+ * Result of git configuration detection
9
+ */
10
+ export interface DetectedGitConfig {
11
+ /** The detected or default main branch name (e.g., 'main', 'master', 'develop') */
12
+ mainBranch: string;
13
+ /** The detected or default remote origin name (e.g., 'origin', 'upstream') */
14
+ remoteOrigin: string;
15
+ /** Whether git configuration was successfully detected (false means defaults were used) */
16
+ detected: boolean;
17
+ }
18
+ /**
19
+ * Detects git configuration from the current repository.
20
+ *
21
+ * This function attempts to auto-detect the main branch and remote origin
22
+ * by inspecting the git repository. It follows this detection strategy:
23
+ *
24
+ * 1. Check if we're in a git repository
25
+ * 2. Detect available remotes (prefer 'upstream' > 'origin' > first available)
26
+ * 3. Try to detect main branch from remote HEAD reference
27
+ * 4. If remote HEAD is not set, check for common branch names (main > master > develop)
28
+ * 5. Fall back to defaults if detection fails
29
+ *
30
+ * @returns {DetectedGitConfig} The detected or default git configuration
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * const gitConfig = detectGitConfig();
35
+ * console.log(gitConfig.mainBranch); // 'main'
36
+ * console.log(gitConfig.remoteOrigin); // 'origin'
37
+ * console.log(gitConfig.detected); // true if detected, false if defaults
38
+ * ```
39
+ */
40
+ export declare function detectGitConfig(): DetectedGitConfig;
41
+ //# sourceMappingURL=git-detection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-detection.d.ts","sourceRoot":"","sources":["../../src/utils/git-detection.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mFAAmF;IACnF,UAAU,EAAE,MAAM,CAAC;IACnB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,2FAA2F;IAC3F,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CA4EnD"}