aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--DEPENDENCIES1
-rw-r--r--Makefile34
-rw-r--r--TODO1
-rw-r--r--src/completion39
4 files changed, 73 insertions, 2 deletions
diff --git a/DEPENDENCIES b/DEPENDENCIES
index 11e3096..af01046 100644
--- a/DEPENDENCIES
+++ b/DEPENDENCIES
@@ -1,4 +1,5 @@
https://github.com/maandree/libkeccak
https://github.com/maandree/argparser
+https://github.com/maandree/auto-auto-complete
libc
diff --git a/Makefile b/Makefile
index 364f3c0..7d37b36 100644
--- a/Makefile
+++ b/Makefile
@@ -29,9 +29,15 @@ CMDS = keccak-224sum keccak-256sum keccak-384sum keccak-512sum keccaksum \
+.PHONY: default
+default: command shell
+
.PHONY: all
-all: $(foreach C,$(CMDS),bin/$(C))
+all: command shell
+
+.PHONY: command
+commands: $(foreach C,$(CMDS),bin/$(C))
bin/%: obj/%.o obj/common.o
@mkdir -p bin
@@ -42,6 +48,32 @@ obj/%.o: src/%.c src/*.h
$(CC) $(FLAGS) $(COPTIMISE) -c -o $@ $< $(CFLAGS) $(CPPFLAGS)
+.PHONY: shell
+shell: bash zsh fish
+
+.PHONY: bash
+bash: $(foreach C,$(CMDS),bin/$(C).bash)
+
+.PHONY: zsh
+zsh: $(foreach C,$(CMDS),bin/$(C).zsh)
+
+.PHONY: fish
+fish: $(foreach C,$(CMDS),bin/$(C).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:
-rm -r bin obj
diff --git a/TODO b/TODO
index 4c2b664..f9a984d 100644
--- a/TODO
+++ b/TODO
@@ -1,3 +1,2 @@
-use auto-auto-complete
write manuals
diff --git a/src/completion b/src/completion
new file mode 100644
index 0000000..fdc9852
--- /dev/null
+++ b/src/completion
@@ -0,0 +1,39 @@
+; sha3sum – SHA-3 (Keccak) checksum calculator
+;
+; Copyright © 2013, 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 -U --upper --uppercase --upper-case) (complete --upper-case) (desc 'Use upper-case output'))
+ ((options -L --lower --lowercase --lower-case) (complete --lower-case) (desc 'Use lower-case output'))
+ ((options -B --binary) (complete --binary) (desc 'Use binary output'))
+ ((options -X --hex --hex-input) (complete --hex-input) (desc 'Use hexadecimal input'))
+ ((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'))
+ ((options -z --squeezes) (complete --squeezes) (arg COUNT) (files -0) (desc 'Select squeeze count'))
+ )
+)
+