UNPKG

@aivec/wp-docker-dev-factory

Version:

Spin up local WordPress environments with Docker.

90 lines (73 loc) 2.38 kB
import validateFtpConfig from './validateFtpConfig'; import jsonKeySetCheck from './checkJsonKeyExistence'; import localPathsExistOrExit from './validateLocalPaths'; import isArrayOrExit from './checkIsArray'; import { InstanceConfig } from '../types'; import validatePrivateRemoteFilesConfig from './validatePrivateRemoteFilesConfig'; import validateSSHConfig from './validateSSHConfig'; import validatePhpVersion from './validatePhpVersion'; import vaidateCustomScriptsMode from './validateCustomScriptsMode'; import isStringOrExit from './checkIsString'; import validateFullUrl from './validateFullUrl'; const validateConfig = (config: InstanceConfig): void => { jsonKeySetCheck(config, 'instanceName'); if (config.phpVersion) { validatePhpVersion(config.phpVersion); } const arrayTypeKeys = [ 'localPlugins', 'localThemes', 'downloadPlugins', 'downloadThemes', 'customInitScripts', 'ftp', 'ssh', ]; arrayTypeKeys.forEach((key) => { if (config[key]) { isArrayOrExit(config, key); } }); if (config.localPlugins) { localPathsExistOrExit('plugin', config.localPlugins, config.workingdir); } if (config.localThemes) { localPathsExistOrExit('theme', config.localThemes, config.workingdir); } if (config.image) { localPathsExistOrExit('image file', [config.image], config.workingdir); } if (config.uploads) { localPathsExistOrExit('uploads folder', [config.uploads], config.workingdir); } if (config.customInitScripts) { localPathsExistOrExit('script', config.customInitScripts, config.workingdir); // vaidateCustomScriptsMode(config.customInitScripts, workingdir); } if (config.uploadsUrl) { isStringOrExit(config, 'uploadsUrl'); } if (config.hostName) { isStringOrExit(config, 'hostName'); } validateFullUrl(config); const prfConfigKeys = ['ssh', 'ftp']; prfConfigKeys.forEach((key) => { if (config[key]) { validatePrivateRemoteFilesConfig(config[key], key); } }); if (config.ftp) { validateFtpConfig(config.ftp); } if (config.ssh) { validateSSHConfig(config.ssh, config.workingdir); } if (config.database) { const { mysqlDumpfile } = config.database; if (mysqlDumpfile) { localPathsExistOrExit('MySQL dump file', [mysqlDumpfile], config.workingdir); } } }; export default validateConfig;