aboutsummaryrefslogtreecommitdiffhomepage
path: root/init/functions/__fish_contains_opt.fish
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-02-08 19:20:05 +1000
committerGravatar axel <axel@liljencrantz.se>2006-02-08 19:20:05 +1000
commit73a9c8bcb8d3d8db967fcc5cc9dd5e8db645400f (patch)
tree13862f394dca16b0c9bae427f86fbbecdfc9ac03 /init/functions/__fish_contains_opt.fish
parent47b652c76e240e16875734f7ca251bab97ae6309 (diff)
Autoloaded functions
darcs-hash:20060208092005-ac50b-8e784f79a4e158c8c15b553fad85002dccc7bd03.gz
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
+