Skip to content

Commit 2aa698e

Browse files
authored
Merge pull request #82 from boushley/user-only-uninstall
Update uninstall.ab to support user only mode.
2 parents e38b75e + 30c9dfd commit 2aa698e

File tree

5 files changed

+301
-123
lines changed

5 files changed

+301
-123
lines changed

setup/install.ab

Lines changed: 5 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,50 +1,22 @@
11
import { has_failed, includes, exit, chars } from "std"
2+
import { get_os, get_arch, get_place, get_bins_folder } from "./shared.ab"
23

34
let name = "AmberNative"
45
let target = "amber"
56
let tag = "0.3.1-alpha"
6-
let place = "/opt/amber"
7-
let bins_folder = "/usr/local/bin"
87
let agent = has_failed("uname -a")
98
then "unknown"
109
else unsafe $uname -a$
1110

1211
echo ""
1312

1413
main(args) {
15-
// Determine OS type
16-
let os_type = $uname -s$ failed {
17-
echo "Failed to determine OS type."
18-
echo "Please try again or use another download method."
19-
exit(1)
20-
}
21-
let os = os_type == "Darwin"
22-
then "macos"
23-
else "linux"
24-
25-
// Determine architecture
26-
let arch_type = $uname -m$ failed {
27-
echo "Failed to determine architecture."
28-
echo "Please try again or use another download method."
29-
exit(1)
30-
}
31-
let arch = includes(["arm64", "aarch64"], arch_type)
32-
then "aarch64"
33-
else "x86_64"
14+
let os = get_os()
15+
let arch = get_arch()
3416

3517
let user_only_install = includes(args, "--user")
36-
if user_only_install {
37-
let home = $echo \$HOME$ failed {
38-
echo "User installation requested, but unable to retrieve home directory from $HOME environment."
39-
exit(1)
40-
}
41-
if home == "" {
42-
echo "User installation requested, but unable to find home directory."
43-
exit(1)
44-
}
45-
place = "{home}/.local/lib/{arch}/amber"
46-
bins_folder = "{home}/.local/bin"
47-
}
18+
let place = get_place(user_only_install)
19+
let bins_folder = get_bins_folder(user_only_install)
4820

4921
// Check if such directory exists
5022
unsafe $test -d "{place}"$

setup/install.sh

Lines changed: 117 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -38,114 +38,158 @@ fi;
3838
__AMBER_FUN_includes21_v1=$(echo $__AMBER_STATUS '==' 0 | bc -l | sed '/\./ s/\.\{0,1\}0\{1,\}$//');
3939
return 0
4040
}
41-
__0_name="AmberNative";
42-
__1_target="amber";
43-
__2_tag="0.3.1-alpha";
44-
__3_place="/opt/amber";
45-
__4_bins_folder="/usr/local/bin";
46-
has_failed__19_v0 "uname -a";
47-
__AMBER_FUN_has_failed19_v0__8=${__AMBER_FUN_has_failed19_v0};
48-
__AMBER_VAL_0=$(uname -a);
49-
__AMBER_STATUS=$?;
50-
if [ $__AMBER_STATUS != 0 ]; then
51-
:
52-
fi;
53-
__5_agent=$(if [ ${__AMBER_FUN_has_failed19_v0__8} != 0 ]; then echo "unknown"; else echo "${__AMBER_VAL_0}"; fi);
54-
echo "";
55-
args=$1
56-
__AMBER_VAL_1=$(uname -s);
41+
function get_os__28_v0 {
42+
__AMBER_VAL_0=$(uname -s);
5743
__AMBER_STATUS=$?;
5844
if [ $__AMBER_STATUS != 0 ]; then
5945
echo "Failed to determine OS type.";
6046
echo "Please try again or use another download method.";
6147
exit__20_v0 1;
62-
__AMBER_FUN_exit20_v0__19=${__AMBER_FUN_exit20_v0};
63-
echo ${__AMBER_FUN_exit20_v0__19} > /dev/null 2>&1
48+
__AMBER_FUN_exit20_v0__8=${__AMBER_FUN_exit20_v0};
49+
echo ${__AMBER_FUN_exit20_v0__8} > /dev/null 2>&1
6450
fi;
65-
os_type="${__AMBER_VAL_1}";
66-
os=$(if [ $([ "_${os_type}" != "_Darwin" ]; echo $?) != 0 ]; then echo "macos"; else echo "linux"; fi);
67-
__AMBER_VAL_2=$(uname -m);
51+
local os_type="${__AMBER_VAL_0}";
52+
local os=$(if [ $([ "_${os_type}" != "_Darwin" ]; echo $?) != 0 ]; then echo "macos"; else echo "linux"; fi);
53+
__AMBER_FUN_get_os28_v0="${os}";
54+
return 0
55+
};
56+
function get_arch__29_v0 {
57+
__AMBER_VAL_1=$(uname -m);
6858
__AMBER_STATUS=$?;
6959
if [ $__AMBER_STATUS != 0 ]; then
7060
echo "Failed to determine architecture.";
7161
echo "Please try again or use another download method.";
7262
exit__20_v0 1;
73-
__AMBER_FUN_exit20_v0__29=${__AMBER_FUN_exit20_v0};
74-
echo ${__AMBER_FUN_exit20_v0__29} > /dev/null 2>&1
63+
__AMBER_FUN_exit20_v0__22=${__AMBER_FUN_exit20_v0};
64+
echo ${__AMBER_FUN_exit20_v0__22} > /dev/null 2>&1
7565
fi;
76-
arch_type="${__AMBER_VAL_2}";
66+
local arch_type="${__AMBER_VAL_1}";
7767
__AMBER_ARRAY_0=("arm64" "aarch64");
7868
includes__21_v0 __AMBER_ARRAY_0[@] "${arch_type}";
79-
__AMBER_FUN_includes21_v0__31=${__AMBER_FUN_includes21_v0};
80-
arch=$(if [ ${__AMBER_FUN_includes21_v0__31} != 0 ]; then echo "aarch64"; else echo "x86_64"; fi);
81-
includes__21_v1 "${args}" "--user";
82-
__AMBER_FUN_includes21_v1__35=${__AMBER_FUN_includes21_v1};
83-
user_only_install=${__AMBER_FUN_includes21_v1__35};
84-
if [ ${user_only_install} != 0 ]; then
85-
__AMBER_VAL_3=$(echo $HOME);
86-
__AMBER_STATUS=$?;
69+
__AMBER_FUN_includes21_v0__25=${__AMBER_FUN_includes21_v0};
70+
local arch=$(if [ ${__AMBER_FUN_includes21_v0__25} != 0 ]; then echo "aarch64"; else echo "x86_64"; fi);
71+
__AMBER_FUN_get_arch29_v0="${arch}";
72+
return 0
73+
};
74+
function get_home__30_v0 {
75+
__AMBER_VAL_2=$(echo $HOME);
76+
__AMBER_STATUS=$?;
8777
if [ $__AMBER_STATUS != 0 ]; then
88-
echo "User installation requested, but unable to retrieve home directory from $HOME environment.";
89-
exit__20_v0 1;
90-
__AMBER_FUN_exit20_v0__39=${__AMBER_FUN_exit20_v0};
91-
echo ${__AMBER_FUN_exit20_v0__39} > /dev/null 2>&1
78+
echo "User installation requested, but unable to retrieve home directory from $HOME environment.";
79+
exit__20_v0 1;
80+
__AMBER_FUN_exit20_v0__35=${__AMBER_FUN_exit20_v0};
81+
echo ${__AMBER_FUN_exit20_v0__35} > /dev/null 2>&1
9282
fi;
93-
home="${__AMBER_VAL_3}";
94-
if [ $([ "_${home}" != "_" ]; echo $?) != 0 ]; then
95-
echo "User installation requested, but unable to find home directory.";
96-
exit__20_v0 1;
97-
__AMBER_FUN_exit20_v0__43=${__AMBER_FUN_exit20_v0};
98-
echo ${__AMBER_FUN_exit20_v0__43} > /dev/null 2>&1
83+
local home="${__AMBER_VAL_2}";
84+
if [ $([ "_${home}" != "_" ]; echo $?) != 0 ]; then
85+
echo "User installation requested, but unable to find home directory.";
86+
exit__20_v0 1;
87+
__AMBER_FUN_exit20_v0__39=${__AMBER_FUN_exit20_v0};
88+
echo ${__AMBER_FUN_exit20_v0__39} > /dev/null 2>&1
9989
fi;
100-
__3_place="${home}/.local/lib/${arch}/amber";
101-
__4_bins_folder="${home}/.local/bin"
90+
__AMBER_FUN_get_home30_v0="${home}";
91+
return 0
92+
};
93+
function get_bins_folder__31_v0 {
94+
local user_only=$1
95+
if [ ${user_only} != 0 ]; then
96+
get_home__30_v0 ;
97+
__AMBER_FUN_get_home30_v0__46=${__AMBER_FUN_get_home30_v0};
98+
__AMBER_FUN_get_bins_folder31_v0="${__AMBER_FUN_get_home30_v0__46}/.local/bin";
99+
return 0
100+
else
101+
__AMBER_FUN_get_bins_folder31_v0="/usr/local/bin";
102+
return 0
103+
fi
104+
};
105+
function get_place__32_v0 {
106+
local user_only=$1
107+
if [ ${user_only} != 0 ]; then
108+
get_home__30_v0 ;
109+
__AMBER_FUN_get_home30_v0__54=${__AMBER_FUN_get_home30_v0};
110+
get_arch__29_v0 ;
111+
__AMBER_FUN_get_arch29_v0__54=${__AMBER_FUN_get_arch29_v0};
112+
__AMBER_FUN_get_place32_v0="${__AMBER_FUN_get_home30_v0__54}/.local/lib/${__AMBER_FUN_get_arch29_v0__54}/amber";
113+
return 0
114+
else
115+
__AMBER_FUN_get_place32_v0="/opt/amber";
116+
return 0
117+
fi
118+
}
119+
__0_name="AmberNative";
120+
__1_target="amber";
121+
__2_tag="0.3.1-alpha";
122+
has_failed__19_v0 "uname -a";
123+
__AMBER_FUN_has_failed19_v0__7=${__AMBER_FUN_has_failed19_v0};
124+
__AMBER_VAL_3=$(uname -a);
125+
__AMBER_STATUS=$?;
126+
if [ $__AMBER_STATUS != 0 ]; then
127+
:
102128
fi;
103-
test -d "${__3_place}"
129+
__3_agent=$(if [ ${__AMBER_FUN_has_failed19_v0__7} != 0 ]; then echo "unknown"; else echo "${__AMBER_VAL_3}"; fi);
130+
echo "";
131+
args=$1
132+
get_os__28_v0 ;
133+
__AMBER_FUN_get_os28_v0__14=${__AMBER_FUN_get_os28_v0};
134+
os=${__AMBER_FUN_get_os28_v0__14};
135+
get_arch__29_v0 ;
136+
__AMBER_FUN_get_arch29_v0__15=${__AMBER_FUN_get_arch29_v0};
137+
arch=${__AMBER_FUN_get_arch29_v0__15};
138+
includes__21_v1 "${args}" "--user";
139+
__AMBER_FUN_includes21_v1__17=${__AMBER_FUN_includes21_v1};
140+
user_only_install=${__AMBER_FUN_includes21_v1__17};
141+
get_place__32_v0 ${user_only_install};
142+
__AMBER_FUN_get_place32_v0__18=${__AMBER_FUN_get_place32_v0};
143+
place=${__AMBER_FUN_get_place32_v0__18};
144+
get_bins_folder__31_v0 ${user_only_install};
145+
__AMBER_FUN_get_bins_folder31_v0__19=${__AMBER_FUN_get_bins_folder31_v0};
146+
bins_folder=${__AMBER_FUN_get_bins_folder31_v0__19};
147+
test -d "${place}"
104148
__AMBER_STATUS=$?;
105149
if [ $__AMBER_STATUS != 0 ]; then
106150
:
107151
fi;
108152
if [ $(echo $__AMBER_STATUS '==' 0 | bc -l | sed '/\./ s/\.\{0,1\}0\{1,\}$//') != 0 ]; then
109153
echo "Amber already installed";
110-
echo "It seems that Amber is already installed on your system. (${__3_place})";
154+
echo "It seems that Amber is already installed on your system. (${place})";
111155
echo "If you want to reinstall Amber, uninstall it first.";
112156
echo "(Find out more at https://docs.amber-lang.com/getting_started/installation#uninstallation)";
113157
exit__20_v0 2;
114-
__AMBER_FUN_exit20_v0__57=${__AMBER_FUN_exit20_v0};
115-
echo ${__AMBER_FUN_exit20_v0__57} > /dev/null 2>&1
158+
__AMBER_FUN_exit20_v0__29=${__AMBER_FUN_exit20_v0};
159+
echo ${__AMBER_FUN_exit20_v0__29} > /dev/null 2>&1
116160
fi;
117161
has_failed__19_v0 "curl -V";
118-
__AMBER_FUN_has_failed19_v0__61=${__AMBER_FUN_has_failed19_v0};
119-
if [ ${__AMBER_FUN_has_failed19_v0__61} != 0 ]; then
162+
__AMBER_FUN_has_failed19_v0__33=${__AMBER_FUN_has_failed19_v0};
163+
if [ ${__AMBER_FUN_has_failed19_v0__33} != 0 ]; then
120164
echo "Curl is not installed on your system.";
121165
echo "Please install \`curl\` and try again.";
122166
exit__20_v0 1;
123-
__AMBER_FUN_exit20_v0__64=${__AMBER_FUN_exit20_v0};
124-
echo ${__AMBER_FUN_exit20_v0__64} > /dev/null 2>&1
167+
__AMBER_FUN_exit20_v0__36=${__AMBER_FUN_exit20_v0};
168+
echo ${__AMBER_FUN_exit20_v0__36} > /dev/null 2>&1
125169
fi;
126170
echo "Installing Amber... 🚀";
127171
sudo=$(if [ ${user_only_install} != 0 ]; then echo ""; else echo "sudo"; fi);
128-
${sudo} mkdir -p "${__3_place}" > /dev/null 2>&1
172+
${sudo} mkdir -p "${place}" > /dev/null 2>&1
129173
__AMBER_STATUS=$?;
130174
if [ $__AMBER_STATUS != 0 ]; then
131175
echo "Failed to create directory for amber.";
132176
if [ ${user_only_install} != 0 ]; then
133-
echo "Please make sure that root user can access ${__3_place} directory."
177+
echo "Please make sure that root user can access ${place} directory."
134178
else
135-
echo "Please make sure that your user can access ${__3_place} directory."
179+
echo "Please make sure that your user can access ${place} directory."
136180
fi;
137181
exit__20_v0 1 > /dev/null 2>&1;
138-
__AMBER_FUN_exit20_v0__80=${__AMBER_FUN_exit20_v0};
139-
echo ${__AMBER_FUN_exit20_v0__80} > /dev/null 2>&1
182+
__AMBER_FUN_exit20_v0__52=${__AMBER_FUN_exit20_v0};
183+
echo ${__AMBER_FUN_exit20_v0__52} > /dev/null 2>&1
140184
fi;
141185
if [ ${user_only_install} != 0 ]; then
142-
mkdir -p "${__4_bins_folder}" > /dev/null 2>&1
186+
mkdir -p "${bins_folder}" > /dev/null 2>&1
143187
__AMBER_STATUS=$?;
144188
if [ $__AMBER_STATUS != 0 ]; then
145-
echo "Failed to create directory for amber bin at ${__4_bins_folder}.";
189+
echo "Failed to create directory for amber bin at ${bins_folder}.";
146190
exit__20_v0 1 > /dev/null 2>&1;
147-
__AMBER_FUN_exit20_v0__85=${__AMBER_FUN_exit20_v0};
148-
echo ${__AMBER_FUN_exit20_v0__85} > /dev/null 2>&1
191+
__AMBER_FUN_exit20_v0__57=${__AMBER_FUN_exit20_v0};
192+
echo ${__AMBER_FUN_exit20_v0__57} > /dev/null 2>&1
149193
fi
150194
fi;
151195
url="https://github.com/Ph0enixKM/${__0_name}/releases/download/${__2_tag}/amber_${os}_${arch}";
@@ -155,37 +199,37 @@ if [ $__AMBER_STATUS != 0 ]; then
155199
echo "Curl failed to download amber.";
156200
echo "Something went wrong. Please try again later.";
157201
exit__20_v0 1 > /dev/null 2>&1;
158-
__AMBER_FUN_exit20_v0__96=${__AMBER_FUN_exit20_v0};
159-
echo ${__AMBER_FUN_exit20_v0__96} > /dev/null 2>&1
202+
__AMBER_FUN_exit20_v0__68=${__AMBER_FUN_exit20_v0};
203+
echo ${__AMBER_FUN_exit20_v0__68} > /dev/null 2>&1
160204
fi;
161-
${sudo} mv "${__1_target}" "${__3_place}/${__1_target}"
205+
${sudo} mv "${__1_target}" "${place}/${__1_target}"
162206
__AMBER_STATUS=$?;
163207
if [ $__AMBER_STATUS != 0 ]; then
164208
echo "Failed to move amber to the installation directory.";
165209
echo "Please make sure that root user can access /opt directory.";
166210
exit__20_v0 1;
167-
__AMBER_FUN_exit20_v0__103=${__AMBER_FUN_exit20_v0};
168-
echo ${__AMBER_FUN_exit20_v0__103} > /dev/null 2>&1
211+
__AMBER_FUN_exit20_v0__75=${__AMBER_FUN_exit20_v0};
212+
echo ${__AMBER_FUN_exit20_v0__75} > /dev/null 2>&1
169213
fi;
170-
${sudo} chmod +x "${__3_place}/${__1_target}"
214+
${sudo} chmod +x "${place}/${__1_target}"
171215
__AMBER_STATUS=$?;
172216
if [ $__AMBER_STATUS != 0 ]; then
173217
echo "Failed to give permissions to execute amber.";
174218
echo "Please make sure that root user can access /opt directory.";
175219
exit__20_v0 1;
176-
__AMBER_FUN_exit20_v0__109=${__AMBER_FUN_exit20_v0};
177-
echo ${__AMBER_FUN_exit20_v0__109} > /dev/null 2>&1
220+
__AMBER_FUN_exit20_v0__81=${__AMBER_FUN_exit20_v0};
221+
echo ${__AMBER_FUN_exit20_v0__81} > /dev/null 2>&1
178222
fi;
179-
${sudo} ln -s "${__3_place}/${__1_target}" "${__4_bins_folder}/${__1_target}"
223+
${sudo} ln -s "${place}/${__1_target}" "${bins_folder}/${__1_target}"
180224
__AMBER_STATUS=$?;
181225
if [ $__AMBER_STATUS != 0 ]; then
182226
echo "Failed to create amber symbol link.";
183227
echo "Please make sure that root user can access /usr/local/bin directory.";
184228
exit__20_v0 1;
185-
__AMBER_FUN_exit20_v0__116=${__AMBER_FUN_exit20_v0};
186-
echo ${__AMBER_FUN_exit20_v0__116} > /dev/null 2>&1
229+
__AMBER_FUN_exit20_v0__88=${__AMBER_FUN_exit20_v0};
230+
echo ${__AMBER_FUN_exit20_v0__88} > /dev/null 2>&1
187231
fi;
188-
curl -G --data-urlencode "agent=${__5_agent}" --data-urlencode "name=download" "https://amber-lang.com/api/visit" > /dev/null 2>&1
232+
curl -G --data-urlencode "agent=${__3_agent}" --data-urlencode "name=download" "https://amber-lang.com/api/visit" > /dev/null 2>&1
189233
__AMBER_STATUS=$?;
190234
if [ $__AMBER_STATUS != 0 ]; then
191235
:

setup/shared.ab

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
import { exit, includes } from "std"
2+
3+
pub fun get_os(): Text {
4+
// Determine OS type
5+
let os_type = $uname -s$ failed {
6+
echo "Failed to determine OS type."
7+
echo "Please try again or use another download method."
8+
exit(1)
9+
}
10+
let os = os_type == "Darwin"
11+
then "macos"
12+
else "linux"
13+
14+
return os
15+
}
16+
17+
pub fun get_arch(): Text {
18+
// Determine architecture
19+
let arch_type = $uname -m$ failed {
20+
echo "Failed to determine architecture."
21+
echo "Please try again or use another download method."
22+
exit(1)
23+
}
24+
25+
let arch = includes(["arm64", "aarch64"], arch_type)
26+
then "aarch64"
27+
else "x86_64"
28+
29+
return arch
30+
}
31+
32+
fun get_home(): Text {
33+
let home = $echo \$HOME$ failed {
34+
echo "User installation requested, but unable to retrieve home directory from $HOME environment."
35+
exit(1)
36+
}
37+
if home == "" {
38+
echo "User installation requested, but unable to find home directory."
39+
exit(1)
40+
}
41+
return home
42+
}
43+
44+
pub fun get_bins_folder(user_only: Bool): Text {
45+
if user_only {
46+
return "{get_home()}/.local/bin"
47+
} else {
48+
return "/usr/local/bin"
49+
}
50+
}
51+
52+
pub fun get_place(user_only: Bool): Text {
53+
if user_only {
54+
return "{get_home()}/.local/lib/{get_arch()}/amber"
55+
} else {
56+
return "/opt/amber"
57+
}
58+
}

0 commit comments

Comments
 (0)