import Joi from 'joi'; import { BuildRuntimePlatform } from './BuildRuntimePlatform'; import { BuildStepEnv } from './BuildStepEnv'; import { BuildStepInputValueType, BuildStepInputValueTypeName } from './BuildStepInput'; export type BuildFunctions = Record; interface BuildFunctionsConfigFile { configFilesToImport?: string[]; functions?: BuildFunctions; } export interface BuildConfig extends BuildFunctionsConfigFile { build: { name?: string; steps: BuildStepConfig[]; }; } export type BuildStepConfig = BuildStepCommandRun | BuildStepBareCommandRun | BuildStepFunctionCall | BuildStepBareFunctionOrFunctionGroupCall; export type BuildStepCommandRun = { run: BuildFunctionCallConfig & { outputs?: BuildStepOutputs; command: string; }; }; export type BuildStepBareCommandRun = { run: string; }; export type BuildStepFunctionCall = { [functionId: string]: BuildFunctionCallConfig; }; export type BuildStepBareFunctionOrFunctionGroupCall = string; export type BuildFunctionCallConfig = { id?: string; inputs?: BuildStepInputs; name?: string; workingDirectory?: string; shell?: string; env?: BuildStepEnv; if?: string; timeout_minutes?: number; __metrics_id?: string; }; export type BuildStepInputs = Record; export type BuildStepOutputs = (string | { name: string; required?: boolean; })[]; export interface BuildFunctionConfig { inputs?: BuildFunctionInputs; outputs?: BuildFunctionOutputs; name?: string; supportedRuntimePlatforms?: BuildRuntimePlatform[]; shell?: string; command?: string; path?: string; } export type BuildFunctionInputs = (string | { name: string; defaultValue?: BuildStepInputValueType; allowedValues?: BuildStepInputValueType[]; required?: boolean; allowedValueType: BuildStepInputValueTypeName; })[]; export type BuildFunctionOutputs = BuildStepOutputs; export declare const BuildFunctionsConfigFileSchema: Joi.ObjectSchema; export declare const BuildConfigSchema: Joi.ObjectSchema; interface BuildConfigValidationParams { externalFunctionIds?: string[]; externalFunctionGroupsIds?: string[]; skipNamespacedFunctionsOrFunctionGroupsCheck?: boolean; } export declare function readAndValidateBuildConfigFromPathAsync(configPath: string, params?: BuildConfigValidationParams): Promise; export declare function readAndValidateBuildFunctionsConfigFileAsync(configPath: string): Promise; export declare function readRawBuildConfigAsync(configPath: string): Promise; export declare function validateConfig(schema: Joi.ObjectSchema, config: object, configFilePath?: string): T; export declare function mergeConfigWithImportedFunctions(config: BuildConfig, importedFunctions: BuildFunctions): void; export declare function isBuildStepCommandRun(step: BuildStepConfig): step is BuildStepCommandRun; export declare function isBuildStepBareCommandRun(step: BuildStepConfig): step is BuildStepBareCommandRun; export declare function isBuildStepFunctionCall(step: BuildStepConfig): step is BuildStepFunctionCall; export declare function isBuildStepBareFunctionOrFunctionGroupCall(step: BuildStepConfig): step is BuildStepBareFunctionOrFunctionGroupCall; export declare function validateAllFunctionsExist(config: BuildConfig, { externalFunctionIds, externalFunctionGroupsIds, skipNamespacedFunctionsOrFunctionGroupsCheck, }: BuildConfigValidationParams): void; export {};