@@ -12,20 +12,31 @@ mkdir -p $cacheDir
12
12
13
13
pwsh_ver=$1
14
14
if [ " $pwsh_ver " = " " ] ; then
15
- pwsh_ver=' 7.4.2'
15
+ pwsh_ver=' 7.4.4'
16
+ fi
17
+
18
+ pwsh_min_ver=$2
19
+ if [ " $pwsh_min_ver " = " " ] ; then
20
+ pwsh_min_ver=' 7.3.0'
21
+ fi
22
+
23
+ if [[ " $pwsh_ver " < " $pwsh_min_ver " ]] ; then
24
+ pwsh_ver=$pwsh_min_ver
16
25
fi
17
26
18
27
function check_pwsh {
19
- pwsh_ver=$1
28
+ min_ver=$1
29
+ preferred_ver=$2
20
30
if command -v pwsh > /dev/null ; then
21
- pwsh_veri_a=$( pwsh --version)
22
- pwsh_veri_b=" PowerShell $pwsh_ver "
23
- if [ " $pwsh_veri_b " = " $pwsh_veri_a " ] ; then
24
- echo axmol: $pwsh_veri_a already installed.
31
+ verx=$( pwsh --version)
32
+ very=" PowerShell $min_ver "
33
+ if ([ " $preferred_ver " != " $min_ver " ] && ([[ " $verx " > " $very " ]] || [ " $verx " = " $very " ])) \
34
+ || ([ " $preferred_ver " = " $min_ver " ] && [ " $verx " = " $very " ]) ; then
35
+ echo " 1kiss: $verx installed."
25
36
exit 0
26
37
fi
27
38
fi
28
- echo " Installing PowerShell $pwsh_ver ..."
39
+ echo " Installing PowerShell $preferred_ver ..."
29
40
}
30
41
31
42
HOST_ARCH=$( uname -m)
@@ -34,7 +45,7 @@ if [ "$HOST_ARCH" = 'x86_64' ] ; then
34
45
fi
35
46
36
47
if [ $HOST_OS = ' Darwin' ] ; then
37
- check_pwsh $pwsh_ver
48
+ check_pwsh $pwsh_min_ver $preferred_ver
38
49
pwsh_pkg=" powershell-$pwsh_ver -osx-$HOST_ARCH .pkg"
39
50
pwsh_pkg_out=" $cacheDir /$pwsh_pkg "
40
51
if [ ! -f " $pwsh_pkg_out " ] ; then
@@ -45,8 +56,8 @@ if [ $HOST_OS = 'Darwin' ] ; then
45
56
sudo xattr -rd com.apple.quarantine " $pwsh_pkg_out "
46
57
sudo installer -pkg " $pwsh_pkg_out " -target /
47
58
elif [ $HOST_OS = ' Linux' ] ; then
48
- if which dpkg > /dev/null; then # Linux distro: deb (ubuntu)
49
- check_pwsh $pwsh_ver
59
+ if command -v dpkg > /dev/null; then # Linux distro: deb (ubuntu)
60
+ check_pwsh $pwsh_min_ver $preferred_ver
50
61
pwsh_pkg=" powershell_$pwsh_ver -1.deb_amd64.deb"
51
62
pwsh_pkg_out=" $cacheDir /$pwsh_pkg "
52
63
if [ ! -f " $pwsh_pkg_out " ] ; then
@@ -55,10 +66,10 @@ elif [ $HOST_OS = 'Linux' ] ; then
55
66
sudo_cmd=$( which sudo)
56
67
$sudo_cmd dpkg -i " $pwsh_pkg_out "
57
68
$sudo_cmd apt-get install -f
58
- elif which pacman > /dev/null; then # Linux distro: Arch
69
+ elif command -v pacman > /dev/null; then # Linux distro: Arch
59
70
# refer: https://ephos.github.io/posts/2018-9-17-Pwsh-ArchLinux
60
71
# available pwsh version, refer to: https://aur.archlinux.org/packages/powershell-bin
61
- check_pwsh $pwsh_ver
72
+ check_pwsh $pwsh_min_ver
62
73
git clone https://aur.archlinux.org/powershell-bin.git $cacheDir /powershell-bin
63
74
cd $cacheDir /powershell-bin
64
75
makepkg -si --needed --noconfirm
69
80
exit 1
70
81
fi
71
82
72
- if [ $? = 0 ] ; then
73
- echo " Install PowerShell $pwsh_ver done"
83
+ if command -v pwsh > /dev/null ; then
84
+ installed_pwsh_ver=$( pwsh --version)
85
+ echo " Install PowerShell $installed_pwsh_ver succeed."
74
86
else
75
- echo " Install PowerShell fail"
87
+ echo " Install PowerShell fail, try again "
76
88
if [ -f " $pwsh_pkg_out " ] ; then
77
89
rm -f " $pwsh_pkg_out "
78
90
fi
0 commit comments