Skip to content

Commit 20d766d

Browse files
committed
Merge remote-tracking branch 'origin/master' into 1.7-dev
2 parents 76f2b2c + 6374e6f commit 20d766d

File tree

3 files changed

+222
-52
lines changed

3 files changed

+222
-52
lines changed

docgen/json/gen.sh

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

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

9-
rm -f -R "$DOCS_PATH"
1028

11-
# Check to see if generate-schema-doc is executable and is in the path. If not, install JSON Schema for Humans.
12-
if ! [ -x "$(command -v generate-schema-doc)" ]
13-
then
14-
# dependencies managed externally, so dependebot/renovate can pick it up
15-
pip3 install -r "$THIS_PATH/requirements.txt"
16-
fi
29+
# --
30+
31+
prepare () {
32+
# Check to see if generate-schema-doc is executable and is in the path.
33+
# If not, install JSON Schema for Humans.
34+
if ! [ -x "$(command -v generate-schema-doc)" ]
35+
then
36+
# dependencies managed externally, so dependebot/renovate can pick it up
37+
python -m pip install -r "$THIS_PATH/requirements.txt"
38+
fi
39+
}
40+
1741

1842
generate () {
19-
version="$1"
20-
title="CycloneDX v${version} JSON Reference"
43+
local version="$1"
44+
local title="CycloneDX v${version} JSON Reference"
2145
echo "Generating: $title"
2246

23-
SCHEMA_FILE="$SCHEMA_PATH/bom-${version}.schema.json"
24-
STRICT_SCHEMA_FILE="$SCHEMA_PATH/bom-${version}-strict.schema.json"
47+
local SCHEMA_FILE="$SCHEMA_PATH/bom-${version}.schema.json"
48+
local STRICT_SCHEMA_FILE="$SCHEMA_PATH/bom-${version}-strict.schema.json"
2549
if [ -f "$STRICT_SCHEMA_FILE" ]
2650
then
2751
SCHEMA_FILE="$STRICT_SCHEMA_FILE"
2852
fi
2953
echo "SCHEMA_FILE: $SCHEMA_FILE"
3054

31-
OUT_FILE="$DOCS_PATH/$version/json/index.html"
32-
mkdir -p "$(dirname "$OUT_FILE")"
55+
local OUT_FILE="$DOCS_PATH/$version/json/index.html"
56+
local OUT_DIR="$(dirname "$OUT_FILE")"
57+
rm -rf "$OUT_DIR"
58+
mkdir -p "$OUT_DIR"
3359

3460
generate-schema-doc \
3561
--config no_link_to_reused_ref \
@@ -47,9 +73,42 @@ generate () {
4773
sed -i -e "s/\${version}/$version/g" "$OUT_FILE"
4874
}
4975

50-
generate 1.7
51-
generate 1.6
52-
generate 1.5
53-
generate 1.4
54-
generate 1.3
55-
generate 1.2
76+
77+
# Main logic to handle the argument using a switch case
78+
case "$#" in
79+
1)
80+
case "$1" in
81+
'-h'|'--help')
82+
echo "$DESC"
83+
echo "$USAGE"
84+
exit 0
85+
;;
86+
*) # One argument provided: Call generate with the specific version
87+
for version in "${CDX_VERSIONS[@]}"
88+
do
89+
if [[ "$1" == "$version" ]]
90+
then
91+
prepare
92+
generate "$1"
93+
exit 0
94+
fi
95+
done
96+
echo "Error: unknown CDX_VERSION: $1"
97+
echo "$USAGE"
98+
exit 1
99+
;;
100+
esac
101+
;;
102+
0) # No arguments provided: Loop over all
103+
for version in "${CDX_VERSIONS[@]}"
104+
do
105+
prepare
106+
generate "$version"
107+
done
108+
exit 0
109+
;;
110+
*) # More than one argument provided: Show usage help
111+
echo "Usage: $USAGE"
112+
exit 2
113+
;;
114+
esac

docgen/proto/gen.sh

Lines changed: 70 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,106 @@
11
#!/bin/bash
22
set -eu
33

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

927
PROTOC_GEN_DOC_VERSION='1.5.1'
1028

29+
1130
# --
1231

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

1539
generate () {
16-
version="$1"
17-
title="CycloneDX v$version Protobuf Reference"
40+
local version="$1"
41+
local title="CycloneDX v$version Protobuf Reference"
1842
echo "Generating: $title"
1943

20-
OUT_DIR="$DOCS_PATH/$version/proto"
21-
OUT_FILE="index.html"
44+
local OUT_DIR="$DOCS_PATH/$version/proto"
45+
local OUT_FILE="index.html"
2246
mkdir -p "$OUT_DIR"
2347

24-
## docs: https://github.com/pseudomuto/protoc-gen-doc
2548
docker run --rm \
2649
-v "${OUT_DIR}:/out" \
2750
-v "${SCHEMA_PATH}:/protos:ro" \
2851
-v "${TEMPLATES_PATH}:/templates:ro" \
29-
"pseudomuto/protoc-gen-doc:${PROTOC_GEN_DOC_VERSION}" \
52+
"$PROTOC_CONTAINER_IMAGE" \
3053
--doc_opt=/templates/html.tmpl,"$OUT_FILE" \
3154
"bom-${version}.proto"
3255

3356
# fix file permissions
3457
docker run --rm \
3558
-v "${OUT_DIR}:/out" \
3659
--entrypoint chown \
37-
"pseudomuto/protoc-gen-doc:${PROTOC_GEN_DOC_VERSION}" \
60+
"$PROTOC_CONTAINER_IMAGE" \
3861
"$(id -u):$(id -g)" -R /out
3962

4063
sed -i -e "s/\${quotedTitle}/\"$title\"/g" "$OUT_DIR/$OUT_FILE"
4164
sed -i -e "s/\${title}/$title/g" "$OUT_DIR/$OUT_FILE"
4265
sed -i -e "s/\${version}/$version/g" "$OUT_DIR/$OUT_FILE"
4366
}
4467

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

docgen/xml/gen.sh

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

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

829
SAXON_VERSION='10.9'
930

10-
# --
1131

12-
13-
rm -rf "$DOCS_PATH"
32+
# --
1433

1534

1635
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
36+
prepare () {
37+
if [ ! -f "$THIS_PATH/$SAXON_JAR" ]; then
38+
echo "fetching $SAXON_JAR"
39+
curl --output-dir "$THIS_PATH" -O \
40+
"https://repo1.maven.org/maven2/net/sf/saxon/Saxon-HE/$SAXON_VERSION/$SAXON_JAR"
41+
fi
42+
}
2243

2344

2445
generate () {
25-
version="$1"
26-
title="CycloneDX v$version XML Reference"
46+
local version="$1"
47+
local title="CycloneDX v$version XML Reference"
2748
echo "Generating: $title"
2849

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

3255
## docs: https://www.saxonica.com/documentation10/index.html#!using-xsl/commandline
3356
java -jar "$THIS_PATH/$SAXON_JAR" \
@@ -38,11 +61,42 @@ generate () {
3861
title="$title"
3962
}
4063

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

0 commit comments

Comments
 (0)