Skip to content

Commit 49077b0

Browse files
committed
docs: allow SchemaDocs HTML generator run for one(specific) CDX version
Signed-off-by: Jan Kowalleck <[email protected]>
1 parent 450332f commit 49077b0

File tree

3 files changed

+201
-69
lines changed

3 files changed

+201
-69
lines changed

docgen/json/gen.sh

Lines changed: 59 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -1,52 +1,60 @@
11
#!/bin/bash
22
set -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+
1922
THIS_PATH="$(realpath "$(dirname "$0")")"
2023
SCHEMA_PATH="$(realpath "$THIS_PATH/../../schema")"
2124
DOCS_PATH="$THIS_PATH/docs"
2225
TEMPLATES_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

3241
generate () {
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
6977
case "$#" 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
;;
92113
esac

docgen/proto/gen.sh

Lines changed: 69 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,105 @@
11
#!/bin/bash
22
set -eu
33

4+
declare -a CDX_VERSIONS=(
5+
'1.6'
6+
'1.5'
7+
'1.4'
8+
'1.3'
9+
)
10+
11+
# region help
12+
DESC="Generate HTML Schema navigator for CycloneDX ProtoBuf"
13+
USAGE="
14+
Usage: $0 [CDX_VERSION...]
15+
16+
Supported values for CDX_VERSION: ${CDX_VERSIONS[*]}
17+
"
18+
# endregion help
19+
20+
421
THIS_PATH="$(realpath "$(dirname "$0")")"
522
SCHEMA_PATH="$(realpath "$THIS_PATH/../../schema")"
623
DOCS_PATH="$THIS_PATH/docs"
724
TEMPLATES_PATH="$THIS_PATH/templates"
825

926
PROTOC_GEN_DOC_VERSION='1.5.1'
1027

28+
1129
# --
1230

13-
rm -f -R "$DOCS_PATH"
31+
32+
prepare() {
33+
## docs: https://github.com/pseudomuto/protoc-gen-doc
34+
PROTOC_CONTAINER_IMAGE="pseudomuto/protoc-gen-doc:${PROTOC_GEN_DOC_VERSION}"
35+
docker pull "$PROTOC_CONTAINER_IMAGE"
36+
}
1437

1538
generate () {
16-
version="$1"
17-
title="CycloneDX v$version Protobuf Reference"
39+
local version="$1"
40+
local title="CycloneDX v$version Protobuf Reference"
1841
echo "Generating: $title"
1942

20-
OUT_DIR="$DOCS_PATH/$version/proto"
21-
OUT_FILE="index.html"
43+
local OUT_DIR="$DOCS_PATH/$version/proto"
44+
local OUT_FILE="index.html"
2245
mkdir -p "$OUT_DIR"
2346

24-
## docs: https://github.com/pseudomuto/protoc-gen-doc
2547
docker run --rm \
2648
-v "${OUT_DIR}:/out" \
2749
-v "${SCHEMA_PATH}:/protos:ro" \
2850
-v "${TEMPLATES_PATH}:/templates:ro" \
29-
"pseudomuto/protoc-gen-doc:${PROTOC_GEN_DOC_VERSION}" \
51+
"$PROTOC_CONTAINER_IMAGE" \
3052
--doc_opt=/templates/html.tmpl,"$OUT_FILE" \
3153
"bom-${version}.proto"
3254

3355
# fix file permissions
3456
docker run --rm \
3557
-v "${OUT_DIR}:/out" \
3658
--entrypoint chown \
37-
"pseudomuto/protoc-gen-doc:${PROTOC_GEN_DOC_VERSION}" \
59+
"$PROTOC_CONTAINER_IMAGE" \
3860
"$(id -u):$(id -g)" -R /out
3961

4062
sed -i -e "s/\${quotedTitle}/\"$title\"/g" "$OUT_DIR/$OUT_FILE"
4163
sed -i -e "s/\${title}/$title/g" "$OUT_DIR/$OUT_FILE"
4264
sed -i -e "s/\${version}/$version/g" "$OUT_DIR/$OUT_FILE"
4365
}
4466

45-
generate 1.3
46-
generate 1.4
47-
generate 1.5
48-
generate 1.6
67+
68+
# Main logic to handle the argument using a switch case
69+
case "$#" in
70+
1)
71+
case "$1" in
72+
'-h'|'--help')
73+
echo "$DESC"
74+
echo "$USAGE"
75+
exit 0
76+
;;
77+
*) # One argument provided: Call generate with the specific version
78+
for version in "${CDX_VERSIONS[@]}"
79+
do
80+
if [[ "$1" == "$version" ]]
81+
then
82+
prepare
83+
generate "$1"
84+
exit 0
85+
fi
86+
done
87+
echo "Error: unknown CDX_VERSION: $1"
88+
echo "$USAGE"
89+
exit 1
90+
;;
91+
esac
92+
;;
93+
0) # No arguments provided: Loop over all
94+
for version in "${CDX_VERSIONS[@]}"
95+
do
96+
prepare
97+
generate "$version"
98+
done
99+
exit 0
100+
;;
101+
*) # More than one argument provided: Show usage help
102+
echo "Usage: $USAGE"
103+
exit 2
104+
;;
105+
esac

docgen/xml/gen.sh

Lines changed: 73 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,55 @@
11
#!/bin/bash
22
set -eu
33

4+
declare -a CDX_VERSIONS=(
5+
'1.6'
6+
'1.5'
7+
'1.4'
8+
'1.3'
9+
'1.2'
10+
'1.1'
11+
'1.0'
12+
)
13+
14+
# region help
15+
DESC="Generate HTML Schema navigator for CycloneDX XML"
16+
USAGE="
17+
Usage: $0 [CDX_VERSION...]
18+
19+
Supported values for CDX_VERSION: ${CDX_VERSIONS[*]}
20+
"
21+
# endregion help
22+
23+
424
THIS_PATH="$(realpath "$(dirname "$0")")"
525
SCHEMA_PATH="$(realpath "$THIS_PATH/../../schema")"
626
DOCS_PATH="$THIS_PATH/docs"
727

828
SAXON_VERSION='10.9'
929

10-
# --
1130

12-
13-
rm -rf "$DOCS_PATH"
31+
# --
1432

1533

1634
SAXON_JAR="Saxon-HE-${SAXON_VERSION}.jar"
17-
if [ ! -f "$THIS_PATH/$SAXON_JAR" ]; then
18-
echo "fetching $SAXON_JAR"
19-
curl --output-dir "$THIS_PATH" -O \
20-
"https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/$SAXON_VERSION/$SAXON_JAR"
21-
fi
35+
prepare () {
36+
if [ ! -f "$THIS_PATH/$SAXON_JAR" ]; then
37+
echo "fetching $SAXON_JAR"
38+
curl --output-dir "$THIS_PATH" -O \
39+
"https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/$SAXON_VERSION/$SAXON_JAR"
40+
fi
41+
}
2242

2343

2444
generate () {
25-
version="$1"
26-
title="CycloneDX v$version XML Reference"
45+
local version="$1"
46+
local title="CycloneDX v$version XML Reference"
2747
echo "Generating: $title"
2848

29-
OUT_FILE="$DOCS_PATH/$version/xml/index.html"
30-
mkdir -p "$(dirname "$OUT_FILE")"
49+
local OUT_FILE="$DOCS_PATH/$version/xml/index.html"
50+
local OUT_DIR="$(dirname "$OUT_FILE")"
51+
rm -rf "$OUT_DIR"
52+
mkdir -p "$OUT_DIR"
3153

3254
## docs: https://www.saxonica.com/documentation10/index.html#!using-xsl/commandline
3355
java -jar "$THIS_PATH/$SAXON_JAR" \
@@ -38,10 +60,42 @@ generate () {
3860
title="$title"
3961
}
4062

41-
generate 1.0
42-
generate 1.1
43-
generate 1.2
44-
generate 1.3
45-
generate 1.4
46-
generate 1.5
47-
generate 1.6
63+
64+
# Main logic to handle the argument using a switch case
65+
case "$#" in
66+
1)
67+
case "$1" in
68+
'-h'|'--help')
69+
echo "$DESC"
70+
echo "$USAGE"
71+
exit 0
72+
;;
73+
*) # One argument provided: Call generate with the specific version
74+
for version in "${CDX_VERSIONS[@]}"
75+
do
76+
if [[ "$1" == "$version" ]]
77+
then
78+
prepare
79+
generate "$1"
80+
exit 0
81+
fi
82+
done
83+
echo "Error: unknown CDX_VERSION: $1"
84+
echo "$USAGE"
85+
exit 1
86+
;;
87+
esac
88+
;;
89+
0) # No arguments provided: Loop over all
90+
for version in "${CDX_VERSIONS[@]}"
91+
do
92+
prepare
93+
generate "$version"
94+
done
95+
exit 0
96+
;;
97+
*) # More than one argument provided: Show usage help
98+
echo "Usage: $USAGE"
99+
exit 2
100+
;;
101+
esac

0 commit comments

Comments
 (0)