@alauda/doom
Version:
Doctor Doom making docs.
45 lines (44 loc) • 1.48 kB
TypeScript
import * as prompts from '@inquirer/prompts';
import { Command } from 'commander';
import type { ContentProcessor } from '../types.js';
export declare const DEFAULT_PATH = "templates/scaffolding.yaml";
export interface ScaffoldingTemplate {
repo: string;
branches?: string[];
scaffoldingPath?: string;
}
type Prompts = Omit<typeof prompts, 'Separator'>;
type PromptOptions<T extends keyof Prompts> = Prompts[T] extends (config: infer R) => any ? R : never;
export interface ScaffoldingParameter<T extends keyof Prompts = keyof Prompts> {
name: string;
type: T;
options: PromptOptions<T>;
}
export type ScaffoldingLayoutWriteMode = 'append' | 'write';
export interface ScaffoldingLayoutBase {
processors?: ContentProcessor[];
writeMode?: ScaffoldingLayoutWriteMode;
}
export interface ScaffoldingLayoutMatcher extends ScaffoldingLayoutBase {
match: string[];
}
export interface ScaffoldingLayoutFolder extends ScaffoldingLayoutBase {
type: 'folder';
matchers?: ScaffoldingLayoutMatcher[];
}
export interface ScaffoldingLayoutFile extends ScaffoldingLayoutBase {
type: 'file';
}
export type ScaffoldingLayout = {
source: string;
target: string;
when?: string;
} & (ScaffoldingLayoutFile | ScaffoldingLayoutFolder);
export interface Scaffolding {
name: string;
description?: string;
parameters?: ScaffoldingParameter[];
layout?: ScaffoldingLayout[];
}
export declare const newCommand: Command;
export {};