Skip to content

Commit a9a525d

Browse files
committed
fish: reduce xargs calls
1 parent 809653d commit a9a525d

File tree

2 files changed

+23
-27
lines changed

2 files changed

+23
-27
lines changed

example/cmd/_test/fish.fish

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
1-
function _example_quote_suffix
2-
if not commandline -cp | xargs echo 2>/dev/null >/dev/null
3-
if echo (commandline -cp)'"' | xargs echo 2>/dev/null >/dev/null
4-
echo '"'
5-
else if echo (commandline -cp)"'" | xargs echo 2>/dev/null >/dev/null
6-
echo "'"
1+
function _example_callback
2+
begin
3+
set --local IFS
4+
set data (echo (commandline -cp)'' | sed "s/ \$/ ''/" | xargs example _carapace fish 2>/dev/null)
5+
if [ $status -eq 1 ]
6+
set data (echo (commandline -cp)"'" | sed "s/ \$/ ''/" | xargs example _carapace fish 2>/dev/null)
7+
if [ $status -eq 1 ]
8+
set data (echo (commandline -cp)'"' | sed "s/ \$/ ''/" | xargs example _carapace fish 2>/dev/null)
9+
end
710
end
8-
else
9-
echo ""
1011
end
11-
end
12-
13-
function _example_callback
14-
echo (commandline -cp)(_example_quote_suffix) | sed "s/ \$/ ''/" | xargs example _carapace fish
12+
echo $data
1513
end
1614

1715
complete -e 'example'

internal/shell/fish/snippet.go

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -10,23 +10,21 @@ import (
1010

1111
// Snippet creates the fish completion script.
1212
func Snippet(cmd *cobra.Command) string {
13-
return fmt.Sprintf(`function _%v_quote_suffix
14-
if not commandline -cp | xargs echo 2>/dev/null >/dev/null
15-
if echo (commandline -cp)'"' | xargs echo 2>/dev/null >/dev/null
16-
echo '"'
17-
else if echo (commandline -cp)"'" | xargs echo 2>/dev/null >/dev/null
18-
echo "'"
13+
return fmt.Sprintf(`function _%[1]v_callback
14+
begin
15+
set --local IFS
16+
set data (echo (commandline -cp)'' | sed "s/ \$/ ''/" | xargs %[2]v _carapace fish 2>/dev/null)
17+
if [ $status -eq 1 ]
18+
set data (echo (commandline -cp)"'" | sed "s/ \$/ ''/" | xargs %[2]v _carapace fish 2>/dev/null)
19+
if [ $status -eq 1 ]
20+
set data (echo (commandline -cp)'"' | sed "s/ \$/ ''/" | xargs %[2]v _carapace fish 2>/dev/null)
21+
end
1922
end
20-
else
21-
echo ""
2223
end
24+
echo $data
2325
end
2426
25-
function _%v_callback
26-
echo (commandline -cp)(_%v_quote_suffix) | sed "s/ \$/ ''/" | xargs %v _carapace fish
27-
end
28-
29-
complete -e '%v'
30-
complete -c '%v' -f -a '(_%v_callback)' -r
31-
`, cmd.Name(), cmd.Name(), cmd.Name(), uid.Executable(), cmd.Name(), cmd.Name(), cmd.Name())
27+
complete -e '%[1]v'
28+
complete -c '%[1]v' -f -a '(_%[1]v_callback)' -r
29+
`, cmd.Name(), uid.Executable())
3230
}

0 commit comments

Comments
 (0)