@re-shell/cli
Version:
Full-stack development platform uniting microservices and microfrontends. Build complete applications with .NET (ASP.NET Core Web API, Minimal API), Java (Spring Boot, Quarkus, Micronaut, Vert.x), Rust (Actix-Web, Warp, Rocket, Axum), Python (FastAPI, Dja
90 lines (89 loc) • 2.7 kB
TypeScript
export interface BuildTarget {
name: string;
path: string;
type: 'app' | 'package' | 'lib' | 'tool';
buildScript: string;
testScript?: string;
dependencies: string[];
outputs: string[];
inputs: string[];
lastBuildTime?: number;
buildHash?: string;
}
export interface BuildPlan {
targets: BuildTarget[];
buildOrder: string[];
parallelGroups: string[][];
totalEstimatedTime: number;
optimizations: string[];
}
export interface BuildResult {
target: string;
success: boolean;
duration: number;
output: string;
error?: string;
outputSize?: number;
cacheHit?: boolean;
}
export interface IncrementalBuildOptions {
maxParallelBuilds: number;
enableCache: boolean;
cacheLocation: string;
cleanBuild: boolean;
dryRun: boolean;
verbose: boolean;
skipTests: boolean;
failFast: boolean;
buildTimeout: number;
}
export interface BuildCache {
version: string;
builds: Record<string, {
hash: string;
timestamp: number;
duration: number;
success: boolean;
outputSize: number;
}>;
}
export declare class IncrementalBuilder {
private rootPath;
private changeDetector;
private impactAnalyzer;
private buildCache;
private options;
constructor(rootPath: string, options?: Partial<IncrementalBuildOptions>);
initialize(): Promise<void>;
createBuildPlan(changedFiles?: string[]): Promise<BuildPlan>;
executeBuildPlan(plan: BuildPlan): Promise<BuildResult[]>;
buildTarget(target: BuildTarget): Promise<BuildResult>;
private executeBuildScript;
private discoverBuildTargets;
private calculateOptimalBuildOrder;
private createParallelGroups;
private estimateBuildTime;
private estimateTargetBuildTime;
private generateOptimizations;
private isCacheValid;
private detectPackageManager;
private detectOutputPaths;
private detectInputPaths;
private getFilesRecursive;
private getLastBuildTime;
private calculateBuildHash;
private calculateOutputSize;
private getDirectorySize;
private loadBuildCache;
private saveBuildCache;
private updateBuildCache;
getBuildStats(): {
totalBuilds: number;
cacheHitRate: number;
averageBuildTime: number;
totalCacheSize: number;
};
clearCache(): Promise<void>;
}
export declare function createIncrementalBuilder(rootPath: string, options?: Partial<IncrementalBuildOptions>): Promise<IncrementalBuilder>;
export declare function runIncrementalBuild(rootPath: string, changedFiles?: string[], options?: Partial<IncrementalBuildOptions>): Promise<BuildResult[]>;