UNPKG

@percy/agent

Version:

An agent process for integrating with Percy.

56 lines (55 loc) 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const deepmerge = require("deepmerge"); const fs = require("fs"); const yaml = require("js-yaml"); const path = require("path"); const logger_1 = require("../utils/logger"); const configuration_1 = require("./../configuration/configuration"); class ConfigurationService { constructor(configurationFile = ConfigurationService.DEFAULT_FILE) { // We start with the default configuration this.configuration = configuration_1.DEFAULT_CONFIGURATION; // Next we merge in configuration from .percy.yml if we have it this.applyFile(configurationFile); } applyFile(configurationFile) { try { const userConfigFilePath = path.join(process.cwd(), configurationFile); const userConf = yaml.safeLoad(fs.readFileSync(userConfigFilePath, 'utf8')); // apply a deep overwrite merge to userConf and this.configuration const overwriteMerge = (destinationArray, sourceArray, options) => sourceArray; this.configuration = deepmerge(this.configuration, userConf, { arrayMerge: overwriteMerge }); } catch (_a) { logger_1.default.debug('.percy.yml configuration file not supplied or failed to be loaded and parsed.'); } return this.configuration; } applyFlags(flags) { if (flags.port) { this.configuration.agent.port = flags.port; } if (flags['network-idle-timeout']) { this.configuration.agent['asset-discovery']['network-idle-timeout'] = flags['network-idle-timeout']; } if (flags['base-url']) { this.configuration['static-snapshots']['base-url'] = flags['base-url']; } if (flags['snapshot-files']) { this.configuration['static-snapshots']['snapshot-files'] = flags['snapshot-files']; } if (flags['ignore-files']) { this.configuration['static-snapshots']['ignore-files'] = flags['ignore-files']; } return this.configuration; } applyArgs(args) { if (args.snapshotDirectory) { this.configuration['static-snapshots'].path = args.snapshotDirectory; } return this.configuration; } } ConfigurationService.DEFAULT_FILE = '.percy.yml'; exports.default = ConfigurationService;