Skip to content

Commit c578561

Browse files
committed
FIx: bash bug.
1 parent 0f6aac6 commit c578561

File tree

2 files changed

+29
-4
lines changed

2 files changed

+29
-4
lines changed

cmdcomp/v2/templates/bash.sh.jinja

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ else
1313
fi
1414
{%- elif argument.type == "file" -%}
1515
if [ $cur -eq $COMP_CWORD ] ; then
16-
file_completion "{{ argument.base_path or "." }}"
16+
{{ file_completion(argument.base_path or ".")|indent(2) }}
1717

1818
return 0
1919
else
@@ -93,6 +93,13 @@ cur=$COMP_CWORD
9393

9494
{#- macro def -#}
9595
{%- macro file_completion(base_path) -%}
96+
_get_comp_words_by_ref -n : cur prev cword
97+
dir="$(echo ${cur} | grep -o ".*/")"
98+
if test "${dir}" ;then
99+
COMPREPLY=( $(compgen -W "$(ls -F $1/${dir} | sed -E "s@(.*)@${dir}\1@g")" -- "${cur}") )
100+
else
101+
COMPREPLY=( $(compgen -W "$(ls -F $1/)" -- "${cur}") )
102+
fi
96103
{%- endmacro -%}
97104

98105
#!/bin/bash

examples/v2/output.bash

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,13 @@ _cliname() {
8181

8282
--config)
8383
if [ $cur -eq $COMP_CWORD ] ; then
84-
file_completion "."
84+
_get_comp_words_by_ref -n : cur prev cword
85+
dir="$(echo ${cur} | grep -o ".*/")"
86+
if test "${dir}" ;then
87+
COMPREPLY=( $(compgen -W "$(ls -F $1/${dir} | sed -E "s@(.*)@${dir}\1@g")" -- "${cur}") )
88+
else
89+
COMPREPLY=( $(compgen -W "$(ls -F $1/)" -- "${cur}") )
90+
fi
8591

8692
return 0
8793
else
@@ -144,7 +150,13 @@ _cliname() {
144150
fi
145151
cur=$COMP_CWORD
146152
if [ $cur -eq $COMP_CWORD ] ; then
147-
file_completion "."
153+
_get_comp_words_by_ref -n : cur prev cword
154+
dir="$(echo ${cur} | grep -o ".*/")"
155+
if test "${dir}" ;then
156+
COMPREPLY=( $(compgen -W "$(ls -F $1/${dir} | sed -E "s@(.*)@${dir}\1@g")" -- "${cur}") )
157+
else
158+
COMPREPLY=( $(compgen -W "$(ls -F $1/)" -- "${cur}") )
159+
fi
148160

149161
return 0
150162
else
@@ -173,7 +185,13 @@ _cliname() {
173185
case $(( COMP_CWORD - cmd_cur + 1)) in
174186
1)
175187
if [ $cur -eq $COMP_CWORD ] ; then
176-
file_completion "$HOME"
188+
_get_comp_words_by_ref -n : cur prev cword
189+
dir="$(echo ${cur} | grep -o ".*/")"
190+
if test "${dir}" ;then
191+
COMPREPLY=( $(compgen -W "$(ls -F $1/${dir} | sed -E "s@(.*)@${dir}\1@g")" -- "${cur}") )
192+
else
193+
COMPREPLY=( $(compgen -W "$(ls -F $1/)" -- "${cur}") )
194+
fi
177195

178196
return 0
179197
else

0 commit comments

Comments
 (0)