-
-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (114 loc) · 4.64 KB
/
time-capsule.yml
File metadata and controls
131 lines (114 loc) · 4.64 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
name: Time Capsule
on:
workflow_dispatch:
inputs:
date:
required: false
description: "Date (YYYY-MM-DD, today by default)"
type: string
schedule:
- cron: '50 9 * * *'
jobs:
set:
runs-on: ubuntu-latest
outputs:
date: ${{ steps.date.outputs.date }}
year: ${{ steps.year.outputs.year }}
month: ${{ steps.month.outputs.month }}
day: ${{ steps.day.outputs.day }}
steps:
- name: Get date
id: date
run: |
if [ "$(echo "${{ github.event.inputs.date }}" |
grep -cE "^20[0-9]{2}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$")" -eq 1 ]
then
echo "date=${{ github.event.inputs.date }}" >> $GITHUB_OUTPUT
else
echo "date=$(date -d "3 years ago" +"%Y-%m-%d")" >> $GITHUB_OUTPUT
fi
- name: Get year
id: year
run: echo "year=$(cut -d '-' -f1 <<< ${{ steps.date.outputs.date }})" >> $GITHUB_OUTPUT
- name: Get month
id: month
run: echo "month=$(cut -d '-' -f2 <<< ${{ steps.date.outputs.date }})" >> $GITHUB_OUTPUT
- name: Get day
id: day
run: echo "day=$(cut -d '-' -f3 <<< ${{ steps.date.outputs.date }})" >> $GITHUB_OUTPUT
check:
needs: set
runs-on: ubuntu-latest
outputs:
found: ${{ steps.existence.outputs.found }}
not_duplicated: ${{ steps.duplication.outputs.not_duplicated }}
steps:
- name: Check out noraworld/diary
uses: actions/checkout@v4
- name: Check out noraworld/reserved-diary
uses: actions/checkout@v4
with:
repository: noraworld/reserved-diary
ref: main
token: ${{ secrets.GH_TOKEN }}
path: reserved-diary
- name: Check file existence
id: existence
run: |
if [ -e "reserved-diary/_posts/${{ needs.set.outputs.year }}/${{ needs.set.outputs.month }}/${{ needs.set.outputs.date }}-.md" ]; then
echo "found=true" >> $GITHUB_OUTPUT
else
echo "reserved-diary/_posts/${{ needs.set.outputs.year }}/${{ needs.set.outputs.month }}/${{ needs.set.outputs.date }}-.md does not exist" >&2
echo "found=false" >> $GITHUB_OUTPUT
fi
- name: Check file duplication
id: duplication
run: |
if ! [ -e "_posts/${{ needs.set.outputs.year }}/${{ needs.set.outputs.month }}/${{ needs.set.outputs.date }}-.md" ]; then
echo "not_duplicated=true" >> $GITHUB_OUTPUT
else
echo "_posts/${{ needs.set.outputs.year }}/${{ needs.set.outputs.month }}/${{ needs.set.outputs.date }}-.md already exists" >&2
echo "not_duplicated=false" >> $GITHUB_OUTPUT
fi
migrate:
needs: [set, check]
if: needs.check.outputs.found == 'true' && needs.check.outputs.not_duplicated == 'true'
runs-on: ubuntu-latest
steps:
- name: Check out noraworld/diary
uses: actions/checkout@v4
- name: Check out noraworld/reserved-diary
uses: actions/checkout@v4
with:
repository: noraworld/reserved-diary
ref: main
token: ${{ secrets.GH_TOKEN }}
path: reserved-diary
- name: Create directory
run: mkdir -p _posts/${{ needs.set.outputs.year }}/${{ needs.set.outputs.month }}
- name: Migrate file
run: |
mv -n \
reserved-diary/_posts/${{ needs.set.outputs.year }}/${{ needs.set.outputs.month }}/${{ needs.set.outputs.date }}-.md \
_posts/${{ needs.set.outputs.year }}/${{ needs.set.outputs.month }}
- name: Set date for commit message
run: |
echo "DATE_FOR_MSG=${{ needs.set.outputs.year }} 年 $(echo ${{ needs.set.outputs.month }} | sed 's/^0*//') 月 $(echo ${{ needs.set.outputs.day }} | sed 's/^0*//') 日" >> $GITHUB_ENV
# Never execute "git add ." or "git add --all"!!!
- name: Commit
run: |
# https://qiita.com/thaim/items/3d1a4d09ec4a7d8844ce
git config user.name "$(git --no-pager log --format=format:'%an' -n 1)"
git config user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
git add _posts
git commit -m "${{ env.DATE_FOR_MSG }}の日記を公開"
git push -u origin main
cd reserved-diary
git config user.name "$(git --no-pager log --format=format:'%an' -n 1)"
git config user.email "$(git --no-pager log --format=format:'%ae' -n 1)"
git add _posts
git commit -m "${{ env.DATE_FOR_MSG }}の日記を公開リポジトリに移動"
git push -u origin main
deploy:
needs: migrate
uses: noraworld/diary/.github/workflows/pages.yml@main