gokul/acoustic-guitar-tuner

This code defines the physical pin configuration and footprint layouts for the ATtiny1616 microcontroller and a matching tactile switch component, including their key hardware connection points, dimensions, and 3D models.

Version
1.0.10
License
unset
Stars
1

scripts/create-release-manifest.mjs

import { readFileSync, readdirSync, writeFileSync } from "node:fs"
import { createHash } from "node:crypto"

const artifactFiles = readdirSync("manufacturing").filter(name => name !== "manifest.json").map(name => `manufacturing/${name}`)
const sourceFiles = ["index.circuit.tsx", "local-router.ts", "package.json", "bun.lock", "tscircuit.config.json",
  ...readdirSync("imports").filter(name => name.endsWith(".tsx")).map(name => `imports/${name}`),
  "routing-cache/input.json", "routing-cache/traces.json",
  "firmware/acoustic_tuner_attiny1616/acoustic_tuner_attiny1616.ino",
  "firmware/acoustic_tuner_attiny1616/pitch_detector.h", "firmware/test_pitch.cpp",
]
const sha256 = path => createHash("sha256").update(readFileSync(path)).digest("hex")
const manifest = {
  version: JSON.parse(readFileSync("package.json", "utf8")).version,
  status: "CAD-checked engineering prototype; manufacturer review and physical validation required",
  generatedAt: new Date().toISOString(),
  circuitSha256: sha256("dist/index/circuit.json"),
  sha256: Object.fromEntries([...sourceFiles, ...artifactFiles].sort().map(path => [path, sha256(path)])),
}
writeFileSync("manufacturing/manifest.json", JSON.stringify(manifest, null, 2) + "\n")
console.log(`Manifest records ${sourceFiles.length} source files and ${artifactFiles.length} release artifacts.`)