UNPKG

@storm-software/workspace-tools

Version:

Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.

191 lines (177 loc) • 6.73 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _chunk3GQAWCBQjs = require('./chunk-3GQAWCBQ.js'); // src/utils/cargo.ts var _devkit = require('@nx/devkit'); var _child_process = require('child_process'); var _path = require('path'); var INVALID_CARGO_ARGS = [ "allFeatures", "allTargets", "main", "outputPath", "package", "tsConfig" ]; var childProcess; var buildCargoCommand = /* @__PURE__ */ _chunk3GQAWCBQjs.__name.call(void 0, (baseCommand, options, context) => { const args = []; if (options.toolchain && options.toolchain !== "stable") { args.push(`+${options.toolchain}`); } args.push(baseCommand); for (const [key, value] of Object.entries(options)) { if (key === "toolchain" || key === "release" || INVALID_CARGO_ARGS.includes(key)) { continue; } if (typeof value === "boolean") { if (value) { args.push(`--${key}`); } } else if (Array.isArray(value)) { for (const item of value) { args.push(`--${key}`, item); } } else { args.push(`--${key}`, String(value)); } } if (context.projectName) { args.push("-p", context.projectName); } if (options.allFeatures && !args.includes("--all-features")) { args.push("--all-features"); } if (options.allTargets && !args.includes("--all-targets")) { args.push("--all-targets"); } if (options.release && !args.includes("--profile")) { args.push("--release"); } if (options.outputPath && !args.includes("--target-dir")) { args.push("--target-dir", options.outputPath); } return args; }, "buildCargoCommand"); async function cargoCommand(...args) { console.log(`> cargo ${args.join(" ")}`); args.push("--color", "always"); return await Promise.resolve(runProcess("cargo", ...args)); } _chunk3GQAWCBQjs.__name.call(void 0, cargoCommand, "cargoCommand"); function cargoRunCommand(...args) { console.log(`> cargo ${args.join(" ")}`); return new Promise((resolve, reject) => { childProcess = exports.childProcess = _child_process.spawn.call(void 0, "cargo", [ ...args, "--color", "always" ], { cwd: process.cwd(), windowsHide: true, detached: true, shell: false, stdio: [ "inherit", "inherit", "inherit" ] }); process.on("exit", () => _optionalChain([childProcess, 'optionalAccess', _ => _.kill, 'call', _2 => _2()])); process.on("SIGTERM", () => _optionalChain([childProcess, 'optionalAccess', _3 => _3.kill, 'call', _4 => _4()])); process.on("SIGINT", () => _optionalChain([childProcess, 'optionalAccess', _5 => _5.kill, 'call', _6 => _6()])); childProcess.on("error", (_err) => { reject({ success: false }); }); childProcess.on("exit", (code) => { childProcess = exports.childProcess = null; if (code === 0) { resolve({ success: true }); } else { reject({ success: false }); } }); }); } _chunk3GQAWCBQjs.__name.call(void 0, cargoRunCommand, "cargoRunCommand"); function cargoCommandSync(args = "", options) { const normalizedOptions = { stdio: _nullishCoalesce(_optionalChain([options, 'optionalAccess', _7 => _7.stdio]), () => ( "inherit")), env: { ...process.env, ..._optionalChain([options, 'optionalAccess', _8 => _8.env]) } }; try { return { output: _child_process.execSync.call(void 0, `cargo ${args}`, { encoding: "utf8", windowsHide: true, stdio: normalizedOptions.stdio, env: normalizedOptions.env, maxBuffer: 1024 * 1024 * 10 }), success: true }; } catch (e) { return { output: e, success: false }; } } _chunk3GQAWCBQjs.__name.call(void 0, cargoCommandSync, "cargoCommandSync"); function cargoMetadata() { const output = cargoCommandSync("metadata --format-version=1", { stdio: "pipe" }); if (!output.success) { console.error("Failed to get cargo metadata"); return null; } return JSON.parse(output.output); } _chunk3GQAWCBQjs.__name.call(void 0, cargoMetadata, "cargoMetadata"); function isExternal(packageOrDep, workspaceRoot2) { const isRegistry = _nullishCoalesce(_optionalChain([packageOrDep, 'access', _9 => _9.source, 'optionalAccess', _10 => _10.startsWith, 'call', _11 => _11("registry+")]), () => ( false)); const isGit = _nullishCoalesce(_optionalChain([packageOrDep, 'access', _12 => _12.source, 'optionalAccess', _13 => _13.startsWith, 'call', _14 => _14("git+")]), () => ( false)); const isOutsideWorkspace = "path" in packageOrDep && _path.relative.call(void 0, workspaceRoot2, packageOrDep.path).startsWith(".."); return isRegistry || isGit || isOutsideWorkspace; } _chunk3GQAWCBQjs.__name.call(void 0, isExternal, "isExternal"); function runProcess(processCmd, ...args) { const metadata = cargoMetadata(); const targetDir = _nullishCoalesce(_optionalChain([metadata, 'optionalAccess', _15 => _15.target_directory]), () => ( _devkit.joinPathFragments.call(void 0, _devkit.workspaceRoot, "dist", "cargo"))); return new Promise((resolve) => { if (process.env.VERCEL) { return resolve({ success: true }); } _child_process.execSync.call(void 0, `${processCmd} ${args.join(" ")}`, { cwd: process.cwd(), env: { ...process.env, RUSTC_WRAPPER: "", CARGO_TARGET_DIR: targetDir, CARGO_BUILD_TARGET_DIR: targetDir }, windowsHide: true, stdio: [ "inherit", "inherit", "inherit" ] }); resolve({ success: true }); }); } _chunk3GQAWCBQjs.__name.call(void 0, runProcess, "runProcess"); exports.INVALID_CARGO_ARGS = INVALID_CARGO_ARGS; exports.childProcess = childProcess; exports.buildCargoCommand = buildCargoCommand; exports.cargoCommand = cargoCommand; exports.cargoRunCommand = cargoRunCommand; exports.cargoCommandSync = cargoCommandSync; exports.cargoMetadata = cargoMetadata; exports.isExternal = isExternal; exports.runProcess = runProcess;