Skip to content

Commit 3fea37a

Browse files
authored
Merge pull request #1041 from carapace-sh/action-unlessf
action: added `UnlessF`
2 parents 6c11096 + 5e6b2b2 commit 3fea37a

File tree

8 files changed

+218
-84
lines changed

8 files changed

+218
-84
lines changed

action.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -453,8 +453,18 @@ func (a Action) UniqueListF(divider string, f func(s string) string) Action {
453453
})
454454
}
455455

456-
// Unless skips invokation if given condition succeeds.
457-
func (a Action) Unless(condition func(c Context) bool) Action {
456+
// Unless skips invokation if given condition is true.
457+
func (a Action) Unless(condition bool) Action {
458+
return ActionCallback(func(c Context) Action {
459+
if condition {
460+
return ActionValues()
461+
}
462+
return a
463+
})
464+
}
465+
466+
// UnlessF skips invokation if given condition returns true.
467+
func (a Action) UnlessF(condition func(c Context) bool) Action {
458468
return ActionCallback(func(c Context) Action {
459469
if condition(c) {
460470
return ActionValues()

docs/src/SUMMARY.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
- [UniqueList](./carapace/action/uniqueList.md)
4040
- [UniqueListF](./carapace/action/uniqueListF.md)
4141
- [Unless](./carapace/action/unless.md)
42+
- [UnlessF](./carapace/action/unlessF.md)
4243
- [Usage](./carapace/action/usage.md)
4344
- [UsageF](./carapace/action/usageF.md)
4445
- [InvokedAction](./carapace/invokedAction.md)

docs/src/carapace/action/unless.cast

Lines changed: 58 additions & 60 deletions
Large diffs are not rendered by default.

docs/src/carapace/action/unless.md

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,27 @@
11
# Unless
22

3-
[`Unless`] skips invokation if given [condition] succeeds.
3+
[`Unless`] skips invokation if given condition is `true`.
44

55
```go
6-
carapace.ActionValues(
7-
"./local",
8-
"~/home",
9-
"/abs",
10-
"one",
11-
"two",
12-
"three",
13-
).Unless(condition.CompletingPath)
6+
carapace.ActionMultiPartsN(":", 2, func(c carapace.Context) carapace.Action {
7+
switch len(c.Parts) {
8+
case 0:
9+
return carapace.ActionValues("true", "false").Suffix(":")
10+
default:
11+
return carapace.Batch(
12+
carapace.ActionValues(
13+
"yes",
14+
"positive",
15+
).Unless(c.Parts[0] != "true"),
16+
carapace.ActionValues(
17+
"no",
18+
"negative",
19+
).Unless(c.Parts[0] != "false"),
20+
).ToA()
21+
}
22+
})
1423
```
1524

1625
![](./unless.cast)
1726

1827
[`Unless`]:https://pkg.go.dev/github.com/carapace-sh/carapace#Action.Unless
19-
[condition]:https://pkg.go.dev/github.com/carapace-sh/carapace/pkg/condition

docs/src/carapace/action/unlessF.cast

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{"version": 2, "width": 80, "height": 12, "timestamp": 1726929444, "env": {"SHELL": "elvish", "TERM": "tmux-256color"}}
2+
[0.2044, "o", "\u001b[?7h\u001b[7m⏎\u001b[m \r \r\u001b[?7l\u001b[?2004h"]
3+
[0.20511, "o", "\u001b[?25l\r???> ???> \r\u001b[5C\u001b[?25h\u001b[?25l\r\u001b[5C\u001b[K\r\u001b[5C\u001b[?25h"]
4+
[0.223458, "o", "\u001b[?25l\r\r\u001b[5C\u001b[?25h\u001b[?25l\r\r\u001b[5C\u001b[?25h"]
5+
[0.22353, "o", "\u001b[?25l\r\u001b[K\u001b[0;1;36m~\u001b[0;m \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \r\u001b[6C\u001b[?25h"]
6+
[0.602139, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[7C\u001b[?25h"]
7+
[0.602641, "o", "\u001b[?25l\u001b[1A\r\r\n\r\u001b[7C\u001b[?25h"]
8+
[0.615016, "o", "\u001b[?25l\u001b[1A\r\r\n\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[7C\u001b[?25h"]
9+
[0.615168, "o", "\u001b[?25l\u001b[1A\r\r\n\r\u001b[7C\u001b[?25h"]
10+
[1.100985, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[8C\u001b[?25h"]
11+
[1.218184, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[6C\u001b[K\u001b[0;32mexa\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[9C\u001b[?25h"]
12+
[1.33266, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[6C\u001b[K\u001b[0;31mexam\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[10C\u001b[?25h"]
13+
[1.397167, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[10C\u001b[0;31mp\u001b[0;m\r\u001b[11C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[11C\u001b[?25h"]
14+
[1.514046, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[11C\u001b[0;31ml\u001b[0;m\r\u001b[12C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[12C\u001b[?25h"]
15+
[1.628261, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[6C\u001b[K\u001b[0;32mexample\u001b[0;m\r\u001b[13C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[13C\u001b[?25h"]
16+
[1.729894, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[13C \r\u001b[14C\u001b[?25h"]
17+
[1.730018, "o", "\u001b[?25l\u001b[1A\r\r\n\r\u001b[14C\u001b[?25h"]
18+
[2.24433, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[14Cm\r\u001b[15C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[15C\u001b[?25h"]
19+
[2.301778, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[15Co\r\u001b[16C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[16C\u001b[?25h"]
20+
[2.428727, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[16Cdifier \r\u001b[23C\u001b[?25h"]
21+
[2.837409, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[23C-\r\u001b[24C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[24C\u001b[?25h"]
22+
[2.981529, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[24C-\r\u001b[25C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[25C\u001b[?25h"]
23+
[3.569226, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[23C\u001b[K\u001b[0;4m--batch \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7;34m--batch\u001b[0;2;7m (Batch()) \u001b[0;m --help\u001b[0;2m (help for modifier) \r\n\u001b[0;34m--cache\u001b[0;2m (Cache()) \u001b[0;m \u001b[0;34m--invoke\u001b[0;2m (Invoke()) \r\n\u001b[0;34m--cache-key\u001b[0;2m (Cache()) \u001b[0;m \u001b[0;34m--list\u001b[0;2m (List()) \r\n\u001b[0;34m--chdir\u001b[0;2m (Chdir()) \u001b[0;m \u001b[0;34m--multiparts\u001b[0;2m (MultiParts()) \r\n\u001b[0;34m--chdirf\u001b[0;2m (ChdirF()) \u001b[0;m \u001b[0;34m--multipartsp\u001b[0;2m (MultiPartsP()) \r\n\u001b[0;34m--filter\u001b[0;2m (Filter()) \u001b[0;m \u001b[0;34m--nospace\u001b[0;2m (NoSpace()) \r\n\u001b[0;34m--filterargs\u001b[0;2m (FilterArgs()) \u001b[0;m \u001b[0;33m--persistentFlag\u001b[0;2m (Help message for persistentFlag\r\n\u001b[0;34m--filterparts\u001b[0;2m (FilterParts())\u001b[0;m \u001b[0;34m--persistentFlag2\u001b[0;2m (Help message for persistentFla\r\n\u001b[0;7;35m \u001b[0;35m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\u001b[0;m\u001b[9A\r\u001b[22C\u001b[?25h"]
24+
[3.632282, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[25C\u001b[K\u001b[0;4mmultiparts \r\n\u001b[22C\u001b[0;mu\r\n\u001b[2C\u001b[K\u001b[0;7;34mmultiparts\u001b[0;2;7m (MultiParts()) \u001b[0;m \u001b[0;34m--uniquelist\u001b[0;2m (UniqueList()) \r\n\u001b[2C\u001b[0;m\u001b[K\u001b[0;34mmultipartsp\u001b[0;2m (MultiPartsP())\u001b[0;m \u001b[0;34m--uniquelistf\u001b[0;2m (UniqueListF())\r\n\u001b[2C\u001b[0;m\u001b[K\u001b[0;34msuffix\u001b[0;2m (Suffix()) \u001b[0;m \u001b[0;34m--unless\u001b[0;2m (Unless()) \r\n\u001b[2C\u001b[0;m\u001b[K\u001b[0;34msuppress\u001b[0;2m (Suppress()) \u001b[0;m \u001b[0;34m--unlessf\u001b[0;2m (UnlessF()) \r\n\u001b[2C\u001b[0;m\u001b[K\u001b[0;34mtimeout\u001b[0;2m (Timeout()) \u001b[0;m \u001b[0;34m--usage\u001b[0;2m (Usage()) \u001b[0;m\r\n\u001b[J\u001b[A\u001b[5A\r\u001b[23C\u001b[?25h"]
25+
[4.33225, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[25C\u001b[K\u001b[0;4muniquelist \r\n\u001b[23C\u001b[0;mn\r\n\u001b[2C\u001b[K\u001b[0;7;34muniquelist\u001b[0;2;7m (UniqueList()) \u001b[0;m \u001b[0;34m--unless\u001b[0;2m (Unless()) \r\n\u001b[2C\u001b[0;m\u001b[K\u001b[0;34muniquelistf\u001b[0;2m (UniqueListF())\u001b[0;m \u001b[0;34m--unlessf\u001b[0;2m (UnlessF())\u001b[0;m\r\n\u001b[J\u001b[A\u001b[2A\r\u001b[24C\u001b[?25h"]
26+
[4.33239, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\r\n\u001b[2A\r\u001b[24C\u001b[?25h"]
27+
[4.466069, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[27C\u001b[K\u001b[0;4mless \r\n\u001b[24C\u001b[0;ml\r\n\u001b[4C\u001b[K\u001b[0;7;34mless\u001b[0;2;7m (Unless())\u001b[0;m \u001b[0;34m--unlessf\u001b[0;2m (UnlessF())\u001b[0;m\r\n\u001b[J\u001b[A\u001b[1A\r\u001b[25C\u001b[?25h"]
28+
[4.466185, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\u001b[1A\r\u001b[25C\u001b[?25h"]
29+
[5.108758, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[31C\u001b[K\u001b[0;4mf \r\n\r\n\u001b[0;m\u001b[K\u001b[0;34m--unless\u001b[0;2m (Unless())\u001b[0;m \u001b[0;7;34m--unlessf\u001b[0;2;7m (UnlessF())\u001b[0;m\u001b[1A\r\u001b[25C\u001b[?25h"]
30+
[5.530079, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[23C\u001b[K--unlessf \r\n\u001b[J\u001b[A\r\u001b[33C\u001b[?25h"]
31+
[5.530333, "o", "\u001b[?25l\u001b[1A\r\r\n\r\u001b[33C\u001b[?25h"]
32+
[5.948117, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C\u001b[0;4m./local \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7m./local\u001b[0;m /abs one three two ~/home\u001b[1A\r\u001b[22C\u001b[?25h"]
33+
[5.948485, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\u001b[1A\r\u001b[22C\u001b[?25h"]
34+
[5.948949, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\u001b[1A\r\u001b[22C\u001b[?25h"]
35+
[5.949151, "o", "\u001b[?25l\u001b[2A\r\r\n\r\n\r\n\u001b[1A\r\u001b[22C\u001b[?25h"]
36+
[7.585602, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[33C\u001b[K\r\n\u001b[J\u001b[A\r\u001b[33C\u001b[?25h"]
37+
[8.093878, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C/\r\u001b[34C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[34C\u001b[?25h"]
38+
[8.279985, "o", "\u001b[?25l\u001b[1A\r\u001b[0;2musage: \u001b[0;mUnlessF()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\u001b[0;1;36m~\u001b[0;m \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m modifier --unlessf /\r\u001b[34C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[34C\u001b[?25h"]
39+
[8.938739, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C\u001b[K\r\u001b[33C\u001b[?25h"]
40+
[9.277511, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C~\r\u001b[34C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[34C\u001b[?25h"]
41+
[9.596644, "o", "\u001b[?25l\u001b[1A\r\u001b[0;2musage: \u001b[0;mUnlessF()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\u001b[0;1;36m~\u001b[0;m \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m modifier --unlessf ~\r\u001b[34C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[34C\u001b[?25h"]
42+
[10.345352, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C\u001b[K\r\u001b[33C\u001b[?25h"]
43+
[10.58072, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C.\r\u001b[34C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[34C\u001b[?25h"]
44+
[10.648674, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[34C/\r\u001b[35C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[35C\u001b[?25h"]
45+
[10.777515, "o", "\u001b[?25l\u001b[1A\r\u001b[0;2musage: \u001b[0;mUnlessF()\u001b[K\r\n\u001b[0;31merror:\u001b[0;m no candidates\u001b[K\r\n\u001b[K\u001b[0;1;36m~\u001b[0;m \r\n\u001b[0;1;37mesh\u001b[0;m \u001b[0;1;32m❯\u001b[0;m \u001b[0;32mexample\u001b[0;m modifier --unlessf ./\r\u001b[35C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[35C\u001b[?25h"]
46+
[11.741015, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[34C\u001b[K\r\u001b[34C\u001b[?25h"]
47+
[12.268904, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C\u001b[K\r\u001b[33C\u001b[?25h"]
48+
[12.359171, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33Ct\r\u001b[34C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[34C\u001b[?25h"]
49+
[12.522386, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[33C\u001b[K\u001b[0;4mthree \r\n\u001b[0;1;37;45m COMPLETING argument \u001b[0;m \r\n\u001b[0;7mthree\u001b[0;m two\u001b[1A\r\u001b[22C\u001b[?25h"]
50+
[13.289741, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[34C\u001b[K\u001b[0;4mwo \r\n\r\n\u001b[0;m\u001b[Kthree \u001b[0;7mtwo\u001b[0;m\u001b[1A\r\u001b[22C\u001b[?25h"]
51+
[13.78906, "o", "\u001b[?25l\u001b[2A\r\r\n\u001b[33C\u001b[Ktwo \r\n\u001b[J\u001b[A\r\u001b[37C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[37C\u001b[?25h"]
52+
[15.213421, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[6C\u001b[K\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[6C\u001b[?25h"]
53+
[15.215373, "o", "\u001b[?25l\u001b[1A\r\r\n\r\u001b[6C\u001b[?25h"]
54+
[15.246035, "o", "\u001b[?25l\u001b[1A\r\r\n\r\u001b[6C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[6C\u001b[?25h"]
55+
[15.644121, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[6C\u001b[0;31me\u001b[0;m\r\u001b[7C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[7C\u001b[?25h"]
56+
[15.85989, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[7C\u001b[0;31mx\u001b[0;m\r\u001b[8C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[8C\u001b[?25h"]
57+
[16.050456, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[8C\u001b[0;31mi\u001b[0;m\r\u001b[9C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[9C\u001b[?25h"]
58+
[16.115359, "o", "\u001b[?25l\u001b[1A\r\r\n\u001b[6C\u001b[K\u001b[0;32mexit\u001b[0;m\r\u001b[10C\u001b[?25h\u001b[?25l\u001b[1A\r\r\n\r\u001b[10C\u001b[?25h"]
59+
[16.339424, "o", "\u001b[?25l\u001b[1A\r\r\n\r\n\r\u001b[?25h\u001b[?7h\u001b[?2004l\r"]

docs/src/carapace/action/unlessF.md

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# UnlessF
2+
3+
[`UnlessF`] skips invokation if given [condition] returns `true`.
4+
5+
```go
6+
carapace.ActionValues(
7+
"./local",
8+
"~/home",
9+
"/abs",
10+
"one",
11+
"two",
12+
"three",
13+
).UnlessF(condition.CompletingPath)
14+
```
15+
16+
![](./unlessF.cast)
17+
18+
[`UnlessF`]:https://pkg.go.dev/github.com/carapace-sh/carapace#Action.UnlessF
19+
[condition]:https://pkg.go.dev/github.com/carapace-sh/carapace/pkg/condition

example/cmd/modifier.go

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ func init() {
5252
modifierCmd.Flags().String("uniquelist", "", "UniqueList()")
5353
modifierCmd.Flags().String("uniquelistf", "", "UniqueListF()")
5454
modifierCmd.Flags().String("unless", "", "Unless()")
55+
modifierCmd.Flags().String("unlessf", "", "UnlessF()")
5556
modifierCmd.Flags().String("usage", "", "Usage()")
5657

5758
rootCmd.AddCommand(modifierCmd)
@@ -266,14 +267,31 @@ func init() {
266267
}).UniqueListF(",", func(s string) string {
267268
return strings.SplitN(s, ":", 2)[0]
268269
}),
269-
"unless": carapace.ActionValues(
270+
"unless": carapace.ActionMultiPartsN(":", 2, func(c carapace.Context) carapace.Action {
271+
switch len(c.Parts) {
272+
case 0:
273+
return carapace.ActionValues("true", "false").Suffix(":")
274+
default:
275+
return carapace.Batch(
276+
carapace.ActionValues(
277+
"yes",
278+
"positive",
279+
).Unless(c.Parts[0] != "true"),
280+
carapace.ActionValues(
281+
"no",
282+
"negative",
283+
).Unless(c.Parts[0] != "false"),
284+
).ToA()
285+
}
286+
}),
287+
"unlessf": carapace.ActionValues(
270288
"./local",
271289
"~/home",
272290
"/abs",
273291
"one",
274292
"two",
275293
"three",
276-
).Unless(condition.CompletingPath),
294+
).UnlessF(condition.CompletingPath),
277295
"usage": carapace.ActionValues().Usage("explicit usage"),
278296
})
279297

example/cmd/modifier_test.go

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -463,32 +463,53 @@ func TestSplitP(t *testing.T) {
463463
Usage("SplitP()"))
464464
})
465465
}
466+
466467
func TestUnless(t *testing.T) {
467468
sandbox.Package(t, "github.com/carapace-sh/carapace/example")(func(s *sandbox.Sandbox) {
468-
s.Run("modifier", "--unless", "").
469+
s.Run("modifier", "--unless", "true:").
470+
Expect(carapace.ActionValues(
471+
"yes",
472+
"positive",
473+
).Prefix("true:").
474+
NoSpace(':').
475+
Usage("Unless()"))
476+
477+
s.Run("modifier", "--unless", "false:").
478+
Expect(carapace.ActionValues(
479+
"no",
480+
"negative",
481+
).Prefix("false:").
482+
NoSpace(':').
483+
Usage("Unless()"))
484+
})
485+
}
486+
487+
func TestUnlessF(t *testing.T) {
488+
sandbox.Package(t, "github.com/carapace-sh/carapace/example")(func(s *sandbox.Sandbox) {
489+
s.Run("modifier", "--unlessf", "").
469490
Expect(carapace.ActionValues(
470491
"./local",
471492
"~/home",
472493
"/abs",
473494
"one",
474495
"two",
475496
"three",
476-
).Usage("Unless()"))
497+
).Usage("UnlessF()"))
477498

478-
s.Run("modifier", "--unless", "t").
499+
s.Run("modifier", "--unlessf", "t").
479500
Expect(carapace.ActionValues(
480501
"two",
481502
"three",
482-
).Usage("Unless()"))
503+
).Usage("UnlessF()"))
483504

484-
s.Run("modifier", "--unless", ".").
485-
Expect(carapace.ActionValues().Usage("Unless()"))
505+
s.Run("modifier", "--unlessf", ".").
506+
Expect(carapace.ActionValues().Usage("UnlessF()"))
486507

487-
s.Run("modifier", "--unless", "~").
488-
Expect(carapace.ActionValues().Usage("Unless()"))
508+
s.Run("modifier", "--unlessf", "~").
509+
Expect(carapace.ActionValues().Usage("UnlessF()"))
489510

490-
s.Run("modifier", "--unless", "/").
491-
Expect(carapace.ActionValues().Usage("Unless()"))
511+
s.Run("modifier", "--unlessf", "/").
512+
Expect(carapace.ActionValues().Usage("UnlessF()"))
492513
})
493514
}
494515

0 commit comments

Comments
 (0)