Skip to content

Commit

Permalink
...
Browse files Browse the repository at this point in the history
  • Loading branch information
bowbahdoe committed Jan 5, 2024
1 parent 53fc323 commit 4d92a71
Show file tree
Hide file tree
Showing 7 changed files with 189 additions and 13 deletions.
1 change: 1 addition & 0 deletions JRESOLVE_RELEASED_VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.0.3
1 change: 1 addition & 0 deletions JRESOLVE_VERSION
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.0.3
8 changes: 4 additions & 4 deletions Justfile
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ make_reflect_config:
./mvnw -Ppicocli-codegen dependency:copy-dependencies
./mvnw package
java \
--class-path target/jresolve-cli-0.0.2.jar:target/dependency/json-0.2.4.jar:target/dependency/picocli-4.7.5.jar:target/dependency/picocli-codegen-4.7.5.jar:target/dependency/purl-0.0.1.jar:target/dependency/resolve-0.0.4.jar \
--class-path target/jresolve-cli-0.0.3.jar:target/dependency/json-0.3.1.jar:target/dependency/picocli-4.7.5.jar:target/dependency/picocli-codegen-4.7.5.jar:target/dependency/purl-0.0.1.jar:target/dependency/resolve-0.0.4.jar \
picocli.codegen.aot.graalvm.ReflectionConfigGenerator \
dev.mccue.resolve.cli.CliMain > reflect.json

Expand All @@ -17,14 +17,14 @@ exe static='':
./mvnw dependency:copy-dependencies
./mvnw package
native-image \
--module-path target/dependency/json-0.2.4.jar:target/dependency/picocli-4.7.5.jar:target/dependency/purl-0.0.1.jar:target/dependency/resolve-0.0.4.jar \
--module-path target/dependency/json-0.3.1.jar:target/dependency/picocli-4.7.5.jar:target/dependency/purl-0.0.1.jar:target/dependency/resolve-0.0.4.jar \
-H:+UnlockExperimentalVMOptions -H:ReflectionConfigurationFiles=reflect.json -H:+ReportUnsupportedElementsAtRuntime \
-jar target/jresolve-cli-0.0.2.jar \
-jar target/jresolve-cli-0.0.3.jar \
{{static}} jresolve

exe_windows:
./mvnw clean
./mvnw compile
./mvnw dependency:copy-dependencies
./mvnw package
native-image.cmd --module-path "target\dependency\json-0.2.4.jar;target\dependency\picocli-4.7.5.jar;target\dependency\purl-0.0.1.jar;target\dependency\resolve-0.0.4.jar" -H:+UnlockExperimentalVMOptions -H:ReflectionConfigurationFiles=reflect.json -H:+ReportUnsupportedElementsAtRuntime -jar "target\jresolve-cli-0.0.2.jar" jresolve
native-image.cmd --module-path "target\dependency\json-0.3.1.jar;target\dependency\picocli-4.7.5.jar;target\dependency\purl-0.0.1.jar;target\dependency\resolve-0.0.4.jar" -H:+UnlockExperimentalVMOptions -H:ReflectionConfigurationFiles=reflect.json -H:+ReportUnsupportedElementsAtRuntime -jar "target\jresolve-cli-0.0.3.jar" jresolve
176 changes: 176 additions & 0 deletions install
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
#!/usr/bin/env bash

set -euo pipefail

version=""
checksum=""
static_binary="false"
default_install_dir="/usr/local/bin"
install_dir="$default_install_dir"
download_dir=""
dev_build=""

print_help() {
echo "Installs latest (or specific) version of jresolve. Installation directory defaults to /usr/local/bin."
echo -e
echo "Usage:"
echo "install [--dir <dir>] [--download-dir <download-dir>] [--version <version>] [--checksum <checksum>] [--static]"
echo -e
echo "Defaults:"
echo " * Installation directory: ${default_install_dir}"
echo " * Download directory: temporary"
if [[ -z "$checksum" ]]; then
echo " * Checksum: no"
else
echo " * Checksum: ${checksum}"
fi
echo " * Static binary: ${static_binary}"
echo " * Version: <Latest release on github>"
exit 1
}

while [[ $# -gt 0 ]]
do
key="$1"
case "$key" in
--dir)
install_dir="$2"
shift
shift
;;
--download-dir)
download_dir="$2"
shift
shift
;;
--version)
version="$2"
shift
shift
;;
--checksum)
checksum="$2"
shift
shift
;;
--static)
static_binary="true"
shift
;;
--dev-build)
dev_build="true"
shift
;;
*) # unknown option
print_help
shift
;;
esac
done

if [[ -z "$download_dir" ]]; then
download_dir="$(mktemp -d)"
trap 'rm -rf "$download_dir"' EXIT
fi

if [[ "$checksum" != "" ]] && [[ "$version" == "" ]]; then
>&2 echo "Options --checksum and --version should be provided together!"
exit 1
fi

if [[ "$version" == "" ]]; then
if [[ "$dev_build" == "true" ]]; then
version="$(curl -sL https://raw.githubusercontent.com/bowbahdoe/jresolve/master/resources/JRESOLVE_VERSION)"
else
version="$(curl -sL https://raw.githubusercontent.com/bowbahdoe/jresolve/master/resources/JRESOLVE_RELEASED_VERSION)"
fi
fi

case "$(uname -s)" in
Linux*) platform=linux;;
Darwin*) platform=macos;;
esac

# Ugly ugly conversion of version to a comparable number
IFS='.' read -ra VER <<< "${version//-SNAPSHOT/}"
vernum=$(printf "%03d%03d%03d" "${VER[0]}" "${VER[1]}" "${VER[2]}")

case "$(uname -m)" in
aarch64) arch=aarch64
if [[ "$platform" == "linux" ]]; then
static_binary="true"
fi
;;
arm64) arch="aarch64"
;;
*) arch=amd64
# always use static image on linux
if [[ "$platform" == "linux" ]]; then
static_binary="true"
fi
;;
esac

ext="tar.gz"
util="$(which tar) -zxf"

case "$platform-$static_binary" in
linux-true) filename="jresolve-$version-$platform-$arch-static."$ext
;;
*-true) >&2 echo "Static binaries are only available in Linux platform! Using the non-static one..."
filename="jresolve-$version-$platform-$arch."$ext
;;
*) filename="jresolve-$version-$platform-$arch."$ext
;;
esac

if [[ "$version" == *-SNAPSHOT ]]
then
repo="jresolve-dev-builds"
else
repo="jresolve"
fi

download_url="https://github.com/jresolve/$repo/releases/download/v$version/$filename"

# macOS only have shasum available by default
# Some Linux distros (RHEL-like) only have sha256sum available by default (others have both)
if command -v sha256sum >/dev/null; then
sha256sum_cmd="sha256sum"
elif command -v shasum >/dev/null; then
sha256sum_cmd="shasum -a 256"
else
>&2 echo "Either 'sha256sum' or 'shasum' needs to be on PATH for '--checksum' flag!"
>&2 echo "Exiting..."
exit 1
fi

# Running this part in a subshell so when it finishes we go back to the previous directory
mkdir -p "$download_dir" && (
cd "$download_dir"
echo -e "Downloading $download_url to $download_dir"

curl -o "$filename" -sL "$download_url"
if [[ -n "$checksum" ]]; then
if ! echo "$checksum *$filename" | $sha256sum_cmd --check --status; then
>&2 echo "Failed checksum on $filename"
>&2 echo "Got: $(shasum -a 256 "$filename" | cut -d' ' -f1)"
>&2 echo "Expected: $checksum"
exit 1
fi
fi
$util "$filename"
rm -f "$filename"
)

if [[ "$download_dir" != "$install_dir" ]]
then
mkdir -p "$install_dir"
if [ -f "$install_dir/jresolve" ]; then
echo "Moving $install_dir/jresolve to $install_dir/jresolve.old"
mv -f "$install_dir/jresolve" "$install_dir/jresolve.old"
fi
mv -f "$download_dir/jresolve" "$install_dir/bb"
fi

echo "Successfully installed jresolve in $install_dir"
4 changes: 2 additions & 2 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>dev.mccue</groupId>
<artifactId>jresolve-cli</artifactId>
<version>0.0.2</version>
<version>0.0.3</version>

<properties>
<maven.compiler.source>21</maven.compiler.source>
Expand Down Expand Up @@ -56,7 +56,7 @@
<dependency>
<groupId>dev.mccue</groupId>
<artifactId>json</artifactId>
<version>0.2.4</version>
<version>0.3.1</version>
</dependency>
<dependency>
<groupId>dev.mccue</groupId>
Expand Down
10 changes: 4 additions & 6 deletions src/main/java/dev/mccue/resolve/cli/CliMain.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,18 +15,19 @@
import java.io.IOException;
import java.io.PrintWriter;
import java.io.UncheckedIOException;
import java.net.*;
import java.net.Authenticator;
import java.net.PasswordAuthentication;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;
import java.util.*;
import java.util.concurrent.Callable;
import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;

Expand Down Expand Up @@ -416,9 +417,6 @@ public CliMain() {
this(new PrintWriter(System.out), new PrintWriter(System.err));
}


// this example implements Callable, so parsing, error handling and handling user
// requests for usage help or version help can be done with one line of code.
public static void main(String... args) {
int exitCode = new CommandLine(new CliMain())
.execute(args);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/module-info.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import java.util.spi.ToolProvider;

module dev.mccue.resolve.cli{
module dev.mccue.resolve.cli {
requires dev.mccue.resolve;
requires dev.mccue.json;
requires dev.mccue.purl;
Expand Down

0 comments on commit 4d92a71

Please sign in to comment.