install.zsh: improve interpreter detection, add list mode

This commit is contained in:
crater2150 2023-08-29 11:30:37 +02:00
parent 9a7f1a5c03
commit 714a15f664

View file

@ -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