#! /bin/bash VERSION="$1" if [[ -z "$VERSION" ]]; then VERSION="SNAPSHOT" fi export HAVENO_RELEASE_NAME="haveno-cli-$VERSION" export HAVENO_RELEASE_ZIP_NAME="$HAVENO_RELEASE_NAME.zip" export GRADLE_DIST_NAME="cli.tar" export GRADLE_DIST_PATH="../build/distributions/$GRADLE_DIST_NAME" arrangegradledist() { # Arrange $HAVENO_RELEASE_NAME directory structure to contain a runnable # jar at the top-level, and a lib dir containing dependencies: # . # | # |__ cli.jar # |__ lib # |__ |__ dep1.jar # |__ |__ dep2.jar # |__ |__ ... # Copy the build's distribution tarball to this directory. cp -v $GRADLE_DIST_PATH . # Create a clean directory to hold the tarball's content. rm -rf $HAVENO_RELEASE_NAME mkdir $HAVENO_RELEASE_NAME # Extract the tarball's content into $HAVENO_RELEASE_NAME. tar -xf $GRADLE_DIST_NAME -C $HAVENO_RELEASE_NAME cd $HAVENO_RELEASE_NAME # Rearrange $HAVENO_RELEASE_NAME contents: move the lib directory up one level. mv -v cli/lib . # Rearrange $HAVENO_RELEASE_NAME contents: remove the cli/bin and cli directories. rm -rf cli # Rearrange $HAVENO_RELEASE_NAME contents: move the lib/cli.jar up one level. mv -v lib/cli.jar . } writemanifest() { # Make the cli.jar runnable, and define its dependencies in a MANIFEST.MF update. echo "Main-Class: haveno.cli.CliMain" > manifest-update.txt printf "Class-Path: " >> manifest-update.txt for file in lib/* do # Each new line in the classpath must be preceded by two spaces. printf " %s\n" "$file" >> manifest-update.txt done } updatemanifest() { # Append contents of to cli.jar's MANIFEST.MF. jar uvfm cli.jar manifest-update.txt } ziprelease() { cd .. zip -r $HAVENO_RELEASE_ZIP_NAME $HAVENO_RELEASE_NAME/lib $HAVENO_RELEASE_NAME/cli.jar } cleanup() { rm -v ./$GRADLE_DIST_NAME rm -r ./$HAVENO_RELEASE_NAME } arrangegradledist writemanifest updatemanifest ziprelease cleanup