-
Notifications
You must be signed in to change notification settings - Fork 30
/
Makefile
119 lines (92 loc) · 3.63 KB
/
Makefile
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
#
# Makefile for resticprofile
#
GOCMD=go
GOBUILD=$(GOCMD) build
GORUN=$(GOCMD) run
GOCLEAN=$(GOCMD) clean
GOTEST=$(GOCMD) test
GOTOOL=$(GOCMD) tool
GOGET=$(GOCMD) get
GOPATH?=`$(GOCMD) env GOPATH`
BINARY=resticprofile
BINARY_DARWIN=$(BINARY)_darwin
BINARY_LINUX=$(BINARY)_linux
BINARY_PI=$(BINARY)_pi
BINARY_WINDOWS=$(BINARY).exe
TESTS=./...
COVERAGE_FILE=coverage.out
BUILD=build/
RESTIC_VERSION=0.9.6
GO_VERSION=1.14
BUILD_DATE=`date`
BUILD_COMMIT=`git rev-parse HEAD`
TMP_MOUNT_LINUX=/tmp/backup
TMP_MOUNT_DARWIN=/Volumes/RAMDisk
TMP_MOUNT=
UNAME := $(shell uname -s)
ifeq ($(UNAME),Linux)
TMP_MOUNT=${TMP_MOUNT_LINUX}
endif
ifeq ($(UNAME),Darwin)
TMP_MOUNT=${TMP_MOUNT_DARWIN}
endif
.PHONY: all test test-ci build build-mac build-linux build-windows build-all coverage clean test-docker build-docker ramdisk passphrase rest-server nightly toc
all: test build
build:
$(GOBUILD) -o $(BINARY) -v -ldflags "-X 'main.commit=${BUILD_COMMIT}' -X 'main.date=${BUILD_DATE}' -X 'main.builtBy=make'"
build-mac:
GOOS="darwin" GOARCH="amd64" $(GOBUILD) -o $(BINARY_DARWIN) -v -ldflags "-X 'main.commit=${BUILD_COMMIT}' -X 'main.date=${BUILD_DATE}' -X 'main.builtBy=make'"
build-linux:
GOOS="linux" GOARCH="amd64" $(GOBUILD) -o $(BINARY_LINUX) -v -ldflags "-X 'main.commit=${BUILD_COMMIT}' -X 'main.date=${BUILD_DATE}' -X 'main.builtBy=make'"
build-pi:
GOOS="linux" GOARCH="arm" GOARM="6" $(GOBUILD) -o $(BINARY_PI) -v -ldflags "-X 'main.commit=${BUILD_COMMIT}' -X 'main.date=${BUILD_DATE}' -X 'main.builtBy=make'"
build-windows:
GOOS="windows" GOARCH="amd64" $(GOBUILD) -o $(BINARY_WINDOWS) -v -ldflags "-X 'main.commit=${BUILD_COMMIT}' -X 'main.date=${BUILD_DATE}' -X 'main.builtBy=make'"
build-all: build-mac build-linux build-windows
test:
$(GOTEST) -v $(TESTS)
test-ci:
$(GOTEST) -v -short ./...
$(GOTEST) -v ./priority
coverage:
$(GOTEST) -coverprofile=$(COVERAGE_FILE) $(TESTS)
$(GOTOOL) cover -html=$(COVERAGE_FILE)
clean:
$(GOCLEAN)
rm -rf $(BINARY) $(BINARY_DARWIN) $(BINARY_LINUX) $(BINARY_PI) $(BINARY_WINDOWS) $(COVERAGE_FILE) restic_*_linux_amd64* ${BUILD}restic* dist/*
test-docker:
docker run --rm -v "${GOPATH}":/go -w /go/src/creativeprojects/resticprofile golang:${GO_VERSION} $(GOTEST) -v $(TESTS)
build-docker: clean
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux $(GOBUILD) -v -ldflags "-X 'main.commit=${BUILD_COMMIT}' -X 'main.date=${BUILD_DATE}' -X 'main.builtBy=make'" -o ${BUILD}$(BINARY) .
curl -LO https://github.com/restic/restic/releases/download/v${RESTIC_VERSION}/restic_${RESTIC_VERSION}_linux_amd64.bz2
bunzip2 restic_${RESTIC_VERSION}_linux_amd64.bz2
mv restic_${RESTIC_VERSION}_linux_amd64 ${BUILD}restic
chmod +x ${BUILD}restic
cd ${BUILD}; docker build --pull --tag creativeprojects/resticprofile .
ramdisk: ${TMP_MOUNT}
# Fixed size ramdisk for mac OS X
${TMP_MOUNT_DARWIN}:
# blocks = 512B so it's creating a 2GB fixed size disk image
diskutil erasevolume HFS+ RAMDisk `hdiutil attach -nomount ram://4194304`
# Mount tmpfs on linux
${TMP_MOUNT_LINUX}:
mkdir -p ${TMP_MOUNT_LINUX}
sudo mount -t tmpfs -o "rw,relatime,size=2097152k" tmpfs ${TMP_MOUNT_LINUX}
passphrase:
head -c 1024 /dev/urandom | base64
rest-server:
REST_IMAGE=restic/rest-server
REST_CONTAINER=rest_server
REST_DATA=/tmp/restic
REST_OPTIONS=""
docker pull ${REST_IMAGE}
docker run -d -p 8000:8000 -v ${REST_DATA}:/data --name ${REST_CONTAINER} --restart always -e "OPTIONS=${REST_OPTIONS}" ${REST_IMAGE}
nightly:
go install github.com/goreleaser/goreleaser
go mod tidy
goreleaser --snapshot --skip-publish --rm-dist
toc:
go install github.com/ekalinin/github-markdown-toc.go
go mod tidy
cat README.md | github-markdown-toc.go --hide-footer