Skip to content

Commit 8a9f0b0

Browse files
authored
add script to pretty print server log (#146)
1 parent ff1f16e commit 8a9f0b0

File tree

1 file changed

+78
-0
lines changed

1 file changed

+78
-0
lines changed

script/prettyprint-log

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
#!/bin/bash
2+
3+
# Script to pretty print the output of the github-mcp-server
4+
# log.
5+
#
6+
# It uses colored output when running on a terminal.
7+
8+
# show script help
9+
show_help() {
10+
cat <<EOF
11+
Usage: $(basename "$0") [file]
12+
13+
If [file] is provided, input is read from that file.
14+
If no argument is given, input is read from stdin.
15+
16+
Options:
17+
-h, --help Show this help message and exit
18+
EOF
19+
}
20+
21+
# choose color for stdin or stdout if we are printing to
22+
# an actual terminal
23+
color(){
24+
io="$1"
25+
if [[ "$io" == "stdin" ]]; then
26+
color="\033[0;32m" # green
27+
else
28+
color="\033[0;36m" # cyan
29+
fi
30+
if [ ! $is_terminal = "1" ]; then
31+
color=""
32+
fi
33+
echo -e "${color}[$io]"
34+
}
35+
36+
# reset code if we are printing to an actual terminal
37+
reset(){
38+
if [ ! $is_terminal = "1" ]; then
39+
return
40+
fi
41+
echo -e "\033[0m"
42+
}
43+
44+
45+
# Handle -h or --help
46+
if [[ "$1" == "-h" || "$1" == "--help" ]]; then
47+
show_help
48+
exit 0
49+
fi
50+
51+
# Determine input source
52+
if [[ -n "$1" ]]; then
53+
if [[ ! -r "$1" ]]; then
54+
echo "Error: File '$1' not found or not readable." >&2
55+
exit 1
56+
fi
57+
input="$1"
58+
else
59+
input="/dev/stdin"
60+
fi
61+
62+
# check if we are in a terminal for showing colors
63+
if test -t 1; then
64+
is_terminal="1"
65+
else
66+
is_terminal="0"
67+
fi
68+
69+
# Processs each log line, print whether is stdin or stdout, using different
70+
# colors if we output to a terminal, and pretty print json data using jq
71+
sed -nE 's/^.*\[(stdin|stdout)\]:.* ([0-9]+) bytes: (.*)\\n"$/\1 \2 \3/p' $input |
72+
while read -r io bytes json; do
73+
# Unescape the JSON string safely
74+
unescaped=$(echo "$json" | awk '{ print "echo -e \"" $0 "\" | jq ." }' | bash)
75+
echo "$(color $io)($bytes bytes):$(reset)"
76+
echo "$unescaped" | jq .
77+
echo
78+
done

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy