install-latest
diff --git a/install-latest b/install-latest new file mode 100644 index 0000000..d6f1bbf --- /dev/null +++ b/install-latest
@@ -0,0 +1,151 @@ +#!/usr/bin/env bash +# 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. + +# The top half of this script runs in Bash and the bottom half in Powershell +# Some lines at the end or the beginning can run in both shells, but syntax +# common to both is limited. +# -------------------------------------------------------------------------- +echo @' +' > /dev/null +#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +# Bash Start ----------------------------------------------------------- + +OS="$(uname -s)" +ARCH="$(uname -m)" +CMD="ops" + +case "$OS-$ARCH" in +(Linux-x86_64) + SUFFIX="_linux_amd64" + EXT=".tar.gz" +;; +(Linux-aarch64) + SUFFIX="_linux_arm64" + 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" +;; +(MINGW64_NT-*) + SUFFIX="_windows_amd64" ; + EXT=".zip" + CMD="ops.exe" +;; +(*) + echo "unknown system - exiting" + exit 1 +;; +esac + +OPSROOT="https://raw.githubusercontent.com/apache/openserverless-task/0.9.1/opsroot.json" +if test -z "$VERSION" +then VERSION="$(curl -sL $OPSROOT | sed -n 's/^.*"version": "\([^"]*\)",/\1/p')" +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" +fi + +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 + +exit $? + +# Above this line is Bash Script ------------------------------------------- +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +echo > /dev/null <<"out-null" ### +'@ | out-null +#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv +# Below this line is Powershell Script ------------------------------------- + +$InWindows = [System.Environment]::OSVersion.Platform -eq 'Win32NT' + +$SUFFIX = "_windows_amd64" +$EXT = ".zip" +$CMD = "ops.exe" + +if (-not $InWindows) { + Write-Host "This script is only for Windows - exiting" + exit 1 + } + +$OPSROOT = "https://raw.githubusercontent.com/apache/openserverless-task/0.9.1/opsroot.json" +$VERSION = (Invoke-RestMethod -Uri $OPSROOT).version +$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" +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 +Expand-Archive -Path "$FILE" -DestinationPath $BinPath -Force + +# Verify installation +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)) { + $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" +} + + +# Powershell End ----------------------------------------------------------- +# ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +out-null +#---------------------------------------------------------------------------