diff --git a/_primitives/_rust/Cargo.lock b/_primitives/_rust/Cargo.lock index c3e0e28..4ab325f 100644 --- a/_primitives/_rust/Cargo.lock +++ b/_primitives/_rust/Cargo.lock @@ -584,6 +584,19 @@ dependencies = [ "version_check", ] +[[package]] +name = "genesis-scan" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap", + "regex", + "serde", + "serde_json", + "tempfile", + "walkdir", +] + [[package]] name = "getrandom" version = "0.2.17" @@ -1510,6 +1523,15 @@ version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9774ba4a74de5f7b1c1451ed6cd5285a32eddb5cccb8cc655a4e50009e06477f" +[[package]] +name = "same-file" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" +dependencies = [ + "winapi-util", +] + [[package]] name = "scopeguard" version = "1.2.0" @@ -2193,6 +2215,16 @@ dependencies = [ "tempfile", ] +[[package]] +name = "walkdir" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" +dependencies = [ + "same-file", + "winapi-util", +] + [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -2318,6 +2350,15 @@ dependencies = [ "wasite", ] +[[package]] +name = "winapi-util" +version = "0.1.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" +dependencies = [ + "windows-sys 0.61.2", +] + [[package]] name = "windows-core" version = "0.62.2" diff --git a/_primitives/_rust/Cargo.toml b/_primitives/_rust/Cargo.toml index 9c8e779..e036c9d 100644 --- a/_primitives/_rust/Cargo.toml +++ b/_primitives/_rust/Cargo.toml @@ -9,6 +9,7 @@ members = [ "mock-render", "visual-diff", "tokens-sync", + "genesis-scan", ] [workspace.package] diff --git a/_primitives/_rust/genesis-scan/Cargo.toml b/_primitives/_rust/genesis-scan/Cargo.toml new file mode 100644 index 0000000..5bcca33 --- /dev/null +++ b/_primitives/_rust/genesis-scan/Cargo.toml @@ -0,0 +1,20 @@ +[package] +name = "genesis-scan" +version = "0.1.0" +edition.workspace = true +rust-version.workspace = true + +[[bin]] +name = "genesis-scan" +path = "src/main.rs" + +[dependencies] +clap = { workspace = true } +serde = { workspace = true } +serde_json = { workspace = true } +regex = "1" +walkdir = "2" +anyhow = "1" + +[dev-dependencies] +tempfile = "3" diff --git a/_primitives/_rust/genesis-scan/src/main.rs b/_primitives/_rust/genesis-scan/src/main.rs new file mode 100644 index 0000000..378f7ed --- /dev/null +++ b/_primitives/_rust/genesis-scan/src/main.rs @@ -0,0 +1,100 @@ +//! genesis-scan — patent-IP leak scanner. +//! +//! Complements the runtime Claude-Code hook (`~/.claude/hooks/genesis-leak-guard.sh`) +//! by providing a binary suitable for `git` pre-commit hooks and CI pipelines. +//! +//! USAGE +//! genesis-scan --path walk a tree +//! genesis-scan --path single file +//! genesis-scan --staged scan `git diff --cached` +//! genesis-scan --stdin --file