@woodpecker-ci/plugin
Version:
Utilities to create a Woodpecker-CI typescript / javascript plugin.
50 lines (47 loc) • 2.26 kB
TypeScript
type SettingsOptions = {
required?: boolean;
trimWhiteSpace?: boolean;
};
declare function getSetting(key: string, options?: SettingsOptions): string | undefined;
declare function getNumberSetting(key: string, options: SettingsOptions & {
required: true;
}): number;
declare function getNumberSetting(key: string, options: SettingsOptions): number | undefined;
declare function getBooleanSetting(key: string, options: SettingsOptions & {
required: true;
}): boolean;
declare function getBooleanSetting(key: string, options: SettingsOptions): boolean | undefined;
declare function getJSONSetting<T = unknown>(key: string, options: SettingsOptions & {
required: true;
}): T;
declare function getJSONSetting<T = unknown>(key: string, options: SettingsOptions): T | undefined;
type SettingType = 'string' | 'number' | 'boolean' | 'json';
type SettingTypeValue<T extends SettingType> = T extends 'boolean' ? boolean : T extends 'string' ? string : T extends 'number' ? number : T extends 'json' ? unknown : never;
type SettingDef<T extends SettingType> = {
type: T;
description: string;
required?: boolean;
default?: SettingTypeValue<T>;
};
type BooleanArgDef = SettingDef<'boolean'>;
type StringArgDef = SettingDef<'string'>;
type NumberArgDef = SettingDef<'number'>;
type JSONArgDef = SettingDef<'json'>;
type SettingsDef = Record<string, BooleanArgDef | StringArgDef | NumberArgDef | JSONArgDef>;
type ParsedSettings<T extends SettingsDef> = {
[K in keyof T]: T[K]['required'] extends true ? SettingTypeValue<T[K]['type']> : SettingTypeValue<T[K]['type']> | undefined;
};
type MetaDef = {
name: string;
version?: string;
description?: string;
};
type CommandDef<T extends SettingsDef> = {
meta: MetaDef;
settings: T;
run: (ctx: {
settings: ParsedSettings<T>;
}) => void | Promise<void>;
};
declare function runPlugin<T extends SettingsDef>(options: CommandDef<T>): void;
export { type BooleanArgDef, type CommandDef, type JSONArgDef, type MetaDef, type NumberArgDef, type ParsedSettings, type SettingDef, type SettingType, type SettingTypeValue, type SettingsDef, type SettingsOptions, type StringArgDef, getBooleanSetting, getJSONSetting, getNumberSetting, getSetting, runPlugin };