Skip to content

Commit

Permalink
improve(corax wrapper script): add url test and update download url
Browse files Browse the repository at this point in the history
  • Loading branch information
notify committed Jun 11, 2024
1 parent 1cee531 commit 43e6edc
Show file tree
Hide file tree
Showing 2 changed files with 162 additions and 69 deletions.
149 changes: 99 additions & 50 deletions coraxjw.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,17 @@ $CORAX_VERSION = "2.10.1"
$CORAX_JAVA_ARTIFACT_NAME = "corax-java-cli-community-$CORAX_VERSION"
$CORAX_JAVA_ARTIFACT_ZIP = "$CORAX_JAVA_ARTIFACT_NAME.zip"
$CORAX_JAVA_CLI_NAME = "corax-cli-community-${CORAX_VERSION}.jar"
$JDK_TARGET_DIR = $env:USERPROFILE + "\java"
$CORAX_TARGET_DIR = $env:USERPROFILE + "\.corax"
$JDK_TARGET_DIR = $env:USERPROFILE + "\AppData\Local\Programs\"
$CORAX_TARGET_DIR = $env:USERPROFILE + "\AppData\Local\Programs\corax-community"
$JVM_VERSION = "jdk-17.0.3.1"

$app_path = $MyInvocation.MyCommand.Path
$APP_NAME = "CoraxJava"
$APP_BASE_NAME = $MyInvocation.MyCommand.Name
$DEFAULT_JVM_OPTS=""
$DEFAULT_JVM_OPTS = ""

$OSS_URL_CORAX_JAVA_CLI_COMMUNITY = "http://release.feysh.com/corax-java-group/corax-java-cli-community-$CORAX_VERSION.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=1749644384&Signature=dtDV6mVSmTHgU3XT34IgOo9beWs%3D"
$OSS_URL_JDK_WIN_X64 = "http://release.feysh.com/corax-java-group/jdk-17.0.3.1_windows-x64_bin.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865879&Signature=mnWSUQlW8Mwme%2FCIuvaWD27bNjE%3D"

$uninstall=0
$BUILD_DIR = $env:TEMP + "\corax_temp"
Expand Down Expand Up @@ -64,7 +66,6 @@ function _download_extract {

$temp_file="$BUILD_DIR\$temp_file_name"
$download_flag="$BUILD_DIR\$temp_file_name.flag"
Write-Host $download_flag
New-Item -ItemType Directory -Path "$BUILD_DIR" -ErrorAction SilentlyContinue

if ((Test-Path -Path "$download_flag") -and -not (Test-Path -Path "$temp_file")) {
Expand All @@ -89,8 +90,6 @@ function _download_extract {
}
} catch
{


throw 'Failed to transfer with BITS. Here is the error message: ' + $error[0].exception.message
}
Set-Content -Path "$download_flag" -Value $url
Expand All @@ -106,6 +105,33 @@ function _download_extract {
Expand-Archive "$temp_file" -DestinationPath "$dest"
}

function testValidDownUrl
{
param(
[Parameter(Mandatory = $true)]
[string]$url
)
try
{
$response = Invoke-WebRequest -Uri "$url" -Method Head
if ($response.StatusCode -eq 200)
{
return $true
}
else
{
Write-Host "Test url: Failed to download $url : response.status: " $response.StatusCode
return $false
}
}
catch
{
Write-Host "Test url: Warning: Failed to download $url : exception: " $error[0].exception.message
return $fales
}
}


function _detect_jdk() {
$JVM_TARGET_DIR="$JDK_TARGET_DIR\jdk-$JVM_VERSION"

Expand All @@ -122,45 +148,55 @@ function _detect_jdk() {
}
else {
$ARCHIVE_NAME="jdk.zip"
$JVM_URL = if (_is_china) {"http://release.feysh.com/corax-java-group/jdk-17.0.3.1_windows-x64_bin.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865879&Signature=mnWSUQlW8Mwme%2FCIuvaWD27bNjE%3D" }
$JVM_URL = if ((_is_china) -and (testValidDownUrl -url "$OSS_URL_JDK_WIN_X64")) { $OSS_URL_JDK_WIN_X64 }
else {"https://download.oracle.com/java/17/archive/${JVM_VERSION}_windows-x64_bin.zip" }

_download_extract "JDK" $JVM_URL $JVM_TARGET_DIR $ARCHIVE_NAME
Set-Content -Path "$JVM_TARGET_DIR\$flag" -Value $JVM_URL
}

$JAVA_HOME = ""
foreach ($dir in (Get-ChildItem -Path $JVM_TARGET_DIR -Directory)) {
if (Test-Path -Path "$($dir.FullName)\bin\java.exe") {
$JAVA_HOME = $dir.FullName
break
try
{
$JAVA_HOME = ""
foreach ($dir in (Get-ChildItem -Path $JVM_TARGET_DIR -Directory)) {
if (Test-Path -Path "$($dir.FullName)\bin\java.exe") {
$JAVA_HOME = $dir.FullName
break
}
}
}

if (-not (Test-Path -Path "$JAVA_HOME\bin\java.exe")) {
Write-Host "Unable to find java.exe under $($JVM_TARGET_DIR)"
throw "Failed to locate java.exe"
}
if (-not (Test-Path -Path "$JAVA_HOME\bin\java.exe")) {
Write-Host "Unable to find java.exe under $($JVM_TARGET_DIR)"
throw "Failed to locate java.exe"
}

Write-Host "[Version] JDK: $JAVA_HOME (version: $JVM_VERSION)"
Write-Host "[Version] JDK: $JAVA_HOME (version: $JVM_VERSION)"

$env:JAVA_HOME = $JAVA_HOME
$env:JAVA_HOME = $JAVA_HOME

if ($JAVA_HOME) {
if (Test-Path -Path "$JAVA_HOME\jre\sh\java.exe" -PathType Leaf) {
# IBM's JDK on AIX uses strange locations for the executables
$JAVACMD = "$JAVA_HOME\jre\sh\java.exe"
} else {
$JAVACMD = "$JAVA_HOME\bin\java.exe"
}
if ($JAVA_HOME) {
if (Test-Path -Path "$JAVA_HOME\jre\sh\java.exe" -PathType Leaf) {
# IBM's JDK on AIX uses strange locations for the executables
$JAVACMD = "$JAVA_HOME\jre\sh\java.exe"
} else {
$JAVACMD = "$JAVA_HOME\bin\java.exe"
}

if (-not (Test-Path -Path "$JAVACMD" -PathType Leaf)) {
throw "ERROR: JAVA_HOME is set to an invalid directory: $($JAVA_HOME)"
if (-not (Test-Path -Path "$JAVACMD" -PathType Leaf)) {
throw "ERROR: JAVA_HOME is set to an invalid directory: $($JAVA_HOME)"
}
} else {
throw "ERROR: JAVA_HOME is not set"
}
} else {
throw "ERROR: JAVA_HOME is not set"
$global:JAVACMD=$JAVACMD
}
catch
{
Remove-Item "$JVM_TARGET_DIR/$flag" -ErrorAction SilentlyContinue
Remove-Item "$JVM_TARGET_DIR" -Recurse -ErrorAction SilentlyContinue
Write-Host "Retry?"
throw
}
$global:JAVACMD=$JAVACMD
}


Expand All @@ -180,34 +216,47 @@ function _detect_corax() {
}
else {
$ARCHIVE_NAME=$CORAX_JAVA_ARTIFACT_ZIP
$CORAX_JAVA_RELEASE_URL = if (_is_china)
{"http://release.feysh.com/corax-java-group/corax-java-cli-community-2.8.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=1713062793&Signature=FyVCtsGwJgfEbWdXV%2BA1SlPo4hQ%3D" }
else
{"https://github.com/Feysh-Group/corax-community/releases/download/v$CORAX_VERSION/$CORAX_JAVA_ARTIFACT_ZIP" }
$CORAX_JAVA_RELEASE_URL = if ((_is_china) -and (testValidDownUrl -url "$OSS_URL_CORAX_JAVA_CLI_COMMUNITY"))
{
$OSS_URL_CORAX_JAVA_CLI_COMMUNITY
} else
{
"https://github.com/Feysh-Group/corax-community/releases/download/v$CORAX_VERSION/$CORAX_JAVA_ARTIFACT_ZIP"
}

_download_extract "Corax Java" $CORAX_JAVA_RELEASE_URL $CJ_TARGET_DIR $ARCHIVE_NAME
Set-Content -Path "$CJ_TARGET_DIR\$flag" -Value $CORAX_JAVA_RELEASE_URL
}
$CORAX_HOME = ""
foreach ($dir in (Get-ChildItem -Path $CJ_TARGET_DIR -Directory)) {
if (Test-Path -Path "$($dir.FullName)\$CORAX_JAVA_CLI_NAME") {
$CORAX_HOME=$dir.FullName
break

try {
$CORAX_HOME = ""
foreach ($dir in (Get-ChildItem -Path $CJ_TARGET_DIR -Directory)) {
if (Test-Path -Path "$($dir.FullName)\$CORAX_JAVA_CLI_NAME") {
$CORAX_HOME=$dir.FullName
break
}
}
}
Write-Host "[Version] Corax Java: $CORAX_HOME (version: $CORAX_VERSION)"
Write-Host "[Version] Corax Java: $CORAX_HOME (version: $CORAX_VERSION)"

$env:CORAX_HOME = $CORAX_HOME
$env:CORAX_HOME = $CORAX_HOME

if ($CORAX_HOME) {
$CORAX_JAR = "$CORAX_HOME\$CORAX_JAVA_CLI_NAME"
if (-not (Test-Path -PathType Leaf -Path $CORAX_JAR)) {
throw "ERROR: CORAX_HOME is set to an invalid directory: $($CORAX_HOME)"
if ($CORAX_HOME) {
$CORAX_JAR = "$CORAX_HOME\$CORAX_JAVA_CLI_NAME"
if (-not (Test-Path -PathType Leaf -Path $CORAX_JAR)) {
throw "ERROR: CORAX_HOME is set to an invalid directory: $($CORAX_HOME)"
}
} else {
throw "ERROR: CORAX_HOME could not be found in $CJ_TARGET_DIR."
}
} else {
throw "ERROR: CORAX_HOME could not be found in $CJ_TARGET_DIR."
$global:CORAX_JAR=$CORAX_JAR
} catch
{
Remove-Item "$CJ_TARGET_DIR/$flag" -ErrorAction SilentlyContinue
Remove-Item "$CJ_TARGET_DIR" -Recurse -ErrorAction SilentlyContinue
Write-Host "Retry?"
throw
}
$global:CORAX_JAR=$CORAX_JAR

}

function _delegate_corax_run() {
Expand Down
82 changes: 63 additions & 19 deletions coraxjw.sh
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,16 @@ CORAX_JAVA_ARTIFACT_NAME="corax-java-cli-community-$CORAX_VERSION"
CORAX_JAVA_ARTIFACT_ZIP="$CORAX_JAVA_ARTIFACT_NAME.zip"
CORAX_JAVA_CLI_NAME="corax-cli-community-${CORAX_VERSION}.jar"
JDK_TARGET_DIR="${HOME}/.local/share"
CORAX_TARGET_DIR="${HOME}/.corax"
CORAX_TARGET_DIR="${HOME}/.local/.corax"
JVM_VERSION=jdk-17.0.3.1

OSS_URL_CORAX_JAVA_CLI_COMMUNITY="http://release.feysh.com/corax-java-group/corax-java-cli-community-$CORAX_VERSION.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=1749644384&Signature=dtDV6mVSmTHgU3XT34IgOo9beWs%3D"
OSS_URL_JDK_DARWIN_X64="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_macos-x64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865870&Signature=pSaX7XqiEO%2BuZ5NsF0AsnkvKTB0%3D"
OSS_URL_JDK_DARWIN_AARCH64="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_macos-aarch64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865859&Signature=M41W3NYVzNfVR8wLpmOoiGTYxWo%3D"
OSS_URL_JDK_WIN_X64="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_windows-x64_bin.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865879&Signature=mnWSUQlW8Mwme%2FCIuvaWD27bNjE%3D"
OSS_URL_JDK_LINUX_X64="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_linux-x64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865849&Signature=VKfQnzV5P7qKygBu9WODOzNPmDw%3D"
OSS_URL_JDK_LINUX_AARCH64="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_linux-aarch64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865822&Signature=E45ZFy%2BYpDRo7dm9%2Ftjg%2Bj1trMU%3D"


uninstall=false
# Attempt to set APP_HOME
Expand Down Expand Up @@ -250,6 +257,28 @@ _download_extract() {

}

test_valid_down_url() {
# 参数检查
if [ -z "$1" ]; then
echo "Usage: test_valid_down_url <url>"
return 1
fi

local url="$1"
local status_code

# 使用curl命令发送HEAD请求并获取状态码
status_code=$(curl -s -I -L -w '%{http_code}\n' "$url" -o /dev/null)

# 检查HTTP状态码是否为200
if [ "$status_code" -eq 200 ]; then
return 0
else
echo "Test url: Failed to download $url : response.status: $status_code"
return 1
fi
}

is_cn=$(_is_china && echo true || echo false)

_detect_jdk() {
Expand All @@ -271,45 +300,45 @@ _detect_jdk() {
if [ "$darwin" = "true" ]; then
case $JVM_ARCH in
x86_64)
if [[ $is_cn == "false" ]]; then
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_macos-x64_bin.tar.gz"
if _is_china && test_valid_down_url "$OSS_URL_JDK_DARWIN_X64" == "true"; then
JVM_URL="$OSS_URL_JDK_DARWIN_X64"
else
JVM_URL="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_macos-x64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865870&Signature=pSaX7XqiEO%2BuZ5NsF0AsnkvKTB0%3D"
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_macos-x64_bin.tar.gz"
fi
;;
arm64)
if [[ $is_cn == "false" ]]; then
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_macos-aarch64_bin.tar.gz"
if _is_china && test_valid_down_url "$OSS_URL_JDK_DARWIN_AARCH64" == "true"; then
JVM_URL="$OSS_URL_JDK_DARWIN_AARCH64"
else
JVM_URL="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_macos-aarch64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865859&Signature=M41W3NYVzNfVR8wLpmOoiGTYxWo%3D"
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_macos-aarch64_bin.tar.gz"
fi
;;
*)
die "Unknown architecture $JVM_ARCH"
;;
esac
elif [ "$cygwin" = "true" ] || [ "$msys" = "true" ]; then
if [[ $is_cn == "false" ]]; then
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_windows-x64_bin.zip"
if _is_china && test_valid_down_url "$OSS_URL_JDK_WIN_X64" == "true"; then
JVM_URL="$OSS_URL_JDK_WIN_X64"
else
JVM_URL="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_windows-x64_bin.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865879&Signature=mnWSUQlW8Mwme%2FCIuvaWD27bNjE%3D"
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_windows-x64_bin.zip"
fi
ARCHIVE_NAME="jdk.zip"
else
JVM_ARCH=$(linux$(getconf LONG_BIT) uname -m)
case $JVM_ARCH in
x86_64)
if [[ $is_cn == "false" ]]; then
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_linux-x64_bin.tar.gz"
if _is_china && test_valid_down_url "$OSS_URL_JDK_LINUX_X64" == "true"; then
JVM_URL="$OSS_URL_JDK_LINUX_X64"
else
JVM_URL="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_linux-x64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865849&Signature=VKfQnzV5P7qKygBu9WODOzNPmDw%3D"
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_linux-x64_bin.tar.gz"
fi
;;
aarch64)
if [[ $is_cn == "false" ]]; then
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_linux-aarch64_bin.tar.gz"
if _is_china && test_valid_down_url "$OSS_URL_JDK_LINUX_AARCH64" == "true"; then
JVM_URL=$OSS_URL_JDK_LINUX_AARCH64
else
JVM_URL="http://release.feysh.com/corax-java-group/jdk-17.0.3.1_linux-aarch64_bin.tar.gz?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=2023865822&Signature=E45ZFy%2BYpDRo7dm9%2Ftjg%2Bj1trMU%3D"
JVM_URL="https://download.oracle.com/java/17/archive/${JVM_VERSION}_linux-aarch64_bin.tar.gz"
fi
;;
*)
Expand All @@ -330,6 +359,9 @@ _detect_jdk() {
done

if [ '!' -e "$JAVA_HOME/bin/java" ]; then
rm -f "$JVM_TARGET_DIR/$flag"
rm -rf "$JVM_TARGET_DIR"
_msg info "Retry?"
die "Unable to find bin/java under $JVM_TARGET_DIR"
fi
_msg info "[Version] JDK: $JAVA_HOME (version: $JVM_VERSION)"
Expand All @@ -348,9 +380,15 @@ _detect_jdk() {
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
rm -f "$JVM_TARGET_DIR/$flag"
rm -rf "$JVM_TARGET_DIR"
_msg info "Retry?"
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME"
fi
else
rm -f "$JVM_TARGET_DIR/$flag"
rm -rf "$JVM_TARGET_DIR"
_msg info "Retry?"
die "ERROR: JAVA_HOME is not set"
fi

Expand Down Expand Up @@ -419,10 +457,10 @@ _detect_corax() {
true
else
local ARCHIVE_NAME=$CORAX_JAVA_ARTIFACT_ZIP
if [[ $is_cn == "false" ]]; then
CORAX_JAVA_RELEASE_URL="https://github.com/Feysh-Group/corax-community/releases/download/v$CORAX_VERSION/$CORAX_JAVA_ARTIFACT_ZIP"
if _is_china && test_valid_down_url "$OSS_URL_CORAX_JAVA_CLI_COMMUNITY" ; then
CORAX_JAVA_RELEASE_URL="$OSS_URL_CORAX_JAVA_CLI_COMMUNITY"
else
CORAX_JAVA_RELEASE_URL="http://release.feysh.com/corax-java-group/corax-java-cli-community-2.8.zip?OSSAccessKeyId=LTAI5tKF4FQ2CGnhMA7oU58p&Expires=1713062793&Signature=FyVCtsGwJgfEbWdXV%2BA1SlPo4hQ%3D"
CORAX_JAVA_RELEASE_URL="https://github.com/Feysh-Group/corax-community/releases/download/v$CORAX_VERSION/$CORAX_JAVA_ARTIFACT_ZIP"
fi

_download_extract "Corax Java" "$CORAX_JAVA_RELEASE_URL" "$CJ_TARGET_DIR" "$ARCHIVE_NAME"
Expand All @@ -447,9 +485,15 @@ _detect_corax() {
if [ -n "$CORAX_HOME" ] ; then
CORAX_JAR="$CORAX_HOME/$CORAX_JAVA_CLI_NAME"
if [ ! -f "$CORAX_JAR" ] ; then
rm -f "$CJ_TARGET_DIR/$flag"
rm -rf "$CJ_TARGET_DIR"
_msg info "Retry?"
die "ERROR: CORAX_HOME is set to an invalid directory: $CORAX_HOME"
fi
else
rm -f "$CJ_TARGET_DIR/$flag"
rm -rf "$CJ_TARGET_DIR"
_msg info "Retry?"
die "ERROR: CORAX_HOME could not found in $CJ_TARGET_DIR."
fi
}
Expand Down

0 comments on commit 43e6edc

Please sign in to comment.