| #!/bin/sh |
| |
| set -e |
| |
| format_one () { |
| source_dir="$1" |
| command="$2" |
| attributes="$3" |
| |
| path="$source_dir/Documentation/$command.adoc" |
| if ! test -f "$path" |
| then |
| echo >&2 "No such file $path" |
| exit 1 |
| fi |
| |
| state=0 |
| while read line |
| do |
| case "$state" in |
| 0) |
| case "$line" in |
| git*\(*\)|scalar*\(*\)) |
| mansection="${line##*\(}" |
| mansection="${mansection%\)}" |
| ;; |
| NAME) |
| state=1;; |
| esac |
| ;; |
| 1) |
| if test "$line" = "----" |
| then |
| state=2 |
| fi |
| ;; |
| 2) |
| description="$line" |
| break |
| ;; |
| esac |
| done <"$path" |
| |
| if test -z "$mansection" |
| then |
| echo "No man section found in $path" >&2 |
| exit 1 |
| fi |
| |
| if test -z "$description" |
| then |
| echo >&2 "No description found in $path" |
| exit 1 |
| fi |
| |
| case "$description" in |
| "$command - "*) |
| text="${description#$command - }" |
| |
| printf "linkgit:%s[%s]::\n\t" "$command" "$mansection" |
| case "$attributes" in |
| *" deprecated "*) |
| printf "(deprecated) " |
| ;; |
| esac |
| printf "$text.\n\n" |
| ;; |
| *) |
| echo >&2 "Description does not match $command: $description" |
| exit 1 |
| ;; |
| esac |
| } |
| |
| source_dir="$1" |
| build_dir="$2" |
| shift 2 |
| |
| for out |
| do |
| category="${out#cmds-}" |
| category="${category%.adoc}" |
| path="$build_dir/$out" |
| |
| while read command command_category attributes |
| do |
| case "$command" in |
| "#"*) |
| continue;; |
| esac |
| |
| case "$command_category" in |
| "$category") |
| format_one "$source_dir" "$command" " $attributes ";; |
| esac |
| done <"$source_dir/command-list.txt" >"$build_dir/$out+" |
| |
| if cmp "$build_dir/$out+" "$build_dir/$out" >/dev/null 2>&1 |
| then |
| rm "$build_dir/$out+" |
| else |
| mv "$build_dir/$out+" "$build_dir/$out" |
| fi |
| done |