Updates wapm packages

This commit is contained in:
Thomas Forgione 2019-07-01 11:15:20 +02:00
parent e75a69b8cb
commit 1ff3b89028
No known key found for this signature in database
GPG Key ID: 203DAEA747F48F41
1 changed files with 57 additions and 1 deletions

View File

@ -103,6 +103,26 @@ _check_date() {
fi fi
} }
# Returns 0 if $1 > $2
_semver_greater() {
local major_1=$(echo $1 | cut -d '.' -f 1)
local minor_1=$(echo $1 | cut -d '.' -f 2)
local patch_1=$(echo $1 | cut -d '.' -f 3)
local major_2=$(echo $2 | cut -d '.' -f 1)
local minor_2=$(echo $2 | cut -d '.' -f 2)
local patch_2=$(echo $2 | cut -d '.' -f 3)
if [ $major_1 -gt $major_2 ]; then
return 0
elif [ $major_1 -eq $major_2 ] && [ $minor_1 -gt $minor_2 ]; then
return 0
elif [ $major_1 -eq $major_2 ] && [ $minor_1 -eq $minor_2 ] && [ $patch_1 -gt $patch_2 ]; then
return 0
else
return 1
fi
}
update-system() { update-system() {
if [ -f ~/.config/dotfiles/.data/noroot ]; then if [ -f ~/.config/dotfiles/.data/noroot ]; then
@ -244,6 +264,7 @@ update-wasm() {
local old_path=$PWD local old_path=$PWD
# Protect dotfiles from being modified by wasmer self-update
cd ~/.config/dotfiles cd ~/.config/dotfiles
git stash > /dev/null 2>&1 git stash > /dev/null 2>&1
wasmer self-update wasmer self-update
@ -254,6 +275,41 @@ update-wasm() {
local seconds=$((`date +%s` - $start)) local seconds=$((`date +%s` - $start))
local formatted=`date -ud "@$seconds" +'%H hours %M minutes %S seconds'` local formatted=`date -ud "@$seconds" +'%H hours %M minutes %S seconds'`
echo -e "\033[32;1m=== Wasm updated in $formatted ===\033[0m" echo -e "\033[32;1m=== Wasm updated in $formatted ===\033[0m"
command -v wapm > /dev/null 2>&1
if [ $? -ne 0 ]; then
return
fi
start=`date +%s`
echo -e "\033[32;1m=== Updating wapm packages ===\033[0m"
local output=$(wapm list -g | grep '^ _/' | cut -d '|' -f 1 | cut -d '/' -f 2 | while read package; do
local package_trimmed=$(echo $package | tr -d '[:space:]')
local current_version=$(wapm list -g | grep "^ _/$package_trimmed " | cut -d '|' -f 2 | tr -d '[:space:]')
local last_version=$(wapm search $package_trimmed | grep $package_trimmed | cut -d '|' -f 4 | tr -d '[:space:'])
local needs_update="No"
if _semver_greater $last_version $current_version; then
needs_update="Yes"
fi
echo $package_trimmed@$current_version@$last_version@$needs_update
done | column -t -s "@" -N "Package,Installed,Latest,Needs update")
if [ "$output" != "" ]; then
echo -e "$output\n"
else
echo "No packages to update"
fi
for package in $(echo "$output" | tail -n +2 | grep 'Yes' | cut -d ' ' -f 1); do
echo Updating $package
wapm install -g $package
done
local seconds=$((`date +%s` - $start))
local formatted=`date -ud "@$seconds" +'%H hours %M minutes %S seconds'`
echo -e "\033[32;1m=== Wapm packages updated in $formatted ===\033[0m"
} }
update-npm() { update-npm() {
@ -346,7 +402,7 @@ _print_usage() {
echo -e "\033[33mSUBCOMMANDS:\033[0m" echo -e "\033[33mSUBCOMMANDS:\033[0m"
echo -e " \033[32msystem\033[0m Updates the system (Debian, Archlinux, Fedora)" echo -e " \033[32msystem\033[0m Updates the system (Debian, Archlinux, Fedora)"
echo -e " \033[32mrust\033[0m Updates rust and rust packages (requires rustup)" echo -e " \033[32mrust\033[0m Updates rust and rust packages (requires rustup)"
echo -e " \033[32mwasm\033[0m Updates wasmer" echo -e " \033[32mwasm\033[0m Updates wasmer and wapm packages"
echo -e " \033[32mnpm\033[0m Updates npm packages (in ~/.config/npmbin)" echo -e " \033[32mnpm\033[0m Updates npm packages (in ~/.config/npmbin)"
echo -e " \033[32mdotfiles\033[0m Updates the dotfiles" echo -e " \033[32mdotfiles\033[0m Updates the dotfiles"
echo -e " \033[32mneovim\033[0m Updates the neovim packages" echo -e " \033[32mneovim\033[0m Updates the neovim packages"