Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,12 @@ jobs:
- name: Run coverage
run: cargo tarpaulin --out lcov
- name: Upload coverage data to CodeScene
if: ${{ secrets.CS_ACCESS_TOKEN }}
uses: leynos/shared-actions/.github/actions/upload-codescene-coverage@v1.1.0
env:
CS_ACCESS_TOKEN: ${{ secrets.CS_ACCESS_TOKEN }}
if: ${{ env.CS_ACCESS_TOKEN != '' }}
uses: leynos/shared-actions/.github/actions/upload-codescene-coverage@v1.2.1
with:
format: lcov
access-token: ${{ secrets.CS_ACCESS_TOKEN }}
access-token: ${{ env.CS_ACCESS_TOKEN }}
installer-checksum: ${{ vars.CODESCENE_CLI_SHA256 }}

67 changes: 67 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@ serde = { version = "1", features = ["derive"] }
serde_yml = "0.0.12"
semver = { version = "1", features = ["serde"] }
anyhow = "1"
thiserror = "1"
sha2 = "0.10"

[lints.clippy]
pedantic = { level = "warn", priority = -1 }
Expand Down
8 changes: 8 additions & 0 deletions docs/netsuke-design.md
Original file line number Diff line number Diff line change
Expand Up @@ -1056,6 +1056,14 @@ action identifier and carries the `phony` and `always` flags verbatim from the
manifest. No Ninja specific placeholders are stored in the IR to keep the
representation portable.

- Actions are deduplicated using a SHA-256 hash of their recipe and metadata.
Identical commands therefore share the same identifier which keeps the IR
deterministic for snapshot tests.
- Multiple rule references in a single target are not yet supported. The IR
generator reports `IrGenError::MultipleRules` when encountered.
- Duplicate output files are rejected. Attempting to define the same output
path twice results in `IrGenError::DuplicateOutput`.

## Section 6: Process Management and Secure Execution

The final stage of a Netsuke build involves executing commands. While Netsuke
Expand Down
11 changes: 6 additions & 5 deletions docs/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,14 +40,15 @@ compilation pipeline from parsing to execution.
- [x] Define the IR data structures (BuildGraph, Action, BuildEdge) in
`src/ir.rs`, keeping it backend-agnostic as per the design. *(done)*

- [ ] Implement the ir::from_manifest transformation logic to convert the
AST into the BuildGraph IR.
- [x] Implement the ir::from_manifest transformation logic to convert the
AST into the BuildGraph IR. *(done)*

- [ ] During transformation, consolidate and deduplicate rules into ir::Action
structs based on a hash of their properties.
- [x] During transformation, consolidate and deduplicate rules into ir::Action
structs based on a hash of their properties. *(done)*

- [ ] Implement validation to ensure that every rule, command, or script
- [x] Implement validation to ensure that every rule, command, or script
referenced by a target is valid and that they are mutually exclusive.
*(done)*

Comment thread
leynos marked this conversation as resolved.
- [ ] Implement a cycle detection algorithm (e.g., depth-first search) to fail
compilation if a circular dependency is found in the target graph.
Expand Down
Loading