JAL-4107 patching tests after merge
[jalview.git] / utils / modulify-jar.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 # set absolute path to $JARFILE if not specified
31 [ x${DIR#/} = x$DIR ] && DIR=$(cd "$DIR" && pwd)
32
33 ABSJARFILE=$DIR/$FILENAME
34
35 TMPDIR=/tmp/$USER-$CMD-$BASE-$$
36
37 [ x$FILENAME = x$BASE ] && error "Should be $EXT file"
38
39 mkdir -p $TMPDIR/jar || error "Could not create tmp dir $TMPDIR/jar"
40 mkdir -p $TMPDIR/info || error "Could not create tmp dir $TMPDIR/info"
41 cd $TMPDIR/jar
42 jar -xvf $ABSJARFILE > /dev/null
43 jdeps --module-path="$DIR" --generate-module-info $TMPDIR/info $ABSJARFILE
44 # 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.
45 find $TMPDIR/info -name "module-info.java" -exec /bin/mv {} . \;
46 [ -e ./module-info.java ] || error "No module-info.java file found in $TMPDIR/info"
47 javac -d $TMPDIR/jar ./module-info.java
48 jar -cvf $DIR/${BASE}${SUFFIX}${EXT} -C $TMPDIR/jar . > /dev/null
49 rm -rf $TMPDIR
50
51