Do most dependency checking during install instead of runtime
This commit is contained in:
parent
f8d866b623
commit
a2d794ea70
|
@ -1,6 +1,7 @@
|
|||
#!/bin/zsh
|
||||
#dep:java
|
||||
unset JAVA_HOME
|
||||
source /etc/profile.d/11_oracle-jdk.sh
|
||||
source /etc/profile.d/10_openjdk11.sh
|
||||
export IBUS_ENABLE_SYNC_MODE=1
|
||||
export XMODIFIERS=""
|
||||
|
||||
|
|
13
install.zsh
13
install.zsh
|
@ -3,7 +3,7 @@
|
|||
source ${$(realpath "$0"):h}/lib/common.zsh
|
||||
|
||||
typeset -A interpreter_checked
|
||||
have_interpreter() {
|
||||
have_dependency() {
|
||||
if [[ ! $interpreter_checked[$1] ]]; then
|
||||
check "Checking for $1… "
|
||||
if which $1 &> /dev/null; then
|
||||
|
@ -22,6 +22,10 @@ uses_interpreter() {
|
|||
head -n 1 $2 | grep -q $1
|
||||
}
|
||||
|
||||
get_dependencies() {
|
||||
sed -n '2{/^#dep:/{s/^#dep://;p;q}}' $1
|
||||
}
|
||||
|
||||
if [[ -z $1 ]]; then
|
||||
<<-HELP
|
||||
Usage: $0 [-p PATH] <program_names>
|
||||
|
@ -38,11 +42,14 @@ else
|
|||
fi
|
||||
|
||||
for prog in $@; do
|
||||
for lang in zsh ruby python; do
|
||||
for lang in zsh ruby python amm; do
|
||||
if uses_interpreter $lang $prog; then
|
||||
have_interpreter $lang || exit 1
|
||||
have_dependency $lang || exit 1
|
||||
fi
|
||||
done
|
||||
for dep in $(get_dependencies $prog); do
|
||||
have_dependency $dep || exit 1
|
||||
done
|
||||
if [[ -e $install_path/${prog:t} && ! $force ]]; then
|
||||
warning "$prog already exists at $install_path. Skipping."
|
||||
else
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:at
|
||||
time=$1; shift
|
||||
(
|
||||
echo "DISPLAY=$DISPLAY sm \"$@\"" | at $time
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/zsh
|
||||
|
||||
#dep:pgrep
|
||||
if [[ $1 == "-u" ]]; then
|
||||
USER=$2
|
||||
SUDO="sudo -u $USER"
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/usr/bin/env ruby
|
||||
#dep:scrot dmenu
|
||||
|
||||
require 'dmenu'
|
||||
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
#!/bin/zsh
|
||||
|
||||
source ${$(realpath "$0"):h:h}/lib/common.zsh
|
||||
#dep:rofi
|
||||
|
||||
emulate -L zsh
|
||||
|
||||
|
@ -9,13 +8,6 @@ CONFIG_PATH="$HOME/.config/dmsearch"
|
|||
CACHE_PATH="$HOME/.cache/dmsearch"
|
||||
mkdir -p "${CACHE_PATH}"
|
||||
|
||||
# required software
|
||||
depend dmsearch \
|
||||
rofi \
|
||||
mv \
|
||||
tail \
|
||||
cut
|
||||
|
||||
|
||||
################################################################################
|
||||
# helpers
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:udiskie-info dmenu
|
||||
device=$(udiskie-info -a -o '{mount_path}' | grep -ve '^$' | dmenu -l 20)
|
||||
if [[ -n "$device" ]]; then
|
||||
udiskie-umount $device
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/usr/bin/env ruby
|
||||
#dep:xrandr
|
||||
|
||||
require 'xrandr'
|
||||
require 'dmenu'
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:fd dmenu fzf
|
||||
|
||||
zparseopts -D -E h=help -help=help e+:=extension -extension+:=extension
|
||||
if [[ -n "$help" ]]; then
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:dos2unix iconv
|
||||
for i in "$@"; do
|
||||
dos2unix $i &>/dev/null
|
||||
iconv -fLATIN1 -tUTF8 $i | sponge $i
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/zsh
|
||||
remote=${1:-origin}
|
||||
git remote set-url $remote $(git remote get-url $remote | sed -e 's#https?://\([^/]*\)/#git@\1:#')
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:tmux alacritty
|
||||
|
||||
if [[ "${0:t}" == "guiterm" ]]; then
|
||||
<<-HELP
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:curl
|
||||
# installs or updates to latest release of Proton build by GloriousEggroll
|
||||
# saves installed versions in $STEAM_DIR/compatibilitytools.d/proton-ge-tags
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:mdcat iconv
|
||||
|
||||
MDCAT=/usr/bin/mdcat
|
||||
encoding=$(file -i "$1" | sed "s/.*charset=\(.*\)$/\1/")
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:perl notify-send
|
||||
|
||||
DEFAULT=raw
|
||||
ICON=/usr/share/icons/Adwaita/48x48/actions/mail-message-new.png
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:pass pwgen xclip
|
||||
|
||||
source ${$(realpath "$0"):h:h}/lib/common.zsh
|
||||
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
#!/bin/zsh
|
||||
|
||||
source ${$(realpath "$0"):h:h}/lib
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:inkscape xmllint
|
||||
for i in "$@"; do
|
||||
inkscape --without-gui --file=$i --export-plain-svg=/dev/stdout \
|
||||
| tr -d '\n' \
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:qrencode feh
|
||||
if [[ -z "$1" ]]; then
|
||||
qrencode -s 40 -o -
|
||||
else
|
||||
|
|
11
misc/selfip
Executable file
11
misc/selfip
Executable file
|
@ -0,0 +1,11 @@
|
|||
#!/bin/zsh
|
||||
#dep:jq ip
|
||||
if [[ $1 == "-h" || $1 == "--help" ]]; then
|
||||
echo "Usage: selfip [target address]"
|
||||
echo
|
||||
echo " Prints own address used to access the given address"
|
||||
echo " Defaults to 8.8.8.8, which will show the IP of the"
|
||||
echo " interface used to access the internet"
|
||||
exit 0
|
||||
fi
|
||||
ip -json route get ${1:-8.8.8.8} | jq -r '.[0].prefsrc'
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:ssh rsync
|
||||
file_id=$(head -c 12 /dev/urandom|base64| tr '/' '+')
|
||||
file_name=${2:-${1:t}}
|
||||
|
||||
|
|
23
misc/smapi-update
Executable file
23
misc/smapi-update
Executable file
|
@ -0,0 +1,23 @@
|
|||
#!/bin/zsh
|
||||
#dep:unzip wget
|
||||
# installs or updates to latest release of SMAPI (Stardew Valley Modding API)
|
||||
|
||||
WORKDIR=$(mktemp -d)
|
||||
cd $WORKDIR
|
||||
echo $WORKDIR
|
||||
pwd
|
||||
|
||||
latest_json=$(curl -s https://api.github.com/repos/Pathoschild/SMAPI/releases/latest)
|
||||
|
||||
download_url=$(jq -r <<<"$latest_json" '.assets[]|select(.name | contains("developer")|not)|.browser_download_url')
|
||||
|
||||
wget -O smapi.zip $download_url
|
||||
|
||||
unzip smapi.zip
|
||||
|
||||
cd SMAPI*
|
||||
|
||||
{ sleep 0.5; printf "2\n1\n"} | sh install\ on\ Linux.sh
|
||||
|
||||
cd /
|
||||
rm -rf $WORKDIR
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:alacritty tmux mosh
|
||||
if [[ "$1" == "-S" ]]; then
|
||||
shift
|
||||
server=${1};
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:tmux ifne fzf-tmux xdg-open
|
||||
target=$(tmux capture-pane -e -p -J -S -20 \
|
||||
| grep -oP "(https?://|www\.)[^\"<>') \e]*" \
|
||||
| ifne fzf-tmux --tac)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#!/bin/zsh
|
||||
|
||||
#dep:fzf dmenu
|
||||
# A simple wrapper around fzf and rofi, choosing based on if called from a terminal
|
||||
|
||||
zparseopts -D -E i=ignorecase l:=rofi_lines p:=listprompt -prompt:=listprompt
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:slimlock
|
||||
|
||||
lockstate() { pidof slimlock &>/dev/null }
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:fd fzf
|
||||
|
||||
source ${$(realpath "$0"):h:h}/lib/common.zsh
|
||||
|
||||
|
|
1
misc/vf
1
misc/vf
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:fd fzf
|
||||
zparseopts -D -E -ext:=ext e:=ext h=help -help=help
|
||||
|
||||
if [[ -n $help ]]; then
|
||||
|
|
|
@ -1,11 +1,8 @@
|
|||
#!/bin/zsh
|
||||
|
||||
source ${$(realpath "$0"):h:h}/lib/common.zsh
|
||||
#dep:chromium firejail
|
||||
|
||||
profile="${0:t}"
|
||||
|
||||
depend chromium firejail
|
||||
|
||||
mkdir -p $HOME/.jails/chromium-$profile
|
||||
|
||||
exec firejail --private=$HOME/.jails/chromium-$profile \
|
||||
|
|
2
misc/xc
2
misc/xc
|
@ -1,10 +1,10 @@
|
|||
#!/bin/zsh
|
||||
#dep:xclip
|
||||
|
||||
# install this program with the name xc and symlink it as xs.
|
||||
# xc will use the clipboard selection, while xs while use the primary selection
|
||||
|
||||
source ${$(realpath "$0"):h:h}/lib/common.zsh
|
||||
depend xclip
|
||||
|
||||
function get_primary() { xclip -o -selection primary }
|
||||
function get_clipboard() { xclip -o -selection clipboard }
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#!/bin/zsh
|
||||
#dep:xdg-mime
|
||||
|
||||
source ${$(realpath "$0"):h:h}/lib/common.zsh
|
||||
|
||||
|
|
|
@ -1,2 +1,3 @@
|
|||
#!/bin/zsh
|
||||
#dep:zenity
|
||||
zenity --password --title="sudo password prompt" --timeout=10
|
||||
|
|
Loading…
Reference in a new issue