mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
git-serve: Format usage text automatically
Remove the formatting of the usage text and add code to columnize it automatically instead. Also, add more strict tests for the usage output. These new tests ensure that the usage header is printed, commands are indented properly and no overly long lines are produced. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org>
This commit is contained in:
parent
ab228fd3c3
commit
e045069421
2 changed files with 27 additions and 9 deletions
|
@ -117,6 +117,14 @@ def warn(msg):
|
||||||
sys.stderr.write("warning: {:s}\n".format(msg))
|
sys.stderr.write("warning: {:s}\n".format(msg))
|
||||||
|
|
||||||
|
|
||||||
|
def usage(cmds):
|
||||||
|
sys.stderr.write("Commands:\n")
|
||||||
|
colwidth = max([len(cmd) for cmd in cmds.keys()]) + 4
|
||||||
|
for key in sorted(cmds):
|
||||||
|
sys.stderr.write(" " + key.ljust(colwidth) + cmds[key] + "\n")
|
||||||
|
exit(0)
|
||||||
|
|
||||||
|
|
||||||
user = os.environ.get('AUR_USER')
|
user = os.environ.get('AUR_USER')
|
||||||
privileged = (os.environ.get('AUR_PRIVILEGED', '0') == '1')
|
privileged = (os.environ.get('AUR_PRIVILEGED', '0') == '1')
|
||||||
ssh_cmd = os.environ.get('SSH_ORIGINAL_COMMAND')
|
ssh_cmd = os.environ.get('SSH_ORIGINAL_COMMAND')
|
||||||
|
@ -187,13 +195,15 @@ elif action == 'restore':
|
||||||
os.environ["AUR_PKGBASE"] = pkgbase
|
os.environ["AUR_PKGBASE"] = pkgbase
|
||||||
os.execl(git_update_cmd, git_update_cmd, 'restore')
|
os.execl(git_update_cmd, git_update_cmd, 'restore')
|
||||||
elif action == 'help':
|
elif action == 'help':
|
||||||
die("Commands:\n" +
|
cmds = {
|
||||||
" help Show this help message and exit.\n" +
|
"help": "Show this help message and exit.",
|
||||||
" list-repos List all your repositories.\n" +
|
"list-repos": "List all your repositories.",
|
||||||
" restore <name> Restore a deleted package base.\n" +
|
"restore <name>": "Restore a deleted package base.",
|
||||||
" set-keywords <name> [...] Change package base keywords.\n" +
|
"set-keywords <name> [...]": "Change package base keywords.",
|
||||||
" setup-repo <name> Create a repository (deprecated).\n" +
|
"setup-repo <name>": "Create a repository (deprecated).",
|
||||||
" git-receive-pack Internal command used with Git.\n" +
|
"git-receive-pack": "Internal command used with Git.",
|
||||||
" git-upload-pack Internal command used with Git.")
|
"git-upload-pack": "Internal command used with Git.",
|
||||||
|
}
|
||||||
|
usage(cmds)
|
||||||
else:
|
else:
|
||||||
die_with_help("invalid command: {:s}".format(action))
|
die_with_help("invalid command: {:s}".format(action))
|
||||||
|
|
|
@ -9,7 +9,15 @@ test_expect_success 'Test interactive shell.' '
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Test help.' '
|
test_expect_success 'Test help.' '
|
||||||
SSH_ORIGINAL_COMMAND=help "$GIT_SERVE" 2>&1 | grep -q "^Commands:$"
|
SSH_ORIGINAL_COMMAND=help "$GIT_SERVE" 2>actual &&
|
||||||
|
save_IFS=$IFS
|
||||||
|
IFS=
|
||||||
|
while read -r line; do
|
||||||
|
echo $line | grep -q "^Commands:$" && continue
|
||||||
|
echo $line | grep -q "^ [a-z]" || return 1
|
||||||
|
[ ${#line} -le 80 ] || return 1
|
||||||
|
done <actual
|
||||||
|
IFS=$save_IFS
|
||||||
'
|
'
|
||||||
|
|
||||||
test_expect_success 'Test setup-repo and list-repos.' '
|
test_expect_success 'Test setup-repo and list-repos.' '
|
||||||
|
|
Loading…
Add table
Reference in a new issue