11#! /bin/sh
22
3+ FORMAT=" ${FORMAT:- text} "
4+
35paste_file () {
4- echo -ne " \n### FILE $1 "
5- [ -e " $1 " ] && (
6- echo -e " \n" &&
7- cat " $1 " | grep -v key | grep -v pass
8- ) || echo -e " NOT FOUND\n"
6+ if [ " $FORMAT " = " md" ]; then
7+ echo -e " \n### FILE $1 \n"
8+ [ -e " $1 " ] && (
9+ echo ' ```'
10+ cat " $1 " | grep -v key | grep -v pass
11+ echo ' ```'
12+ ) || echo " _NOT FOUND_"
13+ else
14+ echo -ne " \n### FILE $1 "
15+ [ -e " $1 " ] && (
16+ echo -e " \n" &&
17+ cat " $1 " | grep -v key | grep -v pass
18+ ) || echo -e " NOT FOUND\n"
19+ fi
920}
1021
1122paste_cmd () {
12- echo -e " \n### CMD $@ \n"
13- eval $@ 2>&1 | grep -v key | grep -v pass
23+ if [ " $FORMAT " = " md" ]; then
24+ echo -e " \n### CMD $@ \n"
25+ echo ' ```'
26+ eval $@ 2>&1 | grep -v key | grep -v pass
27+ echo ' ```'
28+ else
29+ echo -e " \n### CMD $@ \n"
30+ eval $@ 2>&1 | grep -v key | grep -v pass
31+ fi
1432}
1533
1634header () {
17- paste_cmd echo hostname $HOSTNAME
18- paste_cmd date \' +%Y-%m-%d %H:%M:%S\'
19- paste_cmd uptime
35+ if [ " $FORMAT " = " md" ]; then
36+ echo " # LibreMesh Report"
37+ echo " "
38+ echo " **Hostname:** $( cat /proc/sys/kernel/hostname) "
39+ echo " **Date:** $( date ' +%Y-%m-%d %H:%M:%S' ) "
40+ echo " **Uptime:** $( uptime) "
41+ echo " "
42+ echo " ## Table of Contents"
43+ echo " - [Device Info](#device-info)"
44+ echo " - [Configuration](#configuration)"
45+ echo " - [Status](#status)"
46+ echo " - [Shared State](#shared-state)"
47+ echo " "
48+ echo " ---"
49+ else
50+ paste_cmd echo hostname $HOSTNAME
51+ paste_cmd date \' +%Y-%m-%d %H:%M:%S\'
52+ paste_cmd uptime
53+ fi
2054}
2155
2256generate_deviceinfo () {
57+ [ " $FORMAT " = " md" ] && echo -e " \n## Device Info\n"
2358 paste_file /etc/board.json
2459 paste_file /proc/cpuinfo
2560 paste_file /etc/lime_release
@@ -28,6 +63,7 @@ generate_deviceinfo() {
2863}
2964
3065generate_config () {
66+ [ " $FORMAT " = " md" ] && echo -e " \n## Configuration\n"
3167 paste_file /etc/config/lime-node
3268 paste_file /etc/config/lime-community
3369 paste_file /etc/config/lime-defaults
@@ -37,6 +73,7 @@ generate_config() {
3773}
3874
3975generate_status () {
76+ [ " $FORMAT " = " md" ] && echo -e " \n## Status\n"
4077 paste_cmd dmesg
4178 paste_cmd batctl if
4279 paste_cmd batctl o
@@ -72,12 +109,21 @@ generate_status() {
72109}
73110
74111generate_shared_state () {
112+ [ " $FORMAT " = " md" ] && echo -e " \n## Shared State\n"
113+
75114 echo -e " \n### shared-state-async registered datatypes\n"
76115 for section in $( uci show shared-state 2> /dev/null | grep ' =dataType' | cut -d' .' -f2 | cut -d' =' -f1) ; do
77116 datatype=$( uci -q get shared-state.$section .name)
78117 if [ -n " $datatype " ]; then
79- echo -e " \n### CMD shared-state-async dump $datatype \n"
80- shared-state-async dump " $datatype " 2>&1
118+ if [ " $FORMAT " = " md" ]; then
119+ echo -e " \n#### $datatype \n"
120+ echo ' ```json'
121+ shared-state-async dump " $datatype " 2>&1
122+ echo ' ```'
123+ else
124+ echo -e " \n### CMD shared-state-async dump $datatype \n"
125+ shared-state-async dump " $datatype " 2>&1
126+ fi
81127 fi
82128 done
83129
@@ -112,10 +158,12 @@ generate_all() {
112158 echo " -d print only device info" && \
113159 echo " -c print only main configuration" && \
114160 echo " -s print only current status" && \
115- echo " -ss print only shared-state-async data (publish all and dump all datatypes)"
161+ echo " -ss print only shared-state-async data (publish all and dump all datatypes)" && \
162+ echo " -m output in markdown format with table of contents"
116163}
117164[ " $1 " = " " ] && header && generate_all
118165[ " $1 " = " -d" ] && header && generate_deviceinfo
119166[ " $1 " = " -c" ] && header && generate_config
120167[ " $1 " = " -s" ] && header && generate_status
121168[ " $1 " = " -ss" ] && header && generate_shared_state
169+ [ " $1 " = " -m" ] && FORMAT=md && header && generate_all
0 commit comments