@@ -24,19 +24,64 @@ get_arch() {
24
24
}
25
25
26
26
use_sudo () {
27
- if command -v sudo > /dev/null 2>&1 && [ " $( id -u) " -ne 0 ]; then
28
- echo " yes"
27
+ local target=" $1 "
28
+ local sudo=" no"
29
+
30
+ if ! command -v sudo > /dev/null; then
31
+ echo " $sudo "
32
+ return
33
+ fi
34
+
35
+ if [ -w " $( dirname " $target " ) " ]; then
36
+ if [ -f " $target " ] && [ ! -w " $target " ]; then
37
+ sudo=" yes"
38
+ fi
39
+ else
40
+ sudo=" yes"
41
+ fi
42
+
43
+ echo " $sudo "
44
+ }
45
+
46
+ pzmod_in_path () {
47
+ local filename=" $1 "
48
+ local in_path=" no"
49
+
50
+ if command -v " $filename " > /dev/null; then
51
+ in_path=" yes"
52
+ fi
53
+
54
+ echo " $in_path "
55
+ }
56
+
57
+ finalize_installation () {
58
+ local sudo_needed=" $1 "
59
+ local target=" ${2:-/ usr/ local/ bin/ pzmod} "
60
+ local filename=" $( basename " $target " ) "
61
+ local in_path=$( pzmod_in_path " $filename " )
62
+
63
+ if [ " $sudo_needed " = " yes" ]; then
64
+ sudo chmod +x " $target "
29
65
else
30
- echo " no"
66
+ chmod +x " $target "
67
+ fi
68
+
69
+ if [ " $in_path " = " no" ]; then
70
+ echo " Warning: $filename not found in PATH."
71
+ echo " You may want to add the directory to your PATH environment variable,"
72
+ echo " or move the executable to a directory that's already in your PATH."
73
+ echo
31
74
fi
75
+
76
+ echo " pzmod successfully installed to $target "
32
77
}
33
78
34
79
download_pzmod () {
35
80
local latest_url=" https://api.github.com/repos/kldzj/pzmod/releases/latest"
36
81
local platform=" $( uname -s | tr ' [:upper:]' ' [:lower:]' ) "
37
82
local arch=" $( get_arch) "
38
83
local target=" ${1:-/ usr/ local/ bin/ pzmod} "
39
- local sudo_needed=$( use_sudo)
84
+ local sudo_needed=$( use_sudo " $target " )
40
85
41
86
local download_url=$( curl -s " $latest_url " |
42
87
grep " browser_download_url" |
@@ -50,12 +95,10 @@ download_pzmod() {
50
95
51
96
if [ " $sudo_needed " = " yes" ]; then
52
97
sudo wget -O " $target " " $download_url " &&
53
- sudo chmod +x " $target " &&
54
- echo " pzmod successfully downloaded to $target "
98
+ finalize_installation " $sudo_needed " " $target "
55
99
else
56
100
wget -O " $target " " $download_url " &&
57
- chmod +x " $target " &&
58
- echo " pzmod successfully downloaded to $target "
101
+ finalize_installation " $sudo_needed " " $target "
59
102
fi
60
103
}
61
104
0 commit comments