(zilch lang rust cargo): track check-cfg flags in Cargo files
This commit is contained in:
parent
6b7556be90
commit
313cca66cc
1 changed files with 19 additions and 7 deletions
|
|
@ -32,7 +32,7 @@
|
||||||
cargo-crate-name cargo-crate-version cargo-crate-edition cargo-crate-dependencies
|
cargo-crate-name cargo-crate-version cargo-crate-edition cargo-crate-dependencies
|
||||||
cargo-crate-features cargo-crate-lib-target cargo-crate-targets
|
cargo-crate-features cargo-crate-lib-target cargo-crate-targets
|
||||||
cargo-crate-build-dependencies cargo-crate-build-script
|
cargo-crate-build-dependencies cargo-crate-build-script
|
||||||
cargo-crate-links
|
cargo-crate-links cargo-crate-check-cfg-lint
|
||||||
|
|
||||||
<cargo-workspace> make-cargo-workspace cargo-workspace?
|
<cargo-workspace> make-cargo-workspace cargo-workspace?
|
||||||
cargo-workspace-members cargo-workspace-exclude cargo-workspace-dependencies
|
cargo-workspace-members cargo-workspace-exclude cargo-workspace-dependencies
|
||||||
|
|
@ -149,7 +149,7 @@
|
||||||
(cargo-dependency-optional entry)))
|
(cargo-dependency-optional entry)))
|
||||||
|
|
||||||
(define-record-type <cargo-crate>
|
(define-record-type <cargo-crate>
|
||||||
(make-cargo-crate name version edition workspace dependencies build-dependencies features lib-target build-script targets links)
|
(make-cargo-crate name version edition workspace dependencies build-dependencies features lib-target build-script targets links check-cfg-lint)
|
||||||
cargo-crate?
|
cargo-crate?
|
||||||
(name cargo-crate-name)
|
(name cargo-crate-name)
|
||||||
(version cargo-crate-version)
|
(version cargo-crate-version)
|
||||||
|
|
@ -161,7 +161,8 @@
|
||||||
(lib-target cargo-crate-lib-target)
|
(lib-target cargo-crate-lib-target)
|
||||||
(build-script cargo-crate-build-script)
|
(build-script cargo-crate-build-script)
|
||||||
(targets cargo-crate-targets)
|
(targets cargo-crate-targets)
|
||||||
(links cargo-crate-links))
|
(links cargo-crate-links)
|
||||||
|
(check-cfg-lint cargo-crate-check-cfg-lint))
|
||||||
|
|
||||||
(define-record-printer (<cargo-crate> entry out)
|
(define-record-printer (<cargo-crate> entry out)
|
||||||
(fprintf out "#<cargo-crate ~S ~S edition:~S dependencies:~S features:~S lib-target:~S targets:~S>"
|
(fprintf out "#<cargo-crate ~S ~S edition:~S dependencies:~S features:~S lib-target:~S targets:~S>"
|
||||||
|
|
@ -174,13 +175,14 @@
|
||||||
(cargo-crate-targets entry)))
|
(cargo-crate-targets entry)))
|
||||||
|
|
||||||
(define-record-type <cargo-workspace>
|
(define-record-type <cargo-workspace>
|
||||||
(make-cargo-workspace members exclude dependencies edition version)
|
(make-cargo-workspace members exclude dependencies edition version check-cfg-lint)
|
||||||
cargo-workspace?
|
cargo-workspace?
|
||||||
(members cargo-workspace-members)
|
(members cargo-workspace-members)
|
||||||
(exclude cargo-workspace-exclude)
|
(exclude cargo-workspace-exclude)
|
||||||
(dependencies cargo-workspace-dependencies set-cargo-workspace-dependencies!)
|
(dependencies cargo-workspace-dependencies set-cargo-workspace-dependencies!)
|
||||||
(edition cargo-workspace-edition)
|
(edition cargo-workspace-edition)
|
||||||
(version cargo-workspace-version))
|
(version cargo-workspace-version)
|
||||||
|
(check-cfg-lint cargo-workspace-check-cfg-lint))
|
||||||
|
|
||||||
(define-record-printer (<cargo-workspace> entry out)
|
(define-record-printer (<cargo-workspace> entry out)
|
||||||
(fprintf out "#<cargo-workspace members:~S exclude:~S deps:~S>"
|
(fprintf out "#<cargo-workspace members:~S exclude:~S deps:~S>"
|
||||||
|
|
@ -344,6 +346,11 @@
|
||||||
(define package-links (and-cdr (assoc "links" package)))
|
(define package-links (and-cdr (assoc "links" package)))
|
||||||
(define package-edition (or (and-cdr (assoc "edition" package)) "2015"))
|
(define package-edition (or (and-cdr (assoc "edition" package)) "2015"))
|
||||||
|
|
||||||
|
(define lints (vector->list (or (and-cdr (assoc "lints" internals)) #())))
|
||||||
|
(define lints-rust (vector->list (or (and-cdr (assoc "rust" lints)) #())))
|
||||||
|
(define lints-rust-unexpected-cfgs (vector->list (or (and-cdr (assoc "unexpected_cfgs" lints-rust)) #())))
|
||||||
|
(define check-cfg (or (and-cdr (assoc "check-cfg" lints-rust-unexpected-cfgs)) '()))
|
||||||
|
|
||||||
(when (and (vector? package-edition) (and-cdr (assoc "workspace" (vector->list package-edition))))
|
(when (and (vector? package-edition) (and-cdr (assoc "workspace" (vector->list package-edition))))
|
||||||
(unless workspace (error "Package used edition.workspace = true, but no workspace provided" package-name))
|
(unless workspace (error "Package used edition.workspace = true, but no workspace provided" package-name))
|
||||||
(set! package-edition (cargo-workspace-edition workspace)))
|
(set! package-edition (cargo-workspace-edition workspace)))
|
||||||
|
|
@ -406,18 +413,23 @@
|
||||||
(vector->list (or (and-cdr (assoc "target" internals)) #())))
|
(vector->list (or (and-cdr (assoc "target" internals)) #())))
|
||||||
|
|
||||||
(define own-features (parse-features (vector->list (or (and-cdr (assoc "features" internals)) #())) (map cargo-dependency-name dependencies) (map cargo-dependency-name build-dependencies)))
|
(define own-features (parse-features (vector->list (or (and-cdr (assoc "features" internals)) #())) (map cargo-dependency-name dependencies) (map cargo-dependency-name build-dependencies)))
|
||||||
(make-cargo-crate package-name package-version package-edition workspace dependencies build-dependencies own-features lib-target build-script-target other-targets package-links))
|
(make-cargo-crate package-name package-version package-edition workspace dependencies build-dependencies own-features lib-target build-script-target other-targets package-links (append check-cfg (if workspace (cargo-workspace-check-cfg-lint workspace) '()))))
|
||||||
|
|
||||||
(define (parse-cargo-workspace internals)
|
(define (parse-cargo-workspace internals)
|
||||||
(define workspace (vector->list (cdr (assoc "workspace" internals))))
|
(define workspace (vector->list (cdr (assoc "workspace" internals))))
|
||||||
(define workspace-members (or (and-cdr (assoc "members" workspace)) '()))
|
(define workspace-members (or (and-cdr (assoc "members" workspace)) '()))
|
||||||
(define workspace-exclude (or (and-cdr (assoc "exclude" workspace)) '()))
|
(define workspace-exclude (or (and-cdr (assoc "exclude" workspace)) '()))
|
||||||
|
|
||||||
|
(define lints (vector->list (or (and-cdr (assoc "lints" internals)) #())))
|
||||||
|
(define lints-rust (vector->list (or (and-cdr (assoc "rust" lints)) #())))
|
||||||
|
(define lints-rust-unexpected-cfgs (vector->list (or (and-cdr (assoc "unexpected_cfgs" lints-rust)) #())))
|
||||||
|
(define check-cfg (or (and-cdr (assoc "check-cfg" lints-rust-unexpected-cfgs)) '()))
|
||||||
|
|
||||||
(define package (vector->list (or (and-cdr (assoc "package" workspace)) #())))
|
(define package (vector->list (or (and-cdr (assoc "package" workspace)) #())))
|
||||||
(define package-edition (and-cdr (assoc "edition" package)))
|
(define package-edition (and-cdr (assoc "edition" package)))
|
||||||
(define package-version (and-cdr (assoc "version" package)))
|
(define package-version (and-cdr (assoc "version" package)))
|
||||||
|
|
||||||
(define workspace-record (make-cargo-workspace workspace-members workspace-exclude #f package-edition package-version))
|
(define workspace-record (make-cargo-workspace workspace-members workspace-exclude #f package-edition package-version check-cfg))
|
||||||
(define dependencies
|
(define dependencies
|
||||||
(map
|
(map
|
||||||
(lambda (kv)
|
(lambda (kv)
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue