Saltstack Official Home Assistant Formula
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

119 lines
5.1KB

  1. DESTDIR=/
  2. SALTENVDIR=/usr/share/salt-formulas/env
  3. RECLASSDIR=/usr/share/salt-formulas/reclass
  4. FORMULANAME=$(shell grep name: metadata.yml|head -1|cut -d : -f 2|grep -Eo '[a-z0-9\-\_]*')
  5. VERSION=$(shell grep version: metadata.yml|head -1|cut -d : -f 2|grep -Eo '[a-z0-9\.\-\_]*')
  6. VERSION_MAJOR := $(shell echo $(VERSION)|cut -d . -f 1-2)
  7. VERSION_MINOR := $(shell echo $(VERSION)|cut -d . -f 3)
  8. NEW_MAJOR_VERSION ?= $(shell date +%Y.%m|sed 's,\.0,\.,g')
  9. NEW_MINOR_VERSION ?= $(shell /bin/bash -c 'echo $$[ $(VERSION_MINOR) + 1 ]')
  10. MAKE_PID := $(shell echo $$PPID)
  11. JOB_FLAG := $(filter -j%, $(subst -j ,-j,$(shell ps T | grep "^\s*$(MAKE_PID).*$(MAKE)")))
  12. ifneq ($(subst -j,,$(JOB_FLAG)),)
  13. JOBS := $(subst -j,,$(JOB_FLAG))
  14. else
  15. JOBS := 1
  16. endif
  17. KITCHEN_LOCAL_YAML?=.kitchen.yml
  18. KITCHEN_OPTS?="--concurrency=$(JOBS)"
  19. KITCHEN_OPTS_CREATE?=""
  20. KITCHEN_OPTS_CONVERGE?=""
  21. KITCHEN_OPTS_VERIFY?=""
  22. KITCHEN_OPTS_TEST?=""
  23. all:
  24. @echo "make install - Install into DESTDIR"
  25. @echo "make test - Run tests"
  26. @echo "make kitchen - Run Kitchen CI tests (create, converge, verify)"
  27. @echo "make clean - Cleanup after tests run"
  28. @echo "make release-major - Generate new major release"
  29. @echo "make release-minor - Generate new minor release"
  30. @echo "make changelog - Show changes since last release"
  31. install:
  32. # Formula
  33. [ -d $(DESTDIR)/$(SALTENVDIR) ] || mkdir -p $(DESTDIR)/$(SALTENVDIR)
  34. cp -a $(FORMULANAME) $(DESTDIR)/$(SALTENVDIR)/
  35. [ ! -d _modules ] || cp -a _modules $(DESTDIR)/$(SALTENVDIR)/
  36. [ ! -d _states ] || cp -a _states $(DESTDIR)/$(SALTENVDIR)/ || true
  37. [ ! -d _grains ] || cp -a _grains $(DESTDIR)/$(SALTENVDIR)/ || true
  38. # Metadata
  39. [ -d $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME) ] || mkdir -p $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
  40. cp -a metadata/service/* $(DESTDIR)/$(RECLASSDIR)/service/$(FORMULANAME)
  41. test:
  42. [ ! -d tests ] || (cd tests; ./run_tests.sh)
  43. release-major: check-changes
  44. @echo "Current version is $(VERSION), new version is $(NEW_MAJOR_VERSION)"
  45. @[ $(VERSION_MAJOR) != $(NEW_MAJOR_VERSION) ] || (echo "Major version $(NEW_MAJOR_VERSION) already released, nothing to do. Do you want release-minor?" && exit 1)
  46. echo "$(NEW_MAJOR_VERSION)" > VERSION
  47. sed -i 's,version: .*,version: "$(NEW_MAJOR_VERSION)",g' metadata.yml
  48. [ ! -f debian/changelog ] || dch -v $(NEW_MAJOR_VERSION) -m --force-distribution -D `dpkg-parsechangelog -S Distribution` "New version"
  49. make genchangelog-$(NEW_MAJOR_VERSION)
  50. (git add -u; git commit -m "Version $(NEW_MAJOR_VERSION)")
  51. git tag -s -m $(NEW_MAJOR_VERSION) $(NEW_MAJOR_VERSION)
  52. release-minor: check-changes
  53. @echo "Current version is $(VERSION), new version is $(VERSION_MAJOR).$(NEW_MINOR_VERSION)"
  54. echo "$(VERSION_MAJOR).$(NEW_MINOR_VERSION)" > VERSION
  55. sed -i 's,version: .*,version: "$(VERSION_MAJOR).$(NEW_MINOR_VERSION)",g' metadata.yml
  56. [ ! -f debian/changelog ] || dch -v $(VERSION_MAJOR).$(NEW_MINOR_VERSION) -m --force-distribution -D `dpkg-parsechangelog -S Distribution` "New version"
  57. make genchangelog-$(VERSION_MAJOR).$(NEW_MINOR_VERSION)
  58. (git add -u; git commit -m "Version $(VERSION_MAJOR).$(NEW_MINOR_VERSION)")
  59. git tag -s -m $(NEW_MAJOR_VERSION) $(VERSION_MAJOR).$(NEW_MINOR_VERSION)
  60. check-changes:
  61. @git log --pretty=oneline --decorate $(VERSION)..HEAD | grep -Eqc '.*' || (echo "No new changes since version $(VERSION)"; exit 1)
  62. changelog:
  63. git log --pretty=short --invert-grep --grep="Merge pull request" --decorate $(VERSION)..HEAD
  64. genchangelog: genchangelog-$(VERSION_MAJOR).$(NEW_MINOR_VERSION)
  65. genchangelog-%:
  66. $(eval NEW_VERSION := $(patsubst genchangelog-%,%,$@))
  67. (echo "=========\nChangelog\n=========\n"; \
  68. (echo $(NEW_VERSION);git tag) | sort -r | grep -E '^[0-9\.]+' | while read i; do \
  69. cur=$$i; \
  70. test $$i = $(NEW_VERSION) && i=HEAD; \
  71. prev=`(echo $(NEW_VERSION);git tag)|sort|grep -E '^[0-9\.]+'|grep -B1 "$$cur\$$"|head -1`; \
  72. echo "Version $$cur\n=============================\n"; \
  73. git log --pretty=short --invert-grep --grep="Merge pull request" --decorate $$prev..$$i; \
  74. echo; \
  75. done) > CHANGELOG.rst
  76. kitchen-check:
  77. @[ -e $(KITCHEN_LOCAL_YAML) ] || (echo "Kitchen tests not available, there's no $(KITCHEN_LOCAL_YAML)." && exit 1)
  78. kitchen: kitchen-check kitchen-create kitchen-converge kitchen-verify kitchen-list
  79. kitchen-create: kitchen-check
  80. kitchen create ${KITCHEN_OPTS} ${KITCHEN_OPTS_CREATE}
  81. [ "$(shell echo $(KITCHEN_LOCAL_YAML)|grep -Eo docker)" = "docker" ] || sleep 120
  82. kitchen-converge: kitchen-check
  83. kitchen converge ${KITCHEN_OPTS} ${KITCHEN_OPTS_CONVERGE} &&\
  84. kitchen converge ${KITCHEN_OPTS} ${KITCHEN_OPTS_CONVERGE}
  85. kitchen-verify: kitchen-check
  86. [ ! -d tests/integration ] || kitchen verify -t tests/integration ${KITCHEN_OPTS} ${KITCHEN_OPTS_VERIFY}
  87. [ -d tests/integration ] || kitchen verify ${KITCHEN_OPTS} ${KITCHEN_OPTS_VERIFY}
  88. kitchen-test: kitchen-check
  89. [ ! -d tests/integration ] || kitchen test -t tests/integration ${KITCHEN_OPTS} ${KITCHEN_OPTS_TEST}
  90. [ -d tests/integration ] || kitchen test ${KITCHEN_OPTS} ${KITCHEN_OPTS_TEST}
  91. kitchen-list: kitchen-check
  92. kitchen list
  93. clean:
  94. [ ! -x "$(shell which kitchen)" ] || kitchen destroy
  95. [ ! -d .kitchen ] || rm -rf .kitchen
  96. [ ! -d tests/build ] || rm -rf tests/build
  97. [ ! -d build ] || rm -rf build