UNPKG

@bconnorwhite/bob

Version:

Bob is a toolkit for TypeScript projects

83 lines (64 loc) 3.03 kB
"use strict"; 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;