summaryrefslogtreecommitdiff
path: root/etc/generate-doc.sh
blob: ccf379f219d448018c92586f4ba7d956e8be87cd (plain)
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
#!/bin/sh
# Copyright 2022 Huawei Cloud Computing Technology Co., Ltd.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

set -eu

readonly ROOT=$(readlink -f $(dirname $0)/..)

: ${OUTFILE:=README.md}

doc2md() {
  local MAIN="$1"
  local MODULE="$2"
  local RULE="$3"

  local RULE_DOC="$(just-mr --main "$MAIN" describe --rule --json "$MODULE" "$RULE")"
  local DOC="$(echo "$RULE_DOC" | jq -r '.doc')"
  local FIELD_DOC="$(echo "$RULE_DOC" | jq -r '.field_doc')"

  echo "## Rule \`[\"$MODULE\", \"$RULE\"]\`"
  echo
  echo "$DOC" \
    | jq -r '[.[] as $v | if ($v == "") then "\n\n" else $v end] | join(" ")' \
    | sed 's/\("[^"]*"\|\[[^]]*\]\|{[^}]*}\)/`\1`/g'
  echo
  echo "| Field | Description |"
  echo "| ----- | ----------- |"
  echo "$FIELD_DOC" \
    | jq -r 'keys_unsorted[] as $k | "| \"\($k)\" | \(.[$k] | join(" ")) |"' \
    | sed 's/\("[^"]*"\|\[[^]]*\]\|{[^}]*}\)/`\1`/g'
  echo
}

rm -f "$OUTFILE"
( doc2md rules CC library
  doc2md rules CC binary
  doc2md rules CC/test test
  doc2md rules shell/test script
  doc2md rules proto library
  doc2md rules data staged
  doc2md rules patch file
  doc2md rules CC/auto config
  doc2md rules CC/IDE headers
) >> "$OUTFILE"