Makefile 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. .PHONY: fmt lint test unit generate crd client deepcopy informer lister gen-docs e2e
  2. PROJECT := kilo
  3. PKG := github.com/squat/$(PROJECT)
  4. GO_FILES ?= $$(find . -name '*.go' -not -path './vendor/*')
  5. GO_PKGS ?= $$(go list ./... | grep -v "$(PKG)/vendor")
  6. generate: client deepcopy informer lister crd
  7. crd: manifests/crds.yaml
  8. manifests/crds.yaml: pkg/k8s/apis/kilo/v1alpha1/types.go
  9. go tool controller-gen crd \
  10. paths=./pkg/k8s/apis/kilo/... \
  11. output:crd:stdout > $@
  12. yamlfmt --formatter indentless_arrays=true manifests/crds.yaml
  13. client: pkg/k8s/clientset/versioned/typed/kilo/v1alpha1/peer.go
  14. pkg/k8s/clientset/versioned/typed/kilo/v1alpha1/peer.go: .header pkg/k8s/apis/kilo/v1alpha1/types.go
  15. go tool client-gen \
  16. --clientset-name versioned \
  17. --input-base "" \
  18. --input $(PKG)/pkg/k8s/apis/kilo/v1alpha1 \
  19. --output-base $(CURDIR) \
  20. --output-package $(PKG)/pkg/k8s/clientset \
  21. --go-header-file=.header \
  22. --logtostderr
  23. rm -r pkg/k8s/clientset || true
  24. mv $(PKG)/pkg/k8s/clientset pkg/k8s
  25. rm -r github.com || true
  26. go fmt ./pkg/k8s/clientset/...
  27. deepcopy: pkg/k8s/apis/kilo/v1alpha1/zz_generated.deepcopy.go
  28. pkg/k8s/apis/kilo/v1alpha1/zz_generated.deepcopy.go: .header pkg/k8s/apis/kilo/v1alpha1/types.go
  29. go tool deepcopy-gen \
  30. --input-dirs ./$(@D) \
  31. --go-header-file=.header \
  32. --logtostderr \
  33. --output-base $(CURDIR) \
  34. --output-file-base zz_generated.deepcopy
  35. mv $(PKG)/$@ $@ || true
  36. rm -r github.com || true
  37. go fmt $@
  38. informer: pkg/k8s/informers/kilo/v1alpha1/peer.go
  39. pkg/k8s/informers/kilo/v1alpha1/peer.go: .header pkg/k8s/apis/kilo/v1alpha1/types.go
  40. go tool informer-gen \
  41. --input-dirs $(PKG)/pkg/k8s/apis/kilo/v1alpha1 \
  42. --go-header-file=.header \
  43. --logtostderr \
  44. --versioned-clientset-package $(PKG)/pkg/k8s/clientset/versioned \
  45. --listers-package $(PKG)/pkg/k8s/listers \
  46. --output-base $(CURDIR) \
  47. --output-package $(PKG)/pkg/k8s/informers \
  48. --single-directory
  49. rm -r pkg/k8s/informers || true
  50. mv $(PKG)/pkg/k8s/informers pkg/k8s
  51. rm -r github.com || true
  52. go fmt ./pkg/k8s/informers/...
  53. lister: pkg/k8s/listers/kilo/v1alpha1/peer.go
  54. pkg/k8s/listers/kilo/v1alpha1/peer.go: .header pkg/k8s/apis/kilo/v1alpha1/types.go
  55. go tool lister-gen \
  56. --input-dirs $(PKG)/pkg/k8s/apis/kilo/v1alpha1 \
  57. --go-header-file=.header \
  58. --logtostderr \
  59. --output-base $(CURDIR) \
  60. --output-package $(PKG)/pkg/k8s/listers
  61. rm -r pkg/k8s/listers || true
  62. mv $(PKG)/pkg/k8s/listers pkg/k8s
  63. rm -r github.com || true
  64. go fmt ./pkg/k8s/listers/...
  65. gen-docs: generate docs/api.md docs/kg.md
  66. docs/api.md: pkg/k8s/apis/kilo/v1alpha1/types.go
  67. go run ./cmd/docs-gen/... $< > $@
  68. fmt:
  69. @echo $(GO_PKGS)
  70. gofmt -w -s $(GO_FILES)
  71. lint:
  72. pre-commit run --all
  73. unit:
  74. go test -mod=vendor --race ./...
  75. test: lint unit e2e
  76. e2e:
  77. KILO_IMAGE=squat/kilo:test bash_unit $(BASH_UNIT_FLAGS) ./e2e/setup.sh ./e2e/full-mesh.sh ./e2e/location-mesh.sh ./e2e/multi-cluster.sh ./e2e/handlers.sh ./e2e/kgctl.sh ./e2e/teardown.sh
  78. docs/kg.md:
  79. go run ./cmd/kg/... --help | head -n -2 > help.txt
  80. go tool embedmd -w docs/kg.md
  81. website/docs/README.md: README.md
  82. rm -rf website/static/img/graphs
  83. find docs -type f -name '*.md' | xargs -I{} sh -c 'cat $(@D)/$$(basename {} .md) > website/{}'
  84. find docs -type f -name '*.md' | xargs -I{} sh -c 'cat {} >> website/{}'
  85. cat $(@D)/$$(basename $@ .md) > $@
  86. cat README.md >> $@
  87. cp -r docs/graphs website/static/img/
  88. sed -i 's/\.\/docs\///g' $@
  89. find $(@D) -type f -name '*.md' | xargs -I{} sed -i 's/\.\/\(.\+\.\(svg\|png\)\)/\/img\/\1/g' {}
  90. sed -i 's/graphs\//\/img\/graphs\//g' $@
  91. # The next line is a workaround until mdx, docusaurus' markdown parser, can parse links with preceding brackets.
  92. sed -i 's/\[\]\(\[.*\](.*)\)/\&#91;\&#93;\1/g' website/docs/api.md
  93. website/build/index.html: website/docs/README.md docs/api.md
  94. yarn --cwd website install
  95. yarn --cwd website build