-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathinstall.ps1
95 lines (85 loc) · 3.18 KB
/
install.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# 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.
$InWindows = [System.Environment]::OSVersion.Platform -eq 'Win32NT'
$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
$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
if ($EXT -eq ".zip") {
Expand-Archive -Path "$FILE" -DestinationPath $BinPath -Force
} else {
tar -xzvf "$FILE" -C $BinPath $CMD
}
# 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)) {
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"
}
}
exit 0