mirror of
https://github.com/ohmybash/oh-my-bash.git
synced 2024-09-21 02:17:11 +00:00
lib/util: Add "_omb_util_alias_delayed"
This commit is contained in:
parent
0e9f0e7e7c
commit
681daf84e7
@ -21,45 +21,46 @@
|
||||
# 1. MAKE TERMINAL BETTER
|
||||
# -----------------------------
|
||||
|
||||
# Determines the use of the option `-v' on the first call
|
||||
# Ref. https://github.com/ohmybash/oh-my-bash/issues/351
|
||||
function _omb_alias_general_cp_init {
|
||||
# Preferred 'cp' implementation. Determines the use of the option `-v' on the
|
||||
# first call Ref. https://github.com/ohmybash/oh-my-bash/issues/351
|
||||
function _omb_util_alias_select_cp {
|
||||
if (tmp=$(_omb_util_mktemp); trap 'rm -f "$tmp"{,.2}' EXIT; command cp -v "$tmp" "$tmp.2" &>/dev/null); then
|
||||
alias cp='cp -iv' && function _omb_alias_general_cp_init { command cp -iv "$@"; }
|
||||
_omb_command='cp -iv'
|
||||
else
|
||||
alias cp='cp -i' && function _omb_alias_general_cp_init { command cp -i "$@"; }
|
||||
fi &&
|
||||
_omb_alias_general_cp_init "$@"
|
||||
_omb_command='cp -i'
|
||||
fi
|
||||
}
|
||||
function _omb_alias_general_mv_init {
|
||||
if (tmp=$(_omb_util_mktemp); trap 'rm -f "$tmp.2"' EXIT; command mv -v "$tmp" "$tmp.2" &>/dev/null); then
|
||||
alias mv='mv -iv' && function _omb_alias_general_mv_init { command mv -iv "$@"; }
|
||||
else
|
||||
alias mv='mv -i' && function _omb_alias_general_mv_init { command mv -i "$@"; }
|
||||
fi &&
|
||||
_omb_alias_general_mv_init "$@"
|
||||
}
|
||||
function _omb_alias_general_mkdir_init {
|
||||
if command mkdir -pv . &>/dev/null; then
|
||||
alias mkdir='mkdir -pv' && function _omb_alias_general_mkdir_init { command mkdir -pv "$@"; }
|
||||
else
|
||||
alias mkdir='mkdir -p' && function _omb_alias_general_mkdir_init { command mkdir -p "$@"; }
|
||||
fi &&
|
||||
_omb_alias_general_mkdir_init "$@"
|
||||
}
|
||||
alias cp='_omb_alias_general_cp_init' # Preferred 'cp' implementation
|
||||
alias mv='_omb_alias_general_mv_init' # Preferred 'mv' implementation
|
||||
alias mkdir='_omb_alias_general_mkdir_init' # Preferred 'mkdir' implementation
|
||||
_omb_util_alias_delayed cp force
|
||||
|
||||
function _omb_alias_general_nano_init {
|
||||
if LANG=C command nano --help 2>/dev/null | grep -q '^[[:space:]]*[-]W'; then
|
||||
alias nano='nano -W' && function _omb_alias_general_nano_init { command nano -W "$@"; }
|
||||
# Preferred 'mv' implementation
|
||||
function _omb_util_alias_select_mv {
|
||||
if (tmp=$(_omb_util_mktemp); trap 'rm -f "$tmp.2"' EXIT; command mv -v "$tmp" "$tmp.2" &>/dev/null); then
|
||||
_omb_command='mv -iv'
|
||||
else
|
||||
unalias nano 2>/dev/null; function _omb_alias_general_nano_init { command nano "$@"; }
|
||||
fi &&
|
||||
_omb_alias_general_nano_init "$@"
|
||||
_omb_command='mv -i'
|
||||
fi
|
||||
}
|
||||
alias nano='_omb_alias_general_nano_init' # Preferred 'nano' implementation
|
||||
_omb_util_alias_delayed mv force
|
||||
|
||||
# Preferred 'mkdir' implementation
|
||||
function _omb_util_alias_select_mkdir {
|
||||
if command mkdir -pv . &>/dev/null; then
|
||||
_omb_command='mkdir -pv'
|
||||
else
|
||||
_omb_command='mkdir -p'
|
||||
fi
|
||||
}
|
||||
_omb_util_alias_delayed mkdir force
|
||||
|
||||
# Preferred 'nano' implementation
|
||||
function _omb_util_alias_select_nano {
|
||||
if LANG=C command nano --help 2>/dev/null | grep -q '^[[:space:]]*[-]W'; then
|
||||
_omb_command='nano -W'
|
||||
else
|
||||
_omb_command='nano'
|
||||
fi
|
||||
}
|
||||
_omb_util_alias_delayed nano force
|
||||
|
||||
alias ll='ls -lAFh' # Preferred 'ls' implementation
|
||||
alias less='less -FSRXc' # Preferred 'less' implementation
|
||||
|
24
lib/utils.sh
24
lib/utils.sh
@ -402,6 +402,30 @@ function _omb_util_alias {
|
||||
alias -- "$1"
|
||||
}
|
||||
|
||||
function _omb_util_alias_delayed__init {
|
||||
local _omb_name=$1 _omb_init=${FUNCNAME[1]}
|
||||
local _omb_command=$_omb_name
|
||||
"_omb_util_alias_select_$_omb_name"
|
||||
|
||||
if [[ ! $_omb_command || $_omb_command == "$_omb_name" ]]; then
|
||||
unalias "$_omb_name"
|
||||
else
|
||||
alias "$_omb_name=$_omb_command"
|
||||
fi || return 1
|
||||
|
||||
eval -- "function $_omb_init { command ${_omb_command:-$_omb_name} \"\$@\"; }" && "$_omb_init" "${@:2}"
|
||||
}
|
||||
function _omb_util_alias_delayed {
|
||||
local name=$1 opts=${2-}
|
||||
local func=_omb_util_alias_init_$name
|
||||
eval -- "function $func { _omb_util_alias_delayed__init $name \"\$@\"; }"
|
||||
if [[ :$opts: == *:force:* ]]; then
|
||||
alias "$name=$func"
|
||||
else
|
||||
_omb_util_alias "$name=$func"
|
||||
fi
|
||||
}
|
||||
|
||||
function _omb_util_mktemp {
|
||||
local template=tmp.oh-my-bash.XXXXXXXXXX
|
||||
if _omb_util_command_exists mktemp; then
|
||||
|
Loading…
Reference in New Issue
Block a user