aboutsummaryrefslogtreecommitdiffhomepage
path: root/build_tools
diff options
context:
space:
mode:
Diffstat (limited to 'build_tools')
-rwxr-xr-xbuild_tools/make_csv_completions.fish8
-rwxr-xr-xbuild_tools/make_darcs_completions.fish12
-rwxr-xr-xbuild_tools/make_hg_completions.fish8
-rwxr-xr-xbuild_tools/make_svn_completions.fish8
-rwxr-xr-xbuild_tools/make_vcs_completions.fish238
-rwxr-xr-xbuild_tools/make_vcs_completions_generic.fish229
6 files changed, 270 insertions, 233 deletions
diff --git a/build_tools/make_csv_completions.fish b/build_tools/make_csv_completions.fish
new file mode 100755
index 00000000..88b5e686
--- /dev/null
+++ b/build_tools/make_csv_completions.fish
@@ -0,0 +1,8 @@
+#!/usr/bin/env fish
+#
+# This file produces command specific completions for csv. Meant to be executed
+# from the root directory (so the completions get put in the right place).
+
+. build_tools/make_vcs_completions_generic.fish
+
+write_completions csv >share/completions/csv.fish
diff --git a/build_tools/make_darcs_completions.fish b/build_tools/make_darcs_completions.fish
new file mode 100755
index 00000000..ccf5f08a
--- /dev/null
+++ b/build_tools/make_darcs_completions.fish
@@ -0,0 +1,12 @@
+#!/usr/bin/env fish
+#
+# This file produces command specific completions for darcs. Meant to be
+# executed from the root directory (so the completions get put in the right
+# place).
+
+. build_tools/make_vcs_completions_generic.fish
+
+set darcs_comp 'complete -c darcs -n "not __fish_use_subcommand" -a "(test -f _darcs/prefs/repos; and cat _darcs/prefs/repos)" --description "Darcs repo"'
+set darcs_comp $darcs_comp 'complete -c darcs -a "test predist boringfile binariesfile" -n "contains setpref (commandline -poc)" --description "Set the specified option" -x'
+
+write_completions darcs $darcs_comp >share/completions/darcs.fish
diff --git a/build_tools/make_hg_completions.fish b/build_tools/make_hg_completions.fish
new file mode 100755
index 00000000..9e759cda
--- /dev/null
+++ b/build_tools/make_hg_completions.fish
@@ -0,0 +1,8 @@
+#!/usr/bin/env fish
+#
+# This file produces command specific completions for hg. Meant to be executed
+# from the root directory (so the completions get put in the right place).
+
+. build_tools/make_vcs_completions_generic.fish
+
+write_completions hg >share/completions/hg.fish
diff --git a/build_tools/make_svn_completions.fish b/build_tools/make_svn_completions.fish
new file mode 100755
index 00000000..8b123b7d
--- /dev/null
+++ b/build_tools/make_svn_completions.fish
@@ -0,0 +1,8 @@
+#!/usr/bin/env fish
+#
+# This file produces command specific completions for svn. Meant to be executed
+# from the root directory (so the completions get put in the right place).
+
+. build_tools/make_vcs_completions_generic.fish
+
+write_completions svn >share/completions/svn.fish
diff --git a/build_tools/make_vcs_completions.fish b/build_tools/make_vcs_completions.fish
index b28e62cc..88e9d5f8 100755
--- a/build_tools/make_vcs_completions.fish
+++ b/build_tools/make_vcs_completions.fish
@@ -1,237 +1,9 @@
#!/usr/bin/env fish
#
# This file produces command specific completions for hg, darcs and a
-# few other vcs systems. It uses the fact that all these systems have a
-# somewhat uniform command line help mechanism.
-#
-
-function cap
- set res (echo $argv |cut -c 1|tr a-z A-Z)(echo $argv |cut -c 2-)
- echo $res
-end
-
-#
-# Escapes the single quote (') character and removes trailing whitespace from $argv
-#
-
-function esc
- echo $argv | sed -e "s/\(['\\\]\)/\\\\\1/g" | sed -e 's/ *$//' | sed -e 's/ .*//'
-end
-
-
-#
-# This function formats a list of completion information into a set of fish completions
-#
-# The first argument is the condition string, which will be copied to
-# the resulting commandline verbatim
-#
-# Remaining arguments are tab separated lists of completion
-# information. Each list contains four elements, the short switch, the
-# long switch, the argument and the description.
-#
-
-function complete_from_list
-
- set condition $argv[1]
- set -e argv[1]
-
- for j in $argv
- set exploded (echo $j|tr \t \n)
- set short $exploded[1]
- set long $exploded[2]
- set arg $exploded[3]
- set desc (cap (esc $exploded[4]))
-
- set str
-
- switch $short
- case '-?'
- set str $str -s (printf "%s\n" $short|cut -c 2)
- end
-
- switch $long
- case '--?*'
- set str $str -l (printf "%s\n" $long|cut -c 3-)
- end
-
- switch $arg
- case '=DIRECTORY' ' dir'
- set str $str -x -a "'(__fish_complete_directories (commandline -ct))'"
-
- case '=COMMAND'
- set str $str -x -a "'(__fish_complete_command)'"
-
- case '=USERNAME' ' <user>'
- set str $str -x -a "'(__fish_complete_users)'"
-
- case '=FILENAME' '=FILE' ' <file>'
- set str $str -r
-
- case ' arg'
- set str $str -x
-
- case ' (*):'
- set str $str -x -a \'(echo $arg| sed -e "s/ (\(.*\)):/\1/" |tr '/' ' ')\'
-
- case '?*'
- set str $str -x
- if not set -q unknown
- set -g unknown
- end
- if not contains $arg $unknown
- echo "Don't know how to handle arguments of type '$arg'" >&2
- set unknown $unknown $arg
- end
- end
-
- switch $desc
- case '?*'
- set str $str --description \'$desc\'
- end
-
- echo complete -c $cmd $condition $str
-
- end
-
-end
-
-
-function write_completions
-
- set -g cmd $argv[1]; or return 1
-
- echo "Making completions for $cmd" >&2
-
-
- echo '
-#
-# Completions for the '$cmd' command
-# This file was autogenerated by the file make_vcs_completions.fish
-# which is shipped with the fish source code.
-#
-
-#
-# Completions from commandline
-#
-'
- set -e argv[1]
-
- while count $argv >/dev/null
- echo $argv[1]
- set -e argv[1]
- end
-
-
- eval "function cmd; $cmd \$argv; end"
-
- set -l cmd_str
-
- switch $cmd
- case svn
-
- function list_subcommand
- set cmd1 '\([^ ]*\)'
- set cmd2 '\([^,)]*\)'
- set cmdn '\(, \([^,)]*\)\|\)'
- set svn_re '^ *'$cmd1'\( ('$cmd2$cmdn$cmdn')\|\).*$'
- cmd help|sed -ne 's/'$svn_re'/\1\n\3\n\5\n\7/p'| grep .
- end
-
- function list_subcommand_help
- set short_exp '\(-.\|\)'
- set long_exp '\(--[^ =,]*\)'
- set arg_exp '\(\|[= ][^ ][^ ]*\)'
- set desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*[^.]\)'
- set re "^ *$short_exp *$long_exp$arg_exp *$desc_exp\(\|\\.\)\$"
- cmd help $argv | sed -n -e 's/'$re'/\1\t\2\t\3\t\5/p'
- end
-
- for i in (list_subcommand)
-
- set desc (cmd help $i|head -n 3| sed -e 's/usage:.*//'| tr \n \ | sed -e 's/[^:]*: *\(.*[^.]\)\(\|\\.\)$/\1/')
- set desc (esc $desc)
- set cmd_str $cmd_str "-a $i --description '$desc'"
- end
-
- case cvs
-
- function list_subcommand
- cmd --help-commands 2>| sed -n -e 's/^ *\([^ ][^ ]*\) .*$/\1/p'
- end
-
- set short_exp '\(-.\)'
- set arg_exp '\(\| [^ \t][^ \t]*\)'
- set desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*\)'
- set -g re '^[ \t]*'$short_exp$arg_exp'[ \t]*'$desc_exp'$'
-
- function list_subcommand_help
-#'s/^[ \t]*\(-.\)[ \t]\([^- \t][^ \t]*\)*[ \t]*\([^-].*\)$/\1\t\2\t\3/p'
-
- cmd -H $argv 2>| sed -n -e 's/'$re'/\1\t\t\2\t\4/p'
- end
-
- echo '
-#
-# Global switches
-#
-'
-
- complete_from_list "-n '__fish_use_subcommand'" (cmd --help-options 2>| sed -n -e 's/'$re'/\1\t\t\2\t\4/p')
-
- set cmd_str_internal (cmd --help-commands 2>| sed -n -e 's/^ *\([^ ][^ ]*\)[\t ]*\([^ ].*\)$/\1\t\2/p')
- for i in $cmd_str_internal
- set exploded (echo $i|tr \t \n)
- set cmd_str $cmd_str "-a $exploded[1] --description '"(esc $exploded[2])"'"
- end
-
- case '*'
-
- function list_subcommand
- cmd help | sed -n -e 's/^ *\([^ ][^ ]*\) .*$/\1/p'
- end
-
- function list_subcommand_help
- set -l short_exp '\(-.\|\)\( [^ -][^ ]*\|\)'
- set -l long_exp '\(--[^ =,]*\)'
- set -l arg_exp '\(\|[= ][^ ][^ ]*\)'
- set -l desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*[^.]\)'
- set -l re "^ *$short_exp *$long_exp$arg_exp *$desc_exp\(\|\\.\)\$"
-
- cmd help $argv | sed -n -e 's/'$re'/\1\t\3\t\4\t\6/p'
- end
-
- set cmd_str (cmd help | sed -n -e 's/^ *\([^ ][^ ]*\)[\t ]*\([^ ].*[^.]\)\(\|\\.\)$/-a \1 --description \'\2\'/p')
-
- end
-
- echo '
-#
-# subcommands
-#
-'
-
- printf "complete -c $cmd -n '__fish_use_subcommand' -x %s\n" $cmd_str
-
- for i in (list_subcommand)
-
- echo '
-
-#
-# Completions for the \''$i'\' subcommand
-#
-'
-
- complete_from_list "-n 'contains \\'$i\\' (commandline -poc)'" (list_subcommand_help $i)
- end
-
- echo \n\n
-
-end
-
-set darcs_comp 'complete -c darcs -n "not __fish_use_subcommand" -a "(test -f _darcs/prefs/repos; and cat _darcs/prefs/repos)" --description "Darcs repo"'
-set darcs_comp $darcs_comp 'complete -c darcs -a "test predist boringfile binariesfile" -n "contains setpref (commandline -poc)" --description "Set the specified option" -x'
+# few other vcs systems.
-write_completions darcs $darcs_comp >share/completions/darcs.fish
-write_completions hg >share/completions/hg.fish
-write_completions svn >share/completions/svn.fish
-write_completions cvs >share/completions/cvs.fish
+build_tools/make_darcs_completions.fish
+build_tools/make_hg_completions.fish
+build_tools/make_svn_completions.fish
+build_tools/make_csv_completions.fish
diff --git a/build_tools/make_vcs_completions_generic.fish b/build_tools/make_vcs_completions_generic.fish
new file mode 100755
index 00000000..efa16dc2
--- /dev/null
+++ b/build_tools/make_vcs_completions_generic.fish
@@ -0,0 +1,229 @@
+#!/usr/bin/env fish
+#
+# This file provides generic functions for generating specific completions for
+# hg, darcs and a few other vcs systems. It uses the fact that all these
+# systems have a somewhat uniform command line help mechanism.
+#
+
+function cap
+ set res (echo $argv |cut -c 1|tr a-z A-Z)(echo $argv |cut -c 2-)
+ echo $res
+end
+
+#
+# Escapes the single quote (') character and removes trailing whitespace from $argv
+#
+
+function esc
+ echo $argv | sed -e "s/\(['\\\]\)/\\\\\1/g" | sed -e 's/ *$//' | sed -e 's/ .*//'
+end
+
+
+#
+# This function formats a list of completion information into a set of fish completions
+#
+# The first argument is the condition string, which will be copied to
+# the resulting commandline verbatim
+#
+# Remaining arguments are tab separated lists of completion
+# information. Each list contains four elements, the short switch, the
+# long switch, the argument and the description.
+#
+
+function complete_from_list
+
+ set condition $argv[1]
+ set -e argv[1]
+
+ for j in $argv
+ set exploded (echo $j|tr \t \n)
+ set short $exploded[1]
+ set long $exploded[2]
+ set arg $exploded[3]
+ set desc (cap (esc $exploded[4]))
+
+ set str
+
+ switch $short
+ case '-?'
+ set str $str -s (printf "%s\n" $short|cut -c 2)
+ end
+
+ switch $long
+ case '--?*'
+ set str $str -l (printf "%s\n" $long|cut -c 3-)
+ end
+
+ switch $arg
+ case '=DIRECTORY' ' dir'
+ set str $str -x -a "'(__fish_complete_directories (commandline -ct))'"
+
+ case '=COMMAND'
+ set str $str -x -a "'(__fish_complete_command)'"
+
+ case '=USERNAME' ' <user>'
+ set str $str -x -a "'(__fish_complete_users)'"
+
+ case '=FILENAME' '=FILE' ' <file>'
+ set str $str -r
+
+ case ' arg'
+ set str $str -x
+
+ case ' (*):'
+ set str $str -x -a \'(echo $arg| sed -e "s/ (\(.*\)):/\1/" |tr '/' ' ')\'
+
+ case '?*'
+ set str $str -x
+ if not set -q unknown
+ set -g unknown
+ end
+ if not contains $arg $unknown
+ echo "Don't know how to handle arguments of type '$arg'" >&2
+ set unknown $unknown $arg
+ end
+ end
+
+ switch $desc
+ case '?*'
+ set str $str --description \'$desc\'
+ end
+
+ echo complete -c $cmd $condition $str
+
+ end
+
+end
+
+
+function write_completions
+
+ set -g cmd $argv[1]; or return 1
+
+ echo "Making completions for $cmd" >&2
+
+
+ echo '
+#
+# Completions for the '$cmd' command
+# This file was autogenerated by the file make_vcs_completions.fish
+# which is shipped with the fish source code.
+#
+
+#
+# Completions from commandline
+#
+'
+ set -e argv[1]
+
+ while count $argv >/dev/null
+ echo $argv[1]
+ set -e argv[1]
+ end
+
+
+ eval "function cmd; $cmd \$argv; end"
+
+ set -l cmd_str
+
+ switch $cmd
+ case svn
+
+ function list_subcommand
+ set cmd1 '\([^ ]*\)'
+ set cmd2 '\([^,)]*\)'
+ set cmdn '\(, \([^,)]*\)\|\)'
+ set svn_re '^ *'$cmd1'\( ('$cmd2$cmdn$cmdn')\|\).*$'
+ cmd help|sed -ne 's/'$svn_re'/\1\n\3\n\5\n\7/p'| grep .
+ end
+
+ function list_subcommand_help
+ set short_exp '\(-.\|\)'
+ set long_exp '\(--[^ =,]*\)'
+ set arg_exp '\(\|[= ][^ ][^ ]*\)'
+ set desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*[^.]\)'
+ set re "^ *$short_exp *$long_exp$arg_exp *$desc_exp\(\|\\.\)\$"
+ cmd help $argv | sed -n -e 's/'$re'/\1\t\2\t\3\t\5/p'
+ end
+
+ for i in (list_subcommand)
+
+ set desc (cmd help $i|head -n 3| sed -e 's/usage:.*//'| tr \n \ | sed -e 's/[^:]*: *\(.*[^.]\)\(\|\\.\)$/\1/')
+ set desc (esc $desc)
+ set cmd_str $cmd_str "-a $i --description '$desc'"
+ end
+
+ case cvs
+
+ function list_subcommand
+ cmd --help-commands 2>| sed -n -e 's/^ *\([^ ][^ ]*\) .*$/\1/p'
+ end
+
+ set short_exp '\(-.\)'
+ set arg_exp '\(\| [^ \t][^ \t]*\)'
+ set desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*\)'
+ set -g re '^[ \t]*'$short_exp$arg_exp'[ \t]*'$desc_exp'$'
+
+ function list_subcommand_help
+#'s/^[ \t]*\(-.\)[ \t]\([^- \t][^ \t]*\)*[ \t]*\([^-].*\)$/\1\t\2\t\3/p'
+
+ cmd -H $argv 2>| sed -n -e 's/'$re'/\1\t\t\2\t\4/p'
+ end
+
+ echo '
+#
+# Global switches
+#
+'
+
+ complete_from_list "-n '__fish_use_subcommand'" (cmd --help-options 2>| sed -n -e 's/'$re'/\1\t\t\2\t\4/p')
+
+ set cmd_str_internal (cmd --help-commands 2>| sed -n -e 's/^ *\([^ ][^ ]*\)[\t ]*\([^ ].*\)$/\1\t\2/p')
+ for i in $cmd_str_internal
+ set exploded (echo $i|tr \t \n)
+ set cmd_str $cmd_str "-a $exploded[1] --description '"(esc $exploded[2])"'"
+ end
+
+ case '*'
+
+ function list_subcommand
+ cmd help | sed -n -e 's/^ *\([^ ][^ ]*\) .*$/\1/p'
+ end
+
+ function list_subcommand_help
+ set -l short_exp '\(-.\|\)\( [^ -][^ ]*\|\)'
+ set -l long_exp '\(--[^ =,]*\)'
+ set -l arg_exp '\(\|[= ][^ ][^ ]*\)'
+ set -l desc_exp '\([\t ]*:[\t ]*\|\)\([^ ].*[^.]\)'
+ set -l re "^ *$short_exp *$long_exp$arg_exp *$desc_exp\(\|\\.\)\$"
+
+ cmd help $argv | sed -n -e 's/'$re'/\1\t\3\t\4\t\6/p'
+ end
+
+ set cmd_str (cmd help | sed -n -e 's/^ *\([^ ][^ ]*\)[\t ]*\([^ ].*[^.]\)\(\|\\.\)$/-a \1 --description \'\2\'/p')
+
+ end
+
+ echo '
+#
+# subcommands
+#
+'
+
+ printf "complete -c $cmd -n '__fish_use_subcommand' -x %s\n" $cmd_str
+
+ for i in (list_subcommand)
+
+ echo '
+
+#
+# Completions for the \''$i'\' subcommand
+#
+'
+
+ complete_from_list "-n 'contains \\'$i\\' (commandline -poc)'" (list_subcommand_help $i)
+ end
+
+ echo \n\n
+
+end