Skip to content

Commit 1e41e99

Browse files
committed
Improve shell script quality and fix review issues
Address GitHub Copilot code quality recommendations from PR #2 along with additional independent improvements to shell scripting best practices across all compile and run scripts. Changes from GitHub Copilot review: - Quote environment variables in commands (JAVA_HOME paths) - Convert single-quoted echo statements to double-quoted for variable expansion (9 files) Additional improvements: - SC2086: Add shellcheck disable comments for option variables (JAVAC_OPTIONS, JAR_OPTIONS, JAVA_OPTIONS) which must not be quoted to allow word splitting and empty values - SC2046: Add shellcheck disable comments for $(find ...) in javac commands - these must remain unquoted for proper word splitting of individual file arguments (43 files) - SC2006: Replace deprecated backtick syntax with $(...) in example_naming-modules/compile.sh - SC2010: Replace 'ls | grep' with glob patterns and regex matching in example_naming-modules/compile.sh - SC2164: Add error handling (|| exit) to pushd/popd/cd (116 instances) - Quote loop variables and result directories for safe handling of filenames with special characters Total files modified: ~150+ shell scripts Note: Scripts have improved significantly but are not entirely clean - shellcheck still reports some warnings that require further investigation. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com> Introduced in the course of support-and-care/maven-support-and-care#137
1 parent 2552d13 commit 1e41e99

File tree

176 files changed

+752
-542
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

176 files changed

+752
-542
lines changed

jigsaw-examples/example_addExports_manifest/compile.sh

Lines changed: 24 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,41 +5,47 @@ mkdir -p mods
55
mkdir -p mlib
66

77
# compile moda
8-
echo "javac $JAVAC_OPTIONS -d mods --module-path mlib --module-source-path src $(find src/moda -name \"*.java\")"
9-
$JAVA_HOME/bin/javac $JAVAC_OPTIONS -d mods \
8+
echo "javac ${JAVAC_OPTIONS} -d mods --module-path mlib --module-source-path src \$(find src/moda -name \"*.java\")"
9+
# shellcheck disable=SC2046,SC2086 # Word splitting is intentional for find results; option variables should not be quoted
10+
"${JAVA_HOME}/bin/javac" ${JAVAC_OPTIONS} -d mods \
1011
--module-path mlib \
11-
--module-source-path src $(find src/moda -name "*.java") \
12+
--module-source-path src $(find src/moda -name '*.java') \
1213
2>&1
1314

1415
# create JAR file moda.jar
15-
pushd mods > /dev/null 2>&1
16+
pushd mods > /dev/null 2>&1 || exit
1617
MODDIR=moda
1718
if [ -f "../src/${MODDIR}/META-INF/MANIFEST.MF" ]; then
18-
echo "jar $JAR_OPTIONS --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
19-
$JAVA_HOME/bin/jar $JAR_OPTIONS --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
19+
echo "jar ${JAR_OPTIONS} --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
20+
# shellcheck disable=SC2086 # Option variables should not be quoted
21+
"${JAVA_HOME}/bin/jar" ${JAR_OPTIONS} --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
2022
else
21-
echo "jar $JAR_OPTIONS --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
22-
$JAVA_HOME/bin/jar $JAR_OPTIONS --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
23+
echo "jar ${JAR_OPTIONS} --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
24+
# shellcheck disable=SC2086 # Option variables should not be quoted
25+
"${JAVA_HOME}/bin/jar" ${JAR_OPTIONS} --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
2326
fi
24-
popd >/dev/null 2>&1
27+
popd >/dev/null 2>&1 || exit
2528

2629
# compile modmain
27-
echo "javac $JAVAC_OPTIONS -d mods --module-path mlib --module-source-path src $(find src/modmain -name \"*.java\")"
28-
$JAVA_HOME/bin/javac $JAVAC_OPTIONS -d mods \
30+
echo "javac ${JAVAC_OPTIONS} -d mods --module-path mlib --module-source-path src \$(find src/modmain -name \"*.java\")"
31+
# shellcheck disable=SC2046,SC2086 # Word splitting is intentional for find results; option variables should not be quoted
32+
"${JAVA_HOME}/bin/javac" ${JAVAC_OPTIONS} -d mods \
2933
--module-path mlib \
3034
--add-exports java.base/jdk.internal.misc=modmain \
3135
--add-exports moda/pkgainternal=modmain \
32-
--module-source-path src $(find src/modmain -name "*.java") \
36+
--module-source-path src $(find src/modmain -name '*.java') \
3337
2>&1
3438

3539
# create JAR file modmain.jar
36-
pushd mods > /dev/null 2>&1
40+
pushd mods > /dev/null 2>&1 || exit
3741
MODDIR=modmain
3842
if [ -f "../src/${MODDIR}/META-INF/MANIFEST.MF" ]; then
39-
echo "jar $JAR_OPTIONS --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
40-
$JAVA_HOME/bin/jar $JAR_OPTIONS --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
43+
echo "jar ${JAR_OPTIONS} --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
44+
# shellcheck disable=SC2086 # Option variables should not be quoted
45+
"${JAVA_HOME}/bin/jar" ${JAR_OPTIONS} --create --manifest=../src/${MODDIR}/META-INF/MANIFEST.MF --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
4146
else
42-
echo "jar $JAR_OPTIONS --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
43-
$JAVA_HOME/bin/jar $JAR_OPTIONS --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
47+
echo "jar ${JAR_OPTIONS} --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
48+
# shellcheck disable=SC2086 # Option variables should not be quoted
49+
"${JAVA_HOME}/bin/jar" ${JAR_OPTIONS} --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
4450
fi
45-
popd >/dev/null 2>&1
51+
popd >/dev/null 2>&1 || exit

jigsaw-examples/example_addExports_manifest/depvis-print.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ source ../env.sh
44
# Config properties file
55
PROPS_FILENAME=depvis.properties
66

7-
$JAVA_HOME/bin/java --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepPrinter ${PROPS_FILENAME} 2>&1
7+
"${JAVA_HOME}/bin/java" --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepPrinter ${PROPS_FILENAME} 2>&1

jigsaw-examples/example_addExports_manifest/depvis-vis.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ DOT_OUTPUTFILENAME_LEGEND=${DOT_OUTPUTFILENAME}-withlegend
1010

1111
# run the module dependency visualizer (producing a GraphViz dot file)
1212
echo "Running JigsawDepVisualizer to produce ${DOT_OUTPUTFILENAME}.dot and ${DOT_OUTPUTFILENAME_LEGEND}.dot"
13-
$JAVA_HOME/bin/java --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepVisualizer ${PROPS_FILENAME} 2>&1
13+
"${JAVA_HOME}/bin/java" --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepVisualizer ${PROPS_FILENAME} 2>&1
1414

1515
# ... and then run GraphViz to render to a image file
1616
IMAGE_OUTPUTFORMAT=png

jigsaw-examples/example_addExports_manifest/javadoc.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ rm -rf doc
55
mkdir -p doc
66

77
# generate JavaDoc
8-
echo "javadoc $JAVADOC_OPTIONS -d doc --module-path mlib --module-source-path src $(find src -name \"*.java\")"
9-
$JAVA_HOME/bin/javadoc $JAVADOC_OPTIONS -d doc \
8+
echo "javadoc ${JAVADOC_OPTIONS} -d doc --module-path mlib --module-source-path src $(find src -name \"*.java\")"
9+
# shellcheck disable=SC2086 # Option variables should not be quoted
10+
"${JAVA_HOME}/bin/javadoc" ${JAVADOC_OPTIONS} -d doc \
1011
--add-exports java.base/jdk.internal.misc=modmain \
1112
--add-exports moda/pkgainternal=modmain \
1213
--module-path mlib \

jigsaw-examples/example_addExports_manifest/run.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ source ../env.sh
44
mkdir -p run-result
55

66
# Allow access to moda without using the "Add-Exports" entry from MANIFEST.MF
7-
$JAVA_HOME/bin/java $JAVA_OPTIONS \
7+
# shellcheck disable=SC2086 # Option variables should not be quoted
8+
"${JAVA_HOME}/bin/java" ${JAVA_OPTIONS} \
89
--add-exports java.base/jdk.internal.misc=modmain \
910
--add-exports moda/pkgainternal=modmain \
1011
--module-path mlib --module modmain/pkgmain.Main 2>&1 | normalize | tee run-result/run.txt | myecho
1112

1213
# Allow access to moda with using the "Add-Exports" entry from MANIFEST.MF
13-
$JAVA_HOME/bin/java $JAVA_OPTIONS \
14+
# shellcheck disable=SC2086 # Option variables should not be quoted
15+
"${JAVA_HOME}/bin/java" ${JAVA_OPTIONS} \
1416
--add-modules moda \
1517
--module-path mlib \
1618
-jar mlib/modmain.jar 2>&1 | normalize | tee -a run-result/run.txt | myecho

jigsaw-examples/example_addReads_addExports/compile.sh

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,40 +5,44 @@ mkdir -p mods
55
mkdir -p mlib
66

77
# compile modc
8-
echo "javac $JAVAC_OPTIONS -d mods --module-path mlib --module-source-path src \$(find src/modc -name \"*.java\")"
9-
$JAVA_HOME/bin/javac $JAVAC_OPTIONS -d mods \
10-
--module-path mlib --module-source-path src $(find src/modc -name "*.java") \
8+
echo "javac ${JAVAC_OPTIONS} -d mods --module-path mlib --module-source-path src \$(find src/modc -name \"*.java\")"
9+
# shellcheck disable=SC2046,SC2086 # Word splitting is intentional for find results; option variables should not be quoted
10+
"${JAVA_HOME}/bin/javac" ${JAVAC_OPTIONS} -d mods \
11+
--module-path mlib --module-source-path src $(find src/modc -name '*.java') \
1112
2>&1
1213

1314
# compile modb (add-read from modb -> modc)
1415
# Note that the --add-reads options are not necessary for compile (but they *are* necessary for running): --add-modules implicitely enforces --add-reads
15-
echo "javac $JAVAC_OPTIONS -d mods --add-modules modc --add-reads modb=modc --add-exports modc/pkgc=modb --module-path mlib --module-source-path src $(find src/modb -name \"*.java\")"
16-
$JAVA_HOME/bin/javac $JAVAC_OPTIONS -d mods \
16+
echo "javac ${JAVAC_OPTIONS} -d mods --add-modules modc --add-reads modb=modc --add-exports modc/pkgc=modb --module-path mlib --module-source-path src \$(find src/modb -name \"*.java\")"
17+
# shellcheck disable=SC2046,SC2086 # Word splitting is intentional for find results; option variables should not be quoted
18+
"${JAVA_HOME}/bin/javac" ${JAVAC_OPTIONS} -d mods \
1719
--add-modules modc \
1820
--add-reads modb=modc \
1921
--add-exports modc/pkgc=modb \
2022
--module-path mlib \
21-
--module-source-path src $(find src/modb -name "*.java") \
23+
--module-source-path src $(find src/modb -name '*.java') \
2224
2>&1
2325

2426
# compile modmain: (add-read from modb -> modc , and add-export of modb/pkgb -> modmain)
2527
# Note that the --add-reads options are not necessary for compile (but they *are* necessary for running): --add-modules implicitely enforces --add-reads
26-
echo "javac $JAVAC_OPTIONS -d mods --add-modules modb,modc --add-reads modb=modc --add-exports modb/pkgb=modmain --add-exports modc/pkgc=modb --module-path mlib --module-source-path src $(find src/modmain -name \"*.java\")"
27-
$JAVA_HOME/bin/javac $JAVAC_OPTIONS -d mods \
28+
echo "javac ${JAVAC_OPTIONS} -d mods --add-modules modb,modc --add-reads modb=modc --add-exports modb/pkgb=modmain --add-exports modc/pkgc=modb --module-path mlib --module-source-path src \$(find src/modmain -name \"*.java\")"
29+
# shellcheck disable=SC2046,SC2086 # Word splitting is intentional for find results; option variables should not be quoted
30+
"${JAVA_HOME}/bin/javac" ${JAVAC_OPTIONS} -d mods \
2831
--add-modules modb,modc \
2932
--add-reads modmain=modb \
3033
--add-reads modb=modc \
3134
--add-exports modb/pkgb=modmain \
3235
--add-exports modc/pkgc=modb \
3336
--module-path mlib \
34-
--module-source-path src $(find src/modmain -name "*.java") \
37+
--module-source-path src $(find src/modmain -name '*.java') \
3538
2>&1
3639

37-
pushd mods > /dev/null 2>&1
40+
pushd mods > /dev/null 2>&1 || exit
3841
for dir in */;
3942
do
4043
MODDIR=${dir%*/}
41-
echo "jar $JAR_OPTIONS --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
42-
$JAVA_HOME/bin/jar $JAR_OPTIONS --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
44+
echo "jar ${JAR_OPTIONS} --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} ."
45+
# shellcheck disable=SC2086 # Option variables should not be quoted
46+
"${JAVA_HOME}/bin/jar" ${JAR_OPTIONS} --create --file=../mlib/${MODDIR}.jar -C ${MODDIR} . 2>&1
4347
done
44-
popd >/dev/null 2>&1
48+
popd >/dev/null 2>&1 || exit

jigsaw-examples/example_addReads_addExports/depvis-print.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ source ../env.sh
44
# Config properties file
55
PROPS_FILENAME=depvis.properties
66

7-
$JAVA_HOME/bin/java --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepPrinter ${PROPS_FILENAME} 2>&1
7+
"${JAVA_HOME}/bin/java" --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepPrinter ${PROPS_FILENAME} 2>&1

jigsaw-examples/example_addReads_addExports/depvis-vis.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ DOT_OUTPUTFILENAME_LEGEND=${DOT_OUTPUTFILENAME}-withlegend
1010

1111
# run the module dependency visualizer (producing a GraphViz dot file)
1212
echo "Running JigsawDepVisualizer to produce ${DOT_OUTPUTFILENAME}.dot and ${DOT_OUTPUTFILENAME_LEGEND}.dot"
13-
$JAVA_HOME/bin/java --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepVisualizer ${PROPS_FILENAME} 2>&1
13+
"${JAVA_HOME}/bin/java" --module-path ${DEPVIS_HOME}/mlib${PATH_SEPARATOR}${DEPVIS_HOME}/amlib --module depvis/depvis.JigsawDepVisualizer ${PROPS_FILENAME} 2>&1
1414

1515
# ... and then run GraphViz to render to a image file
1616
IMAGE_OUTPUTFORMAT=png

jigsaw-examples/example_addReads_addExports/javadoc.sh

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@ rm -rf doc
55
mkdir -p doc
66

77
# generate JavaDoc
8-
echo "javadoc $JAVADOC_OPTIONS -d doc --module-path mlib --module-source-path src $(find src -name \"*.java\")"
9-
$JAVA_HOME/bin/javadoc $JAVADOC_OPTIONS -d doc \
8+
echo "javadoc ${JAVADOC_OPTIONS} -d doc --module-path mlib --module-source-path src $(find src -name \"*.java\")"
9+
# shellcheck disable=SC2086 # Option variables should not be quoted
10+
"${JAVA_HOME}/bin/javadoc" ${JAVADOC_OPTIONS} -d doc \
1011
--add-modules modb,modc \
1112
--add-reads modmain=modb \
1213
--add-reads modb=modc \

jigsaw-examples/example_addReads_addExports/run.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ echo
1212
mkdir -p run-result
1313

1414
# Run the Java code, save output to run-result/run.txt, and display with highlighting
15+
# shellcheck disable=SC2086 # Option variables should not be quoted
1516
"${JAVA_HOME}/bin/java" ${JAVA_OPTIONS} --module-path mlib \
1617
--add-modules modb,modc \
1718
--add-reads modmain=modb \

0 commit comments

Comments
 (0)