Time Capsule #531
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |