Skip to content

Commit 83887fb

Browse files
committed
Update for CI failures
1 parent e0d8939 commit 83887fb

26 files changed

Lines changed: 519 additions & 298 deletions

claude-config-composer/biome.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"$schema": "https://biomejs.dev/schemas/2.2.0/schema.json",
2+
"$schema": "https://biomejs.dev/schemas/2.2.2/schema.json",
33
"vcs": {
44
"enabled": false,
55
"clientKind": "git",

claude-config-composer/src/cli-simple.ts

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
* This file provides a minimal interface for CI testing
66
*/
77

8+
import chalk from 'chalk';
89
import { program } from 'commander';
910
import { ConfigRegistry } from './registry/config-registry';
10-
import chalk from 'chalk';
1111

1212
const packageJson = require('../package.json');
1313

@@ -33,21 +33,23 @@ program
3333
if (registry.getAll().length === 0) {
3434
await registry.initialize();
3535
}
36-
36+
3737
console.log(chalk.cyan.bold('\n📚 Available Configurations\n'));
38-
38+
3939
const categories = ['framework', 'ui', 'tooling', 'database', 'mcp-server'];
40-
40+
4141
categories.forEach(category => {
4242
const configs = registry.getByCategory(category);
4343
if (configs.length > 0) {
4444
console.log(chalk.yellow(`\n${category.toUpperCase()}`));
4545
configs.forEach(config => {
46-
console.log(` • ${chalk.white(config.name)} ${chalk.gray(`v${config.version}`)} - ${chalk.dim(config.description)}`);
46+
console.log(
47+
` • ${chalk.white(config.name)} ${chalk.gray(`v${config.version}`)} - ${chalk.dim(config.description)}`
48+
);
4749
});
4850
}
4951
});
50-
52+
5153
console.log();
5254
});
5355

@@ -57,4 +59,4 @@ program.parse(process.argv);
5759
// Show help if no command specified
5860
if (!process.argv.slice(2).length) {
5961
program.outputHelp();
60-
}
62+
}

claude-config-composer/src/cli/commands/generate.ts

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ import {
1212
} from '../../utils/error-handler';
1313
import { InputValidator } from '../../utils/input-validator';
1414
import { PathValidationError, PathValidator } from '../../utils/path-validator';
15+
import { createSpinner } from '../../utils/simple-spinner';
1516
import { BackupUtils } from '../utils/backup';
1617
import { DisplayUtils } from '../utils/display';
17-
import { createSpinner } from '../../utils/simple-spinner';
1818

1919
export interface GenerateOptions {
2020
output?: string;
@@ -149,7 +149,10 @@ export class GenerateCommand {
149149
/**
150150
* Get the appropriate output directory
151151
*/
152-
private static async getOutputDirectory(configs: string[], options: GenerateOptions): Promise<string> {
152+
private static async getOutputDirectory(
153+
configs: string[],
154+
options: GenerateOptions
155+
): Promise<string> {
153156
// Validate configs array
154157
try {
155158
InputValidator.validateArrayBounds(configs, 1, 10, 'configuration');
@@ -215,7 +218,7 @@ export class GenerateCommand {
215218
// Current directory always exists, no need to create it
216219
return;
217220
}
218-
221+
219222
// Validate the directory path before creating
220223
const validatedPath = PathValidator.validatePath(dirPath);
221224
if (validatedPath) {

claude-config-composer/src/cli/utils/backup.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import chalk from 'chalk';
22
import fs from 'fs/promises';
33
import path from 'path';
4+
import { getErrorMessage, isFileNotFoundError } from '../../types/errors.js';
45
import { ErrorHandler, FileSystemError } from '../../utils/error-handler';
5-
import { isFileNotFoundError, getErrorMessage } from '../../types/errors.js';
66

77
/**
88
* Backup utilities for existing configurations
@@ -133,7 +133,10 @@ export class BackupUtils {
133133
.sort()
134134
.reverse(); // Most recent first
135135
} catch (error: unknown) {
136-
throw new FileSystemError(`Failed to list backups: ${getErrorMessage(error)}`, error instanceof Error ? error : undefined);
136+
throw new FileSystemError(
137+
`Failed to list backups: ${getErrorMessage(error)}`,
138+
error instanceof Error ? error : undefined
139+
);
137140
}
138141
},
139142
'backup-list',
@@ -162,7 +165,9 @@ export class BackupUtils {
162165
await fs.rm(backupPath, { recursive: true, force: true });
163166
console.log(chalk.gray(`🗑️ Cleaned up old backup: ${backup}`));
164167
} catch (error: unknown) {
165-
console.warn(chalk.yellow(`⚠️ Could not remove backup ${backup}: ${getErrorMessage(error)}`));
168+
console.warn(
169+
chalk.yellow(`⚠️ Could not remove backup ${backup}: ${getErrorMessage(error)}`)
170+
);
166171
}
167172
}
168173
},

claude-config-composer/src/cli/utils/display.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
import chalk from 'chalk';
22
import type {
3-
OptionalGradientString,
4-
OptionalCFonts,
53
OptionalBoxen,
4+
OptionalCFonts,
5+
OptionalGradientString,
66
OptionalNodeEmoji,
77
} from '../../types/optional-deps';
88

99
// Try to load fancy visual dependencies if available
1010
let hasVisuals = false;
11-
let gradient: OptionalGradientString;
11+
let _gradient: OptionalGradientString;
1212
let CFonts: OptionalCFonts;
1313
let boxen: OptionalBoxen;
14-
let emoji: OptionalNodeEmoji;
14+
let _emoji: OptionalNodeEmoji;
1515

1616
try {
17-
gradient = require('gradient-string');
17+
_gradient = require('gradient-string');
1818
CFonts = require('cfonts');
1919
boxen = require('boxen');
20-
emoji = require('node-emoji');
20+
_emoji = require('node-emoji');
2121
hasVisuals = true;
2222
} catch {
2323
// Optional dependencies not available, use basic mode

claude-config-composer/src/generator/config-generator.ts

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,9 @@ import { ComponentMerger } from '../merger/component-merger';
55
import { ConfigMerger } from '../merger/config-merger';
66
import { ConfigParser } from '../parser/config-parser';
77
import type { ConfigMetadata } from '../registry/config-registry';
8-
import {
9-
ErrorHandler,
10-
FileSystemError,
11-
GenerationError,
12-
ValidationError,
13-
} from '../utils/error-handler';
148
import { InputValidator } from '../utils/input-validator';
15-
import { PathValidationError, PathValidator } from '../utils/path-validator';
16-
import { createSpinner, SimpleSpinner } from '../utils/simple-spinner';
9+
import { PathValidator } from '../utils/path-validator';
10+
import { createSpinner } from '../utils/simple-spinner';
1711

1812
export class ConfigGenerator {
1913
private parser: ConfigParser;
@@ -37,7 +31,7 @@ export class ConfigGenerator {
3731
if (!outputDir) {
3832
outputDir = '.';
3933
}
40-
34+
4135
// Normalize the path - this works for both absolute and relative paths
4236
// and doesn't require process.cwd()
4337
outputDir = path.normalize(outputDir);
@@ -91,7 +85,7 @@ export class ConfigGenerator {
9185
let agentsDir: string;
9286
let commandsDir: string;
9387
let hooksDir: string;
94-
88+
9589
if (path.isAbsolute(outputDir)) {
9690
// For absolute paths (e.g., test temp directories), join directly
9791
claudeDir = path.join(outputDir, '.claude');
@@ -206,12 +200,12 @@ export class ConfigGenerator {
206200

207201
// Validate the merged settings
208202
const validatedSettings = InputValidator.validateSettings(mergedSettings);
209-
203+
210204
// Debug: log validated settings
211205
if (process.env.DEBUG) {
212206
console.log('Validated settings:', JSON.stringify(validatedSettings, null, 2));
213207
}
214-
208+
215209
const settingsPath = await PathValidator.createSafeFilePath(
216210
'settings.json',
217211
'.claude',
@@ -280,11 +274,15 @@ export class ConfigGenerator {
280274
try {
281275
await fs.access(settingsPath);
282276
const settingsContent = await fs.readFile(settingsPath, 'utf-8');
283-
const settings = JSON.parse(settingsContent);
277+
const _settings = JSON.parse(settingsContent);
284278
// Don't check for _metadata as it's not part of the Claude Code settings.json schema
285279
// Just verify the JSON is valid
286280
} catch (error) {
287-
if (error instanceof Error && 'code' in error && (error as NodeJS.ErrnoException).code === 'ENOENT') {
281+
if (
282+
error instanceof Error &&
283+
'code' in error &&
284+
(error as NodeJS.ErrnoException).code === 'ENOENT'
285+
) {
288286
errors.push('Missing .claude/settings.json');
289287
} else {
290288
errors.push('Invalid settings.json format');
@@ -293,5 +291,4 @@ export class ConfigGenerator {
293291

294292
return { valid: errors.length === 0, errors };
295293
}
296-
297294
}

0 commit comments

Comments
 (0)