mirror of
https://github.com/larksuite/cli.git
synced 2026-07-03 14:02:43 +08:00
73 lines
2.5 KiB
Makefile
73 lines
2.5 KiB
Makefile
# Copyright (c) 2026 Lark Technologies Pte. Ltd.
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
BINARY := lark-cli
|
|
MODULE := github.com/larksuite/cli
|
|
VERSION := $(shell git describe --tags --always --dirty 2>/dev/null || echo dev)
|
|
DATE := $(shell date +%Y-%m-%d)
|
|
LDFLAGS := -s -w -X $(MODULE)/internal/build.Version=$(VERSION) -X $(MODULE)/internal/build.Date=$(DATE)
|
|
PREFIX ?= /usr/local
|
|
|
|
# -race is not supported on linux/riscv64 before Go 1.26.
|
|
RACE_FLAG := $(shell go env GOARCH | grep -qv '^riscv64$$' && echo '-race' || echo '')
|
|
|
|
.PHONY: all build vet fmt-check test unit-test integration-test examples-build install uninstall clean fetch_meta gitleaks
|
|
|
|
all: test
|
|
|
|
fetch_meta:
|
|
python3 scripts/fetch_meta.py
|
|
|
|
build: fetch_meta
|
|
go build -trimpath -ldflags "$(LDFLAGS)" -o $(BINARY) .
|
|
|
|
vet: fetch_meta
|
|
go vet ./...
|
|
|
|
# fmt-check fails when any file would be reformatted by gofmt. Keep this
|
|
# in sync with the fast-gate "Check formatting" step in CI.
|
|
fmt-check:
|
|
@unformatted=$$(gofmt -l . | grep -v '^\.claude/' || true); \
|
|
if [ -n "$$unformatted" ]; then \
|
|
echo "Unformatted Go files:"; \
|
|
echo "$$unformatted"; \
|
|
echo "Run 'gofmt -w .' and commit."; \
|
|
exit 1; \
|
|
fi
|
|
|
|
# ./extension/... keeps the public plugin SDK in the default test matrix.
|
|
unit-test: fetch_meta
|
|
go test $(RACE_FLAG) -gcflags="all=-N -l" -count=1 \
|
|
./cmd/... ./internal/... ./shortcuts/... ./extension/...
|
|
|
|
# examples-build keeps the shipped plugin-SDK examples compilable. If this
|
|
# breaks, the plugin author guide's "go build ./..." path is broken.
|
|
examples-build:
|
|
go build ./extension/platform/examples/audit-observer
|
|
go build ./extension/platform/examples/readonly-policy
|
|
|
|
integration-test: build
|
|
go test -v -count=1 ./tests/...
|
|
|
|
test: vet fmt-check unit-test examples-build integration-test
|
|
|
|
install: build
|
|
install -d $(PREFIX)/bin
|
|
install -m755 $(BINARY) $(PREFIX)/bin/$(BINARY)
|
|
@echo "OK: $(PREFIX)/bin/$(BINARY) ($(VERSION))"
|
|
|
|
uninstall:
|
|
rm -f $(PREFIX)/bin/$(BINARY)
|
|
|
|
clean:
|
|
rm -f $(BINARY)
|
|
|
|
# Run secret-leak checks locally before pushing.
|
|
# Step 1: check-doc-tokens catches realistic-looking example tokens in reference
|
|
# docs and asks you to use _EXAMPLE_TOKEN placeholders instead.
|
|
# Step 2: gitleaks scans the full repo for real leaked secrets.
|
|
# Install gitleaks: https://github.com/gitleaks/gitleaks#installing
|
|
gitleaks:
|
|
@bash scripts/check-doc-tokens.sh
|
|
@command -v gitleaks >/dev/null 2>&1 || { echo "gitleaks not found. Install: brew install gitleaks"; exit 1; }
|
|
gitleaks detect --redact -v --exit-code=2
|