UNPKG

@storm-software/cloudflare-tools

Version:

A Nx plugin package that contains various executors, generators, and utilities that assist in managing Cloudflare services.

165 lines (157 loc) 4.09 kB
// ../workspace-tools/src/utils/package-helpers.ts import { joinPathFragments, readJsonFile } from "@nx/devkit"; // ../config-tools/src/utilities/toml.ts import TOML from "@ltd/j-toml"; function parseCargoToml(cargoString) { if (!cargoString) { throw new Error("Cargo.toml is empty"); } return TOML.parse(cargoString, { x: { comment: true } }); } // ../workspace-tools/src/utils/package-helpers.ts import { execFileSync } from "child_process"; import { existsSync } from "node:fs"; import { readFile, writeFile } from "node:fs/promises"; import { dirname, resolve } from "path"; import { format } from "prettier"; // ../package-constants/src/tags.ts var ProjectTagConstants = { Language: { TAG_ID: "language", TYPESCRIPT: "typescript", RUST: "rust" }, ProjectType: { TAG_ID: "type", LIBRARY: "library", APPLICATION: "application" }, ProjectLinking: { TAG_ID: "project-linking", REFERENCE: "reference", ALIAS: "alias" }, DistStyle: { TAG_ID: "dist-style", NORMAL: "normal", CLEAN: "clean" }, Provider: { TAG_ID: "provider" }, Platform: { TAG_ID: "platform", NODE: "node", BROWSER: "browser", NEUTRAL: "neutral", WORKER: "worker" }, Registry: { TAG_ID: "registry", CARGO: "cargo", NPM: "npm", CONTAINER: "container", CYCLONE: "cyclone" }, Plugin: { TAG_ID: "plugin" }, Builder: { TAG_ID: "builder", TSC: "tsc", TSUP: "tsup", TSDOWN: "tsdown", VITE: "vite", ROLLDOWN: "rolldown" } }; var formatProjectTag = (variant, value) => { return `${variant}:${value}`; }; var hasProjectTag = (project, variant) => { project.tags = project.tags ?? []; const prefix = formatProjectTag(variant, ""); return project.tags.some( (tag) => tag.startsWith(prefix) && tag.length > prefix.length ); }; var getProjectTag = (project, variant) => { if (!hasProjectTag(project, variant)) { return void 0; } project.tags = project.tags ?? []; const prefix = formatProjectTag(variant, ""); const tag = project.tags.find((tag2) => tag2.startsWith(prefix)); return tag?.replace(prefix, ""); }; var isEqualProjectTag = (project, variant, value) => { const tag = getProjectTag(project, variant); return !!(tag && tag?.toUpperCase() === value.toUpperCase()); }; // ../workspace-tools/src/utils/project-tags.ts var addProjectTag = (project, variant, value, options = { overwrite: false }) => { project.tags = project.tags ?? []; if (options.overwrite || !hasProjectTag(project, variant)) { project.tags = project.tags.filter( (tag) => !tag.startsWith(formatProjectTag(variant, "")) ); project.tags.push(formatProjectTag(variant, value)); } }; // ../workspace-tools/src/utils/package-helpers.ts var getPackageInfo = (project) => { if (isEqualProjectTag( project, ProjectTagConstants.Language.TAG_ID, ProjectTagConstants.Language.RUST ) && existsSync(joinPathFragments(project.root, "Cargo.toml"))) { return { type: "Cargo.toml", content: parseCargoToml(joinPathFragments(project.root, "Cargo.toml")) }; } else if (isEqualProjectTag( project, ProjectTagConstants.Language.TAG_ID, ProjectTagConstants.Language.TYPESCRIPT ) && existsSync(joinPathFragments(project.root, "package.json"))) { return { type: "package.json", content: readJsonFile( joinPathFragments(project.root, "package.json") ) }; } return null; }; // ../workspace-tools/src/utils/create-cli-options.ts import { names } from "@nx/devkit"; function createCliOptions(obj) { const args = []; for (const key in obj) { const value = obj[key]; if (value) { const arg = names(key).fileName; if (Array.isArray(value)) { args.push( `--${arg.toLowerCase()}=${value.map((v) => v.trim()).join(",")}` ); } else { args.push(`--${arg.toLowerCase()}=${value}`); } } } return args; } export { ProjectTagConstants, addProjectTag, getPackageInfo, createCliOptions };