utils/config
Configuration Loading and Validation Utilities
This module provides functions to load and validate PipeCraft configuration files. It uses cosmiconfig to search for configuration in multiple locations:
- .pipecraftrc (YAML or JSON, recommended)
- .pipecraftrc.json
- .pipecraftrc.yaml
- .pipecraftrc.yml
- .pipecraftrc.js
- pipecraft.config.js
- package.json (pipecraft key)
The configuration is validated to ensure all required fields are present and have valid values before being used to generate workflows.
Variables
RESERVED_JOB_NAMES
const RESERVED_JOB_NAMES: readonly ['version', 'changes', 'gate', 'tag', 'promote', 'release']
Defined in: utils/config.ts:33
Reserved job names that cannot be used as domain names. These are managed by Pipecraft and would conflict with generated workflow jobs.
Functions
getConfigWarnings()
function getConfigWarnings(config): string[]
Defined in: utils/config.ts:263
Collect non-fatal warnings for config fields that are declared/documented but have no effect, so the dead surface is visible instead of silently ignored.
mergeMethodandmergeStrategy: 'merge'are consumed nowhere — promotions always fast-forward (the promote action hardcodes--ff-only).autoMergeis a deprecated alias forautoPromote.
Parameters
config
any
A config object (already structurally validated)
Returns
string[]
Human-readable warning strings (empty when the config is clean)
loadConfig()
function loadConfig(configPath?): any
Defined in: utils/config.ts:69
Load PipeCraft configuration from filesystem.
Uses cosmiconfig to search for configuration files in standard locations. If no path is provided, searches the current directory and ancestors for configuration files in this order:
- .pipecraftrc (YAML or JSON, recommended)
- .pipecraftrc.json
- .pipecraftrc.yaml
- .pipecraftrc.yml
- .pipecraftrc.js
- pipecraft.config.js
- package.json (pipecraft key)
Parameters
configPath?
string
Optional explicit path to configuration file
Returns
any
Parsed configuration object
Throws
If no configuration file is found
Example
// Search for config in current directory and ancestors
const config = loadConfig()
// Load from explicit path
const config = loadConfig('./my-config.json')
validateConfig()
function validateConfig(config): boolean
Defined in: utils/config.ts:119
Validate PipeCraft configuration structure and values.
Performs comprehensive validation including:
- Presence of all required fields
- Valid enum values (ciProvider, mergeStrategy)
- Branch flow structure (minimum 2 branches)
- Domain configuration (paths, testable, deployable)
Also sets default values for optional domain properties:
- testable defaults to true
- deployable defaults to true
Parameters
config
any
Configuration object to validate (untyped to allow validation)
Returns
boolean
true if validation passes
Throws
If validation fails with detailed error message
Example
const config = loadConfig()
validateConfig(config) // Throws if invalid
// Safe to use config as PipecraftConfig after this point