yage
71ba353fab
- added experimental support for --output json - added list-groups and --config to imporve utility outside of scwrypts runtime
66 lines
1.4 KiB
Bash
66 lines
1.4 KiB
Bash
PRINT() {
|
|
local MESSAGE
|
|
local LAST_LINE_END='\n'
|
|
local STDERR=1
|
|
local STDOUT=0
|
|
|
|
local LTRIM=1
|
|
local FORMAT=$SCWRYPTS_OUTPUT_FORMAT
|
|
local _S
|
|
while [[ $# -gt 0 ]]
|
|
do
|
|
_S=1
|
|
case $1 in
|
|
-n | --no-trim-tabs ) LTRIM=0 ;;
|
|
-x | --no-line-end ) LAST_LINE_END='' ;;
|
|
-o | --use-stdout ) STDOUT=1; STDERR=0 ;;
|
|
|
|
-f | --format ) ((_S+=1)); FORMAT=$2 ;;
|
|
|
|
* ) MESSAGE+="$(echo $1) " ;;
|
|
esac
|
|
shift $_S
|
|
done
|
|
|
|
[ $FORMAT ] || FORMAT=pretty
|
|
local STYLED_MESSAGE
|
|
case $FORMAT in
|
|
pretty )
|
|
STYLED_MESSAGE="$(echo "$MESSAGE" | sed 's/%/%%/g')"
|
|
STYLED_MESSAGE="$({
|
|
printf "${COLOR}"
|
|
while IFS='' read line
|
|
do
|
|
[[ $PREFIX =~ ^[[:space:]]\+$ ]] && printf '\n'
|
|
|
|
printf "${PREFIX} : $(echo "$line" | sed 's/^ \+//; s/ \+$//')"
|
|
|
|
PREFIX=$(echo $PREFIX | sed 's/./ /g')
|
|
done <<< $MESSAGE
|
|
})"
|
|
STYLED_MESSAGE="${COLOR}$(echo "$STYLED_MESSAGE" | sed 's/%/%%/g')${__COLOR_RESET}${LAST_LINE_END}"
|
|
;;
|
|
json )
|
|
STYLED_MESSAGE="$(
|
|
echo '{}' | jq -c ".
|
|
| .timestamp = \"$(date +%s)\"
|
|
| .runtime = \"$SCWRYPTS_RUNTIME_ID\"
|
|
| .status = \"$(echo "$PREFIX" | sed 's/ .*//')\"
|
|
| .message = $(echo $MESSAGE | sed 's/^\t\+//' | jq -Rs)
|
|
" | sed 's/\\/\\\\/g'
|
|
)\n"
|
|
;;
|
|
* )
|
|
echo "ERROR : unsupported format '$FORMAT'" >&2
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
|
|
|
|
[[ $STDERR -eq 1 ]] && printf -- "$STYLED_MESSAGE" >&2
|
|
[[ $STDOUT -eq 1 ]] && printf -- "$STYLED_MESSAGE"
|
|
|
|
return 0
|
|
}
|