install.zsh: improve interpreter detection, add list mode
This commit is contained in:
parent
9a7f1a5c03
commit
714a15f664
44
install.zsh
44
install.zsh
|
@ -23,6 +23,18 @@ uses_interpreter() {
|
||||||
head -n 1 $2 | grep -q $1
|
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() {
|
get_dependencies() {
|
||||||
sed -n '2,4{/^#dep:/{s/^#dep://;p;q}}' $1
|
sed -n '2,4{/^#dep:/{s/^#dep://;p;q}}' $1
|
||||||
}
|
}
|
||||||
|
@ -45,15 +57,13 @@ install_flatpak() {
|
||||||
}
|
}
|
||||||
|
|
||||||
install_prog() {
|
install_prog() {
|
||||||
for lang in zsh ruby python amm; do
|
if ! have_dependency $(get_interpreter $prog); then
|
||||||
if uses_interpreter $lang $prog && ! have_dependency $lang; then
|
|
||||||
if [[ $skip ]]; then
|
if [[ $skip ]]; then
|
||||||
continue 2
|
continue
|
||||||
else
|
else
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
|
||||||
for dep in $(get_dependencies $prog); do
|
for dep in $(get_dependencies $prog); do
|
||||||
if ! have_dependency $dep; then
|
if ! have_dependency $dep; then
|
||||||
[[ $skip ]] && continue 2 || exit 1
|
[[ $skip ]] && continue 2 || exit 1
|
||||||
|
@ -96,7 +106,7 @@ if [[ -z $1 ]]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
zparseopts -D -E p:=install_path -path:=install_path f=force -force=force \
|
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
|
if [[ ! $install_path ]]; then
|
||||||
install_path=$HOME/.local/bin
|
install_path=$HOME/.local/bin
|
||||||
|
@ -104,8 +114,30 @@ else
|
||||||
install_path=${install_path[2]}
|
install_path=${install_path[2]}
|
||||||
fi
|
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
|
if [[ $all ]]; then
|
||||||
set - devel/* misc/* void/* xdg-wrappers/*
|
set - devel/* flatpaks/* misc/* void/* xdg-wrappers/*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
for prog in $@; do
|
for prog in $@; do
|
||||||
|
|
Loading…
Reference in a new issue