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.");