Browse Source

new: [compose-core] add ``--raw|-r`` and ``-0`` raw output and NUL-separated fields support

Valentin Lab 3 weeks ago
parent
commit
48493f51d6
  1. 50
      bin/compose-core

50
bin/compose-core

@ -5312,6 +5312,12 @@ Options:
-f, --filter Filter services by a key=value pair,
separated by commas or can be repeated.
(default: --filter root=yes)
-r, --raw Raw data output (no colors nor alignement)
-0 Separate field with NUL char. Implies raw
data output.
"
while read-0 arg; do
case "$arg" in
@ -5319,6 +5325,19 @@ Options:
echo "$help"
exit 0
;;
--raw|-r|-0)
state_raw_output="$arg";
## check if any state_columns have alignements specs
for col in "${state_columns[@]}"; do
if [[ "$col" == [-+]* ]]; then
err "Cannot use $arg and provide columns with alignment specs."
exit 1
fi
done
if [[ "$arg" == "-0" ]]; then
state_raw_output_nul=1
fi
;;
--all|-a)
if [ "${#state_services[@]}" -gt 0 ]; then
err "Cannot use --all and provide services at the same time."
@ -5333,10 +5352,19 @@ Options:
--column|-c)
read-0 value
if [[ "$value" == *,* ]]; then
state_columns+=(${value//,/ })
state_columns_candidate=(${value//,/ })
else
state_columns+=("$value")
state_columns_candidate=("$value")
fi
if [[ -n "$state_raw_output" ]]; then
for col in "${state_columns_candidate[@]}"; do
if [[ "$col" == [-+]* ]]; then
err "Cannot use ${state_raw_output} and provide columns with alignment specs."
exit 1
fi
done
fi
state_columns+=("${state_columns_candidate[@]}")
;;
--filter|-f)
if [ "${#state_services[@]}" -gt 0 ]; then
@ -5704,6 +5732,7 @@ if [ "$action" == "status" ]; then
for col in "${state_columns_raw[@]}"; do
color=
value="${!col}"
if [ -z "$state_raw_output" ]; then
read -r -- value_trim <<<"${!col}"
case "${col//_/-}" in
root)
@ -5736,6 +5765,7 @@ if [ "$action" == "status" ]; then
;;
esac
color="${color^^}"
fi
if [ -n "$color" ]; then
values+=("${!color}$value${NORMAL}")
else
@ -5746,12 +5776,20 @@ if [ "$action" == "status" ]; then
for value in "${values[@]}"; do
if [ -n "$first" ]; then
first=
else
if [ -n "$state_raw_output_nul" ]; then
printf "\0"
else
printf " "
fi
fi
printf "%s" "$value"
done
if [ -n "$state_raw_output_nul" ]; then
printf "\0"
else
printf "\n"
fi
done < <(
set -o pipefail
filter_cols=()
@ -5812,7 +5850,13 @@ if [ "$action" == "status" ]; then
for col in "${state_columns_raw[@]}"; do
p0 "${values[$col]}"
done
done | col-0:normalize:size "${state_columns_align}"
done | {
if [ -z "$state_raw_output" ]; then
col-0:normalize:size "${state_columns_align}"
else
cat
fi
}
echo 0
)
if [ "$E" != 0 ]; then

Loading…
Cancel
Save