#!/bin/zsh source ${$(realpath "$0"):h}/lib/common.zsh typeset -A interpreter_checked have_dependency() { if [[ ! $interpreter_checked[$1] ]]; then check "Checking for $1… " for variant in ${(s.|.)1}; do if which $variant &> /dev/null; then succeed interpreter_checked[$1]=1 return 0 fi done fail "not found in path" return 1 fi } uses_interpreter() { head -n 1 $2 | grep -q $1 } get_dependencies() { sed -n '2,4{/^#dep:/{s/^#dep://;p;q}}' $1 } get_flatpak_dependencies() { sed -n '2,4{/^#flatpak:/{s/^#flatpak://;p;q}}' $1 } have_flatpak() { check "Checking for flatpak: $1… " flatpak info "$@" &> /dev/null } install_flatpak() { if [[ ! -e flatpaks/.repos/$1 ]]; then fail "Unknown flatpak repo: $1. Add its URL in flatpaks/.repos/$1" else flatpak --user remote-add --if-not-exists $1 $( Options: -a, --all install all scripts (except flatpaks) -p, --path PATH target directory to install into (defaults to ~/.local/bin) -f, --force overwrite existing files in the same dir -s, --skip when installing several scripts, skip scripts with unmet dependencies instead of aborting. --no-flatpak do not automatically install flatpak deps (still checks for them) HELP exit 1 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 if [[ ! $install_path ]]; then install_path=$HOME/.local/bin else install_path=${install_path[2]} fi if [[ $all ]]; then set - devel/* misc/* void/* xdg-wrappers/* fi for prog in $@; do install_prog $prog done