authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-02-14 17:57:09 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2021-02-14 17:57:09 -08:00
log59c8937146ef911bfc08850a4783a2cc7da9305e
treeddab689607fefdeb811e0c70464218d2afae6fa3
parent4bf24d103edb943424c9de9b9e8b082b34ef65bb

add generation script


1 files changed, 91 insertions(+), 0 deletions(-)

generate.sh created+91
...@@ -0,0 +1,91 @@
1#!/usr/bin/env bash
2
3set -e
4
5data_url="https://raw.githubusercontent.com/spdx/license-list-data/master/json/licenses.json"
6out_path="src/lib.zig"
7file=$(curl -s $data_url)
8
9do_print() {
10 echo $@ >> $out_path
11}
12print_tab() {
13 printf " " >> $out_path
14}
15do_filter() {
16 echo $file | jq --raw-output --compact-output "$1"
17}
18sub_filter() {
19 echo "$1" | jq --raw-output --compact-output "$2"
20}
21
22echo "// SPDX License Data generated from $data_url" > $out_path
23do_print "//"
24do_print "//" "Last generated from version" $(do_filter '.licenseListVersion')
25do_print
26
27do_print
28do_print "pub const License = struct {"
29print_tab; do_print "isOsiApproved: bool,"
30print_tab; do_print "isFsfLibre: bool,"
31print_tab; do_print "url: []const u8,"
32do_print "};"
33
34#
35#
36echo "spdx:"
37do_print
38do_print "pub const spdx = struct {"
39list=$(do_filter '.licenses[] | { licenseId, isOsiApproved, isFsfLibre, url:.seeAlso[0] }')
40for lic in $list
41do
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 "|"
53done
54do_print "};"
55echo
56
57#
58#
59echo "osi:"
60do_print
61do_print "pub const osi = &[_][]const u8{"
62for lic in $list
63do
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 "|"
71done
72do_print "};"
73echo
74
75#
76#
77echo "fsf:"
78do_print
79do_print "pub const fsf = &[_][]const u8{"
80for lic in $list
81do
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 "|"
89done
90do_print "};"
91echo