Makefile 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. SHELL=/usr/bin/env bash
  2. NAME=minify
  3. CMD=./cmd/minify
  4. TARGETS=linux_amd64 linux_arm64 darwin_amd64 darwin_arm64 freebsd_amd64 netbsd_amd64 openbsd_amd64 windows_amd64
  5. VERSION=`git describe --tags`
  6. FLAGS=-ldflags "-s -w -X 'main.Version=${VERSION}'" -trimpath
  7. ENVS=GO111MODULES=on CGO_ENABLED=0
  8. all: install
  9. install:
  10. echo "Installing ${VERSION}"
  11. ${ENVS} go install ${FLAGS} ./cmd/minify
  12. . cmd/minify/bash_completion
  13. release:
  14. TAG=$(shell git describe --tags --exact-match 2> /dev/null);
  15. if [ "${.SHELLSTATUS}" -eq 0 ]; then \
  16. echo "Releasing ${VERSION}"; \
  17. else \
  18. echo "ERROR: commit is not tagged with a version"; \
  19. echo ""; \
  20. exit 1; \
  21. fi
  22. rm -rf dist
  23. mkdir -p dist
  24. for t in ${TARGETS}; do \
  25. echo Building $$t...; \
  26. mkdir dist/$$t; \
  27. os=$$(echo $$t | cut -f1 -d_); \
  28. arch=$$(echo $$t | cut -f2 -d_); \
  29. ${ENVS} GOOS=$$os GOARCH=$$arch go build ${FLAGS} -o dist/$$t/${NAME} ${CMD}; \
  30. \
  31. cp LICENSE dist/$$t/.; \
  32. cp cmd/minify/README.md dist/$$t/.; \
  33. if [ "$$os" == "windows" ]; then \
  34. mv dist/$$t/${NAME} dist/$$t/${NAME}.exe; \
  35. zip -jq dist/${NAME}_$$t.zip dist/$$t/*; \
  36. cd dist; \
  37. sha256sum ${NAME}_$$t.zip >> checksums.txt; \
  38. cd ..; \
  39. else \
  40. cp cmd/minify/bash_completion dist/$$t/.; \
  41. cd dist/$$t; \
  42. tar -cf - * | gzip -9 > ../${NAME}_$$t.tar.gz; \
  43. cd ..; \
  44. sha256sum ${NAME}_$$t.tar.gz >> checksums.txt; \
  45. cd ..; \
  46. fi; \
  47. rm -rf dist/$$t; \
  48. done
  49. clean:
  50. echo "Cleaning dist/"
  51. rm -rf dist
  52. .PHONY: install release clean
  53. .SILENT: install release clean