719032b19f
Update Schema / Update configuration json schema (push) Has been cancelled
Memory Benchmark / Memory Test (Full Analysis) (push) Has been cancelled
CI Quality / Lint GitHub Actions (actionlint) (push) Has been cancelled
CI Quality / Lint GitHub Actions (zizmor) (push) Has been cancelled
CI Quality / Check typos (push) Has been cancelled
CI / Test coverage (push) Has been cancelled
CI / Test (22.x, windows-latest) (push) Has been cancelled
CI / Test (24.x, macos-latest) (push) Has been cancelled
CI / Test (24.x, ubuntu-latest) (push) Has been cancelled
CI / Test (24.x, windows-latest) (push) Has been cancelled
CI / Test (26.x, macos-latest) (push) Has been cancelled
CI / Test (26.x, ubuntu-latest) (push) Has been cancelled
CI / Test (26.x, windows-latest) (push) Has been cancelled
CI / Test with Bun (latest, macos-latest) (push) Has been cancelled
CI / Test with Bun (latest, ubuntu-latest) (push) Has been cancelled
CI / Test with Bun (latest, windows-latest) (push) Has been cancelled
CI / Build and run (22.x, macos-latest) (push) Has been cancelled
CI / Build and run (22.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (22.x, windows-latest) (push) Has been cancelled
autofix.ci / autofix (push) Has been cancelled
CI Browser Extension / Lint Browser Extension (push) Has been cancelled
CI Browser Extension / Test Browser Extension (push) Has been cancelled
Memory Benchmark / Memory Test (push) Has been cancelled
CI Website / Lint Website Client (push) Has been cancelled
CI Website / Lint Website Server (push) Has been cancelled
CI Website / Test Website Server (push) Has been cancelled
CI Website / Bundle Website Server (push) Has been cancelled
CI / Lint Biome (push) Has been cancelled
CI / Lint oxlint (push) Has been cancelled
CI / Lint TypeScript (push) Has been cancelled
CI / Lint Secretlint (push) Has been cancelled
CI / Test (22.x, macos-latest) (push) Has been cancelled
CI / Test (22.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (24.x, macos-latest) (push) Has been cancelled
CI / Build and run (24.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (24.x, windows-latest) (push) Has been cancelled
CI / Build and run (26.x, macos-latest) (push) Has been cancelled
CI / Build and run (26.x, ubuntu-latest) (push) Has been cancelled
CI / Build and run (26.x, windows-latest) (push) Has been cancelled
CI / Build and run with Bun (latest, macos-latest) (push) Has been cancelled
CI / Build and run with Bun (latest, ubuntu-latest) (push) Has been cancelled
CI / Build and run with Bun (latest, windows-latest) (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Docker / build (linux/amd64, ubuntu-latest) (push) Has been cancelled
Docker / build (linux/arm/v7, ubuntu-24.04-arm) (push) Has been cancelled
Docker / build (linux/arm64, ubuntu-24.04-arm) (push) Has been cancelled
Docker / merge (push) Has been cancelled
Pack repository with Repomix / pack-repo (push) Has been cancelled
Performance Benchmark History / Benchmark (macos-latest) (push) Has been cancelled
Performance Benchmark History / Benchmark (ubuntu-latest) (push) Has been cancelled
Performance Benchmark History / Benchmark (windows-latest) (push) Has been cancelled
Performance Benchmark History / Store Results (push) Has been cancelled
Test Repomix Action / Test Node.js 22 (push) Has been cancelled
Test Repomix Action / Test Node.js 24 (push) Has been cancelled
Test Repomix Action / Test Node.js 26 (push) Has been cancelled
70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import { isValidRemoteValue } from './validation.js';
|
|
|
|
export interface CliCommandPackOptions {
|
|
format?: string;
|
|
removeComments?: boolean;
|
|
removeEmptyLines?: boolean;
|
|
showLineNumbers?: boolean;
|
|
fileSummary?: boolean;
|
|
directoryStructure?: boolean;
|
|
includePatterns?: string;
|
|
ignorePatterns?: string;
|
|
outputParsable?: boolean;
|
|
compress?: boolean;
|
|
}
|
|
|
|
// Escape a string for safe use in shell commands
|
|
const shellEscape = (value: string): string => `'${value.replace(/'/g, "'\\''")}'`;
|
|
|
|
export function generateCliCommand(repositoryUrl: string | undefined, packOptions?: CliCommandPackOptions): string {
|
|
const parts: string[] = ['npx repomix'];
|
|
|
|
// Add remote repository URL (only for valid remote values, not uploaded file names)
|
|
if (repositoryUrl && isValidRemoteValue(repositoryUrl)) {
|
|
parts.push(`--remote ${shellEscape(repositoryUrl)}`);
|
|
}
|
|
|
|
// Only add options if packOptions is provided
|
|
if (packOptions) {
|
|
// Format (only add if not default 'xml')
|
|
if (packOptions.format && packOptions.format !== 'xml') {
|
|
parts.push(`--style ${packOptions.format}`);
|
|
}
|
|
|
|
// Boolean flags that enable features
|
|
if (packOptions.removeComments) {
|
|
parts.push('--remove-comments');
|
|
}
|
|
if (packOptions.removeEmptyLines) {
|
|
parts.push('--remove-empty-lines');
|
|
}
|
|
if (packOptions.showLineNumbers) {
|
|
parts.push('--output-show-line-numbers');
|
|
}
|
|
if (packOptions.outputParsable) {
|
|
parts.push('--parsable-style');
|
|
}
|
|
if (packOptions.compress) {
|
|
parts.push('--compress');
|
|
}
|
|
|
|
// Boolean flags that disable defaults (fileSummary and directoryStructure default to true)
|
|
if (packOptions.fileSummary === false) {
|
|
parts.push('--no-file-summary');
|
|
}
|
|
if (packOptions.directoryStructure === false) {
|
|
parts.push('--no-directory-structure');
|
|
}
|
|
|
|
// String options
|
|
if (packOptions.includePatterns?.trim()) {
|
|
parts.push(`--include ${shellEscape(packOptions.includePatterns.trim())}`);
|
|
}
|
|
if (packOptions.ignorePatterns?.trim()) {
|
|
parts.push(`--ignore ${shellEscape(packOptions.ignorePatterns.trim())}`);
|
|
}
|
|
}
|
|
|
|
return parts.join(' ');
|
|
}
|