-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile
133 lines (112 loc) · 3.52 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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
.PHONY: set-version pod-push mint test code-coverage-summary code-coverage-details code-coverage-file code-coverage-upload lint-check lint-autocorrect sourcery jazzy docc prebuild notify-telegram help
.DEFAULT_GOAL := help
# Version
ifndef TO
set-version:
$(error Missing new version number. Please use `make set-version TO=1.2.3`)
else
set-version:
sed -i .bkp -E "s/(s\.version.*=.*)'.*'/\1'${TO}'/" *.podspec
sed -i .bkp -E "s/(, from: )\".*\"\)/\1\"${TO}\")/" README.md
rm *.bkp
endif
# Pod push
pod-push:
bundle exec pod trunk push Reducer.podspec --allow-warnings
mint:
command -v mint || brew install mint
mint bootstrap
# Unit Test
test: SHELL:=/bin/bash
test:
set -eo pipefail && \
swift test --enable-code-coverage --build-path .build
code-coverage-summary:
xcrun llvm-cov report \
.build/x86_64-apple-macosx/debug/ReducerPackageTests.xctest/Contents/MacOS/ReducerPackageTests \
--instr-profile .build/x86_64-apple-macosx/debug/codecov/default.profdata \
--ignore-filename-regex='.*build/checkouts.*' \
--ignore-filename-regex='Tests/.*'
code-coverage-details:
xcrun llvm-cov show \
.build/x86_64-apple-macosx/debug/ReducerPackageTests.xctest/Contents/MacOS/ReducerPackageTests \
--instr-profile .build/x86_64-apple-macosx/debug/codecov/default.profdata \
--ignore-filename-regex='.*build/checkouts.*' \
--ignore-filename-regex='Tests/.*'
code-coverage-file:
xcrun llvm-cov show \
.build/x86_64-apple-macosx/debug/ReducerPackageTests.xctest/Contents/MacOS/ReducerPackageTests \
--instr-profile .build/x86_64-apple-macosx/debug/codecov/default.profdata \
--ignore-filename-regex='.*build/checkouts.*' \
--ignore-filename-regex='Tests/.*' > coverage.txt
code-coverage-upload:
bash <(curl -s https://codecov.io/bash) \
-X xcodellvm \
-X gcov \
-f coverage.txt
# Lint
lint-check:
mint run swiftlint lint --strict
lint-autocorrect:
mint run swiftlint autocorrect
# Sourcery
sourcery:
mint run sourcery
# Docc
docc:
xcodebuild docbuild -scheme "Reducer" -sdk macosx12.3 -configuration Debug -destination "platform=macOS" SYMROOT=tmp
cp -R tmp/Debug/Reducer.doccarchive docs/docc/
mint run docc2html -f docs/docc/Reducer.doccarchive docs/docc/Reducer
rm -rf tmp
# Jazzy
jazzy:
bundle exec jazzy --module Reducer --swift-build-tool spm --build-tool-arguments -Xswiftc,-swift-version,-Xswiftc,5 --output docs/api/Reducer
# Pre-Build
prebuild: sourcery lint-autocorrect lint-check
# Help
help:
@echo Possible tasks
@echo
@echo make set-version TO=1.2.3
@echo -- sets the SwiftRex version to the given value
@echo -- param1: TO = required, new version number
@echo
@echo make pod-push
@echo -- publishes the pod on CocoaPods repository
@echo
@echo make mint
@echo -- bootstrap mint dependency manager
@echo
@echo make test
@echo -- runs all the unit tests
@echo
@echo make code-coverage-summary
@echo -- shows a code coverage summary
@echo
@echo make code-coverage-details
@echo -- shows a code coverage detailed report
@echo
@echo make code-coverage-file
@echo -- creates a code coverage file to be uploaded to codecov
@echo
@echo make code-coverage-upload
@echo -- upload code coverage file to codecov
@echo
@echo make lint-check
@echo -- validates the code style
@echo
@echo make lint-autocorrect
@echo -- automatic linting for auto-fixable rules
@echo
@echo make sourcery
@echo -- code generation
@echo
@echo make jazzy
@echo -- generates documentation
@echo
@echo make docc
@echo "-- generates DocC documentation"
@echo
@echo make prebuild
@echo -- runs the pre-build phases
@echo