11#! /bin/bash
22set -eu
33
4-
5-
6- CYCLONEDX_VERSIONS=(' 1.6' ' 1.5' ' 1.4' ' 1.3' ' 1.2' )
4+ declare -a CDX_VERSIONS=(
5+ ' 1.6'
6+ ' 1.5'
7+ ' 1.4'
8+ ' 1.3'
9+ ' 1.2'
10+ )
711
812# region help
13+ DESC=" Generate HTML Schema navigator for CycloneDX JSON"
14+ USAGE="
15+ Usage: $0 [CDX_VERSION...]
916
10- USAGE_HELP="
11- Generate HTML JSON Schema navigator for CycloneDX
12- Usage: $0 <version> : runs only for a certain version (${CYCLONEDX_VERSIONS[@]} )
13- $0 : loops over all valid and draft CycloneDX versions
14- $0 --help : give this help list
17+ Supported values for CDX_VERSION: ${CDX_VERSIONS[*]}
1518"
16-
1719# endregion help
1820
21+
1922THIS_PATH=" $( realpath " $( dirname " $0 " ) " ) "
2023SCHEMA_PATH=" $( realpath " $THIS_PATH /../../schema" ) "
2124DOCS_PATH=" $THIS_PATH /docs"
2225TEMPLATES_PATH=" $THIS_PATH /templates"
2326
2427
25- # Check to see if generate-schema-doc is executable and is in the path. If not, install JSON Schema for Humans.
26- if ! [ -x " $( command -v generate-schema-doc) " ]
27- then
28- # dependencies managed externally, so dependebot/renovate can pick it up
29- pip3 install -r " $THIS_PATH /requirements.txt"
30- fi
28+ # --
29+
30+ prepare () {
31+ # Check to see if generate-schema-doc is executable and is in the path.
32+ # If not, install JSON Schema for Humans.
33+ if ! [ -x " $( command -v generate-schema-doc) " ]
34+ then
35+ # dependencies managed externally, so dependebot/renovate can pick it up
36+ python -m pip install -r " $THIS_PATH /requirements.txt"
37+ fi
38+ }
39+
3140
3241generate () {
33- version=" $1 "
34- title=" CycloneDX v${version} JSON Reference"
42+ local version=" $1 "
43+ local title=" CycloneDX v${version} JSON Reference"
3544 echo " Generating: $title "
3645
37- rm -f -R " $DOCS_PATH /$version "
38- mkdir -p
39-
40- SCHEMA_FILE=" $SCHEMA_PATH /bom-${version} .schema.json"
41- STRICT_SCHEMA_FILE=" $SCHEMA_PATH /bom-${version} -strict.schema.json"
46+ local SCHEMA_FILE=" $SCHEMA_PATH /bom-${version} .schema.json"
47+ local STRICT_SCHEMA_FILE=" $SCHEMA_PATH /bom-${version} -strict.schema.json"
4248 if [ -f " $STRICT_SCHEMA_FILE " ]
4349 then
4450 SCHEMA_FILE=" $STRICT_SCHEMA_FILE "
4551 fi
4652 echo " SCHEMA_FILE: $SCHEMA_FILE "
4753
48- OUT_FILE=" $DOCS_PATH /$version /json/index.html"
49- mkdir -p " $( dirname " $OUT_FILE " ) "
54+ local OUT_FILE=" $DOCS_PATH /$version /json/index.html"
55+ local OUT_DIR=" $( dirname " $OUT_FILE " ) "
56+ rm -rf " $OUT_DIR "
57+ mkdir -p " $OUT_DIR "
5058
5159 generate-schema-doc \
5260 --config no_link_to_reused_ref \
@@ -67,26 +75,39 @@ generate () {
6775
6876# Main logic to handle the argument using a switch case
6977case " $# " in
70- 0)
71- # No arguments provided: Loop over all VALID_CYCLONEDX_VERSIONS and DRAFT_CYCLONEDX_VERSIONS
72- for version in " ${CYCLONEDX_VERSIONS[@]} " ; do
73- generate " $version "
74- done
75- ;;
7678 1)
7779 case " $1 " in
7880 ' -h' |' --help' )
79- echo " Usage: $USAGE_HELP "
81+ echo " $DESC "
82+ echo " $USAGE "
83+ exit 0
8084 ;;
81- * )
82- # One argument provided: Call generate with the specific version
83- generate " $1 "
85+ * ) # One argument provided: Call generate with the specific version
86+ for version in " ${CDX_VERSIONS[@]} "
87+ do
88+ if [[ " $1 " == " $version " ]]
89+ then
90+ prepare
91+ generate " $1 "
92+ exit 0
93+ fi
94+ done
95+ echo " Error: unknown CDX_VERSION: $1 "
96+ echo " $USAGE "
97+ exit 1
8498 ;;
8599 esac
86100 ;;
87- * )
88- # More than one argument provided: Show usage help
89- echo " Usage: $USAGE_HELP "
90- exit 1
101+ 0) # No arguments provided: Loop over all
102+ for version in " ${CDX_VERSIONS[@]} "
103+ do
104+ prepare
105+ generate " $version "
106+ done
107+ exit 0
108+ ;;
109+ * ) # More than one argument provided: Show usage help
110+ echo " Usage: $USAGE "
111+ exit 2
91112 ;;
92113esac
0 commit comments