Tup: generate rules from sbom.json

This commit is contained in:
Emery Hemingway 2024-06-03 14:01:18 +03:00
parent 92dd48b528
commit 12ed9cd35b
8 changed files with 38 additions and 23 deletions

View File

@ -1,2 +1,8 @@
include_rules
: sbom.json |> !sbom-to-nix |> | ./<lock>
run ./Tuprules.jq sbom.json
: foreach {bin} |> !assert_built |>
: $(BIN_DIR)/msg |> !symlink |> $(BIN_DIR)/beep
: $(BIN_DIR)/msg |> !symlink |> $(BIN_DIR)/assert

12
Tuprules.jq Executable file
View File

@ -0,0 +1,12 @@
#! /usr/bin/env -S jq --raw-output --from-file
.metadata.component.properties as $props |
$props |
["."] + (
map( select(.name | .[0:10] == "nim:srcDir") ) +
map( select(.name | .[0:10] == "nim:binDir") ) |
map(.value)) | .[-1] as $binDir |
$props |
map( select(.name | .[0:8] == "nim:bin:") ) |
map( ": \($binDir)/\(.value).nim |> !nim_bin |> $(BIN_DIR)/\(.name[8:]) {bin}" ) |
join("\n")

View File

@ -1,4 +1,8 @@
include ../syndicate-nim/depends.tup
PROJECT_DIR = $(TUP_CWD)
NIM = $(DIRENV) $(NIM)
NIM_FLAGS += --path:$(TUP_CWD)/../syndicate-nim/src
NIM_GROUPS += $(TUP_CWD)/<lock>
NIM_FLAGS += --path:$(PROJECT_DIR)/../syndicate-nim/src
NIM_GROUPS += $(SYNDICATE_PROTOCOL)
NIM_GROUPS += $(PROJECT_DIR)/<lock>
NIM_GROUPS += $(PROJECT_DIR)/<schema>

View File

@ -5,15 +5,13 @@ with pkgs;
let
buildNimSbom = pkgs.callPackage (import <build-nim-sbom.nix>) { };
in
buildNimSbom ./sbom.json (
final: prev: {
src = if lib.inNixShell then null else lib.cleanSource ./.;
buildInputs = [
postgresql.out
sqlite
libxml2
libxslt
openssl
];
}
)
buildNimSbom (finalAttrs: {
src = if lib.inNixShell then null else lib.cleanSource ./.;
buildInputs = [
postgresql.out
sqlite
libxml2
libxslt
openssl
];
}) ./sbom.json

View File

@ -1,5 +0,0 @@
include_rules
: foreach *.nim | $(SYNDICATE_PROTOCOL) ./<schema> |> !nim_bin |> {bin}
: foreach {bin} |> !assert_built |>
: $(BIN_DIR)/msg |> !symlink |> $(BIN_DIR)/beep
: $(BIN_DIR)/msg |> !symlink |> $(BIN_DIR)/assert

View File

@ -1,2 +1,2 @@
include_rules
: foreach ../../*.prs |> !preserves_schema_nim |> %B.nim | ../<schema>
: foreach ../../*.prs |> !preserves_schema_nim |> %B.nim | $(PROJECT_DIR)/<schema>

View File

@ -1,3 +1,3 @@
include_rules
: foreach *.nim | $(SYNDICATE_PROTOCOL) ../<schema> |> !nim_bin |> {bin}
: foreach *.nim |> !nim_bin |> {bin}
: foreach {bin} |> !assert_built |>

View File

@ -9,7 +9,7 @@ proc lookupComponent(sbom: JsonNode; bomRef: string): JsonNode =
result = newJNull()
let
sbom = "sbom.json".readFile.parseJson
sbom = (getPkgDir() & "/sbom.json").readFile.parseJson
comp = sbom{"metadata", "component"}
bomRef = comp{"bom-ref"}.getStr
@ -41,7 +41,7 @@ for prop in comp{"properties"}.getElems.items:
add(backend, val)
else:
if key.startsWith "nim:bin:":
namedBin[key[9..key.high]] = val
namedBin[key[8..key.high]] = val
for depend in sbom{"dependencies"}.items:
if depend{"ref"}.getStr == bomRef: