From d9b21ce70d6f9bc1cbc5fddae7d1fb399725a85d Mon Sep 17 00:00:00 2001 From: tosu Date: Sat, 22 Jun 2024 16:58:38 +0200 Subject: [PATCH] Renamings --- .bashrc | 148 ++++++++++-------- .../bin/{cut_term_width.py => cut_term_width} | 0 .local/bin/{new_key.sh => new_key} | 0 ...h_reset.sh => pair_to_mx5_bluetooth_reset} | 0 .local/bin/{rank_mirrors.sh => rank_mirrors} | 0 .../bin/{system_update.sh => system_update} | 0 .local/bin/{tmux_urls.py => tmux_urls} | 0 .local/bin/torshare | 2 +- .local/bin/{tui_choice.sh => tui_choice} | 0 .tmux.conf | 2 +- .xinitrc | 3 +- 11 files changed, 89 insertions(+), 66 deletions(-) mode change 100644 => 100755 .bashrc rename .local/bin/{cut_term_width.py => cut_term_width} (100%) rename .local/bin/{new_key.sh => new_key} (100%) rename .local/bin/{pair_to_mx5_bluetooth_reset.sh => pair_to_mx5_bluetooth_reset} (100%) rename .local/bin/{rank_mirrors.sh => rank_mirrors} (100%) rename .local/bin/{system_update.sh => system_update} (100%) rename .local/bin/{tmux_urls.py => tmux_urls} (100%) rename .local/bin/{tui_choice.sh => tui_choice} (100%) diff --git a/.bashrc b/.bashrc old mode 100644 new mode 100755 index 6fb23fd..fb197df --- a/.bashrc +++ b/.bashrc @@ -4,33 +4,34 @@ # Exit when noninteractive. This is more portable than checking PS1. [ "${-#*i}" = "${-}" ] && return -############################### logging (posix) ################################ -__log () { +############################ utils (thanks rwxrob) ############################# +_path_lookup () { type -P "$1" ; } # adapted for bash. +_have_all () { while [ $# -gt 0 ] ; do [ -x "$(_path_lookup "$1")" ] || return 1 ; shift ; done ; } +_have () { _have_all "$1" ; } +_source_if () { [ -f "$1" ] && [ -r "$1" ] && . "$1" ; } + +# TODO: Create ~/.local/bin directory and add ~/.local/bin to PATH +# Add some basic scripts, like log.log, etc. +################################ logging utils ################################# +log.log () { case "${1-}" in - red) ansi='41;30' ;; - orange) ansi='43;30' ;; - blue) ansi='44;30' ;; - green) ansi='42;30' ;; - *) ansi='45;30' ;; + red) __ansi='41;30' ;; + orange) __ansi='43;30' ;; + blue) __ansi='44;30' ;; + green) __ansi='42;30' ;; + *) __ansi='45;30' ;; esac shift - >&2 printf "\033[${ansi}m%s\033[m\n" "${*}" - unset ansi + 1>&2 printf "\033[${__ansi}m%s\033[m\n" "${*}" + unset __ansi } - -err () { __log red "${@}" ; } -warn () { __log orange "${@}" ; } -info () { __log blue "${@}" ; } -good () { __log green "${@}" ; } - -############################ utils (thanks rwxrob) ############################# -_path_lookup () { type -P "$1"; } # adapted for bash. -_have_all () { while [ $# -gt 0 ] ; do [ -x "$(_path_lookup "$1")" ] || return 1 ; shift ; done; } -_have () { _have_all "$1"; } -_source_if () { [ -f "$1" ] && [ -r "$1" ] && . "$1"; } +log.err () { log.log red "${@}" ; } +log.warn () { log.log orange "${@}" ; } +log.info () { log.log blue "${@}" ; } +log.good () { log.log green "${@}" ; } ###################### exit when already sourced (posix) ####################### -[ -n "${BASHRC_SOURCED}" ] && { __log red ".bashrc already sourced. Reset shell with 'exec bash [-l]' or start a new terminal." ; return 1 ; } +[ -n "${BASHRC_SOURCED}" ] && { log.err ".bashrc already sourced. Reset shell with 'exec bash [-l]' or start a new terminal." ; return 1 ; } BASHRC_SOURCED='1' ################################## bash reset ################################## @@ -58,19 +59,19 @@ pathvarprepend () { # POSIX compliant version test $# -ge 2 || - { info "Usage: pathvarprepend PATHVAR PATH_TO_ADD [PATH_TO_ADD...]" ; - info "Example: pathvarprepend LD_LIBRARY_PATH '$HOME/.local/lib' '/usr/local/lib'" ; + { log.info "Usage: pathvarprepend PATHVAR PATH_TO_ADD [PATH_TO_ADD...]" ; + log.info "Example: pathvarprepend LD_LIBRARY_PATH '$HOME/.local/lib' '/usr/local/lib'" ; return 2 ; } pathvar=$1 shift case $pathvar in (*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*|""|[0123456789]*) false;; esac || - { err 'Expanded pathvar is not a valid name/variable identifier' ; return 3 ; } + { log.err 'Expanded pathvar is not a valid name/variable identifier' ; return 3 ; } if [ "$pathvar" = "PATH" ] ; then test "${-#*r}" = $- || - { err 'Restricted shell, cannot change PATH' ; return 4 ; } + { log.err 'Restricted shell, cannot change PATH' ; return 4 ; } fi path_prepend_error=0 @@ -88,10 +89,10 @@ pathvarprepend () { norm_path_to_add=$1 test "${norm_path_to_add#*:}" = "$norm_path_to_add" || - { warn "Cannot add path with colon: $norm_path_to_add" ; path_prepend_error=1 ; continue ; } + { log.warn "Cannot add path with colon: $norm_path_to_add" ; path_prepend_error=1 ; continue ; } test -d "$norm_path_to_add" || - { warn "path_to_add ('$norm_path_to_add') not a directory" ; path_prepend_error=1 ; continue ; } + { log.warn "path_to_add ('$norm_path_to_add') not a directory" ; path_prepend_error=1 ; continue ; } norm_path=$(printf %s ":$(eval "printf %s "'"'"\$$pathvar"'"'):" | head -n 1 | sed 's|/\+|/|g; s/\/$//; s/:/::/g') # fence with colons, ensure one line, deduplicate slashes, trim trailing, duplicate colons norm_path_to_add=$(printf %s "$norm_path_to_add" | head -n 1 | sed 's|/\+|/|g; s/\/$//') # ensure one line, deduplicate slashes, trim trailing @@ -119,18 +120,18 @@ pathvarappend () { # POSIX compliant version test $# -ge 2 || - { info "Usage: pathvarappend PATHVAR PATH_TO_ADD [PATH_TO_ADD...]" - info "Example: pathvarappend LD_LIBRARY_PATH '$HOME/.local/lib' '/usr/local/lib'" + { log.info "Usage: pathvarappend PATHVAR PATH_TO_ADD [PATH_TO_ADD...]" + log.info "Example: pathvarappend LD_LIBRARY_PATH '$HOME/.local/lib' '/usr/local/lib'" return 2 ; } pathvar=$1 case $pathvar in (*[!abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_]*|""|[0123456789]*) false;; esac || - { err 'Expanded pathvar is not a valid name/variable identifier' ; return 3 ; } + { log.err 'Expanded pathvar is not a valid name/variable identifier' ; return 3 ; } if [ "$pathvar" = "PATH" ] ; then test "${-#*r}" = $- || - { err 'Restricted shell, cannot change PATH' ; return 4 ; } + { log.err 'Restricted shell, cannot change PATH' ; return 4 ; } fi path_append_error=0 @@ -139,10 +140,10 @@ pathvarappend () { norm_path_to_add=$1 test "${norm_path_to_add#*:}" = "$norm_path_to_add" || - { warn 'Cannot add path with colon' ; path_append_error=1 ; continue ; } + { log.warn 'Cannot add path with colon' ; path_append_error=1 ; continue ; } test -d "$norm_path_to_add" || - { warn "path_to_add ('$norm_path_to_add') not a directory" ; path_append_error=1 ; continue ; } + { log.warn "path_to_add ('$norm_path_to_add') not a directory" ; path_append_error=1 ; continue ; } norm_path=$(printf %s ":$(eval "printf %s "'"'"\$$pathvar"'"'):" | head -n 1 | sed 's|/\+|/|g; s/\/$//; s/:/::/g') # fence with colons, ensure one line, deduplicate slashes, trim trailing, duplicate colons norm_path_to_add=$(printf %s "$norm_path_to_add" | head -n 1 | sed 's|/\+|/|g; s/\/$//') # ensure one line, deduplicate slashes, trim trailing @@ -232,9 +233,9 @@ elif _have vi ; then elif _have nano ; then alias vi="$(_path_lookup nano)" fi -alias v='err use vi' -alias vim='err use vi' -alias nvim='err use vi' +alias v='log.err use vi' +alias vim='log.err use vi' +alias nvim='log.err use vi' ######################## default-option aliases (posix) ######################## alias gdb='gdb -q' @@ -294,6 +295,25 @@ CDPATH="."\ ":${HOME}/projects/aoc/2023" ################################## FUNCTIONS ################################### +################################# vix (posix) ################################## +vix () { + _have vi || { log.err 'vi missing' ; exit 1 ; } + + [ "${#}" -lt "1" ] && { log.info "Usage: vix FILE [VIM_ARGS...]" ; return 1 ; } + + file="${1}" + shift + [ -e "$file" ] && [ ! -f "$file" ] && { log.err "File '$file' exists and is not a regular file" ; return 2 ; } + if [ ! -e "$file" ] ; then + printf "#! /bin/sh -\n\n\n" > "$file" || { log.err "Can't write to file '$file'" ; return 3 ; } + set -- "$@" +3 + fi + if [ ! -x "$file" ] ; then + chmod +x "$file" || { log.err "Can't chmod +x '$file'" ; return 4 ; } + fi + vi "$@" "$file" +} + ##################### cd with pushd functionality (posix) ###################### cd () { command cd "${@}" || return 1 @@ -305,12 +325,13 @@ cd () { ############################## vimw (posix) ############################### # Roughly equivalent to vi "$(which "$1")", but also allowing for args after $1 vimw () { - _have vi || { err 'vi missing'; exit 1; } + _have vi || { log.err 'vi missing' ; exit 1 ; } + + [ -z "$1" ] && { log.info "Usage: vimw FILE [VIM_ARGS...]" ; return 1 ; } - [ -z "$1" ] && { info "Usage: vimw FILE [VIM_ARGS...]" ; return 1 ; } first="$1" shift - vi "$@" $(type -P "$first") + vi "$@" "$(type -P "$first")" } #################################### paruuu (posix) #################################### @@ -318,12 +339,12 @@ vimw () { # Clears cache and removes orphans. Arguably dangerous. # Depends on iw, paru, pacman, rankmirrors, sudo, curl paruuu () { - _have iw || { err 'iw missing'; exit 1; } - _have paru || { err 'paru missing'; exit 2; } - _have pacman || { err 'pacman missing'; exit 3; } - _have rankmirrors || { err 'rankmirrors missing'; exit 4; } - _have sudo || { err 'sudo missing'; exit 5; } - _have curl || { err 'curl missing'; exit 6; } + _have iw || { log.err 'iw missing' ; exit 1 ; } + _have paru || { log.err 'paru missing' ; exit 2 ; } + _have pacman || { log.err 'pacman missing' ; exit 3 ; } + _have rankmirrors || { log.err 'rankmirrors missing' ; exit 4 ; } + _have sudo || { log.err 'sudo missing' ; exit 5 ; } + _have curl || { log.err 'curl missing' ; exit 6 ; } printf 'Do system upgrade (Y) or exit (n): ' read -r choice @@ -345,6 +366,7 @@ paruuu () { && [ ! "${ssid-}" = "Free Wifi" ] \ && [ ! "${ssid-}" = "DS_JD-Tree" ] \ && [ ! "${ssid-}" = "Nichts 2,4" ] \ + && [ ! "${ssid-}" = "WLAN-17KA15" ] \ && [ ! "${ssid-}" = "\xe2\x88\x9e" ] \ && [ ! "${ssid-}" = $'\xe2\x88\x9e' ] \ && [ ! "${ssid-}" = "Pink Flamingo" ] \ @@ -386,8 +408,8 @@ paruuu () { ################################ skill (posix) ################################# # Depends on pgrep, ps skill () { - _have pgrep || { err 'pgrep missing'; return 1; } - _have ps || { err 'ps missing'; return 2; } + _have pgrep || { log.err 'pgrep missing' ; return 1 ; } + _have ps || { log.err 'ps missing' ; return 2 ; } exit_status=0 while [ -n "${1-}" ] ; do @@ -402,8 +424,8 @@ skill () { printf '\033[41;30m%s\033[m\n' "These processes couldn't be killed with root (sudo):" pgrep -f "$1" | xargs ps -o user,ruser,pid,c,stime,tty,time,cmd else - info Cancelled - return 3; + log.info Cancelled + return 3 ; fi exit_status=1 } @@ -415,7 +437,7 @@ skill () { ############################# wpa_restart (posix) ############################## # Depends on wpa_supplicant wpa_restart () { - _have wpa_supplicant || { err 'wpa_supplicant missing'; return 1; } + _have wpa_supplicant || { log.err 'wpa_supplicant missing' ; return 1 ; } skill wpa_supplicant sudo wpa_supplicant -B -i "${1:-wlan0}" -c /etc/wpa_supplicant/wpa_supplicant.conf @@ -441,7 +463,7 @@ norminette () { local vers local newst - _have norminette || { err 'norminette missing'; return 1; } + _have norminette || { log.err 'norminette missing' ; return 1 ; } vers="$($(type -P norminette) -v | cut -d" " -f2)" newst='3.3.55' @@ -455,8 +477,8 @@ norminette () { ################################ __norm (posix) ################################ # Depends on git, norminette __norm () { - _have git || { err 'git missing'; return 1; } - _have norminette || { err 'norminette missing'; return 2; } + _have git || { log.err 'git missing' ; return 1 ; } + _have norminette || { log.err 'norminette missing' ; return 2 ; } __pwd="$(pwd -P)" [ -n "${__pwd}" ] && [ -z "${__pwd##${HOME-}/42/42cursus/*}" ] || { return 1 ; } @@ -472,8 +494,8 @@ ft_check () { URL="${1}" DIR="/tmp/tmp_repo_$(date +%s)" - _have git || { err 'git missing'; return 1; } - _have norminette || { err 'norminette missing'; return 2; } + _have git || { log.err 'git missing' ; return 1 ; } + _have norminette || { log.err 'norminette missing' ; return 2 ; } # If no URL, get it from current repo if [ -z "${URL-}" ] ; then @@ -501,8 +523,8 @@ clone42 () { folder="${1}" repo_url="${2}" - _have git || { err 'git missing'; return 1; } - _have norminette || { err 'norminette missing'; return 2; } + _have git || { log.err 'git missing' ; return 1 ; } + _have norminette || { log.err 'norminette missing' ; return 2 ; } git clone --quiet "${repo_url}" "${folder}" && { cd "${folder}" @@ -533,7 +555,7 @@ export MANPAGER='nvim +Man!' export BAT_THEME='gruvbox-dark' # export BAT_THEME='gruvbox-light' -[ -n "${DISPLAY-}" ] || warn 'DISPLAY not set' +[ -n "${DISPLAY-}" ] || log.warn 'DISPLAY not set' if [ ! "${TERM-}" = "linux" ] ; then if [ -f '/usr/share/terminfo/x/xterm-256color' ] ; then @@ -557,7 +579,7 @@ fi . "${HOME}"/.bash-preexec.sh preexec() { - [ -d "${HISTDIR}" ] || { mkdir -p -- "${HISTDIR}" || warn "Can't create directory: ${HISTDIR}" ; } + [ -d "${HISTDIR}" ] || { mkdir -p -- "${HISTDIR}" || log.warn "Can't create directory: ${HISTDIR}" ; } history -a TIMESTAMP_BEFORE="$(date +%s)" } @@ -639,9 +661,9 @@ aocload () { local year local day - _have curl || { err 'curl missing'; exit 1; } - _have tmux || { err 'tmux missing'; exit 2; } - _have git || { err 'git missing'; exit 3; } + _have curl || { log.err 'curl missing' ; exit 1 ; } + _have tmux || { log.err 'tmux missing' ; exit 2 ; } + _have git || { log.err 'git missing' ; exit 3 ; } this_year="$(date "+%Y")" this_day="$(date "+%d" | sed -e 's/^0//')" @@ -679,7 +701,7 @@ aocload () { -o './in.txt' \ -b "session=${AOC_COOKIE}" \ "https://adventofcode.com/${year}/day/${day}/input" \ - || printf '\033[31m%s\033[m' "$(err 'Error downloading input' | tee './in.txt')" + || printf '\033[31m%s\033[m' "$(log.err 'Error downloading input' | tee './in.txt')" unset -v -- AOC_COOKIE if [ ! -f './solution.py' ] ; then diff --git a/.local/bin/cut_term_width.py b/.local/bin/cut_term_width similarity index 100% rename from .local/bin/cut_term_width.py rename to .local/bin/cut_term_width diff --git a/.local/bin/new_key.sh b/.local/bin/new_key similarity index 100% rename from .local/bin/new_key.sh rename to .local/bin/new_key diff --git a/.local/bin/pair_to_mx5_bluetooth_reset.sh b/.local/bin/pair_to_mx5_bluetooth_reset similarity index 100% rename from .local/bin/pair_to_mx5_bluetooth_reset.sh rename to .local/bin/pair_to_mx5_bluetooth_reset diff --git a/.local/bin/rank_mirrors.sh b/.local/bin/rank_mirrors similarity index 100% rename from .local/bin/rank_mirrors.sh rename to .local/bin/rank_mirrors diff --git a/.local/bin/system_update.sh b/.local/bin/system_update similarity index 100% rename from .local/bin/system_update.sh rename to .local/bin/system_update diff --git a/.local/bin/tmux_urls.py b/.local/bin/tmux_urls similarity index 100% rename from .local/bin/tmux_urls.py rename to .local/bin/tmux_urls diff --git a/.local/bin/torshare b/.local/bin/torshare index 4e69020..0560852 100755 --- a/.local/bin/torshare +++ b/.local/bin/torshare @@ -54,7 +54,7 @@ echo "Successfully downloaded $target_file, size \$(wc -c < ./$(squote_escape "$ GET_FILE_VIA_TOR )" echo "Run at your own risk." -printf '\033[31m%s\033[m\n' "curl $link|sh" +printf '\033[31m%s\033[m\n' "curl -sfkSL $link|sh" printf %s "$link" | qr echo "Serving file via: $tor_host/$(urlencode "$target_file")" diff --git a/.local/bin/tui_choice.sh b/.local/bin/tui_choice similarity index 100% rename from .local/bin/tui_choice.sh rename to .local/bin/tui_choice diff --git a/.tmux.conf b/.tmux.conf index 132d2ce..bb472bf 100644 --- a/.tmux.conf +++ b/.tmux.conf @@ -53,7 +53,7 @@ bind-key -r -T prefix C-j resize-pane -D 2 bind-key -r -T prefix C-k resize-pane -U 2 bind-key -r -T prefix C-l resize-pane -R 2 -bind-key -T prefix C-u popup -E '~/.local/bin/tmux_urls.py' +bind-key -T prefix C-u popup -E '~/.local/bin/tmux_urls' set-option -g set-titles on diff --git a/.xinitrc b/.xinitrc index e79d2e1..df36c9e 100644 --- a/.xinitrc +++ b/.xinitrc @@ -1,3 +1,4 @@ +#! /bin/bash -- # ex: set ts=4 sw=4 ft=sh -exec /bin/bash "${HOME}"/.bash_xinitrc +exec /bin/bash "${HOME}/.bash_xinitrc"