diff --git a/.gitignore b/.gitignore index 5becaf99..74d89dd3 100644 --- a/.gitignore +++ b/.gitignore @@ -55,6 +55,22 @@ stamp-h* *.tmp ChangeLog +doc/tools/cardos-tool +doc/tools/cryptoflex-tool +doc/tools/eidenv +doc/tools/iasecc-tool +doc/tools/netkey-tool +doc/tools/openpgp-tool +doc/tools/opensc-explorer +doc/tools/opensc-tool +doc/tools/piv-tool +doc/tools/pkcs11-tool +doc/tools/pkcs15-crypt +doc/tools/pkcs15-init +doc/tools/pkcs15-tool +doc/tools/sc-hsm-tool +doc/tools/westcos-tool + etc/opensc.conf.win etc/opensc.conf src/common/compat_getopt_main diff --git a/doc/tools/Makefile.am b/doc/tools/Makefile.am index fb514fb3..aa0862ee 100644 --- a/doc/tools/Makefile.am +++ b/doc/tools/Makefile.am @@ -10,6 +10,9 @@ man1_MANS = $(patsubst $(srcdir)/%.xml, %, $(wildcard $(srcdir)/*.1.xml)) man5_MANS = $(patsubst $(srcdir)/%.xml, %, $(wildcard $(srcdir)/*.5.xml)) endif +completion_DATA = $(patsubst $(srcdir)/%.1.xml, %, $(wildcard $(srcdir)/*.1.xml)) +completiondir = $(sysconfdir)/bash_completion.d + tools.html: $(srcdir)/tools.xml $(wildcard $(srcdir)/*.1.xml) $(wildcard $(srcdir)/*.5.xml) $(XSLTPROC) --nonet --path "$(srcdir)/..:$(xslstylesheetsdir)/html" --xinclude -o $@ html.xsl $< @@ -21,5 +24,21 @@ tools.html: $(srcdir)/tools.xml $(wildcard $(srcdir)/*.1.xml) $(wildcard $(srcdi sed -e 's|@pkgdatadir[@]|$(pkgdatadir)|g' < $< \ | $(XSLTPROC) --nonet --path "$(srcdir)/..:$(xslstylesheetsdir)/manpages" --xinclude -o $@ man.xsl $< +%: $(srcdir)/%.1.xml + echo $< $@ + cat completion-template \ + | sed "s,ALLOPTS,\ + $(shell sed -n 's,\s\s\s*.*,\1,pg' $< \ + | sort -u | grep -- '^\-' | tr '\n' ' ')," \ + | sed "s,OPTSWITHARGS,\ + $(shell sed -n 's,\s\s\s*.*.*,\1,pg' $< \ + | sort -u | grep -- '^\-' | tr '\n' '|' | sed 's,|$$,,')," \ + | sed "s,FILEOPTS,\ + $(shell sed -n 's,\s\s\s*.*.*filename.*,\1,pg' $< \ + | sort -u | grep -- '^\-' | tr '\n' '|')," \ + | sed "s,FUNCTION_NAME,$(shell echo $@ | sed s,-,_,g)," \ + | sed "s,PROGRAM_NAME,$@," \ + > $@ + clean-local: - -rm -rf $(html_DATA) $(man1_MANS) $(man5_MANS) + -rm -rf $(html_DATA) $(man1_MANS) $(man5_MANS) $(completion_DATA) diff --git a/doc/tools/completion-template b/doc/tools/completion-template new file mode 100644 index 00000000..e0796b62 --- /dev/null +++ b/doc/tools/completion-template @@ -0,0 +1,45 @@ +# this was auto-generated by OpenSC/doc/tools/Makefile.am +_FUNCTION_NAME() +{ + COMPREPLY=() + local cur prev split=false + _get_comp_words_by_ref cur prev + + _split_longopt && split=true + + opts="ALLOPTS" + + if [ ${COMP_CWORD} -eq 1 ]; then + COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) + return 0 + fi + + case "${prev}" in + OPTSWITHARGS) + return 0 + ;; + *) + COMPREPLY=($(compgen -W "${opts}" -- ${cur})) + return 0 + ;; + esac + + $split && return 0 + + if [[ "$cur" == -* ]]; then + _longopt $1 + return + fi + + _filedir +} +complete -F _FUNCTION_NAME PROGRAM_NAME + + +# Local variables: +# mode: shell-script +# sh-basic-offset: 4 +# sh-indent-comment: t +# indent-tabs-mode: nil +# End: +# ex: ts=4 sw=4 et filetype=sh