提交 fc09731a 编写于 作者: M Mislav Marohnić

Add `script/man` to generate individual man pages

上级 8dcd2a46
......@@ -51,7 +51,7 @@ func runHelp(helpCmd *Command, args *Args) {
if c := lookupCmd(command); c != nil {
manProgram, err := utils.CommandPath("man")
if err == nil {
if err == nil && !args.HasFlags("--plain-text") {
man := cmd.New(manProgram)
manPage := "hub-" + c.Name()
manFile, err := localManPage(manPage, args)
......
......@@ -24,7 +24,7 @@ fi
{ ruby --version
bundle install --path vendor/bundle
bundle binstub rake cucumber
bundle binstub rake cucumber ronn
} || {
echo "You need Ruby 1.9 or higher and Bundler to run hub tests" >&2
STATUS=1
......
#!/bin/bash
# Usage: script/man [<COMMAND>]
#
# Generate individual man pages from inline help text of hub commands.
set -e
extensions="
am
apply
checkout
cherry-pick
clone
fetch
init
merge
push
remote
submodule
"
commands="
alias
browse
ci-status
compare
create
fork
pull-request
"
AWK="$(type -p gawk awk | head -1)"
hub_help() {
bin/hub help "hub-$1" --plain-text | sed $'s/\t/ /g'
}
para() {
"$AWK" -v wants=$2 "
BEGIN { para=1 }
/^\$/ { para++ }
{ if (para $1 wants) print \$0 }
"
}
trim() {
sed 's/^ \{1,\}//; s/ \{1,\}$//'
}
format_shortdesc() {
tr $'\n' " " | trim
}
format_synopsis() {
local cmd subcmd rest
sed 's/^Usage://' | while read -r cmd subcmd rest; do
printf '`%s %s` %s \n' "$cmd" "$subcmd" "$rest"
done
}
format_rest() {
"$AWK" '
/^#/ {
title=toupper(substr($0, length($1) + 2, length($0)))
sub(/:$/, "", title)
options=title == "OPTIONS"
print $1, title
next
}
options && /^ [^ ]/ {
printf " * %s:\n", substr($0, 3, length($0))
next
}
{ print $0 }
'
}
generate() {
local cmd="$1"
local ronn="man/hub-${cmd}.1.ronn"
local text="$(hub_help "$cmd")"
[ -n "$text" ] || continue
{ echo "hub-${cmd}(1) -- $(para == 2 <<<"$text" | format_shortdesc)"
echo "==="
echo
echo "## SYNOPSIS"
echo
para == 1 <<<"$text" | format_synopsis
echo
para '>=' 3 <<<"$text" | format_rest
} > "$ronn"
bin/ronn --roff --organization=GITHUB --manual="Hub Manual" "$ronn" >/dev/null
}
script/build
case "$1" in
* )
for cmd in ${1:-$commands $extensions}; do
generate "$cmd"
done
;;
esac
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册