xref: /aosp_15_r20/external/coreboot/util/util_readme/util_readme.sh (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1#!/usr/bin/env bash
2
3# Creates `./util/README.md` and `./Documentation/Util.md` of description files
4# in `./util` subdirectories
5#
6# Execute from root of project.  Example:
7# `util/util_readme/util_readme.sh`
8
9UTIL_README_DIR="$(cd "$(dirname "$0")" || exit; pwd -P)"
10UTIL_DIR=$(dirname "$UTIL_README_DIR")
11COREBOOT_ROOT_DIR=$(dirname "$UTIL_DIR")
12DOCMENTATION_DIR="$COREBOOT_ROOT_DIR/Documentation"
13SUMMARY='
14## List of utils
15
16_Scripts and programs found in the coreboot `./util` directory_
17'
18APPEND_TO_UTIL_MD="${UTIL_README_DIR}/post_util.md"
19
20DESCRIPTION_FILES=$(find "$UTIL_DIR" -name "description.md" | sort)
21
22echo -n "" > "$UTIL_DIR/README.md"
23{
24  echo
25  echo "[//]: # ( DO NOT EDIT - AUTOGENERATED FILE )";
26  echo
27  echo "[//]: # ( RUN 'util/util_readme/util_readme.sh' to regenerate )";
28  echo;
29  echo "# Utilities";
30  echo "${SUMMARY}"
31} > "${DOCMENTATION_DIR}/util.md"
32
33for DESC_FILE in $DESCRIPTION_FILES; do
34  UTIL_NAME=$(echo "$DESC_FILE" | rev | cut -d '/' -f2 | rev)
35  DESC=$(cat "$DESC_FILE")
36
37  if [[ $DESC == "__"${UTIL_NAME}* || $DESC == "__["${UTIL_NAME}* ]]; then
38    DESC="* $DESC"
39  else
40    DESC="* __${UTIL_NAME}__ - $DESC"
41  fi
42
43  # format description to under 72 characters per line and only
44  # breaking on whitespace
45  DESC=$(echo "$DESC" \
46      | tr '\r\n' ' '  \
47      | sed 's/  [*]\+/\n\t\*/g' \
48      | sed 's/  \+/ /g' \
49      | fold -s -w72 \
50      | sed 's/\s*$//')
51
52  echo "$DESC" >> "$UTIL_DIR/README.md"
53  echo "$DESC" >> "$DOCMENTATION_DIR/util.md"
54done
55
56cat "${APPEND_TO_UTIL_MD}" >> "${DOCMENTATION_DIR}/util.md"
57