D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
self
/
root
/
opt
/
plesk
/
phpenv
/
libexec
/
Filename :
phpenv-help
back
Copy
#!/usr/bin/env bash # # Summary: Display help for a command # # Usage: phpenv help [--usage] COMMAND # # Parses and displays help contents from a command's source file. # # A command is considered documented if it starts with a comment block # that has a `Summary:' or `Usage:' section. Usage instructions can # span multiple lines as long as subsequent lines are indented. # The remainder of the comment block is displayed as extended # documentation. set -e [ -n "$PHPENV_DEBUG" ] && set -x command_path() { local command="$1" command -v phpenv-"$command" || command -v phpenv-sh-"$command" || true } extract_initial_comment_block() { sed -ne " /^#/ !{ q } s/^#$/# / /^# / { s/^# // p } " } collect_documentation() { awk ' /^Summary:/ { summary = substr($0, 10) next } /^Usage:/ { reading_usage = 1 usage = usage "\n" $0 next } /^( *$| )/ && reading_usage { usage = usage "\n" $0 next } { reading_usage = 0 help = help "\n" $0 } function escape(str) { gsub(/[`\\$"]/, "\\\\&", str) return str } function trim(str) { sub(/^\n*/, "", str) sub(/\n*$/, "", str) return str } END { if (usage || summary) { print "summary=\"" escape(summary) "\"" print "usage=\"" escape(trim(usage)) "\"" print "help=\"" escape(trim(help)) "\"" } } ' } documentation_for() { local filename="$(command_path "$1")" if [ -n "$filename" ]; then extract_initial_comment_block < "$filename" | collect_documentation fi } print_summary() { local command="$1" local summary usage help eval "$(documentation_for "$command")" if [ -n "$summary" ]; then printf " %-9s %s\n" "$command" "$summary" fi } print_summaries() { for command; do print_summary "$command" done } print_help() { local command="$1" local summary usage help eval "$(documentation_for "$command")" [ -n "$help" ] || help="$summary" if [ -n "$usage" -o -n "$summary" ]; then local buffer="$( print_usage $command; if [ -n "$help" ]; then \ echo -e "\n$help\n"; fi )" echo "${buffer}"|$([[ $(tput lines) -lt $(echo "${buffer}"| wc -l ) ]] && echo less || echo cat) else echo "Sorry, this command isn't documented yet." >&2 return 1 fi } print_usage() { local command="$1" local summary usage help eval "$(documentation_for "$command")" echo "${command}:" echo ${command//?/=}= [[ -n "$summary" ]] && printf " %s\n\n" "$summary" [[ -z "$usage" ]] || echo "$usage" } unset usage if [ "$1" = "--usage" ]; then usage="1" shift fi if [ -z "$1" ] || [ "$1" == "phpenv" ]; then echo "phpenv:" printf "%0.1s" "="{1..7} echo -e "\n PHP multi-version installation and management utility.\n" echo "Usage: phpenv <command> [<args>]" [ -z "$usage" ] || exit echo echo "Some useful phpenv commands are:" print_summaries commands configure local global shell install uninstall rehash version versions which whence echo echo "See \`phpenv help <command>' for information on a specific command." echo "For full documentation, see: https://github.com/phpenv/phpenv#readme" else command="$1" if [ -n "$(command_path "$command")" ]; then if [ -n "$usage" ]; then print_usage "$command" else print_help "$command" fi else echo "phpenv: no such command \`$command'" >&2 exit 1 fi fi