Compare commits

...

9 Commits

15 changed files with 338 additions and 153 deletions

View File

@ -25,29 +25,5 @@ jobs:
ruby-version: 2.7
bundler-cache: true
- name: Check baseurl
run: |
baseurl="$(grep '^baseurl:' _config.yml | sed "s/.*: *//;s/['\"]//g;s/#.*//")"
if [[ -n $baseurl ]]; then
echo "BASE_URL=$baseurl" >> $GITHUB_ENV
fi
- name: Build Site
env:
JEKYLL_ENV: production
run: |
bundle exec jekyll b -d "_site$BASE_URL"
- name: Test Site
run: |
bash tools/test.sh
- name: Deploy
run: |
if [[ -n $BASE_URL ]]; then
mv _site$BASE_URL _site-rename
rm -rf _site
mv _site-rename _site
fi
bash tools/deploy.sh
run: bash tools/deploy.sh

2
.gitignore vendored
View File

@ -3,11 +3,11 @@
!.git*
!.editorconfig
!.nojekyll
!.travis.yml
# bundler cache
_site
vendor
Gemfile.lock
# rubygem
*.gem

1
.nojekyll Normal file
View File

@ -0,0 +1 @@

12
Gemfile
View File

@ -1,11 +1,8 @@
# frozen_string_literal: true
source "https://rubygems.org"
gem "jekyll-theme-chirpy", "~> 4.1", ">= 4.1.1"
group :jekyll_plugins do
# If you have any plugins, put them here!
# gem "jekyll-xxx", "~> x.y"
end
gem "jekyll-theme-chirpy", "~> 5.0", ">= 5.0.0"
group :test do
gem "html-proofer", "~> 3.18"
@ -20,3 +17,6 @@ end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :install_if => Gem.win_platform?
# Jekyll <= 4.2.0 compatibility with Ruby 3.0
gem "webrick", "~> 1.7"

View File

@ -1,28 +1,31 @@
# Chirpy Starter [![Gem Version](https://img.shields.io/gem/v/jekyll-theme-chirpy)](https://rubygems.org/gems/jekyll-theme-chirpy) [![GitHub license](https://img.shields.io/github/license/cotes2020/chirpy-starter.svg?color=blue)][mit]
When installing the [**Chirpy**][chirpy] theme through [RubyGems.org][gem], Jekyll can only read files in the folders `_includes`, `_layout`, `_sass` and `assets`, as well as a small part of options of the `_config.yml` file from the theme's gem. If you have ever installed this theme gem, you can use the command `bundle info --path jekyll-theme-chirpy` to locate these files.
The startup template for [**Jekyll Theme Chirpy**][chirpy].
The Jekyll organization claims that this is to leave the ball in the users court, but this also results in users not being able to enjoy the out-of-the-box experience when using feature-rich themes.
When installing the **Chirpy** theme through [RubyGems][gem], Jekyll can only read files in the folders `_includes`, `_layout`, `_sass` and `assets`, as well as a small part of options of the `_config.yml` file from the theme's gem. (You can find the gem files by using the command `bundle info --path jekyll-theme-chirpy`). To fully use all the features of **Chirpy**, you need to copy the other critical files/directories from the theme's gem to your Jekyll site.
The critical files/directories to run or build the **Chirpy** theme are as follows:
To fully use all the features of **Chirpy**, you need to copy the other critical files from the theme's gem to your Jekyll site. The following is a list of targets:
```shell
.
├── _config.yml
├── _data
├── _plugins
├── _tabs
── _config.yml
└── index.html
── index.html
```
So we've extracted all the **Chirpy** gem necessary content here to help you get started quickly.
In order to save your time, and to prevent you from missing some files when copying, we extract those files/configurations of the latest version of the **Chirpy** theme and the [CD][CD] workflow to here, so that you can start writing in minutes.
## Prerequisites
Follow the instructions in the [Jekyll Docs](https://jekyllrb.com/docs/installation/) to complete the installation of `Ruby`, `RubyGems`, `Jekyll` and `Bundler`.
## Installation
[Use this template][usetemplate] to generate a new repository, and then execute:
[**Use this template**][use-template] to generate a brand new repository and name it `<GH_USERNAME>.github.io`, where `GH_USERNAME` represents your GitHub username.
[usetemplate]: https://github.com/cotes2020/chirpy-starter/generate
Then clone it to your local machine and run:
```
$ bundle
@ -32,22 +35,12 @@ $ bundle
Please see the [theme's docs](https://github.com/cotes2020/jekyll-theme-chirpy#usage).
## Upgrading
First, please modify the target version number of `jekyll-theme-chirpy` in the `Gemfile` (e.g., `gem "jekyll-theme-chirpy", "~> 4.0", ">= 4.0.1"`).
After that, execute the following command:
```console
$ bundle update jekyll-theme-chirpy
```
As the version upgrades, the critical files and configuration options will change. Please refer to the [Upgrade Guide](https://github.com/cotes2020/jekyll-theme-chirpy/wiki/Upgrade-Guide) to keep your website files in sync with the latest version of the theme.
## License
This work is published under [MIT][mit] License.
[gem]: https://rubygems.org/gems/jekyll-theme-chirpy
[chirpy]: https://github.com/cotes2020/jekyll-theme-chirpy/
[use-template]: https://github.com/cotes2020/chirpy-starter/generate
[CD]: https://en.wikipedia.org/wiki/Continuous_deployment
[mit]: https://github.com/cotes2020/chirpy-starter/blob/master/LICENSE

View File

@ -3,12 +3,13 @@
# Import the theme
theme: jekyll-theme-chirpy
# Only if your site type is GitHub Project sites and doesn't have a custom domain,
# change below value to '/projectname'.
# Change the following value to '/PROJECT_NAME' ONLY IF your site type is GitHub Pages Project sites
# and doesn't have a custom domain.
baseurl: ''
# The language of the site layout http://www.lingoes.net/en/translator/langcode.htm
# Go to folder '_data/locales' to check the available language options
# The language of the webpage http://www.lingoes.net/en/translator/langcode.htm
# If it has the same name as one of the files in folder `_data/locales`, the layout language will also be changed,
# otherwise, the layout language will use the default value of 'en'.
lang: en
# Change to your timezone http://www.timezoneconverter.com/cgi-bin/findzone/findzone
@ -78,17 +79,23 @@ theme_mode: # [light|dark]
# will be added to all image (site avatar & posts' images) paths starting with '/'
#
# e.g. 'https://cdn.com'
img_cdn: ''
img_cdn:
# the avatar on sidebar, support local or CORS resources
avatar: https://cdn.jsdelivr.net/gh/cotes2020/chirpy-images/commons/avatar.jpg
avatar:
# boolean type, the global switch for ToC in posts.
toc: true
disqus:
comments: false # boolean type, the global switch for posts comments.
shortname: '' # Fill with your Disqus shortname. https://help.disqus.com/en/articles/1717111-what-s-a-shortname
comments:
active: # The global switch for posts comments, e.g., 'disqus'. Keep it empty means disable
# The active options are as follows:
disqus:
shortname: # fill with the Disqus shortname. https://help.disqus.com/en/articles/1717111-what-s-a-shortname
# utterances settings https://utteranc.es/
utterances:
repo: # <gh-username>/<repo>
issue_term: # < url | pathname | title | ...>
paginate: 10
@ -110,7 +117,6 @@ collections:
output: true
sort_by: order
defaults:
-
scope:
@ -135,7 +141,6 @@ defaults:
values:
layout: page
permalink: /:title/
dynamic_title: true # Hide title in mobile screens.
sass:
style: compressed
@ -158,7 +163,7 @@ exclude:
- LICENSE
- gulpfile.js
- node_modules
- '*.json'
- package*.json
jekyll-archives:
enabled: [categories, tags]

View File

@ -2,7 +2,7 @@
-
type: github
icon: 'fab fa-github-alt'
icon: 'fab fa-github'
-
type: twitter
icon: 'fab fa-twitter'

View File

@ -16,10 +16,11 @@ tabs:
archives: Archives
about: About
# text displayed in the search bar
# the text displayed in the search bar & search results
search:
hint: search
cancel: Cancel
no_results: Oops! No result founds.
panel:
lastmod: Recent Update
@ -58,7 +59,8 @@ not_found:
# ----- Posts related labels -----
post:
published: 'on'
written_by: By
posted: Posted
updated: Updated
timeago:
day: days ago
@ -75,7 +77,9 @@ post:
button:
next: Newer
previous: Older
copy:
copy_code:
succeed: Copied!
share_link:
title: Copy link
succeed: Link copied successfully!
# pinned prompt of posts list on homepage

91
_data/locales/id-ID.yml Normal file
View File

@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: Postingan
category: Kategori
tag: Tagar
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home: Beranda
categories: Kategori
tags: Tagar
archives: Arsip
about: Tentang
# the text displayed in the search bar & search results
search:
hint: Cari
cancel: Batal
no_results: Ups! Tidak ada hasil yang ditemukan.
panel:
lastmod: Postingan Terbaru
trending_tags: Tagar Terpopuler
toc: Konten
# The liquid date format http://strftime.net/
date_format:
tooltip: "%a, %e %b, %Y, %l:%M %p"
post:
long: "%e %b, %Y"
short: "%e %b"
archive_month: "%b"
copyright:
# Shown at the bottom of the post
license:
template: Postingan ini dilisensikan di bawah :LICENSE_NAME oleh penulis.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: Sebagian konten dilindungi.
verbose: >-
Kecuali jika dinyatakan, Postingan blog di situs ini dilisensikan
di bawah Lisensi Creative Commons Attribution 4.0 International (CC BY 4.0) oleh penulis.
meta: Didukung oleh :PLATFORM dengan tema :THEME.
not_found:
statment: Maaf, kami gagal menemukan URL itu atau memang mengarah ke sesuatu yang tidak ada.
hint_template: :HEAD_BAK untuk mencoba mencari kembali, atau cari di :ARCHIVES_PAGE.
head_back: Kembali ke Beranda
archives_page: Halaman Arsip
# ----- Posts related labels -----
post:
written_by: Oleh
posted: Diterbitkan
updated: Diperbarui
timeago:
day: hari yang lalu
hour: jam yang lalu
minute: menit yang lalu
just_now: baru saja
words: kata
pageview_measure: dilihat
read_time:
unit: menit
prompt: baca
relate_posts: Postingan Lainya
share: Bagikan
button:
next: Terbaru
previous: Terlama
copy_code:
succeed: Disalin!
share_link:
title: Salin tautan
succeed: Tautan berhasil disalin!
# pinned prompt of posts list on homepage
pin_prompt: Disematkan
# categories page
categories:
category_measure: kategori
post_measure: Postingan

91
_data/locales/ko-KR.yml Normal file
View File

@ -0,0 +1,91 @@
# The layout text of site
# ----- Commons label -----
layout:
post: 포스트
category: 카테고리
tag: 태그
# The tabs of sidebar
tabs:
# format: <filename_without_extension>: <value>
home:
categories: 카테고리
tags: 태그
archives: 아카이브
about: 정보
# the text displayed in the search bar & search results
search:
hint: 검색
cancel: 취소
no_results: 검색 결과가 없습니다.
panel:
lastmod: 최근 업데이트
trending_tags: 인기 태그
toc: 바로가기
# The liquid date format http://strftime.net/
date_format:
tooltip: '%F, %R %z'
post:
long: '%Y년 %m월 %d일'
short: '%m월 %d일'
archive_month: '%b월'
copyright:
# Shown at the bottom of the post
license:
template: 이 기사는 저작권자의 :LICENSE_NAME 라이센스를 따릅니다.
name: CC BY 4.0
link: https://creativecommons.org/licenses/by/4.0/
# Displayed in the footer
brief: 일부 권리 보유
verbose: >-
명시되지 않는 한 이 사이트의 블로그 게시물은 작성자의
Creative Commons Attribution 4.0 International(CC BY 4.0) 라이선스에 따라 사용이 허가되었습니다.
meta: Powered by :PLATFORM with :THEME theme.
not_found:
statment: 해당 URL은 존재하지 않습니다.
hint_template: :HEAD_BAK을 눌러 다시 찾거나 :ARCHIVES_PAGE에서 검색해 주세요.
head_back: 홈으로 돌아가기
archives_page: 아카이브 페이지
# ----- Posts related labels -----
post:
written_by: By
posted: 게시
updated: 업데이트
timeago:
day: 일 전
hour: 시간 전
minute: 분 전
just_now: 방금
words: 단어
pageview_measure: 조회
read_time:
unit:
prompt: 읽는 시간
relate_posts: 관련된 글
share: 공유하기
button:
next: 다음 글
previous: 이전 글
copy_code:
succeed: 복사되었습니다!
share_link:
title: 링크 복사하기
succeed: 링크가 복사되었습니다!
# pinned prompt of posts list on homepage
pin_prompt:
# categories page
categories:
category_measure: 카테고리
post_measure: 포스트

View File

@ -16,10 +16,11 @@ tabs:
archives: 归档
about: 关于
# text displayed in the search bar
# the text displayed in the search bar & search results
search:
hint: 搜索
cancel: 取消
no_results: 搜索结果为空
panel:
lastmod: 最近更新
@ -57,7 +58,8 @@ not_found:
# ----- Posts related labels -----
post:
published: 发表于
written_by: 作者
posted: 发表于
updated: 更新于
timeago:
day: 天前
@ -74,8 +76,10 @@ post:
button:
next: 下一篇
previous: 上一篇
copy:
title: 分享链接
copy_code:
succeed: 已复制!
share_link:
title: 分享链接
succeed: 链接已复制!
# pinned prompt of posts list on homepage
pin_prompt: 顶置

View File

@ -1,6 +1,6 @@
---
title: About
icon: fas fa-info
icon: fas fa-info-circle
order: 4
---

View File

@ -1,6 +1,6 @@
---
layout: tags
title: Tags
icon: fas fa-tags
icon: fas fa-tag
order: 2
---

View File

@ -1,28 +1,80 @@
#!/usr/bin/env bash
#
# Deploy the content of _site to 'origin/<pages_branch>'
# Build, test and then deploy the site content to 'origin/<pages_branch>'
#
# Requirement: html-proofer, jekyll
#
# Usage: See help information
set -eu
PAGES_BRANCH="gh-pages"
_no_branch=false
SITE_DIR="_site"
_opt_dry_run=false
_config="_config.yml"
_no_pages_branch=false
_backup_dir="$(mktemp -d)"
_baseurl=""
help() {
echo "Build, test and then deploy the site content to 'origin/<pages_branch>'"
echo
echo "Usage:"
echo
echo " bash ./tools/deploy.sh [options]"
echo
echo "Options:"
echo ' -c, --config "<config_a[,config_b[...]]>" Specify config file(s)'
echo " --dry-run Build site and test, but not deploy"
echo " -h, --help Print this information."
}
init() {
if [[ -z ${GITHUB_ACTION+x} ]]; then
echo "ERROR: This script is not allowed to run outside of GitHub Action."
if [[ -z ${GITHUB_ACTION+x} && $_opt_dry_run == 'false' ]]; then
echo "ERROR: It is not allowed to deploy outside of the GitHub Action envrionment."
echo "Type option '-h' to see the help information."
exit -1
fi
# Gemfile could be changed by `bundle install` in actions workflow
if [[ -n $(git ls-files | grep Gemfile.lock) && -n \
$(git status Gemfile.lock --porcelain) ]]; then
git checkout -- Gemfile.lock
_baseurl="$(grep '^baseurl:' _config.yml | sed "s/.*: *//;s/['\"]//g;s/#.*//")"
}
build() {
# clean up
if [[ -d $SITE_DIR ]]; then
rm -rf "$SITE_DIR"
fi
# build
JEKYLL_ENV=production bundle exec jekyll b -d "$SITE_DIR$_baseurl" --config "$_config"
}
test() {
bundle exec htmlproofer \
--disable-external \
--check-html \
--allow_hash_href \
"$SITE_DIR"
}
resume_site_dir() {
if [[ -n $_baseurl ]]; then
# Move the site file to the regular directory '_site'
mv "$SITE_DIR$_baseurl" "${SITE_DIR}-rename"
rm -rf "$SITE_DIR"
mv "${SITE_DIR}-rename" "$SITE_DIR"
fi
}
setup_gh() {
if [[ -z $(git branch -av | grep "$PAGES_BRANCH") ]]; then
_no_branch=true
_no_pages_branch=true
git checkout -b "$PAGES_BRANCH"
else
git checkout "$PAGES_BRANCH"
@ -30,7 +82,7 @@ init() {
}
backup() {
mv _site/* "$_backup_dir"
mv "$SITE_DIR"/* "$_backup_dir"
mv .git "$_backup_dir"
# When adding custom domain from Github website,
@ -46,6 +98,7 @@ flush() {
shopt -s dotglob nullglob
mv "$_backup_dir"/* .
[[ -f ".nojekyll" ]] || echo "" >".nojekyll"
}
deploy() {
@ -56,7 +109,7 @@ deploy() {
git add -A
git commit -m "[Automation] Site update No.${GITHUB_RUN_NUMBER}"
if $_no_branch; then
if $_no_pages_branch; then
git push -u origin "$PAGES_BRANCH"
else
git push -f
@ -65,9 +118,43 @@ deploy() {
main() {
init
build
test
resume_site_dir
if $_opt_dry_run; then
exit 0
fi
setup_gh
backup
flush
deploy
}
while (($#)); do
opt="$1"
case $opt in
-c | --config)
_config="$2"
shift
shift
;;
--dry-run)
# build & test, but not deploy
_opt_dry_run=true
shift
;;
-h | --help)
help
exit 0
;;
*)
# unknown option
help
exit 1
;;
esac
done
main

View File

@ -1,67 +0,0 @@
#!/usr/bin/env bash
#
# Using HTML-proofer to test site.
#
# Requirement: https://github.com/gjtorikian/html-proofer
#
# Usage: bash /path/to/test.sh [indicated path]
DEST=_site
URL_IGNORE=cdn.jsdelivr.net
_build=false
help() {
echo "Usage:"
echo
echo " bash ./tools/test.sh [options]"
echo
echo "Options:"
echo " --build Run Jekyll build before test."
echo " -d, --dir <path> Specify the test path."
echo " -h, --help Print this information."
}
if [[ -n $1 && -d $1 ]]; then
DEST=$1
fi
while (($#)); do
opt="$1"
case $opt in
--build)
_build=true
shift
;;
-d | --dir)
if [[ ! -d $2 ]]; then
echo -e "Error: path '$2' doesn't exist\n"
help
exit 1
fi
DEST=$2
shift
shift
;;
-h | --help)
help
exit 0
;;
*)
# unknown option
help
exit 1
;;
esac
done
if $_build; then
JEKYLL_ENV=production bundle exec jekyll b
fi
bundle exec htmlproofer "$DEST" \
--disable-external \
--check-html \
--empty_alt_ignore \
--allow_hash_href \
--url_ignore $URL_IGNORE