NaturalCycles/nodejs-lib

View on GitHub
src/bin/generate-build-info.ts

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env node

import fs from 'node:fs'
import path from 'node:path'
import yargs from 'yargs'
import { appendToBashEnv, appendToGithubEnv, appendToGithubOutput } from '../fs/json2env'
import { runScript } from '../script/runScript'
import { generateBuildInfo } from '../util/buildInfo.util'

runScript(async () => {
  const { dir, overrideTimestamp } = yargs.options({
    dir: {
      type: 'string',
      desc: 'Output directory',
    },
    overrideTimestamp: {
      type: 'number',
      desc: 'This unix timestamp will be used instead of "current time"',
    },
  }).argv

  const buildInfo = generateBuildInfo({
    overrideTimestamp,
  })
  console.log(buildInfo)

  if (dir) fs.mkdirSync(dir, { recursive: true })

  const buildInfoPath = dir ? path.resolve(dir, 'buildInfo.json') : 'buildInfo.json'
  fs.writeFileSync(buildInfoPath, JSON.stringify(buildInfo, null, 2))

  const prefix = 'buildInfo_'

  appendToBashEnv(buildInfo, prefix)
  appendToGithubEnv(buildInfo, prefix)
  appendToGithubOutput(buildInfo, prefix)
})