forked from bufbuild/buf
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbase.mk
76 lines (63 loc) · 1.8 KB
/
base.mk
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
SHELL := /usr/bin/env bash -o pipefail
ifndef PROJECT
$(error PROJECT is not set)
endif
ifndef GO_MODULE
$(error GO_MODULE is not set)
endif
UNAME_OS := $(shell uname -s)
UNAME_ARCH := $(shell uname -m)
ENV_DIR := .env
ENV_SH := $(ENV_DIR)/env.sh
ENV_BACKUP_DIR := $(HOME)/.config/$(PROJECT)/env
ifndef CACHE_BASE
CACHE_BASE := $(HOME)/.cache/$(PROJECT)
endif
CACHE := $(CACHE_BASE)/$(UNAME_OS)/$(UNAME_ARCH)
CACHE_BIN := $(CACHE)/bin
CACHE_INCLUDE := $(CACHE)/include
CACHE_VERSIONS := $(CACHE)/versions
CACHE_ENV := $(CACHE)/env
CACHE_GO := $(CACHE)/go
TMP := .tmp
export GO111MODULE := on
ifdef GOPRIVATE
export GOPRIVATE := $(GOPRIVATE),$(GO_MODULE)
else
export GOPRIVATE := $(GO_MODULE)
endif
export GOPATH := $(abspath $(CACHE_GO))
export GOBIN := $(abspath $(CACHE_BIN))
export PATH := $(GOBIN):$(PATH)
.PHONY: envbackup
envbackup:
rm -rf "$(ENV_BACKUP_DIR)"
mkdir -p "$(dir $(ENV_BACKUP_DIR))"
cp -R "$(ENV_DIR)" "$(ENV_BACKUP_DIR)"
.PHONY: envrestore
envrestore:
@ if [ ! -d "$(ENV_BACKUP_DIR)" ]; then echo "no backup stored in $(ENV_BACKUP_DIR)"; exit 1; fi
rm -rf "$(ENV_DIR)"
cp -R "$(ENV_BACKUP_DIR)" "$(ENV_DIR)"
.PHONY: direnv
direnv:
@mkdir -p $(CACHE_ENV)
@rm -f $(CACHE_ENV)/env.sh
@echo 'export GO111MODULE="$(GO111MODULE)"' >> $(CACHE_ENV)/env.sh
@echo 'export GOPRIVATE="$(GOPRIVATE)"' >> $(CACHE_ENV)/env.sh
@echo 'export GOPATH="$(GOPATH)"' >> $(CACHE_ENV)/env.sh
@echo 'export GOBIN="$(GOBIN)"' >> $(CACHE_ENV)/env.sh
@echo 'export PATH="$(GOBIN):$${PATH}"' >> $(CACHE_ENV)/env.sh
@echo '[ -f "$(abspath $(ENV_SH))" ] && . "$(abspath $(ENV_SH))"' >> $(CACHE_ENV)/env.sh
@echo $(CACHE_ENV)/env.sh
.PHONY: clean
clean:
git clean -xdf -e /$(ENV_DIR)/
.PHONY: cleancache
cleancache:
rm -rf $(CACHE_BASE)
.PHONY: nuke
nuke: clean cleancache
sudo rm -rf $(CACHE_GO)/pkg/mod
.PHONY: deps
deps::