tscircuit/autorouting-dataset-01
This code manages the hardware and electronic components for circuit design and PCB layout, defining components like resistors, capacitors, transistors, connectors, and footprints, and providing tools for component placement, PCB topology, and electrical connections.
- Version
- 1.0.102
- License
- unset
- Stars
- 4
scripts/run-benchmark/writeBenchmarkOutput.ts
import { execFileSync } from "node:child_process"
import { mkdtemp, readFile, rename, rm, writeFile } from "node:fs/promises"
import os from "node:os"
import path from "node:path"
/**
* Write benchmark text, JSON, and HTML outputs to disk.
*/
const writeBenchmarkOutput = async (inputs: {
outputDirectory: string
outputText: string
summaryJsonText: string
detailJsonText: string
html_text?: string
}) => {
const {
outputDirectory,
outputText,
summaryJsonText,
detailJsonText,
html_text,
} = inputs
const tempDirectory = await mkdtemp(
path.join(outputDirectory || os.tmpdir(), "benchmark-output-"),
)
const outputPath = path.join(tempDirectory, "benchmark-output.txt")
const summaryJsonPath = path.join(tempDirectory, "benchmark-output.json")
const detailJsonPath = path.join(tempDirectory, "benchmark-details.json")
const htmlPath = path.join(tempDirectory, "benchmark-visualization.html")
const outputFileNameList = [
path.basename(outputPath),
path.basename(summaryJsonPath),
path.basename(detailJsonPath),
]
await writeFile(outputPath, outputText)
await writeFile(summaryJsonPath, summaryJsonText)
await writeFile(detailJsonPath, detailJsonText)
if (html_text) {
await writeFile(htmlPath, html_text)
outputFileNameList.push(path.basename(htmlPath))
}
const packageJsonPath = path.resolve("package.json")
const packageJsonText = await readFile(packageJsonPath, "utf8")
const packageJson = JSON.parse(packageJsonText) as {
devDependencies?: Record<string, string>
dependencies?: Record<string, string>
}
const capacityAutorouterVersionText =
packageJson.devDependencies?.["@tscircuit/capacity-autorouter"] ??
packageJson.dependencies?.["@tscircuit/capacity-autorouter"] ??
"unknown"
const capacityAutorouterVersion = capacityAutorouterVersionText.replace(
/^[^0-9]*/,
"",
)
let gitCommitShort = "unknown"
try {
gitCommitShort = execFileSync("git", ["rev-parse", "--short", "HEAD"], {
encoding: "utf8",
}).trim()
} catch {}
const archiveFileName = `output-${gitCommitShort}-${capacityAutorouterVersion}.tar.gz`
execFileSync("tar", ["-czf", archiveFileName, ...outputFileNameList], {
cwd: tempDirectory,
stdio: "inherit",
})
await rename(
path.join(tempDirectory, archiveFileName),
path.join(outputDirectory, archiveFileName),
)
await rm(tempDirectory, { recursive: true, force: true })
}
export { writeBenchmarkOutput }