install.zsh: improve interpreter detection, add list mode
This commit is contained in:
parent
9a7f1a5c03
commit
714a15f664
52
install.zsh
52
install.zsh
|
@ -23,6 +23,18 @@ uses_interpreter() {
|
|||
head -n 1 $2 | grep -q $1
|
||||
}
|
||||
|
||||
get_interpreter() {
|
||||
parts=(${(s: :)$(head -n 1 $1)})
|
||||
main=${parts[1]:t}
|
||||
shift 1 parts
|
||||
if [[ $main == 'env' ]]; then
|
||||
while [[ ${parts[1][1]} == '-' ]]; do shift 1 parts; done
|
||||
echo ${parts[1]}
|
||||
else
|
||||
echo $main
|
||||
fi
|
||||
}
|
||||
|
||||
get_dependencies() {
|
||||
sed -n '2,4{/^#dep:/{s/^#dep://;p;q}}' $1
|
||||
}
|
||||
|
@ -45,15 +57,13 @@ install_flatpak() {
|
|||
}
|
||||
|
||||
install_prog() {
|
||||
for lang in zsh ruby python amm; do
|
||||
if uses_interpreter $lang $prog && ! have_dependency $lang; then
|
||||
if [[ $skip ]]; then
|
||||
continue 2
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
if ! have_dependency $(get_interpreter $prog); then
|
||||
if [[ $skip ]]; then
|
||||
continue
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
fi
|
||||
for dep in $(get_dependencies $prog); do
|
||||
if ! have_dependency $dep; then
|
||||
[[ $skip ]] && continue 2 || exit 1
|
||||
|
@ -96,7 +106,7 @@ if [[ -z $1 ]]; then
|
|||
fi
|
||||
|
||||
zparseopts -D -E p:=install_path -path:=install_path f=force -force=force \
|
||||
s=skip -skip=skip -no-flatpak=noflatpakinstall a=all -all=all
|
||||
s=skip -skip=skip -no-flatpak=noflatpakinstall a=all -all=all l=list -list=list
|
||||
|
||||
if [[ ! $install_path ]]; then
|
||||
install_path=$HOME/.local/bin
|
||||
|
@ -104,8 +114,30 @@ else
|
|||
install_path=${install_path[2]}
|
||||
fi
|
||||
|
||||
if [[ $list ]]; then
|
||||
all_scripts=( devel/* flatpaks/* misc/* void/* xdg-wrappers/* )
|
||||
installed=()
|
||||
not_installed=()
|
||||
for script in $all_scripts; do
|
||||
if [[ -e $install_path/${script:t} ]]; then
|
||||
installed+=($script)
|
||||
else
|
||||
not_installed+=($script)
|
||||
fi
|
||||
done
|
||||
printf "\e[4;34mInstalled:\e[0m\n"
|
||||
for script in $installed; do
|
||||
printf " %s\n" $script
|
||||
done
|
||||
printf "\e[4;34mNot installed:\e[0m\n"
|
||||
for script in $not_installed; do
|
||||
printf " %s\n" $script
|
||||
done
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [[ $all ]]; then
|
||||
set - devel/* misc/* void/* xdg-wrappers/*
|
||||
set - devel/* flatpaks/* misc/* void/* xdg-wrappers/*
|
||||
fi
|
||||
|
||||
for prog in $@; do
|
||||
|
|
Loading…
Reference in a new issue