|
1 |
| -export prefix?=$(HOME)/.local |
2 |
| -export bindir?=$(prefix)/bin |
| 1 | +#? https://www.gnu.org/prep/standards/html_node/DESTDIR.html |
| 2 | +export DESTDIR ?= |
| 3 | +export PREFIX ?= $(HOME)/.local |
| 4 | + |
| 5 | +.default: info |
| 6 | + |
| 7 | +# ------------------------------------------------------------------------------ |
3 | 8 |
|
4 | 9 | MKFILE_PATH := $(abspath $(lastword $(MAKEFILE_LIST)))
|
5 | 10 | CURRENT_DIR := $(patsubst %/,%,$(dir $(MKFILE_PATH)))
|
| 11 | +HOST_OS := $(shell uname -s) |
| 12 | +HOST_ARCH := $(shell uname -m) |
6 | 13 |
|
7 |
| -ZSH_PROMPT_SETUP_SCRIPT := $(CURRENT_DIR)/plugin/zsh/prompt_asynczle_setup.zsh |
| 14 | +GORELEASER_VERSION := v2.0.1 |
| 15 | +GORELEASER_TAR_URL := https://github.com/goreleaser/goreleaser/releases/download/$(GORELEASER_VERSION)/goreleaser_$(HOST_OS)_$(HOST_ARCH).tar.gz |
8 | 16 |
|
9 |
| -USR_BIN_DIR := $(HOME)/bin |
10 |
| -USR_ZSH_DIR := $(HOME)/.local/share/zsh-funcs |
| 17 | +GORELEASER := ./.goreleaser |
11 | 18 |
|
12 |
| -.PHONY: publish |
13 |
| -publish: |
14 |
| - goreleaser release --rm-dist |
| 19 | +GO_FILES = $(sort $(shell find . -type f -name '*.go') go.mod go.sum) |
| 20 | +STATIC_FILES = $(sort $(shell find ./plugin -type f)) |
| 21 | +GORELEASER_FILES = $(sort .goreleaser .goreleaser.yaml) |
15 | 22 |
|
16 |
| -.PHONY: release |
17 |
| -release: |
18 |
| - goreleaser release --rm-dist --snapshot --skip-publish |
| 23 | +# ------------------------------------------------------------------------------ |
| 24 | + |
| 25 | +BUILD_DIST ?= dist |
| 26 | +BUILD_GORELEASER_BIN ?= $(BUILD_DIST)/goreleaser |
| 27 | + |
| 28 | +INSTALL_BIN_DIR ?= $(DESTDIR)$(PREFIX)/bin |
| 29 | +INSTALL_ZSH_FUNCS_DIR ?= $(DESTDIR)$(PREFIX)/share/zsh-funcs |
| 30 | + |
| 31 | +# ------------------------------------------------------------------------------ |
| 32 | + |
| 33 | +.PNONY: info |
| 34 | +info: |
| 35 | + @echo "OS: $(HOST_OS)" |
| 36 | + @echo "ARCH: $(HOST_ARCH)" |
| 37 | + @echo |
| 38 | + @echo "PREFIX: $(PREFIX)" |
| 39 | + @echo "INSTALL_BIN_DIR: $(INSTALL_BIN_DIR)" |
| 40 | + @echo "INSTALL_ZSH_FUNCS_DIR: $(INSTALL_ZSH_FUNCS_DIR)" |
| 41 | + |
| 42 | +$(GORELEASER): |
| 43 | + sh scripts/fetch-goreleaser.sh "$(GORELEASER_TAR_URL)" "$(GORELEASER)" |
19 | 44 |
|
20 |
| -.PHONY: build |
21 |
| -build: |
22 |
| - goreleaser build --rm-dist --snapshot --single-target --output dist/goprompt |
| 45 | +$(INSTALL_BIN_DIR) $(INSTALL_ZSH_FUNCS_DIR): |
| 46 | + mkdir -p $@ |
23 | 47 |
|
24 |
| -.PHONY: install |
25 |
| -install: build |
26 |
| - mkdir -p "$(USR_BIN_DIR)" |
27 |
| - cp dist/goprompt "$(USR_BIN_DIR)/goprompt" |
| 48 | +# ------------------------------------------------------------------------------ |
| 49 | + |
| 50 | +.PHONY: clean build install release publish |
28 | 51 |
|
29 |
| -.PHONY: clean |
30 | 52 | clean:
|
31 | 53 | rm -rf dist
|
| 54 | + |
| 55 | +build: $(BUILD_GORELEASER_BIN) |
| 56 | + |
| 57 | +install: $(BUILD_GORELEASER_BIN) $(INSTALL_BIN_DIR) $(INSTALL_ZSH_FUNCS_DIR) |
| 58 | + cp "$(BUILD_GORELEASER_BIN)" "$(INSTALL_BIN_DIR)/goprompt" |
| 59 | + |
| 60 | +$(BUILD_GORELEASER_BIN): $(GO_FILES) $(STATIC_FILES) $(GORELEASER_FILES) |
| 61 | + $(GORELEASER) build --clean --snapshot --single-target \ |
| 62 | + --id goreleaser \ |
| 63 | + --output "$(BUILD_GORELEASER_BIN)" |
| 64 | + |
| 65 | +release: |
| 66 | + $(GORELEASER) release --clean --auto-snapshot --skip=publish |
| 67 | + |
| 68 | +publish: |
| 69 | + $(GORELEASER) release --clean |
0 commit comments