diff --git a/.github/workflows/build-epub-release.yml b/.github/workflows/build-epub-release.yml new file mode 100644 index 0000000..852660f --- /dev/null +++ b/.github/workflows/build-epub-release.yml @@ -0,0 +1,121 @@ +name: Build EPUB Release + +on: + push: + branches: + - master + +jobs: + release-epubs: + runs-on: ubuntu-latest + + steps: + - name: Checkout source + uses: actions/checkout@v4 + + - name: Clean old output + run: rm -rf output/ + + - name: Create EPUB files + run: | + mkdir -p output/epubs + + shopt -s nullglob + for dir in EPUB/*/ ; do + name=$(basename "$dir") + zip -r "output/epubs/${name}.epub" "$dir" + done + + - name: Create merged ZIPs + run: | + DATE=$(date +'%Y.%m.%d') + cd output/epubs + + Collections=( + "All:[" + "A_Certain_Magical_Index:[S1_" + "A_Certain_Magical_Index_New_Testament:[S2_" + "A_Certain_Magical_Index_Genesis_Testament:[S3_" + "A_Certain_Dark_Side_Item:[S4_" + "A_Certain_Magical_Index_SP:[S5_ [S6_" + ) + for entry in "${Collections[@]}"; do + ARCHIVE_NAME="${entry%%:*}" + PREFIXES="${entry#*:}" + + FILES="" + for PREFIX in ${PREFIXES}; do + FILES+=" ${PREFIX}*.epub" + done + + zip -r ../${ARCHIVE_NAME}.${DATE}.zip ${FILES} + done + + cd - + + - name: Generate Release Notes and Rename EPUB files + id: release_notes + run: | + DATE=$(date +'%Y.%m.%d') + BASE_URL="https://github.com/${{ github.repository }}/releases/download/auto/" + shopt -s nullglob + + NOTE="## 合集\n\n" + Collections=( + "All:[${DATE}]合集" + "A_Certain_Magical_Index:[${DATE}]某魔法的禁书目录 旧约" + "A_Certain_Magical_Index_New_Testament:[${DATE}]某魔法的禁书目录 新约" + "A_Certain_Magical_Index_Genesis_Testament:[${DATE}]某魔法的禁书目录 创约" + "A_Certain_Dark_Side_Item:[${DATE}]某暗部的少女共栖" + "A_Certain_Magical_Index_SP:[${DATE}]某魔法的禁书目录 番外" + ) + for entry in "${Collections[@]}"; do + ARCHIVE_NAME="${entry%%:*}" + NAME="${entry#*:}" + NOTE="${NOTE}- [${NAME}](${BASE_URL}${ARCHIVE_NAME}.${DATE}.zip)\n" + done + + + NOTE="${NOTE}\n## 单行本\n" + SERIES_GROUPS=( + "某魔法的禁书目录 旧约:[S1_" + "某魔法的禁书目录 新约:[S2_" + "某魔法的禁书目录 创约:[S3_" + "某暗部的少女共栖:[S4_" + "某魔法的禁书目录 番外:[S5_ [S6_" + ) + for entry in "${SERIES_GROUPS[@]}"; do + LABEL="${entry%%:*}" + PREFIXES="${entry#*:}" + NOTE="${NOTE}\n### ${LABEL}\n\n" + for PREFIX in ${PREFIXES}; do + for file in output/epubs/${PREFIX}*.epub; do + filename=$(basename "$file") + short_name=$(echo "$filename" | grep -oP '\[.*?\]' | tr -d '[]').epub + mv "output/epubs/${filename}" "output/epubs/${short_name}" + name=$(basename "$filename" .epub) + NOTE="${NOTE}- [${name}](${BASE_URL}${short_name})\n" + done + done + done + + echo -e "${NOTE}" > output/release_notes.md + + - name: Upload to Release + uses: ncipollo/release-action@v1 + with: + tag: auto + allowUpdates: true + removeArtifacts: true + makeLatest: true + bodyFile: output/release_notes.md + artifacts: | + output/All.*.zip + output/A_Certain_Magical_Index.*.zip + output/A_Certain_Magical_Index_New_Testament.*.zip + output/A_Certain_Magical_Index_Genesis_Testament.*.zip + output/A_Certain_Dark_Side_Item.*.zip + output/A_Certain_Magical_Index_SP.*.zip + output/epubs/*.epub + env: + GITHUB_TOKEN: ${{ secrets.TOKEN }}