Makefile 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. define delete-files
  2. python -c "import shutil;shutil.rmtree('$(1)', ignore_errors=True)"
  3. endef
  4. compile: daemon-compile-currentenv
  5. daemon-compile-currentenv:
  6. go build -o OliveTin github.com/OliveTin/OliveTin/cmd/OliveTin
  7. daemon-compile-armhf:
  8. go env -w GOARCH=arm GOARM=6
  9. go build -o OliveTin.armhf github.com/OliveTin/OliveTin/cmd/OliveTin
  10. go env -u GOARCH GOARM
  11. daemon-compile-x64-lin:
  12. go env -w GOOS=linux
  13. go build -o OliveTin github.com/OliveTin/OliveTin/cmd/OliveTin
  14. go env -u GOOS
  15. daemon-compile-x64-win:
  16. go env -w GOOS=windows GOARCH=amd64
  17. go build -o OliveTin.exe github.com/OliveTin/OliveTin/cmd/OliveTin
  18. go env -u GOOS GOARCH
  19. daemon-compile: daemon-compile-armhf daemon-compile-x64-lin daemon-compile-x64-win
  20. daemon-codestyle:
  21. go fmt ./...
  22. go vet ./...
  23. gocyclo -over 4 cmd internal
  24. gocritic check ./...
  25. daemon-unittests:
  26. $(call delete-files,reports)
  27. mkdir reports
  28. go test ./... -coverprofile reports/unittests.out
  29. go tool cover -html=reports/unittests.out -o reports/unittests.html
  30. it:
  31. cd integration-tests && make
  32. githooks:
  33. git config --local core.hooksPath .githooks
  34. go-tools:
  35. go install "github.com/bufbuild/buf/cmd/buf"
  36. go install "github.com/fzipp/gocyclo/cmd/gocyclo"
  37. go install "github.com/go-critic/go-critic/cmd/gocritic"
  38. go install "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-grpc-gateway"
  39. go install "github.com/grpc-ecosystem/grpc-gateway/v2/protoc-gen-openapiv2"
  40. go install "google.golang.org/grpc/cmd/protoc-gen-go-grpc"
  41. go install "google.golang.org/protobuf/cmd/protoc-gen-go"
  42. grpc: go-tools
  43. buf generate
  44. dist: protoc
  45. protoc:
  46. protoc --go_out=. --go-grpc_out=. --grpc-gateway_out=. -I .:/usr/include/ OliveTin.proto
  47. podman-image:
  48. buildah bud -t olivetin
  49. podman-container:
  50. podman kill olivetin || true
  51. podman rm olivetin || true
  52. podman create --name olivetin -p 1337:1337 -v /etc/OliveTin/:/config:ro olivetin
  53. podman start olivetin
  54. integration-tests-docker-image:
  55. docker rm -f olivetin && docker rmi -f olivetin
  56. docker build -t olivetin:latest .
  57. docker create --name olivetin -p 1337:1337 -v `pwd`/integration-tests/configs/:/config/ olivetin
  58. devrun: compile
  59. killall OliveTin || true
  60. ./OliveTin &
  61. devcontainer: compile podman-image podman-container
  62. webui-codestyle:
  63. cd webui.dev && npm install
  64. cd webui.dev && npx eslint main.js js/*
  65. cd webui.dev && npx stylelint style.css
  66. webui-dist:
  67. $(call delete-files,webui)
  68. $(call delete-files,webui.dev/dist)
  69. cd webui.dev && npm install
  70. cd webui.dev && npx parcel build --public-url "."
  71. python -c "import shutil;shutil.move('webui.dev/dist', 'webui')"
  72. python -c "import shutil;import glob;[shutil.copy(f, 'webui') for f in glob.glob('webui.dev/*.png')]"
  73. clean:
  74. $(call delete-files,dist)
  75. $(call delete-files,OliveTin)
  76. $(call delete-files,OliveTin.armhf)
  77. $(call delete-files,OliveTin.exe)
  78. $(call delete-files,reports)
  79. $(call delete-files,gen)
  80. .PHONY: grpc