./xml-to-java.sh /path/to/package/directory
Last active
March 23, 2020 12:38
-
-
Save mark-jay/06d14bdd8e433c8c1d548ef0181d2cd9 to your computer and use it in GitHub Desktop.
xml to java generator
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 | |
| # https://gist.github.com/mark-jay/06d14bdd8e433c8c1d548ef0181d2cd9 | |
| JAVA_OUTPUT_DIR="$1" | |
| DIR="/tmp/xml-to-java-tmp" | |
| URL="https://github.com/relaxng/jing-trang/releases/download/V20181222/trang-20181222.zip" | |
| FILENAME="trang-20181222.zip" | |
| JAR_FILENAME="trang-20181222/trang.jar" | |
| XML_INPUT="$DIR/input.xml" | |
| XSD_OUTPUT="$DIR/output.xsd" | |
| if [ -z "$JAVA_OUTPUT_DIR" ] ; then | |
| echo "usage: $0 <java-beans-path>\n java-beans-path - where full path to the place where java beans should be placed" | |
| exit 1 | |
| fi | |
| mkdir -p "$DIR" | |
| cd "$DIR" | |
| function download-file() { | |
| if [ ! -f "$FILENAME" ] ; then | |
| wget "$URL" | |
| unzip "$FILENAME" | |
| else | |
| echo "file download skipped" | |
| fi | |
| } | |
| function create-image() { | |
| download-file | |
| cat << EOF > Dockerfile | |
| FROM openjdk:11 | |
| COPY $JAR_FILENAME /trang.jar | |
| WORKDIR / | |
| # RUN | |
| # CMD ["java", "-jar", "/trang.jar"] | |
| ENTRYPOINT ["java", "-jar", "/trang.jar"] | |
| EOF | |
| docker build -t trang . | |
| } | |
| function generate-xsd { | |
| cd $(echo "$JAVA_OUTPUT_DIR" | sed 's|src/main/java.*|src/main/java|g') | |
| PACKAGE="$(echo "$JAVA_OUTPUT_DIR" | sed 's|.*src/main/java/||g' | sed 's|/|.|g')" | |
| xjc -extension -p "$PACKAGE" "$XSD_OUTPUT" | |
| echo $JAVA_OUTPUT_DIR/package-info.java | |
| cat << EOF > "$JAVA_OUTPUT_DIR/package-info.java" | |
| /** | |
| * generated from | |
| $(cat $XML_INPUT) | |
| * | |
| * using xsd | |
| $(cat $XSD_OUTPUT) | |
| * | |
| */ | |
| package $PACKAGE; | |
| EOF | |
| } | |
| mkdir -p $JAVA_OUTPUT_DIR | |
| [[ "$(docker images | grep trang | wc -l)" -gt 0 ]] || create-image | |
| ${EDITOR:-vi} "$XML_INPUT" | |
| docker run -v "$DIR:$DIR" trang "$XML_INPUT" "$XSD_OUTPUT" | |
| generate-xsd | |
| echo done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment