Makefile
5.71 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
140
141
142
143
144
145
146
147
148
149
150
151
# Copyright (C) 2017, David PHAM-VAN <dev.nfet.net@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
DART_SRC=$(shell find . -name '*.dart')
CLNG_SRC=$(shell find printing/ios -name '*.java' -o -name '*.m' -o -name '*.h') $(shell find printing/android -name '*.java' -o -name '*.m' -o -name '*.h')
SWFT_SRC=$(shell find . -name '*.swift')
FONTS=pdf/open-sans.ttf pdf/open-sans-bold.ttf pdf/roboto.ttf pdf/noto-sans.ttf pdf/genyomintw.ttf
COV_PORT=9292
all: $(FONTS) format
pdf/open-sans.ttf:
curl -L "https://github.com/google/fonts/raw/master/apache/opensans/OpenSans-Regular.ttf" > $@
pdf/open-sans-bold.ttf:
curl -L "https://github.com/google/fonts/raw/master/apache/opensans/OpenSans-Bold.ttf" > $@
pdf/roboto.ttf:
curl -L "https://github.com/google/fonts/raw/master/apache/robotomono/RobotoMono-Regular.ttf" > $@
pdf/noto-sans.ttf:
curl -L "https://raw.githubusercontent.com/google/fonts/master/ofl/notosans/NotoSans-Regular.ttf" > $@
pdf/genyomintw.ttf:
curl -L "https://github.com/ButTaiwan/genyo-font/raw/master/TW/GenYoMinTW-Heavy.ttf" > $@
format: format-dart format-clang format-swift
format-dart: $(DART_SRC)
dartfmt -w --fix $^
format-clang: $(CLNG_SRC)
clang-format -style=Chromium -i $^
format-swift: $(SWFT_SRC)
swiftformat --swiftversion 4.2 $^
.coverage:
pub global activate coverage
touch $@
node_modules:
npm install lcov-summary
get-pdf:
cd pdf; pub get
get-printing:
cd printing; flutter packages get
cd printing/example; flutter packages get
get-web:
cd pdf/web_example; pub get
get-readme:
cd test; flutter packages get
get: $(FONTS) get-pdf get-printing get-web get-readme
test-pdf: $(FONTS) get-pdf .coverage
cd pdf; pub global run coverage:collect_coverage --port=$(COV_PORT) -o coverage.json --resume-isolates --wait-paused &\
dart --enable-asserts --disable-service-auth-codes --enable-vm-service=$(COV_PORT) --pause-isolates-on-exit test/all_tests.dart
cd pdf; pub global run coverage:format_coverage --packages=.packages -i coverage.json --report-on lib --lcov --out lcov.info
cd pdf; for EXAMPLE in $(shell cd pdf; find example -name '*.dart'); do dart $$EXAMPLE; done
test/compare-pdf.sh pdf test/golden
test-printing: $(FONTS) get-printing .coverage
cd printing; flutter test --coverage --coverage-path lcov.info
cd printing/example; flutter test --coverage --coverage-path ../lcov.info
test-readme: $(FONTS) get-readme
cd test; dart extract_readme.dart
cd test; dartanalyzer readme.dart
test-web:
cd pdf/web_example; pub get
cd pdf/web_example; pub run webdev build
test: test-pdf test-printing node_modules test-web
cat pdf/lcov.info printing/lcov.info | node_modules/.bin/lcov-summary
clean:
git clean -fdx -e .vscode -e ref
publish-pdf: format clean
find pdf -name pubspec.yaml -exec sed -i -e 's/^dependency_overrides:/_dependency_overrides:/g' '{}' ';'
cd pdf; pub publish -f
find pdf -name pubspec.yaml -exec sed -i -e 's/^_dependency_overrides:/dependency_overrides:/g' '{}' ';'
publish-printing: format clean
find printing -name pubspec.yaml -exec sed -i -e 's/^dependency_overrides:/_dependency_overrides:/g' '{}' ';'
cd printing; pub publish -f
find printing -name pubspec.yaml -exec sed -i -e 's/^_dependency_overrides:/dependency_overrides:/g' '{}' ';'
.pana:
pub global activate pana
touch $@
analyze-pdf: .pana
@find pdf -name pubspec.yaml -exec sed -i -e 's/^dependency_overrides:/_dependency_overrides:/g' '{}' ';'
@pub global run pana --no-warning --source path pdf 2> /dev/null | python test/pana_report.py
@find pdf -name pubspec.yaml -exec sed -i -e 's/^_dependency_overrides:/dependency_overrides:/g' '{}' ';'
analyze-printing: .pana
@find printing -name pubspec.yaml -exec sed -i -e 's/^dependency_overrides:/_dependency_overrides:/g' '{}' ';'
@pub global run pana --no-warning --source path printing 2> /dev/null | python test/pana_report.py
@find printing -name pubspec.yaml -exec sed -i -e 's/^_dependency_overrides:/dependency_overrides:/g' '{}' ';'
analyze: analyze-pdf analyze-printing
analyze-ci-pdf: .pana
@find pdf -name pubspec.yaml -exec sed -i -e 's/^dependency_overrides:/_dependency_overrides:/g' '{}' ';'
@pub global run pana --no-warning --source path pdf
@find pdf -name pubspec.yaml -exec sed -i -e 's/^_dependency_overrides:/dependency_overrides:/g' '{}' ';'
analyze-ci-printing: .pana
@find printing -name pubspec.yaml -exec sed -i -e 's/^dependency_overrides:/_dependency_overrides:/g' '{}' ';'
@pub global run pana --no-warning --source path printing
@find printing -name pubspec.yaml -exec sed -i -e 's/^_dependency_overrides:/dependency_overrides:/g' '{}' ';'
.dartfix:
pub global activate dartfix
touch $@
fix: get .dartfix
cd pdf; pub global run dartfix:fix --overwrite .
cd printing; pub global run dartfix:fix --overwrite .
ref:
mkdir -p ref
cd $@; curl -OL 'https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf'
cd $@; curl -OL 'https://www.adobe.com/content/dam/acom/en/devnet/pdf/adobe_supplement_iso32000.pdf'
cd $@; curl -OL 'https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_reference_1-7.pdf'
gh-pages:
cd printing/example; flutter build web
git checkout gh-pages
mv -f printing/example/build/web/* .
.PHONY: test format format-dart format-clang clean publish-pdf publish-printing analyze ref