63 lines
1.4 KiB
Bash
Executable File
63 lines
1.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# blob:summary=Regenerate docs/commands.md from each command's own metadata
|
|
# blob:hidden=true
|
|
|
|
set -e
|
|
|
|
bin_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
repo_dir="$(dirname "$bin_dir")"
|
|
output="$repo_dir/docs/commands.md"
|
|
|
|
metadata() {
|
|
sed -n "s/^# blob:$2=//p" "$1" | head -1
|
|
}
|
|
|
|
area_of() {
|
|
local name="${1#blob-}"
|
|
printf '%s\n' "${name%%-*}"
|
|
}
|
|
|
|
{
|
|
echo "# Commands"
|
|
echo
|
|
echo "Generated by \`blob-docs-commands\` from the \`# blob:summary=\` line in each"
|
|
echo "file. Do not edit by hand."
|
|
echo
|
|
echo "Commands marked hidden are plumbing other commands call, and are left out"
|
|
echo "of the \`blob\` listing."
|
|
echo
|
|
|
|
current_area=""
|
|
for file in "$bin_dir"/blob-*; do
|
|
[[ -f $file ]] || continue
|
|
name="$(basename "$file")"
|
|
area="$(area_of "$name")"
|
|
|
|
if [[ $area != "$current_area" ]]; then
|
|
echo
|
|
echo "## $area"
|
|
echo
|
|
echo "| Command | Does | Arguments |"
|
|
echo "| --- | --- | --- |"
|
|
current_area="$area"
|
|
fi
|
|
|
|
summary="$(metadata "$file" summary)"
|
|
args="$(metadata "$file" args)"
|
|
[[ -n $summary ]] || summary="-"
|
|
[[ -n $args ]] || args="-"
|
|
if grep -q '^# blob:hidden=true' "$file"; then
|
|
summary="$summary (hidden)"
|
|
fi
|
|
printf '| `%s` | %s | %s |\n' "$name" "$summary" "${args//|/\\|}"
|
|
done
|
|
|
|
echo
|
|
echo "## Totals"
|
|
echo
|
|
printf '%s commands.\n' "$(ls "$bin_dir"/blob-* | wc -l)"
|
|
} > "$output"
|
|
|
|
echo "Wrote $output"
|