mirror of
https://github.com/luongnv89/claude-howto.git
synced 2026-06-05 22:36:34 +02:00
fix(release): address review feedback — subtitle wiring, zh guard, empty-dist guard
- Wire language-specific subtitle through EPUBConfig.subtitle field so create_cover_image renders the correct cover text per --lang instead of always using the hardcoded English defaults - Add continue-on-error for zh matrix leg (zh/ content not yet populated) and explicit permissions: contents: read on the build job - Add 'Check artifacts exist' guard step before Create Release so an all-languages-fail scenario produces a clear failure rather than confusing softprops errors; make 'List built artifacts' tolerant of an empty dist/
This commit is contained in:
@@ -9,12 +9,20 @@ jobs:
|
||||
build:
|
||||
name: Build EPUB (${{ matrix.lang }})
|
||||
runs-on: ubuntu-latest
|
||||
continue-on-error: ${{ matrix.continue-on-error == true }}
|
||||
permissions:
|
||||
contents: read
|
||||
strategy:
|
||||
# Don't cancel other languages if one fails — we still want to release
|
||||
# whichever languages built successfully.
|
||||
fail-fast: false
|
||||
matrix:
|
||||
lang: [en, vi, zh]
|
||||
include:
|
||||
# zh/ content is scaffolded but not yet populated; allow this leg
|
||||
# to fail without blocking the release of en/vi EPUBs.
|
||||
- lang: zh
|
||||
continue-on-error: true
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
@@ -70,7 +78,17 @@ jobs:
|
||||
merge-multiple: true
|
||||
|
||||
- name: List built artifacts
|
||||
run: ls -lh dist/
|
||||
run: ls -lh dist/ 2>/dev/null || echo "dist/ is empty or does not exist"
|
||||
|
||||
- name: Check artifacts exist
|
||||
id: check_artifacts
|
||||
run: |
|
||||
count=$(ls dist/*.epub 2>/dev/null | wc -l)
|
||||
echo "count=$count" >> $GITHUB_OUTPUT
|
||||
if [ "$count" -eq 0 ]; then
|
||||
echo "No EPUB artifacts were built — skipping release."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Create Release
|
||||
uses: softprops/action-gh-release@v2
|
||||
|
||||
+26
-7
@@ -105,6 +105,7 @@ class EPUBConfig:
|
||||
# EPUB Metadata
|
||||
identifier: str = "claude-howto-guide"
|
||||
title: str = "Claude Code How-To Guide"
|
||||
subtitle: str = "Master Claude Code in a Weekend"
|
||||
language: str = "en"
|
||||
author: str = "Claude Code Community"
|
||||
|
||||
@@ -908,7 +909,9 @@ def build_epub_async(
|
||||
|
||||
# Add cover
|
||||
logger.info("Generating cover image...")
|
||||
cover_data = create_cover_image(config, logger)
|
||||
cover_data = create_cover_image(
|
||||
config, logger, title=config.title, subtitle=config.subtitle
|
||||
)
|
||||
book.set_cover("cover.png", cover_data)
|
||||
|
||||
# Add CSS
|
||||
@@ -1079,13 +1082,28 @@ def main() -> int:
|
||||
repo_root = repo_root.resolve()
|
||||
|
||||
# Set language-specific paths and metadata.
|
||||
# Each entry: (source root, default output filename, title)
|
||||
lang_map: dict[str, tuple[Path, str, str]] = {
|
||||
"en": (repo_root, "claude-howto-guide.epub", EPUBConfig.en_title),
|
||||
"vi": (repo_root / "vi", "claude-howto-guide-vi.epub", EPUBConfig.vi_title),
|
||||
"zh": (repo_root / "zh", "claude-howto-guide-zh.epub", EPUBConfig.zh_title),
|
||||
# Each entry: (source root, default output filename, title, subtitle)
|
||||
lang_map: dict[str, tuple[Path, str, str, str]] = {
|
||||
"en": (
|
||||
repo_root,
|
||||
"claude-howto-guide.epub",
|
||||
EPUBConfig.en_title,
|
||||
EPUBConfig.en_subtitle,
|
||||
),
|
||||
"vi": (
|
||||
repo_root / "vi",
|
||||
"claude-howto-guide-vi.epub",
|
||||
EPUBConfig.vi_title,
|
||||
EPUBConfig.vi_subtitle,
|
||||
),
|
||||
"zh": (
|
||||
repo_root / "zh",
|
||||
"claude-howto-guide-zh.epub",
|
||||
EPUBConfig.zh_title,
|
||||
EPUBConfig.zh_subtitle,
|
||||
),
|
||||
}
|
||||
root, default_output_name, title = lang_map[args.lang]
|
||||
root, default_output_name, title, subtitle = lang_map[args.lang]
|
||||
output = args.output or (repo_root / default_output_name)
|
||||
language = args.lang
|
||||
|
||||
@@ -1098,6 +1116,7 @@ def main() -> int:
|
||||
output_path=output,
|
||||
language=language,
|
||||
title=title,
|
||||
subtitle=subtitle,
|
||||
mmdc_path=args.mmdc_path,
|
||||
puppeteer_config=args.puppeteer_config,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user