UNPKG

@nx-tools/nx-docker

Version:
227 lines (226 loc) 8.21 kB
"use strict"; exports.defaultContext = defaultContext; exports.tmpDir = tmpDir; exports.tmpNameSync = tmpNameSync; exports.getInputs = getInputs; exports.getArgs = getArgs; exports.getInputList = getInputList; var _interop_require_default = require("@swc/helpers/lib/_interop_require_default.js").default; var _interop_require_wildcard = require("@swc/helpers/lib/_interop_require_wildcard.js").default; var _devkit = require("@nrwl/devkit"); var _core = require("@nx-tools/core"); var _sync = _interop_require_default(require("csv-parse/lib/sync")); var fs = _interop_require_wildcard(require("fs")); var handlebars = _interop_require_wildcard(require("handlebars")); var os = _interop_require_wildcard(require("os")); var path = _interop_require_wildcard(require("path")); var tmp = _interop_require_wildcard(require("tmp")); var buildx = _interop_require_wildcard(require("./buildx")); let _defaultContext, _tmpDir; function defaultContext() { if (!_defaultContext) { _defaultContext = '.'; } return _defaultContext; } function tmpDir() { if (!_tmpDir) { _tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'docker-build-push-')).split(path.sep).join(path.posix.sep); } return _tmpDir; } function tmpNameSync(options) { return tmp.tmpNameSync(options); } async function getInputs(defaultContext1, options, ctx) { const prefix = (0, _devkit).names(ctx?.projectName || '').constantName; return { addHosts: await getInputList('add-hosts', prefix, options['add-hosts']), allow: await getInputList('allow', prefix, options.allow), buildArgs: await getInputList('build-args', prefix, options['build-args'], true), builder: (0, _core).getInput('builder', { prefix, fallback: options.builder }), cacheFrom: await getInputList('cache-from', prefix, options['cache-from'], true), cacheTo: await getInputList('cache-to', prefix, options['cache-to'], true), cgroupParent: (0, _core).getInput('cgroup-parent', { prefix, fallback: options['cgroup-parent'] }), context: (0, _core).getInput('context', { prefix, fallback: options.context || defaultContext1 }), file: (0, _core).getInput('file', { prefix, fallback: options.file }), githubToken: (0, _core).getInput('github-token'), labels: await getInputList('labels', prefix, options.labels, true), load: (0, _core).getBooleanInput('load', { fallback: `${options.load || false}` }), network: (0, _core).getInput('network', { prefix, fallback: options.network }), noCache: (0, _core).getBooleanInput('no-cache', { fallback: `${options['no-cache'] || false}` }), outputs: await getInputList('outputs', prefix, options.outputs, true), platforms: await getInputList('platforms', prefix, options.platforms), pull: (0, _core).getBooleanInput('pull', { fallback: `${options.pull || false}` }), push: (0, _core).getBooleanInput('push', { fallback: `${options.push || false}` }), secretFiles: await getInputList('secret-files', prefix, options['secret-files'], true), secrets: await getInputList('secrets', prefix, options.secrets, true), shmSize: (0, _core).getInput('shm-size', { prefix, fallback: options['shm-size'] }), ssh: await getInputList('ssh', prefix, options.ssh), tags: await getInputList('tags', prefix, options.tags), target: (0, _core).getInput('target', { prefix, fallback: options.target }), ulimit: await getInputList('ulimit', prefix, options.ulimit, true) }; } async function getArgs(inputs, defaultContext2, buildxVersion) { const args = [ 'buildx' ]; args.push.apply(args, await getBuildArgs(inputs, defaultContext2, buildxVersion)); args.push.apply(args, await getCommonArgs(inputs, buildxVersion)); args.push(handlebars.compile(inputs.context)({ defaultContext: defaultContext2 })); return args; } async function getBuildArgs(inputs, defaultContext3, buildxVersion) { const args = [ 'build' ]; await (0, _core).asyncForEach(inputs.addHosts, async (addHost)=>{ args.push('--add-host', addHost); }); if (inputs.allow.length > 0) { args.push('--allow', inputs.allow.join(',')); } await (0, _core).asyncForEach(inputs.buildArgs, async (buildArg)=>{ args.push('--build-arg', buildArg); }); await (0, _core).asyncForEach(inputs.cacheFrom, async (cacheFrom)=>{ args.push('--cache-from', cacheFrom); }); await (0, _core).asyncForEach(inputs.cacheTo, async (cacheTo)=>{ args.push('--cache-to', cacheTo); }); if (inputs.cgroupParent) { args.push('--cgroup-parent', inputs.cgroupParent); } if (inputs.file) { args.push('--file', inputs.file); } if (!buildx.isLocalOrTarExporter(inputs.outputs) && (inputs.platforms.length == 0 || buildx.satisfies(buildxVersion, '>=0.4.2'))) { args.push('--iidfile', await buildx.getImageIDFile()); } await (0, _core).asyncForEach(inputs.labels, async (label)=>{ args.push('--label', label); }); await (0, _core).asyncForEach(inputs.outputs, async (output)=>{ args.push('--output', output); }); if (inputs.platforms.length > 0) { args.push('--platform', inputs.platforms.join(',')); } await (0, _core).asyncForEach(inputs.secrets, async (secret)=>{ try { args.push('--secret', await buildx.getSecretString(secret)); } catch (err) { (0, _core).warning(err.message); } }); await (0, _core).asyncForEach(inputs.secretFiles, async (secretFile)=>{ try { args.push('--secret', await buildx.getSecretFile(secretFile)); } catch (err) { (0, _core).warning(err.message); } }); if (inputs.githubToken && !buildx.hasGitAuthToken(inputs.secrets) && inputs.context == defaultContext3) { args.push('--secret', await buildx.getSecretString(`GIT_AUTH_TOKEN=${inputs.githubToken}`)); } if (inputs.shmSize) { args.push('--shm-size', inputs.shmSize); } await (0, _core).asyncForEach(inputs.ssh, async (ssh)=>{ args.push('--ssh', ssh); }); await (0, _core).asyncForEach(inputs.tags, async (tag)=>{ args.push('--tag', tag); }); if (inputs.target) { args.push('--target', inputs.target); } await (0, _core).asyncForEach(inputs.ulimit, async (ulimit)=>{ args.push('--ulimit', ulimit); }); return args; } async function getCommonArgs(inputs, buildxVersion) { const args = []; if (inputs.builder) { args.push('--builder', inputs.builder); } if (inputs.load) { args.push('--load'); } if (buildx.satisfies(buildxVersion, '>=0.6.0')) { args.push('--metadata-file', await buildx.getMetadataFile()); } if (inputs.network) { args.push('--network', inputs.network); } if (inputs.noCache) { args.push('--no-cache'); } if (inputs.pull) { args.push('--pull'); } if (inputs.push) { args.push('--push'); } return args; } async function getInputList(name, prefix, fallback, ignoreComma) { const res = []; const items = (0, _core).getInput(name, { prefix }); if (items == '') { return fallback ?? res; } for (const output of (await (0, _sync).default(items, { columns: false, relax: true, relaxColumnCount: true, skipLinesWithEmptyValues: true }))){ if (output.length == 1) { res.push(output[0]); continue; } else if (!ignoreComma) { res.push(...output); continue; } res.push(output.join(',')); } return res.filter((item)=>item).map((pat)=>pat.trim()); } //# sourceMappingURL=context.js.map