|
|
|
MAKEFLAGS += --warn-undefined-variables
|
|
|
|
|
|
|
|
install_path = /usr/local/bin
|
|
|
|
links_path = ~/.shellrc/bin/scripts
|
|
|
|
local_man_path = ~/.shellrc/var/man/man1
|
|
|
|
system_man_path = /usr/local/share/man/man1
|
|
|
|
|
|
|
|
SRC := scripts
|
|
|
|
MAN := man
|
|
|
|
|
|
|
|
find := $(shell { command -v gfind || command -v find; } 2>&-)
|
|
|
|
|
|
|
|
SCRIPTS := $(wildcard $(SRC)/kubectl-*)
|
|
|
|
MAN_PAGES := $(subst $(SRC),$(MAN),$(basename $(wildcard $(SRC)/kubectl-*)))
|
|
|
|
MAN_FILES := $(addsuffix ".1", $(MAN_PAGES))
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
# install_files [FILES] TO/
|
|
|
|
define install_files
|
|
|
|
@for file in $(1); do \
|
|
|
|
echo install -m $(3) $$(realpath -- $$file) $(2)/$$(basename $$file); \
|
|
|
|
install -m $(3) $$(realpath -- $$file) $(2)/$$(basename $$file); \
|
|
|
|
done
|
|
|
|
endef
|
|
|
|
|
|
|
|
# link_files [FILES] TO/
|
|
|
|
define link_files
|
|
|
|
@for file in $(1); do \
|
|
|
|
ln -f -s -v $$(realpath -- $$file) $(2)/$$(basename $$file); \
|
|
|
|
done
|
|
|
|
endef
|
|
|
|
|
|
|
|
# delete_files [FILES] FROM/
|
|
|
|
define delete_files
|
|
|
|
@for file in $(1); do \
|
|
|
|
rm -v $(2)/$$(basename $$file) || :; \
|
|
|
|
done
|
|
|
|
endef
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
help: ## Display this help.
|
|
|
|
@awk 'BEGIN { \
|
|
|
|
FS = ":.*##"; \
|
|
|
|
printf "\nUsage:\n make \033[36m<target>\033[0m\n\nTargets:\n" \
|
|
|
|
} \
|
|
|
|
/^[a-zA-Z_-]+:.*?##/ { \
|
|
|
|
printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 \
|
|
|
|
} \
|
|
|
|
END { \
|
|
|
|
print \
|
|
|
|
}' \
|
|
|
|
$(MAKEFILE_LIST)
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
man: $(MAN_PAGES) ## Generate man pages.
|
|
|
|
links: make_local_dirs make_links link_man_pages ## Install kubectl scripts by creating links.
|
|
|
|
install: copy_bin copy_man_pages ## Install kubectl scripts to /usr/local/bin.
|
|
|
|
uninstall: rm_bin rm_links rm_man_pages rm_man_links rm_local_dirs ## Uninstall kubectl scripts.
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
%: $(BIN)/%
|
|
|
|
$(MAN)/%: $(SRC)/%
|
|
|
|
pod2man --section 1 --release "1.0.0" --center "KUBECTL EXTENSIONS" $< > $@.1
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
make_man_directory:
|
|
|
|
@mkdir -p $(system_man_path)
|
|
|
|
|
|
|
|
copy_bin:
|
|
|
|
$(call install_files, $(SCRIPTS), $(install_path), 755)
|
|
|
|
|
|
|
|
rm_bin:
|
|
|
|
$(call delete_files, $(SCRIPTS), $(install_path))
|
|
|
|
|
|
|
|
copy_man_pages: make_man_directory
|
|
|
|
$(call install_files, $(MAN_FILES), $(system_man_path), 644)
|
|
|
|
|
|
|
|
rm_man_pages: make_man_directory
|
|
|
|
$(call delete_files, $(MAN_FILES), $(system_man_path))
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
make_local_dirs:
|
|
|
|
mkdir -p -v $(links_path)
|
|
|
|
mkdir -p -v $(local_man_path)
|
|
|
|
|
|
|
|
rm_local_dirs:
|
|
|
|
rmdir $(links_path) 2>&-; :
|
|
|
|
rmdir $(local_man_path) 2>&-; :
|
|
|
|
|
|
|
|
make_links:
|
|
|
|
$(call link_files, $(SCRIPTS), $(links_path))
|
|
|
|
|
|
|
|
rm_links:
|
|
|
|
$(call delete_files, $(SCRIPTS), $(links_path))
|
|
|
|
|
|
|
|
link_man_pages:
|
|
|
|
$(call link_files, $(MAN_FILES), $(local_man_path))
|
|
|
|
|
|
|
|
rm_man_links:
|
|
|
|
$(call delete_files, $(MAN_FILES), $(local_man_path))
|
|
|
|
|
|
|
|
# --------------------------------------------------------------------------------------------------
|
|
|
|
|
|
|
|
.PHONY: all make_local_dirs rm_local_dirs links install uninstall
|
|
|
|
|