@bconnorwhite/bob
Version:
Bob is a toolkit for TypeScript projects
83 lines (64 loc) • 3.03 kB
JavaScript
;
exports.__esModule = true;
exports.dockerBuild = dockerBuild;
exports.dockerBuildAction = dockerBuildAction;
exports["default"] = void 0;
var _commanderVersion = require("commander-version");
var _fs = require("fs");
var _exec = require("@bconnorwhite/exec");
var _package = require("@bconnorwhite/package");
var _utils = require("../../utils");
var _structure = require("../../structure");
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function execBuild(context, tag, file, env) {
return (0, _exec.exec)({
command: "docker",
args: ["build", context, {
file: file,
tag: tag
}],
env: env
});
}
function dockerBuild(_x) {
return _dockerBuild.apply(this, arguments);
}
function _dockerBuild() {
_dockerBuild = _asyncToGenerator(function* (_ref) {
var context = _ref.context,
tag = _ref.tag,
_ref$ver = _ref.ver,
ver = _ref$ver === void 0 ? false : _ref$ver,
_ref$latest = _ref.latest,
latest = _ref$latest === void 0 ? false : _ref$latest,
environment = _ref.environment;
var env = (0, _utils.getEnv)();
var NODE_ENV = environment != null ? environment : env.NODE_ENV;
if (NODE_ENV) {
var file = (0, _structure.getDockerDir)(NODE_ENV).files().dockerfile;
var tags = [];
if (tag) {
if (ver && !tag.includes(":") && (_package.pkg == null ? void 0 : _package.pkg.version)) {
tags.push(tag + ":" + _package.pkg.version);
}
if (latest) {
tags.push(tag.split(":")[0] + ":latest");
}
}
return _fs.promises.access(file.path, _fs.constants.R_OK).then(function () {
return execBuild(context, tags, file.path, env);
})["catch"](function () {
return execBuild(context, tags, undefined, env);
});
} else {
return Promise.resolve(undefined);
}
});
return _dockerBuild.apply(this, arguments);
}
function dockerBuildAction(args) {
dockerBuild(args);
}
var _default = (0, _commanderVersion.createCommand)("build").description("run docker build on Dockerfile").arguments("<context>").option("-t --tag <tag>", "image name").option("-v --ver", "append version from package.json to image tag").option("-l --latest", "append :latest to a second image tag").option("-e --environment <environment>", "value to override NODE_ENV").action(dockerBuildAction);
exports["default"] = _default;