From 714a15f66458b73125c906bd6899d837e34417df Mon Sep 17 00:00:00 2001 From: crater2150 Date: Tue, 29 Aug 2023 11:30:37 +0200 Subject: [PATCH] install.zsh: improve interpreter detection, add list mode --- install.zsh | 52 ++++++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 42 insertions(+), 10 deletions(-) diff --git a/install.zsh b/install.zsh index b1a88d2..37e7efd 100755 --- a/install.zsh +++ b/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