aboutsummaryrefslogtreecommitdiffhomepage
path: root/init/functions/__fish_contains_opt.fish
diff options
context:
space:
mode:
Diffstat (limited to 'init/functions/__fish_contains_opt.fish')
-rw-r--r--init/functions/__fish_contains_opt.fish53
1 files changed, 53 insertions, 0 deletions
diff --git a/init/functions/__fish_contains_opt.fish b/init/functions/__fish_contains_opt.fish
new file mode 100644
index 00000000..5b06007e
--- /dev/null
+++ b/init/functions/__fish_contains_opt.fish
@@ -0,0 +1,53 @@
+
+function __fish_contains_opt -d "Checks if a specific option has been given in the current commandline"
+ set -l next_short
+
+ set -l short_opt
+ set -l long_opt
+
+ for i in $argv
+ if test $next_short
+ set next_short
+ set -- short_opt $short_opt $i
+ else
+ switch $i
+ case -s
+ set next_short 1
+ case '-*'
+ echo __fish_contains_opt: Unknown option $i
+ return 1
+
+ case '**'
+ set -- long_opt $long_opt $i
+ end
+ end
+ end
+
+ for i in $short_opt
+
+ if test -z $i
+ continue
+ end
+
+ if commandline -cpo | grep -- "^-"$i"\|^-[^-]*"$i >/dev/null
+ return 0
+ end
+
+ if commandline -ct | grep -- "^-"$i"\|^-[^-]*"$i >/dev/null
+ return 0
+ end
+ end
+
+ for i in $long_opt
+ if test -z $i
+ continue
+ end
+
+ if contains -- --$i (commandline -cpo)
+ return 0
+ end
+ end
+
+ return 1
+end
+