Makefile 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. .PHONY: help
  2. help:
  3. @echo "Please use \`make <target>' where <target> is one of"
  4. @echo "man build only man user documentation"
  5. @echo "html build only html user documentation"
  6. @echo "docs build both man and html user documentation"
  7. @echo "check-manpages check for manpage in types"
  8. @echo "lint run shellcheck on types"
  9. @echo "check run both type manpage checks and linting"
  10. @echo "clean clean"
  11. DOCS_SRC_DIR=./docs/src
  12. TYPEDIR=./type
  13. SPHINXM=make -C $(DOCS_SRC_DIR) man
  14. SPHINXH=make -C $(DOCS_SRC_DIR) html
  15. SPHINXC=make -C $(DOCS_SRC_DIR) clean
  16. ################################################################################
  17. # Manpages
  18. #
  19. MAN7DSTDIR=$(DOCS_SRC_DIR)/man7
  20. # Use shell / ls to get complete list - $(TYPEDIR)/*/man.rst does not work
  21. # Using ls does not work if no file with given pattern exist, so use wildcard
  22. MANTYPESRC=$(wildcard $(TYPEDIR)/*/man.rst)
  23. MANTYPEPREFIX=$(subst $(TYPEDIR)/,$(MAN7DSTDIR)/cdist-type,$(MANTYPESRC))
  24. MANTYPES=$(subst /man.rst,.rst,$(MANTYPEPREFIX))
  25. # Link manpage: do not create man.html but correct named file
  26. $(MAN7DSTDIR)/cdist-type%.rst: $(TYPEDIR)/%/man.rst
  27. mkdir -p $(MAN7DSTDIR)
  28. ln -sf "../../../$^" $@
  29. DOCSINDEX=$(MAN7DSTDIR)/index.rst
  30. DOCSINDEXH=$(DOCS_SRC_DIR)/index.rst.sh
  31. $(DOCSINDEX): $(DOCSINDEXH)
  32. $(DOCSINDEXH)
  33. # Manpages: .cdist Types
  34. DOT_CDIST_PATH=${HOME}/.cdist
  35. DOTMAN7DSTDIR=$(MAN7DSTDIR)
  36. DOTTYPEDIR=$(DOT_CDIST_PATH)/type
  37. # Link manpage: do not create man.html but correct named file
  38. $(DOTMAN7DSTDIR)/cdist-type%.rst: $(DOTTYPEDIR)/%/man.rst
  39. ln -sf "$^" $@
  40. man: $(MANTYPES) $(DOCSINDEX)
  41. $(SPHINXM)
  42. html: $(MANTYPES) $(DOCSINDEX)
  43. $(SPHINXH)
  44. docs: man html
  45. check-manpages:
  46. ./scripts/run-manpage-checks.sh
  47. lint:
  48. ./scripts/run-shellcheck.sh
  49. check: check-manpages lint
  50. clean:
  51. $(SPHINXC)
  52. rm -f docs/src/index.rst
  53. rm -rf docs/src/man7/
  54. rm -rf docs/src/__pycache__/