@aivec/wp-docker-dev-factory
Version:
Spin up local WordPress environments with Docker.
84 lines (83 loc) • 3.81 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var path_1 = __importDefault(require("path"));
var os_1 = require("os");
var buildFtpConfig_1 = __importDefault(require("./buildFtpConfig"));
var buildEnvVars_1 = __importDefault(require("./buildEnvVars"));
var buildVolumePaths_1 = __importDefault(require("./buildVolumePaths"));
var buildPluginAutoInstallWhitelist_1 = __importDefault(require("./buildPluginAutoInstallWhitelist"));
var lodash_1 = require("lodash");
var buildSSHConfig_1 = __importDefault(require("./buildSSHConfig"));
var buildFinalConfig = function (config, workingdir, topdir) {
var configCopy = lodash_1._.cloneDeep(config);
var phpVersion = configCopy.phpVersion ? configCopy.phpVersion : '7.3';
var snapshotImage = "".concat(configCopy.instanceName, "-").concat(phpVersion);
var dockerBridgeIP = 'host.docker.internal';
var locale = configCopy.locale ? configCopy.locale : 'en_US';
if (configCopy.wordpressVersion === 'nightly') {
locale = 'en_US';
}
var flushOnRestart = false;
if (config.database) {
flushOnRestart = !!config.database.flushOnRestart;
}
var image = configCopy.image;
if (image) {
if (path_1.default.isAbsolute(image)) {
image = "".concat((0, os_1.homedir)()).concat(image);
}
image = path_1.default.resolve(workingdir, image);
}
var fullUrl = 'http://localhost';
if (config.hostName && config.hostName.length > 0) {
fullUrl = "http://".concat(config.hostName);
}
if (config.containerPort) {
fullUrl = "".concat(fullUrl, ":").concat(config.containerPort);
}
var finalConfig = {
instanceName: configCopy.instanceName,
containerPort: configCopy.containerPort,
hostName: configCopy.hostName ? configCopy.hostName : null,
fullUrl: fullUrl,
phpVersion: phpVersion,
wordpressVersion: configCopy.wordpressVersion ? configCopy.wordpressVersion : 'latest',
locale: locale,
flushOnRestart: flushOnRestart,
database: configCopy.database,
env: configCopy.env ? configCopy.env : null,
localPlugins: configCopy.localPlugins ? configCopy.localPlugins : [],
localThemes: configCopy.localThemes ? configCopy.localThemes : [],
downloadPlugins: configCopy.downloadPlugins ? configCopy.downloadPlugins : [],
downloadThemes: configCopy.downloadThemes ? configCopy.downloadThemes : [],
uploads: configCopy.uploads ? configCopy.uploads : null,
uploadsUrl: configCopy.uploadsUrl ? configCopy.uploadsUrl : null,
networkname: 'wpdevinstances',
containerName: configCopy.instanceName,
snapshotImage: snapshotImage,
runningFromCache: !!image,
dockerBridgeIP: dockerBridgeIP,
alreadyInstalled: (0, buildPluginAutoInstallWhitelist_1.default)(configCopy, workingdir),
topdir: topdir,
workingdir: workingdir,
image: image,
};
if (configCopy.ftp) {
finalConfig.ftp = (0, buildFtpConfig_1.default)(configCopy.ftp);
}
if (configCopy.ssh) {
finalConfig.ssh = (0, buildSSHConfig_1.default)(configCopy.ssh, workingdir);
}
finalConfig.volumes = (0, buildVolumePaths_1.default)(finalConfig, configCopy, workingdir, topdir);
finalConfig.envvarsMap = (0, buildEnvVars_1.default)(finalConfig);
finalConfig.envvars = Object.keys(finalConfig.envvarsMap)
.map(function (key) {
return "--env ".concat(key, "=").concat(finalConfig.envvarsMap[key]);
})
.join(' ');
return finalConfig;
};
exports.default = buildFinalConfig;