aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMattias Andrée <maandree@operamail.com>2014-12-03 10:57:37 +0100
committerMattias Andrée <maandree@operamail.com>2014-12-03 10:57:37 +0100
commit600af502aaedcc496ac3dc0771888de978f3e31c (patch)
treec5e496ea976bb602e232b55bfc664b16bb9fd049
parentchange license (diff)
downloadkrandom-600af502aaedcc496ac3dc0771888de978f3e31c.tar.gz
krandom-600af502aaedcc496ac3dc0771888de978f3e31c.tar.bz2
krandom-600af502aaedcc496ac3dc0771888de978f3e31c.tar.xz
add completion
Signed-off-by: Mattias Andrée <maandree@operamail.com>
-rw-r--r--Makefile29
-rw-r--r--src/completion33
2 files changed, 60 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index ba128c6..8efdab5 100644
--- a/Makefile
+++ b/Makefile
@@ -50,10 +50,10 @@ FLAGS = $(WARN) -std=gnu99
.PHONY: default
-default: command
+default: command shell
.PHONY: all
-all: command
+all: command shell
.PHONY: command
@@ -68,6 +68,31 @@ obj/%.o: src/%.c
$(CC) $(FLAGS) $(COPTIMISE) -c -o $@ $< $(CFLAGS) $(CPPFLAGS)
+.PHONY: shell
+shell: bash zsh fish
+
+.PHONY: bash
+bash: bin/$(COMMAND).bash
+
+.PHONY: zsh
+zsh: bin/$(COMMAND).zsh
+
+.PHONY: fish
+fish: bin/$(COMMAND).fish
+
+bin/%.bash: src/completion
+ @mkdir -p bin
+ auto-auto-complete bash --output $@ --source $< command="$*"
+
+bin/%.zsh: src/completion
+ @mkdir -p bin
+ auto-auto-complete zsh --output $@ --source $< command="$*"
+
+bin/%.fish: src/completion
+ @mkdir -p bin
+ auto-auto-complete fish --output $@ --source $< command="$*"
+
+
.PHONY: clean
clean:
diff --git a/src/completion b/src/completion
new file mode 100644
index 0000000..8af4b9d
--- /dev/null
+++ b/src/completion
@@ -0,0 +1,33 @@
+; krandom – Keccak-based userspace pseudorandom number generator
+; Copyright © 2014 Mattias Andrée (maandree@member.fsf.org)
+;
+; This program is free software: you can redistribute it and/or modify
+; it under the terms of the GNU Affero General Public License as published by
+; the Free Software Foundation, either version 3 of the License, or
+; (at your option) any later version.
+;
+; This program is distributed in the hope that it will be useful,
+; but WITHOUT ANY WARRANTY; without even the implied warranty of
+; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+; GNU Affero General Public License for more details.
+;
+; You should have received a copy of the GNU Affero General Public License
+; along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+
+((value command)
+
+ (multiple unargumented
+ ((options -h --help) (complete --help) (desc 'Display option summary'))
+ ((options -v --verbose) (complete --verbose) (desc 'Be verbose'))
+ )
+
+ (multiple argumented
+ ((options -R --bitrate --rate) (complete --rate) (arg RATE) (files -0) (desc 'Select rate'))
+ ((options -C --capacity) (complete --capacity) (arg CAPACITY) (files -0) (desc 'Select capacity'))
+ ((options -N -O --output-size --output) (complete --output-size) (arg SIZE) (files -0) (desc 'Select output size'))
+ ((options -S -B --state-size --state) (complete --state-size) (arg SIZE) (files -0) (desc 'Select state size'))
+ ((options -W --word-size --word) (complete --word-size) (arg SIZE) (files -0) (desc 'Select word size'))
+ )
+)
+