#ft=sh #shellcheck shell=sh if type nvim >/dev/null 2>/dev/null; then export EDITOR=nvim alias vim=nvim else export EDITOR=vim fi source_env_file() { if [ ! -f "${1}" ]; then return fi eval "$( grep -v '^\s*\#' "${1}" | grep -v '^\s*$' | sed 's/^\s*export//g' | sed 's/^/export /g' )" } add_date_prefix() ( DIR=$(dirname "$1") FILE=$(basename "$1") DATE=$(date -r "$1" +"%F") if [ ! -f "$1" ]; then echo "unknown file: $1" exit 1 fi mv "$1" "$DIR/${DATE}_${FILE}" ) get_bitrate() ( if [ ! -f "$1" ]; then echo "[ERROR] unknown file: $1" exit 1 fi if ! command -v exiftool >/dev/null; then echo "[ERROR] exiftool not installed" exit 1 fi exiftool -AudioBitrate "$1" | awk '{print $4}' ) json_to_yaml() ( ARG=${1-} if [ -z "${ARG}" ]; then dasel --read json --write yaml | bat --language yaml elif [ -f "${ARG}" ]; then dasel --read json --write yaml --file "${ARG}" | bat --language yaml else echo "${ARG}" | dasel --read json --write yaml | bat --language yaml fi ) yaml_to_json() ( ARG=${1-} if [ -z "${ARG}" ]; then dasel --read yaml --write json | bat --language json elif [ -f "${ARG}" ]; then dasel --read yaml --write json --file "${ARG}" | bat --language json else echo "${ARG}" | dasel --read yaml --write json | bat --language json fi ) github_releases() ( USER=${1} REPO=${2-} if [ -z "${REPO}" ]; then USER=$(echo "${1}" | sed 's|/| |g' | awk '{print $1}') REPO=$(echo "${1}" | sed 's|/| |g' | awk '{print $2}') fi curl --silent --header "Accept: application/vnd.github.v3+json" \ "https://api.github.com/repos/${USER}/${REPO}/releases" ) github_tags() ( USER=${1} REPO=${2-} if [ -z "${REPO}" ]; then USER=$(echo "${1}" | sed 's|/| |g' | awk '{print $1}') REPO=$(echo "${1}" | sed 's|/| |g' | awk '{print $2}') fi curl --silent --header "Accept: application/vnd.github.v3+json" \ "https://api.github.com/repos/${USER}/${REPO}/tags" | jq -r '.[].name' ) command_installed() ( set -ue cmd=${1} if ! command -v "${cmd}" 1>&2 >/dev/null; then echo "${cmd} not installed" 1>&2 exit 1 fi ) min_jpg() ( set -ue command_installed jpegtran file=$1 out_file=$(mktemp) jpegtran -optimize -perfect -outfile "$out_file" "$file" mv "$out_file" "$file" ) min_png() ( set -ue command_installed pngcrush out_file=$(mktemp) file=$1 pngcrush -rem alla -reduce -brute "$file" "$out_file" mv "$out_file" "$file" ) get_create_date() ( date -r "$1" +"%F" ) #shellcheck disable=SC2120 slugify() ( if [ "$#" -ne 0 ]; then #shellcheck disable=SC2119 echo "$@" | slugify else iconv --to-code ascii//TRANSLIT | sed -E 's/[^a-zA-Z0-9]+/-/g' | sed -E 's/^-+\|-+$//g' | tr '[:upper:]' '[:lower:]' fi )