-
Notifications
You must be signed in to change notification settings - Fork 36
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Sync build system. * Fix linter stuff.
- Loading branch information
Showing
45 changed files
with
275 additions
and
3,715 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,7 @@ | ||
bin/ | ||
dist/ | ||
webapp/src/manifest.ts | ||
server/manifest.go | ||
|
||
# Mac | ||
.DS_Store | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -19,7 +19,6 @@ linters: | |
disable-all: true | ||
enable: | ||
- bodyclose | ||
- errcheck | ||
- gocritic | ||
- gofmt | ||
- goimports | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -2,7 +2,6 @@ GO ?= $(shell command -v go 2> /dev/null) | |
NPM ?= $(shell command -v npm 2> /dev/null) | ||
CURL ?= $(shell command -v curl 2> /dev/null) | ||
MM_DEBUG ?= | ||
MANIFEST_FILE ?= plugin.json | ||
GOPATH ?= $(shell go env GOPATH) | ||
GO_TEST_FLAGS ?= -race | ||
GO_BUILD_FLAGS ?= | ||
|
@@ -11,10 +10,13 @@ DLV_DEBUG_PORT := 2346 | |
DEFAULT_GOOS := $(shell go env GOOS) | ||
DEFAULT_GOARCH := $(shell go env GOARCH) | ||
INCLUDE_FFMPEG ?= | ||
RELEASE_VERSION ?= | ||
|
||
export GO111MODULE=on | ||
|
||
# We need to export GOBIN to allow it to be set | ||
# for processes spawned from the Makefile | ||
export GOBIN ?= $(PWD)/bin | ||
|
||
# You can include assets this directory into the bundle. This can be e.g. used to include profile pictures. | ||
ASSETS_DIR ?= assets | ||
|
||
|
@@ -24,7 +26,6 @@ default: all | |
|
||
# Verify environment, and define PLUGIN_ID, PLUGIN_VERSION, HAS_SERVER and HAS_WEBAPP as needed. | ||
include build/setup.mk | ||
include build/legacy.mk | ||
|
||
BUNDLE_NAME ?= $(PLUGIN_ID)-$(PLUGIN_VERSION).tar.gz | ||
|
||
|
@@ -33,48 +34,63 @@ ifneq ($(wildcard build/custom.mk),) | |
include build/custom.mk | ||
endif | ||
|
||
ifneq ($(MM_DEBUG),) | ||
GO_BUILD_GCFLAGS = -gcflags "all=-N -l" | ||
else | ||
GO_BUILD_GCFLAGS = | ||
endif | ||
|
||
## Checks the code style, tests, builds and bundles the plugin. | ||
.PHONY: all | ||
all: check-style test dist | ||
|
||
## Runs eslint and typescript | ||
## Propagates plugin manifest information into the server/ and webapp/ folders. | ||
.PHONY: apply | ||
apply: | ||
./build/bin/manifest apply | ||
|
||
## Install go tools | ||
install-go-tools: | ||
@echo Installing go tools | ||
$(GO) install github.com/golangci/golangci-lint/cmd/[email protected] | ||
$(GO) install gotest.tools/[email protected] | ||
|
||
## Runs eslint and golangci-lint | ||
.PHONY: check-style | ||
check-style: webapp/node_modules | ||
check-style: apply webapp/node_modules install-go-tools | ||
@echo Checking for style guide compliance | ||
|
||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && npm run lint | ||
cd webapp && npm run check-types | ||
endif | ||
|
||
# It's highly recommended to run go-vet first | ||
# to find potential compile errors that could introduce | ||
# weird reports at golangci-lint step | ||
ifneq ($(HAS_SERVER),) | ||
@echo Running golangci-lint | ||
$(GO) vet ./... | ||
$(GOBIN)/golangci-lint run ./... | ||
endif | ||
|
||
## Builds the server, if it exists, for all supported architectures, unless MM_SERVICESETTINGS_ENABLEDEVELOPER is set. | ||
.PHONY: server | ||
server: | ||
ifneq ($(HAS_SERVER),) | ||
mkdir -p server/dist; | ||
ifeq ($(MM_DEBUG),) | ||
ifneq ($(MM_SERVICESETTINGS_ENABLEDEVELOPER),) | ||
@echo Building plugin only for $(DEFAULT_GOOS)-$(DEFAULT_GOARCH) because MM_SERVICESETTINGS_ENABLEDEVELOPER is enabled | ||
cd server && env CGO_ENABLED=0 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-$(DEFAULT_GOOS)-$(DEFAULT_GOARCH); | ||
else | ||
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-linux-amd64; | ||
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-linux-arm64; | ||
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-darwin-amd64; | ||
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-darwin-arm64; | ||
cd server && env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-windows-amd64.exe; | ||
endif | ||
else | ||
ifneq ($(MM_DEBUG),) | ||
$(info DEBUG mode is on; to disable, unset MM_DEBUG) | ||
endif | ||
mkdir -p server/dist; | ||
ifneq ($(MM_SERVICESETTINGS_ENABLEDEVELOPER),) | ||
@echo Building plugin only for $(DEFAULT_GOOS)-$(DEFAULT_GOARCH) because MM_SERVICESETTINGS_ENABLEDEVELOPER is enabled | ||
cd server && env CGO_ENABLED=0 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-$(DEFAULT_GOOS)-$(DEFAULT_GOARCH); | ||
cd server && env CGO_ENABLED=0 $(GO) build $(GO_BUILD_FLAGS) $(GO_BUILD_GCFLAGS) -trimpath -o dist/plugin-$(DEFAULT_GOOS)-$(DEFAULT_GOARCH); | ||
else | ||
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-linux-amd64; | ||
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-linux-arm64; | ||
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-darwin-amd64; | ||
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-darwin-arm64; | ||
cd server && env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-windows-amd64.exe; | ||
endif | ||
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) $(GO_BUILD_GCFLAGS) -trimpath -o dist/plugin-linux-amd64; | ||
cd server && env CGO_ENABLED=0 GOOS=linux GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) $(GO_BUILD_GCFLAGS) -trimpath -o dist/plugin-linux-arm64; | ||
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) $(GO_BUILD_GCFLAGS) -trimpath -o dist/plugin-darwin-amd64; | ||
cd server && env CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) $(GO_BUILD_GCFLAGS) -trimpath -o dist/plugin-darwin-arm64; | ||
cd server && env CGO_ENABLED=0 GOOS=windows GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) $(GO_BUILD_GCFLAGS) -trimpath -o dist/plugin-windows-amd64.exe; | ||
endif | ||
endif | ||
|
||
|
@@ -101,7 +117,7 @@ endif | |
bundle: | ||
rm -rf dist/ | ||
mkdir -p dist/$(PLUGIN_ID) | ||
cp $(MANIFEST_FILE) dist/$(PLUGIN_ID)/ | ||
./build/bin/manifest dist | ||
ifneq ($(wildcard $(ASSETS_DIR)/.),) | ||
cp -r $(ASSETS_DIR) dist/$(PLUGIN_ID)/ | ||
endif | ||
|
@@ -117,15 +133,15 @@ ifneq ($(HAS_WEBAPP),) | |
cp -r webapp/dist dist/$(PLUGIN_ID)/webapp/ | ||
endif | ||
ifneq ($(INCLUDE_FFMPEG),) | ||
cp $(INCLUDE_FFMPEG) dist/$(PLUGIN_ID)/server/dist/ | ||
cp $(INCLUDE_FFMPEG) dist/$(PLUGIN_ID)/server/dist | ||
endif | ||
cd dist && tar -cvzf $(BUNDLE_NAME) -C $(PLUGIN_ID) . | ||
cd dist && tar -cvzf $(BUNDLE_NAME) $(PLUGIN_ID) | ||
|
||
@echo plugin built at: dist/$(BUNDLE_NAME) | ||
|
||
## Builds and bundles the plugin. | ||
.PHONY: dist | ||
dist: server webapp bundle | ||
dist: apply server webapp bundle | ||
|
||
## Builds and installs the plugin to a server. | ||
.PHONY: deploy | ||
|
@@ -134,7 +150,7 @@ deploy: dist | |
|
||
## Builds and installs the plugin to a server, updating the webapp automatically when changed. | ||
.PHONY: watch | ||
watch: server bundle | ||
watch: apply server bundle | ||
ifeq ($(MM_DEBUG),) | ||
cd webapp && $(NPM) run build:watch | ||
else | ||
|
@@ -188,20 +204,28 @@ detach: setup-attach | |
|
||
## Runs any lints and unit tests defined for the server and webapp, if they exist. | ||
.PHONY: test | ||
test: webapp/node_modules | ||
test: apply webapp/node_modules install-go-tools | ||
ifneq ($(HAS_SERVER),) | ||
$(GO) test -v $(GO_TEST_FLAGS) ./server/... | ||
$(GOBIN)/gotestsum -- -v ./... | ||
endif | ||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && $(NPM) run test; | ||
endif | ||
ifneq ($(wildcard ./build/sync/plan/.),) | ||
cd ./build/sync && $(GO) test -v $(GO_TEST_FLAGS) ./... | ||
|
||
## Runs any lints and unit tests defined for the server and webapp, if they exist, optimized | ||
## for a CI environment. | ||
.PHONY: test-ci | ||
test-ci: apply webapp/node_modules install-go-tools | ||
ifneq ($(HAS_SERVER),) | ||
$(GOBIN)/gotestsum --format standard-verbose --junitfile report.xml -- ./... | ||
endif | ||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && $(NPM) run test; | ||
endif | ||
|
||
## Creates a coverage report for the server code. | ||
.PHONY: coverage | ||
coverage: webapp/node_modules | ||
coverage: apply webapp/node_modules | ||
ifneq ($(HAS_SERVER),) | ||
$(GO) test $(GO_TEST_FLAGS) -coverprofile=server/coverage.txt ./server/... | ||
$(GO) tool cover -html=server/coverage.txt | ||
|
@@ -258,31 +282,6 @@ ifneq ($(HAS_WEBAPP),) | |
endif | ||
rm -fr build/bin/ | ||
|
||
## Sync directory with a starter template | ||
sync: | ||
ifndef STARTERTEMPLATE_PATH | ||
@echo STARTERTEMPLATE_PATH is not set. | ||
@echo Set STARTERTEMPLATE_PATH to a local clone of https://github.com/mattermost/mattermost-plugin-starter-template and retry. | ||
@exit 1 | ||
endif | ||
cd ${STARTERTEMPLATE_PATH} && go run ./build/sync/main.go ./build/sync/plan.yml $(PWD) | ||
|
||
.PHONY: confirm | ||
confirm: | ||
@echo -n 'Are you sure? [y/N] ' && read ans && [ $${ans:-N} = y ] | ||
|
||
## Create and push a new release | ||
.PHONY: release | ||
release: confirm | ||
@git diff-index --quiet HEAD || (echo "Git not clean. Aborting."; exit 1) | ||
|
||
jq '.version = "${RELEASE_VERSION}"' plugin.json > plugin.json.new && mv plugin.json.new plugin.json | ||
git add . | ||
git commit -m "Update version to ${RELEASE_VERSION}" | ||
git push origin | ||
git tag -a v${RELEASE_VERSION} -m "v${RELEASE_VERSION}" | ||
git push origin v${RELEASE_VERSION} | ||
|
||
# Help documentation à la https://marmelab.com/blog/2016/02/29/auto-documented-makefile.html | ||
help: | ||
@cat Makefile build/*.mk | grep -v '\.PHONY' | grep -v '\help:' | grep -B1 -E '^[a-zA-Z0-9_.-]+:.*' | sed -e "s/:.*//" | sed -e "s/^## //" | grep -v '\-\-' | sed '1!G;h;$$!d' | awk 'NR%2{printf "\033[36m%-30s\033[0m",$$0;next;}1' | sort |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.