# Copyright (C) 2015, 2016 Mattias Andrée <maandree@member.fsf.org> # # Copying and distribution of this file, with or without modification, # are permitted in any medium without royalty provided the copyright # notice and this notice are preserved. This file is offered as-is, # without any warranty. #=== These rules are used for shell tab-completion using auto-auto-complete. ===# # Enables the rules: # shell Build tab-completion for all supported shells # bash Build GNU Bash tab-completion # fish Build fish tab-completion # zhs Build Z shell tab-completion # install-shell Install tab-completion for all supported shells # install-bash Install GNU Bash tab-completion # install-fish Install fish tab-completion # install-zsh Install Z shell tab-completion # # This file is ignored unless # _AUTO_COMPLETE is defined. # # _AUTO_COMPLETE shall list all commands that # have an auto-auto-complete. These should be # named src/$(COMMAND).auto-completion, where # $(COMMAND) is the command with the script. # If all auto-auto-complete scripts translations # named src/$(COMMAND).$(LOCALE).auto-completion, # SHELL_LOCALE can be set to install exactly # on translation in place of the non-translated # versions. # # Although not used by this file, you should # define _SHELL_LOCALES that lists all available # translations. (it is used by dist.mk.) # # You should also define _WITH_SHELL if you # want shell tab-completion unless the user # specifies otherwise. If you want it for # just some shells, define _WITH_$(SHELL) # for those shells instead of _WITH_SHELL. ifdef _AUTO_COMPLETE # HELP VARIABLES: # Include all that were not explicitly excluded? ifdef _WITH_SHELL _WITH_BASH = 1 _WITH_FISH = 1 _WITH_ZSH = 1 endif # Include for GNU Bash? ifdef WITH_BASH __WITH_BASH = 1 endif ifndef WITH_BASH ifndef WITHOUT_BASH ifdef _WITH_BASH __WITH_BASH = 1 endif endif endif # Include for fish? ifdef WITH_FISH __WITH_FISH = 1 endif ifndef WITH_FISH ifndef WITHOUT_FISH ifdef _WITH_FISH __WITH_FISH = 1 endif endif endif # Include for Z Shell? ifdef WITH_ZSH __WITH_ZSH = 1 endif ifndef WITH_ZSH ifndef WITHOUT_ZSH ifdef _WITH_ZSH __WITH_ZSH = 1 endif endif endif # WHEN TO BUILD, INSTALL, AND UNINSTALL: all: shell everything: shell install: install-shell install-doc: install-info install-dvi install-pdf install-ps install-html uninstall: uninstall-shell shell: install-shell: ifdef __WITH_BASH shell: bash install-shell: install-bash endif ifdef __WITH_FISH shell: fish install-shell: install-fish endif ifdef __WITH_ZSH shell: zsh install-shell: install-zsh endif # HELP VARIABLES: # Affixes on the source files. ifdef SHELL_LOCALE __AAC_L = .$(SHELL_LOCALE) endif __AAC = $(__AAC_L).auto-completion # Customised command name. ifdef COMMAND ifeq ($(shell $(PRINTF) '%s\n' $(COMMAND) | $(WC) -l),1) ifeq ($(shell $(PRINTF) '%s\n' $(_AUTO_COMPLETE) | $(WC) -l),1) __SHELL_COMMAND = "command=$(COMMAND)" endif endif endif # BUILD RULES: # Built tab-completion scripts for GNU Bash. .PHONY: bash bash: $(foreach F,$(_AUTO_COMPLETE),bin/$(F).bash-completion) # Built tab-completion scripts for fish. .PHONY: fish fish: $(foreach F,$(_AUTO_COMPLETE),bin/$(F).fish-completion) # Built tab-completion scripts for Z shell. .PHONY: zsh zsh: $(foreach F,$(_AUTO_COMPLETE),bin/$(F).zsh-completion) # Built a tab-completion script for GNU Bash. bin/%.bash-completion: $(v)src/%$(__AAC) @$(PRINTF_INFO) '\e[00;01;31mAUTO-AUTO-COMPLETE\e[34m %s\e[00m$A\n' "$@" @$(MKDIR) -p bin $(Q)$(AUTO_AUTO_COMPLETE) bash -o $@ -s $< $(__SHELL_COMMAND) #$Z @$(ECHO_EMPTY) # Built a tab-completion script for fish. bin/%.fish-completion: $(v)src/%$(__AAC) @$(PRINTF_INFO) '\e[00;01;31mAUTO-AUTO-COMPLETE\e[34m %s\e[00m$A\n' "$@" @$(MKDIR) -p bin $(Q)$(AUTO_AUTO_COMPLETE) fish -o $@ -s $< $(__SHELL_COMMAND) #$Z @$(ECHO_EMPTY) # Built a tab-completion script for Z shell. bin/%.zsh-completion: $(v)src/%$(__AAC) @$(PRINTF_INFO) '\e[00;01;31mAUTO-AUTO-COMPLETE\e[34m %s\e[00m$A\n' "$@" @$(MKDIR) -p bin $(Q)$(AUTO_AUTO_COMPLETE) zsh -o $@ -s $< $(__SHELL_COMMAND) #$Z @$(ECHO_EMPTY) # INSTALL RULES: # Install tab-completion scripts for GNU Bash. .PHONY: install-bash install-bash: $(foreach F,$(_AUTO_COMPLETE),bin/$(F).bash-completion) @$(PRINTF_INFO) '\e[00;01;31mINSTALL\e[34m %s\e[00m\n' "$@" $(Q)$(INSTALL_DIR) -- "$(DESTDIR)$(DATADIR)/bash-completion/completions" ifndef __SHELL_COMMAND $(Q)$(foreach F,$(_AUTO_COMPLETE),$(INSTALL_DATA) bin/$(F).bash-completion -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(F)" &&) $(TRUE) endif ifdef __SHELL_COMMAND $(Q)$(INSTALL_DATA) $^ -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(COMMAND)" endif @$(ECHO_EMPTY) # Install tab-completion scripts for fish. .PHONY: install-fish install-fish: $(foreach F,$(_AUTO_COMPLETE),bin/$(F).fish-completion) @$(PRINTF_INFO) '\e[00;01;31mINSTALL\e[34m %s\e[00m\n' "$@" $(Q)$(INSTALL_DIR) -- "$(DESTDIR)$(DATADIR)/fish/completions" ifndef __SHELL_COMMAND $(Q)$(foreach F,$(_AUTO_COMPLETE),$(INSTALL_DATA) bin/$(F).fish-completion -- "$(DESTDIR)$(DATADIR)/fish/completions/$(F).fish" &&) $(TRUE) endif ifdef __SHELL_COMMAND $(Q)$(INSTALL_DATA) $^ -- "$(DESTDIR)$(DATADIR)/fish/completions/$(COMMAND).fish" endif @$(ECHO_EMPTY) # Install tab-completion scripts for Z shell. .PHONY: install-zsh install-zsh: $(foreach F,$(_AUTO_COMPLETE),bin/$(F).zsh-completion) @$(PRINTF_INFO) '\e[00;01;31mINSTALL\e[34m %s\e[00m\n' "$@" $(Q)$(INSTALL_DIR) -- "$(DESTDIR)$(DATADIR)/zsh/site-functions" ifndef __SHELL_COMMAND $(Q)$(foreach F,$(_AUTO_COMPLETE),$(INSTALL_DATA) bin/$(F).zsh-completion -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(F)" &&) $(TRUE) endif ifdef __SHELL_COMMAND $(Q)$(INSTALL_DATA) $^ -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(COMMAND)" endif @$(ECHO_EMPTY) # UNINSTALL RULES: # Uninstall tab-completion. .PHONY: uninstall-shell uninstall-shell: ifndef __SHELL_COMMAND -$(Q)$(RM) -- $(foreach F,$(_AUTO_COMPLETE),"$(DESTDIR)$(DATADIR)/bash-completion/completions/$(F)") -$(Q)$(RM) -- $(foreach F,$(_AUTO_COMPLETE),"$(DESTDIR)$(DATADIR)/fish/completions/$(F).fish") -$(Q)$(RM) -- $(foreach F,$(_AUTO_COMPLETE),"$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(F)") endif ifdef __SHELL_COMMAND -$(Q)$(RM) -- "$(DESTDIR)$(DATADIR)/bash-completion/completions/$(COMMAND)" -$(Q)$(RM) -- "$(DESTDIR)$(DATADIR)/fish/completions/$(COMMAND).fish" -$(Q)$(RM) -- "$(DESTDIR)$(DATADIR)/zsh/site-functions/_$(COMMAND)" endif endif