-
Notifications
You must be signed in to change notification settings - Fork 64
/
Copy pathparse.sh
executable file
·92 lines (87 loc) · 2 KB
/
parse.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/usr/bin/env bash
COMMAND="${1?First argument is command to run}"
WEIGHT="${2?Second argument is weight}"
TEMPDIR=$(mktemp -d)
trap 'rm -rf "$TEMPDIR"' EXIT
echo '---'
echo "title: oras ${COMMAND}"
echo "sidebar_position: ${WEIGHT}"
echo 'warning: Do NOT modify this generated file'
echo '---'
echo
echo "# oras ${COMMAND}"
echo
#
# Run help command to temp file to avoid IFS issue
#
TEMPFILE="${TEMPDIR}/help"
EXAMPLES_FILE="${TEMPDIR}/examples"
trap 'rm -f "$TEMPFILE" "$EXAMPLES_FILE"' EXIT
oras help ${COMMAND} >${TEMPFILE}
IFS=''
STATE=Introduction
>${EXAMPLES_FILE}
cat ${TEMPFILE} | while read -r LINE
do
[[ "${LINE}" == "" ]] && continue
if [[ "${LINE}" == Aliases* ]]
then
STATE=Alias
continue
fi
if [[ "${LINE}" == Example* ]]
then
if [ "${STATE}" == "Examples" ]
then
echo '```' >>${EXAMPLES_FILE}
fi
STATE=Examples
echo >>${EXAMPLES_FILE}
echo "${LINE}" | sed -e 's/Example - //' >>${EXAMPLES_FILE}
echo >>${EXAMPLES_FILE}
echo '```bash' >>${EXAMPLES_FILE}
continue
fi
if [[ "${LINE}" == Usage* ]]
then
STATE=Usage
continue
fi
if [[ "${LINE}" == Flags* ]]
then
if [ -s $EXAMPLES_FILE ]
then
echo '```' >>${EXAMPLES_FILE}
echo >>${EXAMPLES_FILE}
echo '## Examples'
cat $EXAMPLES_FILE
>$EXAMPLES_FILE
fi
echo '## Options'
echo
echo '```'
STATE=Flags
continue
fi
case "${STATE}" in
Introduction)
echo "${LINE}"
;;
Alias)
;;
Examples)
echo "${LINE}" | sed -e 's/^[[:space:]]*//' >>${EXAMPLES_FILE}
;;
Usage)
echo
echo '```bash'
echo "${LINE}" | sed -e 's/^[[:space:]]*//'
echo '```'
echo
;;
Flags)
echo "${LINE}"
;;
esac
done
echo '```'