@lodestar/prover
Version:
A Typescript implementation of the Ethereum Consensus light client
36 lines • 1.97 kB
JavaScript
import fs from "node:fs";
import path from "node:path";
import { fileURLToPath } from "node:url";
// Global variable __dirname no longer available in ES6 modules.
// Solutions: https://stackoverflow.com/questions/46745014/alternative-for-dirname-in-node-js-when-using-es6-modules
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// Persist git data and distribute through NPM so CLI consumers can know exactly
// at what commit was this src build. This is used in the metrics and to log initially.
//
// - For NPM release (stable): Only the version is persisted. Once must then track the version's tag
// in Github to resolve that version to a specific commit. While this is okay, git-data.json gives
// a gurantee of the exact commit at build time.
//
// - For NPM release (dev): canary commits include the commit, so this feature is not really
// necessary. However, it's more cumbersome to have conditional logic on stable / dev.
//
// - For build from source: .git folder is available in the context of the built code, so it can extract
// branch and commit directly without the need for .git-data.json.
//
// - For build from source dockerized: This feature is required to know the branch and commit, since
// git data is not persisted past the build. However, .dockerignore prevents .git folder from being
// copied into the container's context, so .git-data.json can't be generated.
/**
* WARNING!! If you change this path make sure to update:
* - 'packages/cli/package.json' -> .files -> `".git-data.json"`
*/
export const gitDataPath = path.resolve(__dirname, "../../../.git-data.json");
/** Writes a persistent git data file. */
export function writeGitDataFile(gitData) {
fs.writeFileSync(gitDataPath, JSON.stringify(gitData, null, 2));
}
/** Reads the persistent git data file. */
export function readGitDataFile() {
return JSON.parse(fs.readFileSync(gitDataPath, "utf8"));
}
//# sourceMappingURL=gitDataPath.js.map