Created
November 4, 2014 21:20
-
-
Save JordanMilne/66eb964149b4f4c9cb86 to your computer and use it in GitHub Desktop.
Horrible scripts to make JD's output recompileable (for Spiral Knights, circa 2011. I'm not allowed regexes anymore.)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| #find possibly broken source files that will need to be manually fixed | |
| ( \ | |
| find ../code -type f -iname "*.java" -print0 | xargs --null grep -l '// Byte code:' && \ | |
| find ../code -type f -iname "*.java" -size 0 \ | |
| ) | uniq |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| #JD doesn't generate valid code under certain circumstances, try to clean it up | |
| SCRIPT=$(readlink -f $0) | |
| BASEDIR=`dirname $SCRIPT` | |
| #directories in which to look for files to fix | |
| FIXDIRS="${BASEDIR}/../code/com/threerings/projectx/ ${BASEDIR}/../code/com/threerings/coin/ ${BASEDIR}/../code/com/threerings/hemiptera/ ${BASEDIR}/../code/com/threerings/pulse/" | |
| #fix duplicate equals operators | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l "= =" | xargs --null perl -pi -e "s/= =/=/g" | |
| #fix max float / double vals | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\-3.402824E+38F' | xargs --null perl -pi -e 's/\-3\.402824E\+38F/\Float\.MIN_VALUE/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '3.4028235E+38F' | xargs --null perl -pi -e 's/3\.4028235E\+38F/Float\.MAX_VALUE/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\-1.797693134862316E+308D' | xargs --null perl -pi -e 's/\-1\.797693134862316E\+308D/Double\.MIN_VALUE/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '1.7976931348623157E+308D' | xargs --null perl -pi -e 's/1\.7976931348623157E\+308D/Double\.MAX_VALUE/g' | |
| #unscrew references to the class of arrays of objects | |
| #non-base types | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l -P '\[L([a-zA-Z0-9\.]+)\.class' | xargs --null perl -pi -e 's/\[L([a-zA-Z0-9\.]+)\.class/$1\[\]\.class/g' | |
| #base types | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[I.class' | xargs --null perl -pi -e 's/\[I.class/int\[\]\.class/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[J.class' | xargs --null perl -pi -e 's/\[J.class/long\[\]\.class/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[F.class' | xargs --null perl -pi -e 's/\[F.class/float\[\]\.class/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[Z.class' | xargs --null perl -pi -e 's/\[Z.class/boolean\[\]\.class/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[B.class' | xargs --null perl -pi -e 's/\[B.class/byte\[\]\.class/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[C.class' | xargs --null perl -pi -e 's/\[C.class/char\[\]\.class/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[D.class' | xargs --null perl -pi -e 's/\[D.class/double\[\]\.class/g' | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l '\[S.class' | xargs --null perl -pi -e 's/\[S.class/short\[\]\.class/g' | |
| #why would you import one of the base classes? fix it anyways... | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l -P 'import (I|J|F|Z|B|C|D|S);' | xargs --null perl -pi -e 's/import (I|J|F|Z|B|C|D|S);//g' | |
| #cast to long ends up empty? bah. bet this breaks something random. | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l -F '()(' | xargs --null perl -pi -e 's/\(\)\(/(long)(/g' | |
| #sort of fix switches on enums | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l -P '\(([A-Za-z0-9\.]+\.)?[0-9]+\.\$SwitchMap\$.*?\[' | xargs --null perl -pi -e 's/\(([A-Za-z0-9\.]+\.)?[0-9]+\.\$SwitchMap\$.*?\[(.*?ordinal\(\))\]\)/($2)/g' | |
| #try to unscrew all references to this | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l -P '([0-9\.]+\.)?this(\.)?(val\$)?' | xargs --null perl -pi -e 's/([0-9\.]+\.)?this(\.)?(val\$)?/this$2/g' | |
| #now unbreak all of those package-info.java files (if I ever needed proof that perl one-liners are evil, this is it) | |
| find $FIXDIRS -type f -iname "package-info.java" -print0 | xargs --null grep --null -l -F 'abstract interface package-info' | xargs --null perl -pi -e 'BEGIN{undef $/;} s/(.*)(\@EditorMessageBundle\(.*?\)).*/$2\n$1/gms' | |
| #don't import the inner class (oh god, I think this happens for a lot of imports, this isn't good) | |
| find $FIXDIRS -type f -iname "*.java" -print0 | xargs --null grep --null -l -F 'import com.threerings.presents.dobj.DSet.Entry;' | xargs --null perl -pi -e 's/import com\.threerings\.presents\.dobj\.DSet\.Entry;/import com.threerings.presents.dobj.DSet;/g' |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| javac -classpath ../jars/ehcache-1.2.4.jar:$HOME/spiral/code/config.jar:$HOME/spiral/code/projectx-config.jar:$HOME/spiral/code/projectx-pcode.jar:$HOME/spiral/code/lwjgl.jar:$HOME/spiral/code/lwjgl_util.jar:$HOME/spiral/code/jinput.jar:$HOME/spiral/code/jshortcut.jar:$HOME/spiral/code/commons-beanutils.jar:$HOME/spiral/code/commons-digester.jar:$HOME/spiral/code/commons-logging.jar -Xmaxerrs 3000 -g -sourcepath ../code/ -d . `find ../code/ -name "*.java" |sed 's/ /\\ /' | tr '\n' ' '` 2>&1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| javac -sourcepath . -classpath ../jars/ehcache-1.2.4.jar:$HOME/spiral/code/projectx-pcode.jar:$HOME/spiral/code/config.jar:$HOME/spiral/code/projectx-config.jar:$HOME/spiral/code/projectx-pcode.jar:$HOME/spiral/code/lwjgl.jar:$HOME/spiral/code/lwjgl_util.jar:$HOME/spiral/code/jinput.jar:$HOME/spiral/code/jshortcut.jar:$HOME/spiral/code/commons-beanutils.jar:$HOME/spiral/code/commons-digester.jar:$HOME/spiral/code/commons-logging.jar -Xmaxerrs 3000 -g -d ../classes $@ 2>&1 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| ./recompile.sh 2>&1 | grep -F '..' | cut -d ':' -f 1,1 | sort | uniq -c |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment