@aivec/wp-docker-dev-factory
Version:
Spin up local WordPress environments with Docker.
79 lines (78 loc) • 3.72 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 lodash_1 = __importDefault(require("lodash"));
var utils_1 = require("../utils");
var constants_1 = require("../constants");
var buildVolumePaths = function (config, rawconfig, workingdir, topdir) {
var volumes = [];
var localPathKeys = [
{ key: 'localPlugins', wpfolder: 'plugins' },
{ key: 'localThemes', wpfolder: 'themes' },
];
localPathKeys.forEach(function (_a) {
var key = _a.key, wpfolder = _a.wpfolder;
if (config[key]) {
config[key].forEach(function (p) {
var abspath = (0, utils_1.resolvePathToAbsolute)(workingdir, p);
var folder = path_1.default.basename(abspath);
volumes.push("".concat(abspath, ":/var/www/html/wp-content/").concat(wpfolder, "/").concat(folder));
});
}
});
if (rawconfig.uploads) {
volumes.push("".concat((0, utils_1.resolvePathToAbsolute)(workingdir, rawconfig.uploads), ":/var/www/html/wp-content/uploads"));
}
if (rawconfig.customInitScripts) {
rawconfig.customInitScripts.forEach(function (p) {
var abspath = (0, utils_1.resolvePathToAbsolute)(workingdir, p);
var script = path_1.default.basename(abspath);
volumes.push("".concat(abspath, ":").concat(constants_1.dockerUserScriptsDirpath, "/").concat(script));
});
}
if (rawconfig.database) {
var mysqlDumpfile = rawconfig.database.mysqlDumpfile;
if (mysqlDumpfile) {
var abspath = (0, utils_1.resolvePathToAbsolute)(workingdir, mysqlDumpfile);
// visiblevc's run.sh script will import db.sql automatically on startup
volumes.push("".concat(abspath, ":/data/db.sql"));
}
}
if (config.ssh) {
var sshCopy = lodash_1.default.cloneDeep(config.ssh);
var keyPathVolumes = sshCopy.map(function (_a, index) {
var privateKeyPath = _a.privateKeyPath, privateKeyFilename = _a.privateKeyFilename;
// remove since Windows paths break JSON
delete config.ssh[index].privateKeyPath;
return "".concat(privateKeyPath, ":").concat(constants_1.dockerSshDirpath, "/").concat(privateKeyFilename);
});
volumes.push.apply(volumes, keyPathVolumes);
}
/* volumes = [
...volumes,
// mounting a script here tells the visiblevc run.sh script to run it before starting apache
`-v ${path.resolve(topdir, `src/scripts/initwp.sh`)}:/docker-entrypoint-initwp.d/run.sh`,
]; */
volumes.push("".concat(path_1.default.resolve(workingdir, 'dumpfiles'), ":").concat(constants_1.dockerDumpfilesDirpath));
if (process.platform === 'win32' && process.env.DOCKER_TOOLBOX_INSTALL_PATH) {
var normalizeHost_1 = function (binding) {
var delimiter = binding.lastIndexOf(':');
if (delimiter === -1) {
return binding.replace(/C:\\/gi, '/c/').replace(/\\/gi, '/');
}
var hostPart = binding.slice(0, delimiter);
var containerPart = binding.slice(delimiter + 1);
hostPart = hostPart.replace(/C:\\/gi, '/c/');
hostPart = hostPart.replace(/\\/gi, '/');
return "".concat(hostPart, ":").concat(containerPart);
};
volumes.forEach(function (binding, index) {
volumes[index] = normalizeHost_1(binding);
});
}
return volumes;
};
exports.default = buildVolumePaths;