create-zephyr-apps
Version:
A CLI tool to create web applications using Zephyr.
64 lines • 2.46 kB
TypeScript
import type { PackageManager, ResolvedCliOptions } from './cli.js';
import { type TemplateRepository } from './templates.js';
export type ScaffoldStage = 'prepare' | 'fetch-template' | 'copy-template' | 'git' | 'install' | 'build' | 'inspect';
export interface CommandResult {
exitCode: number;
stdout: string;
stderr: string;
}
export interface CommandRunnerOptions {
cwd: string;
timeoutMs?: number;
}
export type CommandRunner = (command: string, args: string[], options: CommandRunnerOptions) => Promise<CommandResult>;
export interface CommandReceipt {
stage: ScaffoldStage;
command: string;
args: string[];
cwd: string;
exitCode: number;
}
export interface ScaffoldFailureReceipt {
stage: ScaffoldStage;
message: string;
exitCode: number;
stderr?: string;
}
export interface ResolvedPackageVersion {
name: string;
version: string;
source: 'workspace' | 'installed';
}
export interface ScaffoldReceipt {
success: boolean;
directory: string;
projectType: ResolvedCliOptions['projectType'];
template: string | null;
templateRepository: string;
templateRevision: string;
packageManager: {
name: PackageManager;
version: string | null;
};
createdFiles: string[];
artifacts: string[];
resolvedPackageVersions: ResolvedPackageVersion[];
commands: CommandReceipt[];
failures: ScaffoldFailureReceipt[];
}
export interface ScaffoldDependencies {
runCommand?: CommandRunner;
repositories?: Partial<Record<ResolvedCliOptions['projectType'], TemplateRepository>>;
onProgress?: (stage: ScaffoldStage, message: string) => void;
removeTemporaryDirectory?: (directory: string) => Promise<void>;
}
export declare class ScaffoldFailure extends Error {
readonly exitCode: number;
readonly receipt: ScaffoldReceipt;
constructor(message: string, exitCode: number, receipt: ScaffoldReceipt);
}
export declare const TEMPLATE_FETCH_TIMEOUT_MS: number;
export declare function defaultCommandRunner(command: string, args: string[], options: CommandRunnerOptions): Promise<CommandResult>;
export declare function scaffoldProject(options: ResolvedCliOptions, dependencies?: ScaffoldDependencies): Promise<ScaffoldReceipt>;
export declare function detectPackageManager(outputDirectory: string, invocationDirectory: string, environment: NodeJS.ProcessEnv): Promise<PackageManager>;
//# sourceMappingURL=scaffold.d.ts.map