JAL-3130 Added flagged runtime 'Reflection' check on Java9 Quit/About/Preferences...
[jalview.git] / utils / modulify.sh
1 #!/usr/bin/env bash
2
3 CMD=$(basename $0)
4
5 usage() {
6   echo "Usage: $CMD /path/to/jarfile" >&2
7 }
8
9 usagexit() {
10   usage
11   exit 1
12 }
13
14 error() {
15   echo $1 >&2
16   usagexit
17 }
18
19 JARFILE=$1
20 [ -z $JARFILE ] && usagexit
21 [ -f $JARFILE ] || error "No file $JARFILE"
22 [ -r $JARFILE ] || error "$JARFILE not readable"
23
24 EXT=.jar
25 SUFFIX=-MODULE
26 FILENAME=$(basename $JARFILE)
27 BASE=$(basename -s $EXT $JARFILE)
28 DIR=$(dirname $JARFILE)
29
30 TMPDIR=/tmp/$USER-$CMD-$BASE
31
32 [ x$FILENAME = x$BASE ] && error "Should be $EXT file"
33
34 mkdir -p $TMPDIR/jar || error "Could not create tmp dir $TMPDIR/jar"
35 mkdir -p $TMPDIR/info || error "Could not create tmp dir $TMPDIR/info"
36 cd $TMPDIR/jar
37 jar -xvf $JARFILE
38 jdeps --generate-module-info $TMPDIR/info $JARFILE
39 # next line assuming only one module-info.java file created, I think this is always true...? It'll just use the last one if not.
40 find $TMPDIR/info -name "module-info.java" -exec /bin/mv {} . \;
41 [ -e ./module-info.java ] || error "No module-info.java file found in $TMPDIR/info"
42 javac -d $TMPDIR/jar ./module-info.java
43 jar -cvf $DIR/${BASE}${SUFFIX}${EXT} -C $TMPDIR/jar .
44 rm -rf $TMPDIR
45
46