aboutsummaryrefslogtreecommitdiff
path: root/clean
diff options
context:
space:
mode:
Diffstat (limited to 'clean')
-rw-r--r--clean/.bash_completion.d/clm50
1 files changed, 50 insertions, 0 deletions
diff --git a/clean/.bash_completion.d/clm b/clean/.bash_completion.d/clm
new file mode 100644
index 0000000..85b77af
--- /dev/null
+++ b/clean/.bash_completion.d/clm
@@ -0,0 +1,50 @@
+_clm()
+{
+ local cur prev opts
+ COMPRREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ opts="-I -IL -P -w -nw -d -nd -sa -nsa -mv -ms -O -PO -S -PS -ABC -PABC -c -lt -nlt -lat -nlat -lset -ci -nci -ou -nou -fusion -nfusion -pt -npt -desc -exl -tst -funcmayfail -ns -no-opt-link -l -sl -e -E -aC -h -s -b -sc -t -nt -gc -ngc -st -nst -nr -gcm -gcc -gcf -gci -optabc -bytecode"
+
+ case $prev in
+ "-IL")
+ # Complete Clean libraries
+ opts="$(find "$CLEAN_HOME/lib" -mindepth 1 -maxdepth 1 -type d -exec basename {} \;)"
+ COMPREPLY=($(compgen -W "$opts" -- $cur))
+ return 0
+ ;;
+ "-I")
+ # Complete directories
+ _filedir
+ for index in "${!COMPREPLY[@]}"; do
+ [ -d "${COMPREPLY[index]}" ] || unset -v 'COMPREPLY[$index]'
+ done
+ return 0
+ ;;
+ "-l" | "-sl")
+ # Complete files
+ _filedir
+ for index in "${!COMPREPLY[@]}"; do
+ [ -f "${COMPREPLY[index]}" ] || unset -v 'COMPREPLY[$index]'
+ done
+ return 0
+ ;;
+ "-P" | "-e" | "-E" | "-h" | "-s" | "-gcf" | "-gci")
+ # Complete nothing
+ return 0
+ ;;
+ esac
+
+ if [[ $cur == -* ]]; then
+ # Complete options
+ COMPREPLY=($(compgen -W "$opts" -- $cur))
+ return 0
+ else
+ # Main module; complete icl module names
+ opts="$(find -name '*.icl' -maxdepth 4 -type f -print 2>/dev/null | sed 's:^\./::;s:/:.:g;s:\.icl$::' | grep -v '[- ]')"
+ COMPREPLY=($(compgen -W "$opts" -- $cur))
+ return 0
+ fi
+}
+complete -F _clm clm