imrishabh18/pedometer
This code defines and assembles a simple radio receiver hardware circuit using specific imported capacitors, inductors, RF connectors, and oscillator components with precise footprints and schematic attributes.
- Version
- 1.1.3
- License
- unset
- Stars
- 0
scripts/check-release.ts
import fs from "node:fs";
import {createHash} from "node:crypto";
import { runAllRoutingChecks, runAllPlacementChecks, checkEachPcbPortConnectedToPcbTraces, checkSourceTracesHavePcbTraces, checkTracesAreContiguous } from "@tscircuit/checks";
const bytes=fs.readFileSync("dist/index/circuit.json");
const c:any[]=JSON.parse(bytes.toString());
if(!c.some(x=>x.type==="pcb_trace"))throw new Error("No PCB traces present");
const errors={
build:c.filter(x=>x.type.endsWith("_error")),
placement:(await runAllPlacementChecks(c)).filter(x=>x.type.endsWith("_error")),
routing:(await runAllRoutingChecks(c)).filter(x=>x.type.endsWith("_error")),
unconnectedPorts:checkEachPcbPortConnectedToPcbTraces(c),
missingSourceTraces:checkSourceTracesHavePcbTraces(c),
discontinuousTraces:checkTracesAreContiguous(c),
};
const board=c.find(x=>x.type==="pcb_board");
const report={circuitSha256:createHash("sha256").update(bytes).digest("hex"),
board:{width:board.width,height:board.height,layers:4},
counts:{components:c.filter(x=>x.type==="source_component").length,pcbTraces:c.filter(x=>x.type==="pcb_trace").length,sourceTraces:c.filter(x=>x.type==="source_trace").length},
errorCounts:Object.fromEntries(Object.entries(errors).map(([k,v])=>[k,v.length])),errors};
fs.writeFileSync("review/routing-completeness.json",JSON.stringify(report,null,2));
const all=Object.values(errors).flat();
if(all.length){console.error(`RELEASE HOLD: ${all.length} CAD findings. See review/routing-completeness.json.`);for(const e of all)console.error(e.message);process.exit(1);}
console.log("CAD error gate passed: placement, routing, every connected port, source trace and trace continuity.");