fixes to instellers
diff --git a/install-latest b/install-latest index d6f1bbf..727f759 100644 --- a/install-latest +++ b/install-latest
@@ -65,18 +65,27 @@ if test -z "$VERSION" then VERSION="$(curl -sL $OPSROOT | sed -n 's/^.*"version": "\([^"]*\)",/\1/p')" fi +if test -z "$VERSION" +then echo "cannot determine version from $OPSROOT - exiting" + exit 1 +fi FILE="openserverless-cli_${VERSION}$SUFFIX$EXT" URL="https://github.com/apache/openserverless-cli/releases/download/v$VERSION/$FILE" mkdir -p ~/.local/bin -curl -sL "$URL" -o "/tmp/$FILE" +if ! curl -fsSL "$URL" -o "/tmp/$FILE" +then echo "cannot download ops from:" + echo "$URL" + exit 1 +fi -if test "$EXT" == ".zip" +if test "$EXT" = ".zip" then unzip -o -d ~/.local/bin "/tmp/$FILE" "$CMD" else tar xzvf "/tmp/$FILE" -C ~/.local/bin "$CMD" fi +rm -f "/tmp/$FILE" if ! test -e ~/.local/bin/"$CMD" then echo "cannot install ops - download and unpack it in a folder in the path from here:" @@ -84,15 +93,24 @@ exit 1 fi -if ! which ops | grep $HOME/.local/bin -then - echo "$HOME/.local/bin is not in the path - adding it" - echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.bashrc - echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.zshrc - echo please restart your terminal to find ops in your path -fi +case ":$PATH:" in +(*":$HOME/.local/bin:"*) + : # already in PATH +;; +(*) + echo "$HOME/.local/bin is not in the path - adding it" + LINE='export PATH="$HOME/.local/bin:$PATH"' + for RC in "$HOME/.bashrc" "$HOME/.zshrc" + do + if ! test -e "$RC" || ! grep -qF "$LINE" "$RC" + then echo "$LINE" >>"$RC" + fi + done + echo please restart your terminal to find ops in your path +;; +esac -exit $? +exit 0 # Above this line is Bash Script ------------------------------------------- # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -123,21 +141,23 @@ New-Item -ItemType Directory -Force -Path $BinPath | Out-Null } -# Download the file -Invoke-WebRequest -Uri $URL -OutFile "$FILE" +# Download the file to a temp location +$TmpFile = Join-Path ([System.IO.Path]::GetTempPath()) $FILE +Invoke-WebRequest -Uri $URL -OutFile "$TmpFile" # Unpack the file based on its extension -Expand-Archive -Path "$FILE" -DestinationPath $BinPath -Force +Expand-Archive -Path "$TmpFile" -DestinationPath $BinPath -Force +Remove-Item -Path "$TmpFile" -Force -ErrorAction SilentlyContinue # Verify installation -if (-not (Test-Path "$BinPath/$CMD*")) { +if (-not (Test-Path "$BinPath/$CMD")) { Write-Host "Cannot install ops - download and unpack it in a folder in the path from here:" Write-Host $URL exit 1 } # Check if the bin path is in the user's PATH -if (-not ($env:PATH -contains $BinPath)) { +if (-not ($env:PATH -split ';' -contains $BinPath)) { $existingPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User) $newPath = "$BinPath;$existingPath" [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User)
diff --git a/install-latest.sh b/install-latest.sh deleted file mode 100644 index 8a69c68..0000000 --- a/install-latest.sh +++ /dev/null
@@ -1,27 +0,0 @@ -#!/bin/sh -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - - -if jq --version >/dev/null -then - LATEST=https://api.github.com/repos/apache/openserverless-cli/releases/latest - VERSION=$(curl -s "$LATEST" | jq -r '.name | .[1:]') - curl -sL bit.ly/get-ops | VERSION=$VERSION bash -else - echo "Sorry for the annoyance, but I need jq installed to run..." -fi \ No newline at end of file
diff --git a/install.ps1 b/install.ps1 index 2f0f2fb..d3865b8 100644 --- a/install.ps1 +++ b/install.ps1
@@ -17,78 +17,56 @@ $InWindows = [System.Environment]::OSVersion.Platform -eq 'Win32NT' +if (-not $InWindows) { + Write-Host "This script is only for Windows - exiting" + exit 1 +} + $SUFFIX = "_windows_amd64" $EXT = ".zip" $CMD = "ops.exe" -if (-not $InWindows) { - $OS = (uname -s) - $ARCH = (uname -m) - $CMD = "ops" - switch ("$OS-$ARCH") { - "Linux-x86_64" { - $SUFFIX = "_linux_amd64" - $EXT = ".tar.gz" - } - "Linux-arm64" { - $SUFFIX = "_linux_arm64" - $EXT = ".tar.gz" - } - "Darwin-x86_64" { - $SUFFIX = "_darwin_amd64" - $EXT = ".tar.gz" - } - "Darwin-arm64" { - $SUFFIX = "_darwin_arm64" - $EXT = ".tar.gz" - } - default { - Write-Host "Unknown system - exiting" - exit 1 - } - } -} - $OPSROOT = "https://raw.githubusercontent.com/apache/openserverless-task/0.1.0/opsroot.json" $VERSION = (Invoke-RestMethod -Uri $OPSROOT).version +if (-not $VERSION) { + Write-Host "Cannot determine version from $OPSROOT - exiting" + exit 1 +} $FILE = "openserverless-cli_${VERSION}$SUFFIX$EXT" $URL = "https://github.com/apache/openserverless-cli/releases/download/v$VERSION/$FILE" # Create the directory if it doesn't exist -$BinPath = "$HOME/.local/bin" +$BinPath = "$HOME\.local\bin" if (-not (Test-Path -Path $BinPath)) { New-Item -ItemType Directory -Force -Path $BinPath | Out-Null } -# Download the file -Invoke-WebRequest -Uri $URL -OutFile "$FILE" - -# Unpack the file based on its extension -if ($EXT -eq ".zip") { - Expand-Archive -Path "$FILE" -DestinationPath $BinPath -Force -} else { - tar -xzvf "$FILE" -C $BinPath $CMD +# Download the file to a temp location +$TmpFile = Join-Path ([System.IO.Path]::GetTempPath()) $FILE +try { + Invoke-WebRequest -Uri $URL -OutFile "$TmpFile" +} catch { + Write-Host "Cannot download ops from:" + Write-Host $URL + exit 1 } +# Unpack the file +Expand-Archive -Path "$TmpFile" -DestinationPath $BinPath -Force +Remove-Item -Path "$TmpFile" -Force -ErrorAction SilentlyContinue + # Verify installation -if (-not (Test-Path "$BinPath/$CMD*")) { +if (-not (Test-Path "$BinPath\$CMD")) { Write-Host "Cannot install ops - download and unpack it in a folder in the path from here:" Write-Host $URL exit 1 } # Check if the bin path is in the user's PATH -if (-not ($env:PATH -contains $BinPath)) { - if($InWindows) { - $existingPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User) - $newPath = "$BinPath;$existingPath" - [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User) - Write-Host "Please restart your terminal to find ops in your path" - } else { - Write-Host "$BinPath is not in the PATH - adding it" - Add-Content -Path "$HOME\.bashrc" -Value "`nexport PATH=`"$BinPath`:`$PATH`"" - Add-Content -Path "$HOME\.zshrc" -Value "`nexport PATH=`"$BinPath`:`$PATH`"" - Write-Host "Please restart your terminal to find ops in your path" - } +if (-not (($env:PATH -split ';') -contains $BinPath)) { + $existingPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User) + $newPath = "$BinPath;$existingPath" + [System.Environment]::SetEnvironmentVariable("Path", $newPath, [System.EnvironmentVariableTarget]::User) + Write-Host "Please restart your terminal to find ops in your path" }
diff --git a/install.sh b/install.sh index d750555..c26d53c 100644 --- a/install.sh +++ b/install.sh
@@ -57,32 +57,50 @@ if test -z "$VERSION" then VERSION="$(curl -sL $OPSROOT | sed -n 's/^.*"version": "\([^"]*\)",/\1/p')" fi +if test -z "$VERSION" +then echo "cannot determine version from $OPSROOT - exiting" + exit 1 +fi FILE="openserverless-cli_${VERSION}$SUFFIX$EXT" URL="https://github.com/apache/openserverless-cli/releases/download/v$VERSION/$FILE" mkdir -p ~/.local/bin -curl -sL "$URL" -o "/tmp/$FILE" - -if test "$EXT" == ".zip" -then - unzip -o -d ~/.local/bin "/tmp/$FILE" "$CMD" -else - tar xzvf "/tmp/$FILE" -C ~/.local/bin "$CMD" +if ! curl -fsSL "$URL" -o "/tmp/$FILE" +then echo "cannot download ops from:" + echo "$URL" + exit 1 fi +if test "$EXT" = ".zip" +then + unzip -o -d ~/.local/bin "/tmp/$FILE" "$CMD" +else + tar xzvf "/tmp/$FILE" -C ~/.local/bin "$CMD" +fi +rm -f "/tmp/$FILE" -if ! test -e ~/.local/bin/ops* + +if ! test -e ~/.local/bin/"$CMD" then echo "cannot install ops - download and unpack it in a folder in the path from here:" echo "$URL" exit 1 fi -if ! which ops | grep $HOME/.local/bin -then - echo "$HOME/.local/bin is not in the path - adding it" - echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.bashrc - echo 'export PATH="$HOME/.local/bin:$PATH"' >>$HOME/.zshrc - echo please restart your terminal to find ops in your path -fi +case ":$PATH:" in +*":$HOME/.local/bin:"*) + : # already in PATH +;; +*) + echo "$HOME/.local/bin is not in the path - adding it" + LINE='export PATH="$HOME/.local/bin:$PATH"' + for RC in "$HOME/.bashrc" "$HOME/.zshrc" + do + if ! test -e "$RC" || ! grep -qF "$LINE" "$RC" + then echo "$LINE" >>"$RC" + fi + done + echo please restart your terminal to find ops in your path +;; +esac exit 0