Intentially spartan in terms of flags/arguments. All that's needed is
the path to the .zen file.
To test:
cargo run -- release crates/pcb/test-workspace/boards/TestBoard.zen
Implemented:
- Workspace root detection (even without pcb.toml)
- Git-based versioning (e.g. tag > commit hash > dirty commit hash)
- Zen source files copied into release dir (release-dir/src)
- Dependencies are vendored into release dir (release-dir/src/vendor)
- Unmatched bom is generated into release dir (release-dir/bom)
- KiCad layout dir is copied into release dir (release-dir/layout)
- Metadata file is generated into release dir (release-dir/metadata.json)
- Generated artifacts are stored in .pcb/ dir (for now) and not uploaded
TODO:
- Upload the release bundle to API server
- Add a --dry-run to generate release bundle but not upload (similar to
cargo)
- Use the vendor/ dir for dependency resolution for deterministic builds
- Add pcb vendor subcommand, --offline flag for build/layout
- Add more release artifacts (e.g. gerbers, odb, etc.)
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Add structured, unmatched BOM export command
Run using `pcb bom <path/to/zen> -o json`
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Test bom command in CI
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Bump stdlib in examples from v0.2.0 to v0.2.2
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Remove default_multiplier, use struct for group key
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Use PhysicalValue to do less string parsing
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Add alternatives to group key
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* Use DynamicFullWidth for the comfy table
Attempts to fit the table within terminal width.
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
---------
Signed-off-by: akhilles <akhilvelagapudi@gmail.com>
* add pcb fmt
* unify pcb path in extension
* change the name of the extension
* bundle buildifier
* better path res
* fix clippy
* recursive
* fix format
* fix one more
* cargo info
* fix format on save
* use load resolving with modules
* local package resolution
* fix spec
* update snapshots
* remove unnecessary code
* move to snapshot tests
* revert eval errors
* canonical cache
* make tests work on windows
* refresh snap
* do not shadow alias
* fix: Add serial_test to prevent race conditions in module loading tests
- Add serial_test dependency to pcb-zen crate
- Mark tests that use package aliases with #[serial_test::serial]
- This prevents race conditions with the global ALIAS_CACHE when tests run in parallel
- Fixes test failures on Ubuntu where path canonicalization differs from macOS