GOPATH ?= $(shell go env GOPATH) GOBIN ?= $(GOPATH)/bin BINARY = muyue BUILD_DIR = . GO = go NODE ?= node NPM ?= npm WEB_DIR = web EXT_DIR = extension .PHONY: build install clean test test-short run scan fmt lint build-all deps vet frontend dev-desktop ext ext-chrome ext-firefox ext-zip frontend: cd $(WEB_DIR) && $(NPM) ci && $(NPM) run build build: frontend $(GO) build -o $(BUILD_DIR)/$(BINARY) ./cmd/muyue/ install: build cp $(BUILD_DIR)/$(BINARY) /usr/local/bin/ install-local: build mkdir -p $(HOME)/.local/bin cp $(BUILD_DIR)/$(BINARY) $(HOME)/.local/bin/ clean: rm -f $(BUILD_DIR)/$(BINARY) rm -rf $(WEB_DIR)/dist rm -rf $(WEB_DIR)/node_modules test: $(GO) test ./... -v -count=1 test-short: $(GO) test ./... -v -short -count=1 -timeout 60s vet: $(GO) vet ./... run: build ./$(BINARY) desktop: build ./$(BINARY) desktop dev-desktop: cd $(WEB_DIR) && $(NPM) run dev scan: build ./$(BINARY) scan fmt: gofmt -w . which goimports > /dev/null 2>&1 && goimports -w . || true lint: which golangci-lint > /dev/null 2>&1 && golangci-lint run || true build-all: frontend GOOS=linux GOARCH=amd64 $(GO) build -o dist/$(BINARY)-linux-amd64 ./cmd/muyue/ GOOS=linux GOARCH=arm64 $(GO) build -o dist/$(BINARY)-linux-arm64 ./cmd/muyue/ GOOS=darwin GOARCH=amd64 $(GO) build -o dist/$(BINARY)-darwin-amd64 ./cmd/muyue/ GOOS=darwin GOARCH=arm64 $(GO) build -o dist/$(BINARY)-darwin-arm64 ./cmd/muyue/ GOOS=windows GOARCH=amd64 $(GO) build -o dist/$(BINARY)-windows-amd64.exe ./cmd/muyue/ GOOS=windows GOARCH=arm64 $(GO) build -o dist/$(BINARY)-windows-arm64.exe ./cmd/muyue/ ext: cd $(EXT_DIR) && $(NPM) ci && $(NPM) run build && $(NPM) run build:firefox ext-chrome: cd $(EXT_DIR) && $(NPM) ci && $(NPM) run build ext-firefox: cd $(EXT_DIR) && $(NPM) ci && $(NPM) run build:firefox ext-zip: cd $(EXT_DIR) && $(NPM) ci && $(NPM) run zip && $(NPM) run zip:firefox deps: $(GO) mod tidy