summaryrefslogtreecommitdiff
path: root/src/bashrc/pcp_completion.sh
diff options
context:
space:
mode:
Diffstat (limited to 'src/bashrc/pcp_completion.sh')
-rw-r--r--src/bashrc/pcp_completion.sh68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/bashrc/pcp_completion.sh b/src/bashrc/pcp_completion.sh
new file mode 100644
index 0000000..fe0ce82
--- /dev/null
+++ b/src/bashrc/pcp_completion.sh
@@ -0,0 +1,68 @@
+# Programmable completion for Performance Co-Pilot commands under bash.
+# Author: Roman Revyakin (Roman), rrevyakin@aconex.com
+
+_pminfo_complete ()
+{
+ local cur=${COMP_WORDS[$COMP_CWORD]}
+ local opt_regex= curpos_expand=
+
+ COMPREPLY=()
+
+ # Options that need no completion and the cursor position to start
+ # expansion from for different programs
+ case ${COMP_WORDS[0]} in
+ pminfo)
+ opt_regex="-[abhnOZ]"
+ curpos_expand=1
+ ;;
+
+ pmprobe)
+ opt_regex="-[ahnOZ]"
+ curpos_expand=1
+ ;;
+
+ pmdumptext)
+ opt_regex="-[AacdfhnOPRsStTUwZ]"
+ curpos_expand=1
+ ;;
+
+ pmdumplog)
+ opt_regex="-[nSTZ]"
+ curpos_expand=1
+ ;;
+
+ pmlogsummary)
+ opt_regex="-[BnpSTZ]"
+ curpos_expand=2
+ ;;
+
+ pmstore)
+ opt_regex="-[hin]"
+ curpos_expand=1
+ ;;
+
+ pmval)
+ opt_regex="-[AafhinOpSsTtwZ]"
+ curpos_expand=1
+ ;;
+
+ pmevent)
+ opt_regex="-[ahKOpSsTtZ]"
+ curpos_expand=1
+ ;;
+
+ esac # --- end of case ---
+
+ # We expand either straight from the cursor if it is at the position to
+ # expand or check for the preceding options whether to expand or not
+ if (( $COMP_CWORD == $curpos_expand )) || \
+ ( (( $COMP_CWORD > $curpos_expand )) \
+ && ! [[ "${COMP_WORDS[$((COMP_CWORD-1))]}" =~ $opt_regex ]]
+ )
+ then
+ COMPREPLY=(`compgen -W '$(command pminfo)' 2>/dev/null $cur`)
+ fi
+
+} # ---------- end of function _pminfo_complete ----------
+
+complete -F _pminfo_complete -o default pminfo pmprobe pmdumptext pmdumplog pmlogsummary pmstore pmval pmevent