# Linux Workspace Functions if [ -z "$time_ms" ]; then readonly time_ms='date +%s%3N' fi function is_fast_init() { (( $LWS_FAST )) } function is_slow_init() { ! is_fast_init } function xlog() { if true_false "$LWS_DEBUG"; then echo "$@" fi } function jql() { jq -C . "$@" | less -r } function ffile() { local filename="$1" shift file $(type -p "$filename") $@ } # print time in seconds with nanoseconds precission function utime() { date '+%s.%N' } function sqltime() { date '+%Y-%m-%d %H:%M:%S' } function lines() { tr ":" "\n" } function path() { echo "$PATH" | lines } function in_path() { [[ "$PATH" =~ (^|:)"${1}"(:|$) ]] } function append_path() { if ! in_path "$1"; then PATH="$PATH:$1" fi } function append_path_try() { if [[ -e "$1" ]]; then append_path "$1" fi } function prepend_path() { if ! in_path "$1"; then PATH="$1:$PATH" fi } function prepend_path_try() { if [[ -e "$1" ]]; then prepend_path "$1" fi } function remove_path() { PATH=$(path | grep -v "$1" | tr "\n" ":") } function uniq_path() { path | awk '!seen[$0]++' | tr "\n" ":" | sed -r 's/:+/:/g' | sed -r 's/^:|:$//g' } function set_uniq_path() { PATH="$(uniq_path)" } function is_alias() { alias "$1" > /dev/null 2>&1 } function can_run() { local application="$1" command -v "$application" > /dev/null } function source_directory() { local mask="$1" xlog "LOAD DIR $mask" for file in $mask; do if [[ -e "$file" ]]; then if (( $LWS_DEBUG )); then start=$($time_ms) source "$file" stop=$($time_ms) echo "LOAD FILE $file $((stop - start)) ms" else source "$file" fi fi done } function source_directory_sh() { source_directory "$1/*.sh" } # use: dump_args "$@" function dump_args() { for i in $*; do echo $i done } function source_try() { local script="$1" if [[ -e "$script" ]]; then source "$script" fi } function true_false() { # lower case and compare # [[ "${1,,}" =~ ^(1|true|yes)$ ]] [[ "${1@L}" =~ ^(1|true|yes)$ ]] } function is_wsl() { grep -q -i wsl /proc/version }