Adds lock
This commit is contained in:
parent
9d3728f15a
commit
865fa1c537
62
bin/update
62
bin/update
|
@ -1,5 +1,28 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
_lock() {
|
||||||
|
if [ -f ~/.config/dotfiles/.data/update_lock ]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
touch ~/.config/dotfiles/.data/update_lock
|
||||||
|
}
|
||||||
|
|
||||||
|
_lock_or_error_message() {
|
||||||
|
_lock
|
||||||
|
local value=$?
|
||||||
|
|
||||||
|
if [ $value -ne 0 ]; then
|
||||||
|
echo -e "\033[31;1merror:\033[0m update seems to be already running"
|
||||||
|
echo -e "\033[1minfo:\033[0m if you're sure it's not running, run \`update force-unlock\`"
|
||||||
|
return $value
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_unlock() {
|
||||||
|
rm -rf ~/.config/dotfiles/.data/update_lock
|
||||||
|
}
|
||||||
|
|
||||||
_check_date_if_format() {
|
_check_date_if_format() {
|
||||||
local format=`_date_format`
|
local format=`_date_format`
|
||||||
|
|
||||||
|
@ -286,6 +309,22 @@ partial-test() {
|
||||||
"check") return 0;;
|
"check") return 0;;
|
||||||
"startup") return 0;;
|
"startup") return 0;;
|
||||||
"postpone") return 0;;
|
"postpone") return 0;;
|
||||||
|
"force-unlock") return 0;;
|
||||||
|
*) return 1;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
partial-requires-lock() {
|
||||||
|
case $1 in
|
||||||
|
"system") return 0;;
|
||||||
|
"rust") return 0;;
|
||||||
|
"npm") return 0;;
|
||||||
|
"dotfiles") return 0;;
|
||||||
|
"neovim") return 0;;
|
||||||
|
"check") return 1;;
|
||||||
|
"startup") return 1;;
|
||||||
|
"postpone") return 1;;
|
||||||
|
"force-unlock") return 1;;
|
||||||
*) return 1;;
|
*) return 1;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@ -300,6 +339,7 @@ partial-update() {
|
||||||
"check") _check_date_if_format force;;
|
"check") _check_date_if_format force;;
|
||||||
"startup") _check_date_if_format;;
|
"startup") _check_date_if_format;;
|
||||||
"postpone") update-postpone;;
|
"postpone") update-postpone;;
|
||||||
|
"force-unlock") _unlock;;
|
||||||
*) return 1
|
*) return 1
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
@ -307,6 +347,10 @@ partial-update() {
|
||||||
main() {
|
main() {
|
||||||
|
|
||||||
if [ $# -eq 0 ]; then
|
if [ $# -eq 0 ]; then
|
||||||
|
_lock_or_error_message
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
|
||||||
start=`date +%s`
|
start=`date +%s`
|
||||||
echo -e "\033[32;1m=== Starting full update ===\033[0m"
|
echo -e "\033[32;1m=== Starting full update ===\033[0m"
|
||||||
|
@ -334,22 +378,38 @@ main() {
|
||||||
|
|
||||||
_check_date_if_format force
|
_check_date_if_format force
|
||||||
|
|
||||||
|
_unlock
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
|
local lock_required=1
|
||||||
|
|
||||||
for part in $@; do
|
for part in $@; do
|
||||||
partial-test $part
|
partial-test $part
|
||||||
if [ $? -ne 0 ]; then
|
if [ $? -ne 0 ]; then
|
||||||
echo -e "\033[1;31merror:\033[0m unrocognized update command \"$part\""
|
echo -e "\033[1;31merror:\033[0m unrocognized update command \"$part\""
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
partial-requires-lock $part
|
||||||
|
lock_required=$(($lock_required * $?))
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ $lock_required -eq 0 ]; then
|
||||||
|
_lock_or_error_message
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
return $?
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
for part in $@; do
|
for part in $@; do
|
||||||
partial-update $part
|
partial-update $part
|
||||||
done
|
done
|
||||||
|
|
||||||
|
if [ $lock_required -eq 0 ]; then
|
||||||
|
_unlock
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
main $@
|
main $@
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue