| ... | @@ -0,0 +1,91 @@ |
| 1 | #!/usr/bin/env bash |
| 2 | |
| 3 | set -e |
| 4 | |
| 5 | data_url="https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json" |
| 6 | out_path="src/lib.zig" |
| 7 | file=$(curl -s $data_url) |
| 8 | |
| 9 | do_print() { |
| 10 | echo $@ >> $out_path |
| 11 | } |
| 12 | print_tab() { |
| 13 | printf " " >> $out_path |
| 14 | } |
| 15 | do_filter() { |
| 16 | echo $file | jq --raw-output --compact-output "$1" |
| 17 | } |
| 18 | sub_filter() { |
| 19 | echo "$1" | jq --raw-output --compact-output "$2" |
| 20 | } |
| 21 | |
| 22 | echo "// SPDX License Data generated from $data_url" > $out_path |
| 23 | do_print "//" |
| 24 | do_print "//" "Last generated from version" $(do_filter '.licenseListVersion') |
| 25 | do_print |
| 26 | |
| 27 | do_print |
| 28 | do_print "pub const License = struct {" |
| 29 | print_tab; do_print "isOsiApproved: bool," |
| 30 | print_tab; do_print "isFsfLibre: bool," |
| 31 | print_tab; do_print "url: []const u8," |
| 32 | do_print "};" |
| 33 | |
| 34 | # |
| 35 | # |
| 36 | echo "spdx:" |
| 37 | do_print |
| 38 | do_print "pub const spdx = struct {" |
| 39 | list=$(do_filter '.licenses[] | { licenseId, isOsiApproved, isFsfLibre, url:.seeAlso[0] }') |
| 40 | for lic in $list |
| 41 | do |
| 42 | lic_id=$(sub_filter $lic '.licenseId') |
| 43 | |
| 44 | lic_obj=$(sub_filter $lic '{ isOsiApproved, isFsfLibre, url }') |
| 45 | lic_obj=${lic_obj//\":/ = } |
| 46 | lic_obj=${lic_obj//,\"/, .} |
| 47 | lic_obj=${lic_obj//\{\"/\{\.} |
| 48 | lic_obj=${lic_obj//null/false} |
| 49 | |
| 50 | printf " " >> $out_path |
| 51 | do_print "pub const @\"$lic_id\" = License$lic_obj;" |
| 52 | printf "|" |
| 53 | done |
| 54 | do_print "};" |
| 55 | echo |
| 56 | |
| 57 | # |
| 58 | # |
| 59 | echo "osi:" |
| 60 | do_print |
| 61 | do_print "pub const osi = &[_][]const u8{" |
| 62 | for lic in $list |
| 63 | do |
| 64 | lic_id=$(sub_filter $lic '.licenseId') |
| 65 | valid=$(sub_filter $lic '.isOsiApproved') |
| 66 | if [[ $valid == "true" ]] |
| 67 | then |
| 68 | print_tab; do_print "\"$lic_id\"," |
| 69 | fi |
| 70 | printf "|" |
| 71 | done |
| 72 | do_print "};" |
| 73 | echo |
| 74 | |
| 75 | # |
| 76 | # |
| 77 | echo "fsf:" |
| 78 | do_print |
| 79 | do_print "pub const fsf = &[_][]const u8{" |
| 80 | for lic in $list |
| 81 | do |
| 82 | lic_id=$(sub_filter $lic '.licenseId') |
| 83 | valid=$(sub_filter $lic '.isFsfLibre') |
| 84 | if [[ $valid == "true" ]] |
| 85 | then |
| 86 | print_tab; do_print "\"$lic_id\"," |
| 87 | fi |
| 88 | printf "|" |
| 89 | done |
| 90 | do_print "};" |
| 91 | echo |