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)`,
)