1616 node-version : ' lts/*'
1717
1818 # https://github.com/actions/checkout
19- - name : Checkout
19+ - name : Checkout 🛎️
2020 uses : actions/checkout@v4
2121 with :
2222 persist-credentials : false
@@ -25,14 +25,136 @@ jobs:
2525 - name : Set up JDK ☕️
2626 uses : actions/setup-java@v4
2727 with :
28- distribution : ' corretto'
2928 java-version : ' 21'
29+ distribution : ' corretto'
3030 cache : ' maven'
3131
32- - name : Install Graphviz 🐰
32+ # https://github.com/marketplace/actions/docker-setup-docker
33+ - name : Setup Docker 🐳
34+ uses : docker/setup-docker-action@v4
35+
36+ - name : Add Watermark to Images 🎖
3337 run : |
34- sudo apt update -y -m
35- sudo apt install -y graphviz
38+ docker pull dpokidov/imagemagick
39+
40+ cd docs/assets
41+ wget https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Semibold.otf
42+ BASEDIR=$( pwd )/
43+
44+ # 异步加水印
45+ # JPG
46+ echo " "
47+ echo -e "\n\n$(date +%T) start to add watermark to JPG"
48+ find . -type f -name "*.jpg" | grep -v "wx-jikerizhi-qrcode.jpg\|wx-jikerizhi.jpg\|wxpay.jpg" | sed "s/.jpg$//g" | xargs -I {} docker run --rm -v ${BASEDIR}:/imgs dpokidov/imagemagick -compress JPEG2000 -strip -thumbnail "1200x>" -quality 75 -font /imgs/SourceCodePro-Semibold.otf -pointsize 30 -gravity southeast -fill "#DE282A" -draw 'text 15,18 "https://www.diguage.com"' /imgs/{}.jpg /imgs/{}-mark.jpg 1>/dev/null 2>&1 &
49+
50+ wait
51+ echo -e "$(date +%T) finish adding watermark to JPG...\n\n"
52+ echo " "
53+ find . -type f -name "*.jpg" | xargs ls -l -h
54+ echo " "
55+ echo -e "\n\n$(date +%T) --start to replace JPG----------------------"
56+ for f in `find . -type f -name "*-mark.jpg"`;
57+ do
58+ name=`echo $f | sed "s/-mark.jpg//g"`
59+ echo "replace ${f} to ${name}.jpeg"
60+ rm -rf "${name}.jpg"
61+ mv "${f}" "${name}.jpg"
62+ done
63+ echo -e "$(date +%T) --finish replacing JPG----------------------\n\n"
64+ echo " "
65+ find . -type f -name "*.jpg" | xargs ls -l -h
66+
67+ # JPEG
68+ echo " "
69+ echo -e "\n\n$(date +%T) start to add watermark to JPEG"
70+ find . -type f -name "*.jpeg" | sed "s/.jpeg$//g" | xargs -I {} docker run --rm -v ${BASEDIR}:/imgs dpokidov/imagemagick -compress JPEG2000 -strip -thumbnail "1200x>" -quality 75 -font /imgs/SourceCodePro-Semibold.otf -pointsize 30 -gravity southeast -fill "#DE282A" -draw 'text 15,18 "https://www.diguage.com"' /imgs/{}.jpeg /imgs/{}-mark.jpeg 1>/dev/null 2>&1 &
71+
72+ wait
73+ echo -e "$(date +%T) finish adding watermark to JPEG...\n\n"
74+ echo " "
75+ find . -type f -name "*.jpeg" | xargs ls -l -h
76+ echo " "
77+ echo -e "\n\n$(date +%T) --start to replace JPEG----------------------"
78+ for f in `find . -type f -name "*-mark.jpeg"`;
79+ do
80+ name=`echo $f | sed "s/-mark.jpeg//g"`
81+ echo "replace ${f} to ${name}.jpeg"
82+ rm -rf "${name}.jpeg"
83+ mv "${f}" "${name}.jpeg"
84+ done
85+ echo -e "$(date +%T) --finish replacing JPEG----------------------\n\n"
86+ echo " "
87+ find . -type f -name "*.jpeg" | xargs ls -l -h
88+
89+ # # PNG
90+ # echo " "
91+ # echo -e "\n\n$(date +%T) start to add watermark to PNG"
92+ # find . -type f -name "*.png" | grep -v "alipay.png\|wxpay.png" | sed "s/.png$//g" | xargs -I {} docker run --rm -v ${BASEDIR}:/imgs dpokidov/imagemagick -strip -resize 1200x -define png:compression-level=9 -define png:exclude-chunk=all -define png:filter-type=1 -font /imgs/SourceCodePro-Semibold.otf -pointsize 30 -gravity southeast -fill "#DE282A" -draw 'text 15,18 "https://www.diguage.com"' /imgs/{}.png /imgs/{}-mark.png 1>/dev/null 2>&1 &
93+ #
94+ # wait
95+ # echo -e "$(date +%T) finish adding watermark to PNG...\n\n"
96+ # echo " "
97+ # find . -type f -name "*.png" | xargs ls -l -h
98+ # echo " "
99+ # echo -e "\n\n$(date +%T) --start to replace PNG----------------------"
100+ # for f in `find . -type f -name "*-mark.png"`;
101+ # do
102+ # name=`echo $f | sed "s/-mark.png//g"`
103+ # echo "replace ${f} to ${name}.png"
104+ # rm -rf "${name}.png"
105+ # mv "${f}" "${name}.png"
106+ # done
107+ # echo -e "$(date +%T) --finish replacing PNG----------------------\n\n"
108+ # echo " "
109+ # find . -type f -name "*.png" | xargs ls -l -h
110+
111+ - name : Install font 🎃
112+ run : |
113+ mkdir $HOME/.fonts
114+ cd $HOME/.fonts
115+ declare -a fonts=('https://github.com/diguage/open-fonts/releases/download/latest/NotoEmoji-Regular.ttf' \
116+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Regular.otf' \
117+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Semibold.otf' \
118+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-It.otf' \
119+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-Bold.otf' \
120+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceCodePro-BoldIt.otf' \
121+ 'https://github.com/diguage/open-fonts/releases/download/latest/JetBrainsMono-Regular.ttf' \
122+ 'https://github.com/diguage/open-fonts/releases/download/latest/JetBrainsMono-SemiBold.ttf' \
123+ 'https://github.com/diguage/open-fonts/releases/download/latest/JetBrainsMono-Bold.ttf' \
124+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-Regular.otf' \
125+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-Bold.otf' \
126+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-Medium.otf' \
127+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSerifSC-SemiBold.otf' \
128+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Regular.otf' \
129+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Bold.otf' \
130+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Medium.otf' \
131+ 'https://github.com/diguage/open-fonts/releases/download/latest/SourceHanSansSC-Heavy.otf' \
132+ 'https://github.com/diguage/open-fonts/releases/download/latest/Symbola.ttf')
133+ echo -e "$(date +%T) start to download fonts...\n"
134+ for font in "${fonts[@]}"
135+ do
136+ name=`echo $font | awk -F'/' '{print $NF}'`
137+ if [ -f "$name" ]; then
138+ echo "$name exists."
139+ else
140+ wget -c --tries=5 --retry-connrefused --waitretry=5 --timeout=10 $font 1>/dev/null 2>&1 &
141+ fi
142+ done
143+
144+ wait
145+ echo -e "$(date +%T) finish downloading fonts...\n"
146+ ls -lh
147+
148+ # # 使用 Kroki 处理,就不需要配置字体了
149+ # - name: Check font 🔍
150+ # run: |
151+ # echo -e "[seqdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" > $HOME/.blockdiagrc
152+ # echo -e "\n[blockdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" >> $HOME/.blockdiagrc
153+ # echo -e "\n[actdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" >> $HOME/.blockdiagrc
154+ # echo -e "\n[nwdiag]\nfontpath = $HOME/.fonts/SourceHanSerifSC-Regular.otf" >> $HOME/.blockdiagrc
155+ # ls -lh $HOME/.fonts
156+ # fc-list
157+ # cat $HOME/.blockdiagrc
36158
37159 - name : Improve Document 📝
38160 run : |
@@ -43,23 +165,42 @@ jobs:
43165 # https://stackoverflow.com/a/46719361
44166 # https://stackoverflow.com/a/1103159
45167
46- - name : Build 🔧
47- run : |
48- mvn clean package
168+ - name : Build 🏗
169+ run : mvn clean package
49170
50171 - name : Add Reward Qrcode 💰
51172 run : |
52173 cd target/docs/multipage/
53174 find . -name "*.html" | grep -v 'preface.html' | xargs -I {} sed -i 's@\(<div id="content">\)@\1<div class="sect2"><h3 id="_友情支持">友情支持</h3><div class="paragraph"><p>如果您觉得这个笔记对您有所帮助,看在D瓜哥码这么多字的辛苦上,请友情支持一下,D瓜哥感激不尽,😜</p></div><table class="tableblock frame-none grid-all stretch"><colgroup><col style="width: 50%;"><col style="width: 50%;"></colgroup><tbody><tr><td class="tableblock halign-center valign-top"><p class="tableblock"><span class="image"><img src="./images/alipay.png" alt="支付宝" width="85%" title="支付宝"></span></p></td><td class="tableblock halign-center valign-top"><p class="tableblock"><span class="image"><img src="./images/wxpay.jpg" alt="微信" width="85%" title="微信"></span></p></td></tr></tbody></table><div class="paragraph"><p>有些打赏的朋友希望可以加个好友,欢迎关注D 瓜哥的微信公众号,这样就可以通过公众号的回复直接给我发信息。</p></div><div class="paragraph"><p><span class="image"><img src="./images/wx-jikerizhi.png" alt="wx jikerizhi" width="98%"></span></p></div><div class="admonitionblock tip"><table><tbody><tr><td class="icon"><i class="fa icon-tip" title="Tip"></i></td><td class="content"><strong>公众号的微信号是: <code>jikerizhi</code></strong>。<em>因为众所周知的原因,有时图片加载不出来。 如果图片加载不出来可以直接通过搜索微信号来查找我的公众号。</em></td></tr></tbody></table></div></div>@' {}
54175
55- # - name: Add Tab Resource 🌗
56- # run: |
57- # cp -R docs/assets target/docs/multipage/
58- # cd target/docs/multipage/
59- # sed -i 's@>题解@ target="_blank">题解@g' logbook-*.html
60- # mv images/* assets/images/
61- # sed -i 's@src="asciidoctor-tabs.js"@src="assets/scripts/asciidoctor-tabs.js"@g' *.html
62- # sed -i 's@img src="./images@img src="assets/images@g' *.html
176+ - name : Add Giscus 🗣️
177+ run : |
178+ cd target/docs/multipage/
179+ # 📢 注意,有几个地方需要修改:
180+ # 1. 仓库地址
181+ # 2. 仓库 ID
182+ # 3. 数据分类名称
183+ # 4. 数据分类 ID
184+ dataRepo='diguage/jdk-source-analysis'
185+ dataRepoId='MDEwOlJlcG9zaXRvcnk3MjM5MzE5Mw=='
186+ dataCategory='General'
187+ dataCategoryId='MDE4OkRpc2N1c3Npb25DYXRlZ29yeTMyMDM2MDQx'
188+ # 📢 注意,现在是提取文件名作为 Giscus 参数!请根据需要自定义 Giscus 参数。
189+ for file in `find . -name "*.html"`;
190+ do
191+ #fileBaseName=$(basename -- "$file")
192+ #fileName="${fileBaseName%.*}"
193+ fileName=$(echo $file | sed 's|^\./||; s/\.html$//')
194+ echo "$file → $fileName"
195+ sed -i "s@\(<title>\)@<meta property=\"og:title\" content=\"${fileName}\">\n\1@" $file
196+ sed -i -z "s@\(</div>\n<div id=\"footer\">\)@<script src=\"https://giscus.app/client.js\" data-repo=\"${dataRepo}\" data-repo-id=\"${dataRepoId}\" data-category=\"${dataCategory}\" data-category-id=\"${dataCategoryId}\" data-mapping=\"og:title\" data-strict=\"0\" data-reactions-enabled=\"1\" data-emit-metadata=\"1\" data-input-position=\"top\" data-theme=\"preferred_color_scheme\" data-lang=\"zh-CN\" data-loading=\"lazy\" crossorigin=\"anonymous\" async></script>\n\1@" $file
197+ done
198+
199+ - name : Add Tab Resource 🌗
200+ run : |
201+ cp -R docs/assets target/docs/multipage/
202+ cd target/docs/
203+ find . -name "*.html" | xargs -I {} sed -i 's@src="asciidoctor-tabs.js"@src="assets/scripts/asciidoctor-tabs.js"@g' {}
63204
64205 - name : Add Scroll TOC JS 🐌
65206 run : |
85226 if [ "${subtitle}" != "" ]; then
86227 # 将变量中的 & 替换为 \&
87228 escaped_title=$(sed 's/&/\\&/g' <<< "${subtitle}")
88- sed -i "s@ 解题笔记 </h1>@: ${escaped_title}</h1>@g" $file
89- sed -i "s@ 解题笔记 </title>@: ${escaped_title}</title>@g" $file
229+ sed -i "s@</h1>@: ${escaped_title}</h1>@g" $file
230+ sed -i "s@</title>@: ${escaped_title}</title>@g" $file
90231 fi
91232 fi
92233 done
@@ -95,15 +236,19 @@ jobs:
95236 - name : Compress CSS 🍭
96237 run : |
97238 # https://github.com/parcel-bundler/lightningcss
98- npm install -g clean-css -cli
239+ npm install -g lightningcss -cli
99240 # Multiple HTML page
100241 cd target/docs/
101242 for f in `find . -name "*.css"`;
102243 do
244+ if [[ $f == *asciidoctor.css ]]; then
245+ # TODO 这里需要添加的 code 选择器可能更多
246+ echo -e '\na{text-decoration:none;}p>code,strong>code{color: #d14 !important;background-color: #f5f5f5 !important;border: 1px solid #e1e1e8;}' >> $f
247+ fi
103248 fn="${f%.*}.min.css";
104249 echo "compress $f"
105- cleancss -o $fn $f
106- rm -rf $f;
250+ lightningcss --minify --error-recovery --output-file $fn $f
251+ rm -rf $f
107252 mv $fn $f
108253 done
109254
@@ -118,7 +263,7 @@ jobs:
118263 do
119264 fn="${f%.*}.min.css";
120265 echo "compress $f"
121- uglifyjs $f --compress --rename -o $fn
266+ uglifyjs $f --compress --rename -o $fn
122267 rm -rf $f;
123268 mv $fn $f
124269 done
0 commit comments