This repository has been archived by the owner on Dec 22, 2022. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
default.mk
83 lines (68 loc) · 1.72 KB
/
default.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
77
78
79
80
81
82
83
SHELL := /usr/bin/env bash
RUBY_SOURCE_FILES = $(shell find . -name "*.rb")
GEMSPEC = $(shell find . -name "*.gemspec")
LIBNAME := $(shell basename $$(dirname $$(pwd)))
GEM := cucumber-$(LIBNAME)-$(NEW_VERSION).gem
IS_TESTDATA = $(findstring -testdata,${CURDIR})
# https://stackoverflow.com/questions/2483182/recursive-wildcards-in-gnu-make
rwildcard=$(foreach d,$(wildcard $(1:=/*)),$(call rwildcard,$d,$2) $(filter $(subst *,%,$2),$d))
default: .tested
.PHONY: default
.deps: Gemfile.lock
touch $@
Gemfile.lock: Gemfile $(GEMSPEC)
bundle install
touch $@
.tested: .deps $(RUBY_SOURCE_FILES)
bundle exec rspec --color
touch $@
update-dependencies:
./scripts/update-gemspec
.PHONY: update-dependencies
ifdef NEW_VERSION
ifneq (,$(GEMSPEC))
gem: $(GEM)
else
gem:
@echo "Not building gem because there is no gemspec"
endif
endif
.PHONY: gem
$(GEM): .tested
gem build $(GEMSPEC)
test -s "$(GEM)" || { echo "Gem not built: $(GEM)"; exit 1; }
remove-local-dependencies:
cat Gemfile | sed 's/^gem /#gem /' > Gemfile.tmp
mv Gemfile.tmp Gemfile
.PHONY: remove-local-dependencies
pre-release: remove-local-dependencies update-version update-dependencies gem
.PHONY: pre-release
update-version:
ifeq ($(IS_TESTDATA),-testdata)
# no-op
else
ifdef NEW_VERSION
@echo "$(NEW_VERSION)" > VERSION
endif
endif
.PHONY: update-version
publish: gem
ifeq ($(IS_TESTDATA),-testdata)
# no-op
else
ifneq (,$(GEMSPEC))
gem push $(GEM)
else
@echo "Not publishing because there is no gemspec"
endif
endif
.PHONY: publish
post-release:
cat Gemfile | sed 's/^#gem /gem /' > Gemfile.tmp
mv Gemfile.tmp Gemfile
.PHONY: post-release
clean: clean-ruby
.PHONY: clean
clean-ruby:
rm -rf .deps .linked .tested* Gemfile.lock *.gem acceptance
.PHONY: clean-ruby