ShiboSoftwareDev/mspm0g3507-gameboy-handheld
An AO3400A N-channel MOSFET for power switching and an AP2112K-3.3TRG1 LDO regulator providing a regulated 3.3 V output, both in compact SMD packages.
- Version
- 1.2.1
- License
- unset
- Stars
- 0
scripts/check-schematic-placement.mjs
import { spawnSync } from "node:child_process"
const result = spawnSync(
"tsci",
["check", "schematic-placement", "index.circuit.tsx"],
{ encoding: "utf8", maxBuffer: 8 * 1024 * 1024 },
)
if (result.error) throw result.error
if (result.status !== 0) {
process.stderr.write(result.stderr)
process.stderr.write(result.stdout)
process.exit(result.status ?? 1)
}
const issueBlocks = [
...result.stdout.matchAll(
/<SchematicPlacementIssues>[\s\S]*?<\/SchematicPlacementIssues>/g,
),
].map((match) => match[0])
const issueBlock = issueBlocks.join("\n")
const traceSimplificationAdvisories =
issueBlock.match(/<TraceCanBeSimplifiedByMovingComponent\b[^>]*\/>/g) ?? []
const decouplingGroupingAdvisories =
issueBlock.match(/<DecouplingCapacitorsNotCloseTogether\b[^>]*\/>/g) ?? []
const blockingIssues = issueBlock
.replace(/<\/?SchematicPlacementIssues>/g, "")
.replace(/<TraceCanBeSimplifiedByMovingComponent\b[^>]*\/>/g, "")
.replace(/<DecouplingCapacitorsNotCloseTogether\b[^>]*\/>/g, "")
.trim()
if (blockingIssues) {
process.stderr.write(`${issueBlock}\n`)
process.exit(1)
}
console.log(
`No blocking schematic placement issues detected (${traceSimplificationAdvisories.length} trace-simplification advisories, ${decouplingGroupingAdvisories.length} cross-section decoupling-grouping advisories)`,
)