UNPKG

@woodpecker-ci/plugin

Version:

Utilities to create a Woodpecker-CI typescript / javascript plugin.

50 lines (47 loc) 2.26 kB
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 };