generated from mattermost/mattermost-plugin-starter-template
-
Notifications
You must be signed in to change notification settings - Fork 150
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* remove build folder + makefile includes * clean makefile from plugin related commands + remove modd.conf * webpack config cleanup * removed gitpod and gitlan-ci config files * remvoe plugin manifest and expose productId + simplify test env * remove graphqlCheck + rename getproductID --------- Co-authored-by: Jesse Hallam <[email protected]>
- Loading branch information
1 parent
c01f915
commit 1719aab
Showing
40 changed files
with
181 additions
and
3,327 deletions.
There are no files selected for viewing
This file was deleted.
Oops, something went wrong.
This file was deleted.
Oops, something went wrong.
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,15 +1,6 @@ | ||
GO ?= $(shell command -v go 2> /dev/null) | ||
GOFLAGS ?= $(GOFLAGS:) | ||
NPM ?= $(shell command -v npm 2> /dev/null) | ||
CURL ?= $(shell command -v curl 2> /dev/null) | ||
MM_DEBUG ?= | ||
GOPATH ?= $(shell go env GOPATH) | ||
GO_TEST_FLAGS ?= -race | ||
GO_BUILD_FLAGS ?= | ||
MM_UTILITIES_DIR ?= ../mattermost-utilities | ||
DLV_DEBUG_PORT := 2346 | ||
DEFAULT_GOOS := $(shell go env GOOS) | ||
DEFAULT_GOARCH := $(shell go env GOARCH) | ||
|
||
export GO111MODULE=on | ||
|
||
|
@@ -24,24 +15,10 @@ ASSETS_DIR ?= assets | |
.PHONY: default | ||
default: all | ||
|
||
# Verify environment, and define PLUGIN_ID, PLUGIN_VERSION, HAS_SERVER and HAS_WEBAPP as needed. | ||
include build/setup.mk | ||
|
||
BUNDLE_NAME ?= $(PLUGIN_ID)-$(PLUGIN_VERSION).tar.gz | ||
|
||
# Include custom makefile, if present | ||
ifneq ($(wildcard build/custom.mk),) | ||
include build/custom.mk | ||
endif | ||
|
||
## Checks the code style, tests, builds and bundles the plugin. | ||
.PHONY: all | ||
all: check-style test dist | ||
all: check-style test | ||
|
||
## Propagates plugin manifest information into the server/ and webapp/ folders. | ||
.PHONY: apply | ||
apply: | ||
./build/bin/manifest apply | ||
|
||
prebuild: ## Run prebuild actions (install dependencies etc.). | ||
cd webapp; NODE_ENV=development npm install --ignore-scripts --no-save --legacy-peer-deps | ||
|
@@ -52,322 +29,107 @@ install-go-tools: | |
$(GO) install github.com/golangci/golangci-lint/cmd/[email protected] | ||
$(GO) install github.com/golang/mock/[email protected] | ||
$(GO) install gotest.tools/[email protected] | ||
$(GO) install github.com/cortesi/modd/cmd/modd@latest | ||
|
||
## Runs eslint and golangci-lint | ||
.PHONY: check-style | ||
check-style: apply webapp/node_modules tests-e2e/node_modules install-go-tools | ||
check-style: webapp/node_modules tests-e2e/node_modules server-lint | ||
@echo Checking for style guide compliance | ||
|
||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && npm run lint | ||
cd webapp && npm run check-types | ||
endif | ||
|
||
cd tests-e2e && npm run check | ||
|
||
# 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),) | ||
## Runs golangci-lint | ||
.PHONY: server-lint | ||
server-lint: install-go-tools | ||
@echo Running golangci-lint | ||
$(GO) vet ./... | ||
$(GOBIN)/golangci-lint run ./... | ||
endif | ||
|
||
|
||
## Fix JS file ESLint issues | ||
.PHONY: fix-style | ||
fix-style: apply webapp/node_modules tests-e2e/node_modules | ||
fix-style: webapp/node_modules tests-e2e/node_modules | ||
@echo Fixing lint issues to follow style guide | ||
|
||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && npm run fix | ||
endif | ||
cd tests-e2e && npm run fix | ||
|
||
|
||
## 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),) | ||
cd server && $(GO) build $(GO_BUILD_FLAGS) -o dist/plugin-$(DEFAULT_GOOS)-$(DEFAULT_GOARCH); | ||
else | ||
cd server && env GOOS=linux GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-linux-amd64; | ||
cd server && env GOOS=linux GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-linux-arm64; | ||
cd server && env GOOS=darwin GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-darwin-amd64; | ||
cd server && env GOOS=darwin GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-darwin-arm64; | ||
cd server && env GOOS=windows GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -trimpath -o dist/plugin-windows-amd64.exe; | ||
endif | ||
else | ||
$(info DEBUG mode is on; to disable, unset MM_DEBUG) | ||
ifneq ($(MM_SERVICESETTINGS_ENABLEDEVELOPER),) | ||
cd server && $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-$(DEFAULT_GOOS)-$(DEFAULT_GOARCH); | ||
cd server && ./dist/plugin-$(DEFAULT_GOOS)-$(DEFAULT_GOARCH) graphqlcheck | ||
else | ||
cd server && env GOOS=darwin GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-darwin-amd64; | ||
cd server && env GOOS=darwin GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-darwin-arm64; | ||
cd server && env GOOS=linux GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-linux-amd64; | ||
cd server && env GOOS=linux GOARCH=arm64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-linux-arm64; | ||
cd server && env GOOS=windows GOARCH=amd64 $(GO) build $(GO_BUILD_FLAGS) -gcflags "all=-N -l" -trimpath -o dist/plugin-windows-amd64.exe; | ||
endif | ||
endif | ||
endif | ||
|
||
## Ensures NPM dependencies are installed without having to run this all the time. | ||
webapp/node_modules: $(wildcard webapp/package.json) | ||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && node skip_integrity_check.js | ||
cd webapp && $(NPM) install --ignore-scripts --legacy-peer-deps | ||
touch $@ | ||
endif | ||
|
||
## Ensures NPM dependencies are installed without having to run this all the time. | ||
tests-e2e/node_modules: $(wildcard tests-e2e/package.json) | ||
ifneq ($(HAS_WEBAPP),) | ||
cd tests-e2e && $(NPM) install | ||
touch $@ | ||
endif | ||
|
||
## Builds the webapp, if it exists. | ||
.PHONY: webapp | ||
webapp: webapp/node_modules | ||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && $(NPM) run graphql; | ||
ifeq ($(MM_DEBUG),) | ||
cd webapp && $(NPM) run build; | ||
else | ||
cd webapp && $(NPM) run debug; | ||
endif | ||
endif | ||
|
||
## Generates a tar bundle of the plugin for install. | ||
.PHONY: bundle | ||
bundle: | ||
rm -rf dist/ | ||
mkdir -p dist/$(PLUGIN_ID) | ||
./build/bin/manifest dist | ||
ifneq ($(wildcard $(ASSETS_DIR)/.),) | ||
cp -r $(ASSETS_DIR) dist/$(PLUGIN_ID)/ | ||
endif | ||
ifneq ($(HAS_PUBLIC),) | ||
cp -r public dist/$(PLUGIN_ID)/public/ | ||
endif | ||
ifneq ($(HAS_SERVER),) | ||
mkdir -p dist/$(PLUGIN_ID)/server | ||
cp -r server/dist dist/$(PLUGIN_ID)/server/ | ||
endif | ||
ifneq ($(HAS_WEBAPP),) | ||
mkdir -p dist/$(PLUGIN_ID)/webapp | ||
cp -r webapp/dist dist/$(PLUGIN_ID)/webapp/ | ||
endif | ||
ifeq ($(shell uname),Darwin) | ||
cd dist && tar --disable-copyfile -cvzf $(BUNDLE_NAME) $(PLUGIN_ID) | ||
else | ||
cd dist && tar -cvzf $(BUNDLE_NAME) $(PLUGIN_ID) | ||
endif | ||
|
||
@echo plugin built at: dist/$(BUNDLE_NAME) | ||
|
||
## Builds and bundles the plugin. | ||
.PHONY: dist | ||
dist: apply server webapp bundle | ||
|
||
## Builds and installs the plugin to a server. | ||
.PHONY: deploy | ||
deploy: dist upload-to-server | ||
|
||
## Builds and installs the plugin to a server, updating the plugin automatically when changed. | ||
.PHONY: watch | ||
watch: apply install-go-tools bundle upload-to-server | ||
$(GOBIN)/modd | ||
|
||
## Watch mode for webapp side | ||
.PHONY: watch-webapp | ||
watch-webapp: | ||
ifeq ($(MM_DEBUG),) | ||
cd webapp && $(NPM) run build:watch | ||
else | ||
cd webapp && $(NPM) run debug:watch | ||
endif | ||
|
||
.PHONY: build-product | ||
build-product: apply | ||
build-product: | ||
cd webapp && npm run build:product | ||
|
||
.PHONY: watch-product | ||
watch-product: apply | ||
watch-product: | ||
cd webapp && npm run start:product | ||
|
||
## Builds and installs the plugin to a server, then starts the webpack dev server on 9005 | ||
.PHONY: dev | ||
dev: apply server bundle webapp/node_modules | ||
cd webapp && $(NPM) run dev-server | ||
|
||
## Installs a previous built plugin with updated webpack assets to a server. | ||
.PHONY: deploy-from-watch | ||
deploy-from-watch: bundle upload-to-server | ||
|
||
.PHONY: upload-to-server | ||
upload-to-server: | ||
./build/bin/pluginctl deploy $(PLUGIN_ID) dist/$(BUNDLE_NAME) | ||
|
||
## Setup dlv for attaching, identifying the plugin PID for other targets. | ||
.PHONY: setup-attach | ||
setup-attach: | ||
$(eval PLUGIN_PID := $(shell ps aux | grep "plugins/${PLUGIN_ID}" | grep -v "grep" | awk -F " " '{print $$2}')) | ||
$(eval NUM_PID := $(shell echo -n ${PLUGIN_PID} | wc -w)) | ||
|
||
@if [ ${NUM_PID} -gt 2 ]; then \ | ||
echo "** There is more than 1 plugin process running. Run 'make kill reset' to restart just one."; \ | ||
exit 1; \ | ||
fi | ||
|
||
## Check if setup-attach succeeded. | ||
.PHONY: check-attach | ||
check-attach: | ||
@if [ -z ${PLUGIN_PID} ]; then \ | ||
echo "Could not find plugin PID; the plugin is not running. Exiting."; \ | ||
exit 1; \ | ||
else \ | ||
echo "Located Plugin running with PID: ${PLUGIN_PID}"; \ | ||
fi | ||
|
||
## Attach dlv to an existing plugin instance. | ||
.PHONY: attach | ||
attach: setup-attach check-attach | ||
dlv attach ${PLUGIN_PID} | ||
|
||
## Attach dlv to an existing plugin instance, exposing a headless instance on $DLV_DEBUG_PORT. | ||
.PHONY: attach-headless | ||
attach-headless: setup-attach check-attach | ||
dlv attach ${PLUGIN_PID} --listen :$(DLV_DEBUG_PORT) --headless=true --api-version=2 --accept-multiclient | ||
|
||
## Detach dlv from an existing plugin instance, if previously attached. | ||
.PHONY: detach | ||
detach: setup-attach | ||
@DELVE_PID=$(shell ps aux | grep "dlv attach ${PLUGIN_PID}" | grep -v "grep" | awk -F " " '{print $$2}') && \ | ||
if [ "$$DELVE_PID" -gt 0 ] > /dev/null 2>&1 ; then \ | ||
echo "Located existing delve process running with PID: $$DELVE_PID. Killing." ; \ | ||
kill -9 $$DELVE_PID ; \ | ||
fi | ||
|
||
## Runs any lints and unit tests defined for the server and webapp, if they exist. | ||
.PHONY: test | ||
test: apply webapp/node_modules install-go-tools | ||
ifneq ($(HAS_SERVER),) | ||
test: webapp/node_modules install-go-tools | ||
$(GOBIN)/gotestsum -- -v ./... | ||
endif | ||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && $(NPM) run test; | ||
endif | ||
|
||
## 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),) | ||
test-ci: webapp/node_modules install-go-tools | ||
$(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: apply webapp/node_modules | ||
ifneq ($(HAS_SERVER),) | ||
coverage: webapp/node_modules | ||
$(GO) test $(GO_TEST_FLAGS) -coverprofile=server/coverage.txt ./server/... | ||
$(GO) tool cover -html=server/coverage.txt | ||
endif | ||
|
||
## Extract strings for translation from the source code. | ||
.PHONY: i18n-extract | ||
i18n-extract: i18n-extract-webapp i18n-extract-server | ||
|
||
i18n-extract-webapp: | ||
ifneq ($(HAS_WEBAPP),) | ||
cd webapp && $(NPM) run extract | ||
endif | ||
|
||
i18n-extract-server: | ||
ifneq ($(HAS_SERVER),) | ||
$(GO) install -modfile=go.tools.mod github.com/mattermost/mattermost-utilities/mmgotool | ||
mkdir -p server/i18n | ||
cp assets/i18n/en.json server/i18n/en.json | ||
cd server && $(GOBIN)/mmgotool i18n extract --portal-dir="" --skip-dynamic | ||
mv server/i18n/en.json assets/i18n/en.json | ||
rmdir server/i18n | ||
endif | ||
|
||
## Exit on empty translation strings and translation source strings | ||
i18n-check: | ||
ifneq ($(HAS_SERVER),) | ||
$(GO) install -modfile=go.tools.mod github.com/mattermost/mattermost-utilities/mmgotool | ||
mkdir -p server/i18n | ||
cp assets/i18n/en.json server/i18n/en.json | ||
cd server && $(GOBIN)/mmgotool i18n clean-empty --portal-dir="" --check | ||
cd server && $(GOBIN)/mmgotool i18n check-empty-src --portal-dir="" | ||
rmdir server/i18n | ||
endif | ||
|
||
## Disable the plugin. | ||
.PHONY: disable | ||
disable: detach | ||
./build/bin/pluginctl disable $(PLUGIN_ID) | ||
|
||
## Enable the plugin. | ||
.PHONY: enable | ||
enable: | ||
./build/bin/pluginctl enable $(PLUGIN_ID) | ||
|
||
## Generate derived types from schema files | ||
.PHONY: graphql | ||
graphql: | ||
cd webapp && npm run graphql | ||
|
||
|
||
## Reset the plugin, effectively disabling and re-enabling it on the server. | ||
.PHONY: reset | ||
reset: detach | ||
./build/bin/pluginctl reset $(PLUGIN_ID) | ||
|
||
## Kill all instances of the plugin, detaching any existing dlv instance. | ||
.PHONY: kill | ||
kill: detach | ||
$(eval PLUGIN_PID := $(shell ps aux | grep "plugins/${PLUGIN_ID}" | grep -v "grep" | awk -F " " '{print $$2}')) | ||
|
||
@for PID in ${PLUGIN_PID}; do \ | ||
echo "Killing plugin pid $$PID"; \ | ||
kill -9 $$PID; \ | ||
done; \ | ||
|
||
## Clean removes all build artifacts. | ||
.PHONY: clean | ||
clean: | ||
rm -fr dist/ | ||
ifneq ($(HAS_SERVER),) | ||
rm -fr server/coverage.txt | ||
rm -fr server/dist | ||
endif | ||
ifneq ($(HAS_WEBAPP),) | ||
rm -fr webapp/junit.xml | ||
rm -fr webapp/dist | ||
rm -fr webapp/node_modules | ||
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) | ||
|
||
# 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 | ||
@cat Makefile | 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.