@aivec/wp-docker-dev-factory
Version:
Spin up local WordPress environments with Docker.
113 lines (112 loc) • 5.04 kB
JavaScript
;
var __assign = (this && this.__assign) || function () {
__assign = Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
return __assign.apply(this, arguments);
};
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
var os_1 = require("os");
var constants_1 = require("../constants");
var visibleVcBooleans = ['WP_DEBUG', 'WP_DEBUG_DISPLAY', 'WP_DEBUG_LOG', 'MULTISITE'];
var buildEnvVars = function (config) {
var envvars = {};
var userenvs = config.env ? config.env : null;
if (userenvs) {
envvars = __assign(__assign({}, envvars), userenvs);
}
// user and group to run wordpress container as
var user = (0, os_1.userInfo)();
envvars['USER_ID'] = user.uid;
envvars['GROUP_ID'] = user.gid;
// pass meta paths
envvars['AVC_META_DIR'] = constants_1.dockerMetaDirpath;
envvars['AVC_SCRIPTS_DIR'] = constants_1.dockerScriptsDirpath;
envvars['AVC_DUMPFILES_DIR'] = constants_1.dockerDumpfilesDirpath;
envvars['AVC_SSH_DIR'] = constants_1.dockerSshDirpath;
envvars['AVC_USER_SCRIPTS_DIR'] = constants_1.dockerUserScriptsDirpath;
envvars['AVC_TEMP_DIR'] = constants_1.dockerTempDirpath;
envvars['AVC_CACHE_DIR'] = constants_1.dockerCacheDirpath;
envvars['CONTAINER_NAME'] = config.containerName;
envvars['INSTANCE_NAME'] = config.instanceName;
envvars['FLUSH_DB_ON_RESTART'] = Number(config.flushOnRestart);
envvars['RUNNING_FROM_CACHE'] = Number(config.runningFromCache);
envvars['URL_REPLACE'] = config.fullUrl;
envvars['DOCKER_BRIDGE_IP'] = config.dockerBridgeIP;
envvars['ALREADY_INSTALLED_PLUGINS'] = JSON.stringify(JSON.stringify(config.alreadyInstalled)).trim();
var dplugins = __spreadArray(__spreadArray([], config.downloadPlugins, true), ['relative-url'], false);
envvars['DOWNLOAD_PLUGINS'] = JSON.stringify(JSON.stringify(dplugins)).trim();
envvars['DOWNLOAD_THEMES'] = JSON.stringify(JSON.stringify(config.downloadThemes ? config.downloadThemes : [])).trim();
envvars['PLUGINS'] = "\"".concat(dplugins.join(' '), "\"");
if (config.downloadThemes) {
envvars['THEMES'] = "\"".concat(config.downloadThemes.join(' '), "\"");
}
if (config.ftp) {
envvars['FTP_CONFIGS'] = JSON.stringify(JSON.stringify(config.ftp)).trim();
}
if (config.ssh) {
envvars['SSH_CONFIGS'] = JSON.stringify(JSON.stringify(config.ssh)).trim();
}
if (config.uploadsUrl) {
envvars['AVC_UPLOADS_BASE_URL'] = config.uploadsUrl;
}
if (config.containerPort) {
envvars['DOCKER_CONTAINER_PORT'] = config.containerPort;
}
// set default values for various WP envvars
// envvars['WORDPRESS_DB_NAME'] = config.instanceName;
envvars['WORDPRESS_TABLE_PREFIX'] = 'wp_';
// envvars['WORDPRESS_DB_HOST'] = `wpdb-${config.instanceName}`;
envvars['WORDPRESS_DB_HOST'] = "db:3306";
envvars['WORDPRESS_DB_USER'] = 'root';
envvars['WORDPRESS_DB_PASSWORD'] = 'root';
envvars['WORDPRESS_DEBUG'] = 'true';
envvars['WP_DEBUG_DISPLAY'] = 'true';
envvars['WP_DEBUG_LOG'] = 'true';
envvars['WP_LOCALE'] = config.locale;
envvars['WP_VERSION'] = config.wordpressVersion;
envvars['PHP_VERSION'] = config.phpVersion;
envvars['WORDPRESS_APP_IMAGE_NAME'] = config.instanceName;
envvars['WORDPRESS_APP_CONTAINER_NAME'] = config.instanceName;
envvars['WORDPRESS_APP_HOST_NAME'] = config.hostName;
if (config.database) {
var _a = config.database, dbName = _a.dbName, dbPrefix = _a.dbPrefix;
if (dbName) {
envvars['WORDPRESS_DB_NAME'] = dbName;
}
if (dbPrefix) {
envvars['WORDPRESS_TABLE_PREFIX'] = dbPrefix;
}
}
if (userenvs) {
// override defaults if they are set in env object
Object.keys(userenvs).forEach(function (key) {
if (visibleVcBooleans.includes(key)) {
if (userenvs[key] === true || userenvs[key] === 1 || userenvs[key] === 'true') {
envvars[key] = 'true';
}
else if (userenvs[key] === false || userenvs[key] === 0 || userenvs[key] === 'false') {
envvars[key] = 'false';
}
}
});
}
// used for accessing constants from PHP $_ENV global
envvars['APACHE_ENV_VARS'] = JSON.stringify(JSON.stringify(envvars)).trim();
return envvars;
};
exports.default = buildEnvVars;