reorchestrating
This commit is contained in:
156
reporting/highbeam
Executable file
156
reporting/highbeam
Executable file
@@ -0,0 +1,156 @@
|
||||
#!/bin/bash
|
||||
|
||||
function usage {
|
||||
echo -e ' High Beam Highlighter
|
||||
- a trial to create a very generic modifyable
|
||||
syntax highlighter.
|
||||
|
||||
Example rules: ( ~/.highbeamrc )
|
||||
--------------------
|
||||
RULES=(
|
||||
"[0-9]" "$c" # Show numbers with Cyan color. NOTE: since the colors are represented with numbers, having this later in the rules will break coloring!
|
||||
"$USER[ ]\+$USER" "$BC$K" # Use quotes to have rules with spaces. This colors the "ls -la" usernames. background cyan, black text
|
||||
status "$g" # simple word matching, coloring green
|
||||
"^d[^ ]*" "$G" # color words at the beginning of line, starting with d. color bright green
|
||||
"q.\{0,3\}r" "$Y" # q*r with maximum 3 characters in between. color bright yellow
|
||||
)
|
||||
--------------------
|
||||
Rules can be also exressed as a space separated list variable:
|
||||
export HB_RULES='\''"[0-9]" "$C" "g" "$Y"'\''
|
||||
HB_RULES are appended to other rules
|
||||
|
||||
Bright colors: $R $G $B $Y $M $C $W $K
|
||||
Dark colors: $r $g $b $y $m $c $w $k
|
||||
Modify to bright version by prefixing with $H (e.g. $H$g)
|
||||
Background colors: $BR $BG $BB $BY $BC $BM $BW
|
||||
Underline: $U
|
||||
|
||||
Usage: highbeam [-c] [-h] [-f config]
|
||||
-c Be case sensitive
|
||||
-D Print current rules, not the input
|
||||
-h Help
|
||||
-f Define config file (default ~/.highbeamrc)
|
||||
-r Define rules with a string, replaces the other rules
|
||||
-r '\''"land[^[:space:]]\+" "$G" "sky" "$B"'\''
|
||||
|
||||
'
|
||||
|
||||
}
|
||||
|
||||
E='\x1b['
|
||||
H="${E}1m"
|
||||
Z="${E}0m"
|
||||
|
||||
# list of text colors:
|
||||
K="${E}1;30m"
|
||||
R="${E}1;31m"
|
||||
G="${E}1;32m"
|
||||
B="${E}1;34m"
|
||||
Y="${E}1;33m"
|
||||
M="${E}1;35m"
|
||||
C="${E}1;36m"
|
||||
W="${E}1;37m"
|
||||
k="${E}30m"
|
||||
r="${E}31m"
|
||||
g="${E}32m"
|
||||
b="${E}34m"
|
||||
y="${E}33m"
|
||||
m="${E}35m"
|
||||
c="${E}36m"
|
||||
w="${E}37m"
|
||||
|
||||
# list of BG colors:
|
||||
BR="${E}41m"
|
||||
BG="${E}42m"
|
||||
BB="${E}44m"
|
||||
BY="${E}43m"
|
||||
BM="${E}45m"
|
||||
BC="${E}46m"
|
||||
BW="${E}47m"
|
||||
|
||||
# lines
|
||||
U="${E}4m"
|
||||
|
||||
CONF_FILE=~/.highbeamrc
|
||||
CONF_LINE=""
|
||||
FLAGS="ig"
|
||||
PRINT=0
|
||||
while getopts chf:r:D opt
|
||||
do case "$opt" in
|
||||
c)
|
||||
FLAGS="g"
|
||||
;;
|
||||
h)
|
||||
usage
|
||||
exit
|
||||
;;
|
||||
f)
|
||||
CONF_FILE=$OPTARG
|
||||
;;
|
||||
r)
|
||||
CONF_LINE=( $( eval echo $OPTARG ) )
|
||||
;;
|
||||
D)
|
||||
PRINT=1
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
[[ -z "$CONF_LINE" ]] && {
|
||||
# user rules:
|
||||
[[ -e "${CONF_FILE}" ]] && {
|
||||
. "${CONF_FILE}" || {
|
||||
echo You may have wrong format in "${CONF_FILE}" >&2
|
||||
usage >&2
|
||||
exit 1
|
||||
}
|
||||
}
|
||||
for (( rIndex=0; rIndex<${#RULES[@]}; rIndex++ ));
|
||||
do REGEX="$REGEX -e 's/\(${RULES[$rIndex]}\)/${RULES[$(( $rIndex + 1 ))]}\1${Z}/${FLAGS}'"
|
||||
rIndex=$(( $rIndex + 1 ))
|
||||
done
|
||||
} || {
|
||||
# string fed rules
|
||||
for (( rIndex=0; rIndex<${#CONF_LINE[@]}; rIndex++ ));
|
||||
do REGEX="$REGEX -e 's/\(${CONF_LINE[$rIndex]}\)/${CONF_LINE[$(( $rIndex + 1 ))]}\1${Z}/${FLAGS}'"
|
||||
rIndex=$(( $rIndex + 1 ))
|
||||
done
|
||||
}
|
||||
# env variable fed rules
|
||||
[[ -z "$HB_RULES" ]] || {
|
||||
CONF_ENV=( $( eval echo "$HB_RULES" ) )
|
||||
for (( rIndex=0; rIndex<${#CONF_ENV[@]}; rIndex++ ));
|
||||
do REGEX="$REGEX -e 's/\(${CONF_ENV[$rIndex]}\)/${CONF_ENV[$(( $rIndex + 1 ))]}\1${Z}/${FLAGS}'"
|
||||
rIndex=$(( $rIndex + 1 ))
|
||||
done
|
||||
}
|
||||
[[ $PRINT -eq 1 ]] && {
|
||||
echo "From $CONF_FILE:"
|
||||
for (( rIndex=0; rIndex<${#RULES[@]}; rIndex++ ));
|
||||
do printf "%s\\t%s" "${RULES[$rIndex]}" "${RULES[$(( $rIndex + 1 ))]}"
|
||||
rIndex=$(( $rIndex + 1 ))
|
||||
done
|
||||
echo "From argument switches:"
|
||||
for (( rIndex=0; rIndex<${#CONF_LINE[@]}; rIndex++ ));
|
||||
do printf "%s\\t%s" "${CONF_LINE[$rIndex]}" "${CONF_LINE[$(( $rIndex + 1 ))]}"
|
||||
rIndex=$(( $rIndex + 1 ))
|
||||
done
|
||||
echo "From HB_RULES environment:"
|
||||
for (( rIndex=0; rIndex<${#CONF_ENV[@]}; rIndex++ ));
|
||||
do printf "%s\\t%s" "${CONF_ENV[$rIndex]}" "${CONF_ENV[$(( $rIndex + 1 ))]}"
|
||||
rIndex=$(( $rIndex + 1 ))
|
||||
done
|
||||
#~ echo ${CONF_ENV[@]}
|
||||
#~ echo $HB_RULES
|
||||
#~ echo $REGEX
|
||||
exit
|
||||
}
|
||||
|
||||
[[ -z "$REGEX" ]] && {
|
||||
cat -
|
||||
} || {
|
||||
eval sed $REGEX || echo Maybe errors in your rules: "$REGEX" >&2
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user