@storm-software/workspace-tools
Version:
Tools for managing a Storm workspace, including various Nx generators and executors for common development tasks.
94 lines (91 loc) • 2.58 kB
JavaScript
import {
parseCargoToml
} from "./chunk-GEN563U4.mjs";
import {
ProjectTagConstants,
isEqualProjectTag
} from "./chunk-AQ7B26V3.mjs";
import {
joinPaths
} from "./chunk-TBW5MCN6.mjs";
// src/utils/package-helpers.ts
import {
joinPathFragments,
readJsonFile
} from "@nx/devkit";
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";
var PackageManagerTypes = {
PackageJson: "package.json",
CargoToml: "Cargo.toml"
};
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;
};
async function addPackageJsonGitHead(packageRoot) {
const packageJsonPath = joinPaths(packageRoot, "package.json");
if (!packageJsonPath) {
throw new Error(
"No file path provided. Please provide a valid path to the package.json file."
);
}
const packageJsonValue = JSON.parse(await readFile(packageJsonPath, "utf8"));
if (!packageJsonValue || typeof packageJsonValue !== "object") {
throw new Error(
`Invalid package.json file at ${packageJsonPath}. Please ensure it is a valid JSON file.`
);
}
const gitHead = execFileSync("git", ["rev-parse", "HEAD"], {
cwd: dirname(resolve(packageJsonPath)),
encoding: "utf8"
}).trim();
packageJsonValue.gitHead = gitHead;
return writeFile(
packageJsonPath,
await format(JSON.stringify(packageJsonValue), {
parser: "json",
proseWrap: "preserve",
trailingComma: "none",
tabWidth: 2,
semi: true,
singleQuote: false,
quoteProps: "as-needed",
insertPragma: false,
bracketSameLine: true,
printWidth: 80,
bracketSpacing: true,
arrowParens: "avoid",
endOfLine: "lf",
plugins: ["prettier-plugin-packagejson"]
})
);
}
export {
PackageManagerTypes,
getPackageInfo,
addPackageJsonGitHead
};