generate: dvm_repo #!/usr/bin/env fish echo 'package nip90 type Job struct { InputKind int OutputKind int Name string Description string InputType string Params []string } ' > kinds.go for kindf in (ls data-vending-machines/kinds) echo "> $kindf" set file "data-vending-machines/kinds/$kindf" set kind (echo $kindf | rg -o '\d+') set okind (echo $kind | jq -r '. + 1000') set title (rg --replace '$1' '^title: *(.*)$' $file | string trim) set desc (rg --replace '$1' '^description: *(.*)$' $file | string trim) set inputtype (rg --replace '$1' '(\[ *"i".*\])[^]]*$' $file | jq -nr 'input // [0, 0, ""] | .[2]') set params (fq ' def drill_to_code: if (type == "object" and .children) then .children | map(drill_to_code) else select ( (type == "object") and (.type == "code") ) | .literal end ; .children | . as $sections | ( $sections | map(.type == "heading" and .children == ["Params"]) | index(true) ) as $startParams | if $startParams == null then [] else ( $sections[($startParams + 1):] | map(.type == "heading" and .level == ($sections[$startParams].level)) | index(true) | . + $startParams + 1 ) as $endParams | ( $sections[($startParams + 1):$endParams] | map ( .children | select(.) | map(drill_to_code) ) | flatten | select(. | length > 1) | unique ) end | .[] ' -d markdown -r $file ) echo "var Job$kind = Job{ InputKind: $kind, OutputKind: $okind, Name: \"$title\", Description: \"$desc\", InputType: \"$inputtype\", Params: []string{" >> kinds.go for param in $params echo "\"$param\"", >> kinds.go end echo "}, } " >> kinds.go end echo "var Jobs = []Job{" >> kinds.go for kindf in (ls data-vending-machines/kinds) set kind (echo $kindf | rg -o '\d+') echo "Job$kind," >> kinds.go end echo "}" >> kinds.go go fmt kinds.go dvm_repo: #!/usr/bin/env fish if [ ! -d data-vending-machines ] git clone https://github.com/nostr-protocol/data-vending-machines.git end cd data-vending-machines git reset --hard HEAD git pull