forked from Shopify/ejson
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
139 lines (117 loc) · 3.87 KB
/
Makefile
File metadata and controls
139 lines (117 loc) · 3.87 KB
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
NAME=ejson
RUBY_MODULE=EJSON
PACKAGE=github.com/Shopify/ejson
VERSION=$(shell cat VERSION)
GEM=pkg/$(NAME)-$(VERSION).gem
AMD64_DEB=pkg/$(NAME)_$(VERSION)_amd64.deb
ARM64_DEB=pkg/$(NAME)_$(VERSION)_arm64.deb
GOFILES=$(shell find . -type f -name '*.go')
MANFILES=$(shell find man -name '*.ronn' -exec echo build/{} \; | sed 's/\.ronn/\.gz/')
BUNDLE_EXEC=bundle exec
SHELL=/usr/bin/env bash
export GO111MODULE=on
.PHONY: default all binaries gem man clean dev_bootstrap setup
default: all
all: setup gem deb
binaries: \
build/bin/linux-amd64 \
build/bin/linux-arm64 \
build/bin/darwin-amd64 \
build/bin/freebsd-amd64 \
build/bin/windows-amd64.exe
gem: $(GEM)
deb: $(AMD64_DEB) $(ARM64_DEB)
man: $(MANFILES)
build/man/%.gz: man/%.ronn
mkdir -p "$(@D)"
set -euo pipefail ; $(BUNDLE_EXEC) ronn -r --pipe "$<" | gzip > "$@" || (rm -f "$<" ; false)
build/bin/linux-amd64: $(GOFILES) cmd/$(NAME)/version.go
GOOS=linux GOARCH=amd64 go build -o "$@" "$(PACKAGE)/cmd/$(NAME)"
build/bin/linux-arm64: $(GOFILES) cmd/$(NAME)/version.go
GOOS=linux GOARCH=arm64 go build -o "$@" "$(PACKAGE)/cmd/$(NAME)"
build/bin/darwin-amd64: $(GOFILES) cmd/$(NAME)/version.go
GOOS=darwin GOARCH=amd64 go build -o "$@" "$(PACKAGE)/cmd/$(NAME)"
build/bin/freebsd-amd64: $(GOFILES) cmd/$(NAME)/version.go
GOOS=freebsd GOARCH=amd64 go build -o "$@" "$(PACKAGE)/cmd/$(NAME)"
build/bin/windows-amd64.exe: $(GOFILES) cmd/$(NAME)/version.go
GOOS=windows GOARCH=amd64 go build -o "$@" "$(PACKAGE)/cmd/$(NAME)"
$(GEM): rubygem/$(NAME)-$(VERSION).gem
mkdir -p $(@D)
mv "$<" "$@"
rubygem/$(NAME)-$(VERSION).gem: \
rubygem/lib/$(NAME)/version.rb \
rubygem/build/linux-amd64/ejson \
rubygem/build/linux-amd64/ejson \
rubygem/LICENSE.txt \
rubygem/build/darwin-amd64/ejson \
rubygem/build/freebsd-amd64/ejson \
rubygem/build/windows-amd64/ejson.exe \
rubygem/man
cd rubygem && gem build ejson.gemspec
rubygem/LICENSE.txt: LICENSE.txt
cp "$<" "$@"
rubygem/man: man
cp -a build/man $@
rubygem/build/darwin-amd64/ejson: build/bin/darwin-amd64
mkdir -p $(@D)
cp -a "$<" "$@"
rubygem/build/freebsd-amd64/ejson: build/bin/freebsd-amd64
mkdir -p $(@D)
cp -a "$<" "$@"
rubygem/build/linux-amd64/ejson: build/bin/linux-amd64
mkdir -p $(@D)
cp -a "$<" "$@"
rubygem/build/linux-arm64/ejson: build/bin/linux-arm64
mkdir -p $(@D)
cp -a "$<" "$@"
rubygem/build/windows-amd64/ejson.exe: build/bin/windows-amd64.exe
mkdir -p $(@D)
cp -a "$<" "$@"
cmd/$(NAME)/version.go: VERSION
printf '%b' 'package main\n\nconst VERSION string = "$(VERSION)"\n' > $@
rubygem/lib/$(NAME)/version.rb: VERSION
mkdir -p $(@D)
printf '%b' 'module $(RUBY_MODULE)\n VERSION = "$(VERSION)"\nend\n' > $@
$(AMD64_DEB): build/bin/linux-amd64 man
mkdir -p $(@D)
rm -f "$@"
$(BUNDLE_EXEC) fpm \
-t deb \
-s dir \
--name="$(NAME)" \
--version="$(VERSION)" \
--package="$@" \
--license=MIT \
--category=admin \
--no-depends \
--no-auto-depends \
--architecture=amd64 \
--maintainer="Shopify <admins@shopify.com>" \
--description="utility for managing a collection of secrets in source control. Secrets are encrypted using public key, elliptic curve cryptography." \
--url="https://github.com/Shopify/ejson" \
./build/man/=/usr/share/man/ \
./$<=/usr/bin/$(NAME)
$(ARM64_DEB): build/bin/linux-arm64 man
mkdir -p $(@D)
rm -f "$@"
$(BUNDLE_EXEC) fpm \
-t deb \
-s dir \
--name="$(NAME)" \
--version="$(VERSION)" \
--package="$@" \
--license=MIT \
--category=admin \
--no-depends \
--no-auto-depends \
--architecture=arm64 \
--maintainer="Shopify <admins@shopify.com>" \
--description="utility for managing a collection of secrets in source control. Secrets are encrypted using public key, elliptic curve cryptography." \
--url="https://github.com/Shopify/ejson" \
./build/man/=/usr/share/man/ \
./$<=/usr/bin/$(NAME)
setup:
go mod download
go mod tidy
clean:
rm -rf build pkg rubygem/{LICENSE.txt,lib/ejson/version.rb,build,*.gem}