Jetsung Chan revised this gist 4 months ago. Go to revision
2 files changed, 10 insertions, 9 deletions
DOCS.md
| @@ -56,11 +56,12 @@ aitr | |||
| 56 | 56 | git clone https://github.com/xxx/docs.git docsite | |
| 57 | 57 | # cp -r docs_zh/* ./docsite/docs | |
| 58 | 58 | cp -r docs_zh/* ./docsite/content | |
| 59 | - | cd docsite | |
| 60 | 59 | ``` | |
| 61 | 60 | ||
| 62 | 61 | 8. 启动或构建 | |
| 63 | 62 | ```bash | |
| 63 | + | cd docsite | |
| 64 | + | ||
| 64 | 65 | # NodeJS | |
| 65 | 66 | npm install | |
| 66 | 67 | npm run dev | |
docs.yml
| @@ -31,11 +31,11 @@ jobs: | |||
| 31 | 31 | - name: Fetch Source | |
| 32 | 32 | run: | | |
| 33 | 33 | git clone https://github.com/xxx/docs.git docsite | |
| 34 | - | - name: Build Docs | |
| 35 | - | run: | | |
| 36 | - | cp -r docs_zh/* ./docsite/content | |
| 37 | - | cd docsite/ | |
| 38 | - | - name: Build Docs | |
| 34 | + | cd docsite | |
| 35 | + | git checkout $(cat ../commit.txt) | |
| 36 | + | - name: Copy Chinese Docs | |
| 37 | + | run: cp -r docs_zh/* ./docsite/docs/ | |
| 38 | + | - name: Build Site | |
| 39 | 39 | working-directory: ./docsite | |
| 40 | 40 | run: | | |
| 41 | 41 | echo "Building documentation..." | |
| @@ -57,7 +57,7 @@ jobs: | |||
| 57 | 57 | steps: | |
| 58 | 58 | # - uses: actions/configure-pages@v5 | |
| 59 | 59 | - name: Download build artifacts | |
| 60 | - | uses: actions/download-artifact@v6 | |
| 60 | + | uses: actions/download-artifact@v7 | |
| 61 | 61 | with: | |
| 62 | 62 | name: docs-site | |
| 63 | 63 | path: ./public | |
| @@ -77,7 +77,7 @@ jobs: | |||
| 77 | 77 | runs-on: ubuntu-latest | |
| 78 | 78 | steps: | |
| 79 | 79 | - name: Download build artifacts | |
| 80 | - | uses: actions/download-artifact@v6 | |
| 80 | + | uses: actions/download-artifact@v7 | |
| 81 | 81 | with: | |
| 82 | 82 | name: docs-site | |
| 83 | 83 | path: ./public | |
| @@ -95,7 +95,7 @@ jobs: | |||
| 95 | 95 | - run: echo "" >> ~/.ssh/access # fix | |
| 96 | 96 | - name: Deploy the website | |
| 97 | 97 | env: | |
| 98 | - | WEBROOT: /data/wwwroot/docker | |
| 98 | + | WEBROOT: /data/wwwroot/MYDOCSITE | |
| 99 | 99 | run: | | |
| 100 | 100 | ssh webserver "rm -rf $WEBROOT && mkdir -p $WEBROOT" | |
| 101 | 101 | scp docs-site.tar.xz webserver:${WEBROOT}/ | |
Jetsung Chan revised this gist 4 months ago. Go to revision
5 files changed, 81 insertions, 17 deletions
DOCS.md
| @@ -6,6 +6,14 @@ | |||
| 6 | 6 | ||
| 7 | 7 | ### 首次使用 | |
| 8 | 8 | 1. 创建空分支 | |
| 9 | + | ||
| 10 | + | > 未初始化 | |
| 11 | + | ```bash | |
| 12 | + | git init | |
| 13 | + | git branch -m docs | |
| 14 | + | ``` | |
| 15 | + | ||
| 16 | + | > 已存在项目 | |
| 9 | 17 | ```bash | |
| 10 | 18 | git switch --orphan docs | |
| 11 | 19 | ``` | |
| @@ -20,6 +28,8 @@ git push origin docs | |||
| 20 | 28 | 3. 拉取上游源码 | |
| 21 | 29 | ```bash | |
| 22 | 30 | mkdir -p docsite | |
| 31 | + | pushd docsite | |
| 32 | + | git init | |
| 23 | 33 | git remote add upstream https://github.com/xxx/docs.git | |
| 24 | 34 | git reset --hard | |
| 25 | 35 | git fetch upstream main | |
| @@ -44,6 +54,7 @@ aitr | |||
| 44 | 54 | 6. 本地测试与构建 | |
| 45 | 55 | ```bash | |
| 46 | 56 | git clone https://github.com/xxx/docs.git docsite | |
| 57 | + | # cp -r docs_zh/* ./docsite/docs | |
| 47 | 58 | cp -r docs_zh/* ./docsite/content | |
| 48 | 59 | cd docsite | |
| 49 | 60 | ``` | |
config.example.toml
| @@ -10,6 +10,12 @@ output_mode = "new_folder" | |||
| 10 | 10 | # 排除的目录 (逗号分隔) | |
| 11 | 11 | exclude_dir = "node_modules,.git,_build" | |
| 12 | 12 | ||
| 13 | + | # 白名单文件扩展名 (逗号分隔,留空表示使用默认支持的格式) | |
| 14 | + | # whitelist_extensions = "md,txt,srt" | |
| 15 | + | ||
| 16 | + | # 黑名单文件扩展名 (逗号分隔,留空表示不排除任何格式) | |
| 17 | + | # blacklist_extensions = "pdf,docx" | |
| 18 | + | ||
| 13 | 19 | # 最大 token 数 | |
| 14 | 20 | max_tokens = 99999 | |
| 15 | 21 | ||
deploy.sh
| @@ -7,7 +7,7 @@ | |||
| 7 | 7 | # Author: Jetsung Chan <[email protected]> | |
| 8 | 8 | # Version: 0.2.0 | |
| 9 | 9 | # CreatedAt: 2025-12-16 | |
| 10 | - | # UpdatedAt: 2026-01-27 | |
| 10 | + | # UpdatedAt: 2026-01-29 | |
| 11 | 11 | #============================================================ | |
| 12 | 12 | ||
| 13 | 13 | ||
| @@ -241,6 +241,46 @@ deploy_docs_zh() { | |||
| 241 | 241 | echo "======================================" | |
| 242 | 242 | } | |
| 243 | 243 | ||
| 244 | + | # 更新项目信息 | |
| 245 | + | update_info() { | |
| 246 | + | local repo_url="${1:-}" | |
| 247 | + | local title="${2:-}" | |
| 248 | + | ||
| 249 | + | if [[ -z "$repo_url" ]]; then | |
| 250 | + | echo "❌ 缺少参数: repo_url" >&2 | |
| 251 | + | echo "示例: $0 --init https://github.com/user/repo.git [\"我的文档\"]" | |
| 252 | + | exit 1 | |
| 253 | + | fi | |
| 254 | + | ||
| 255 | + | echo "======================================" | |
| 256 | + | echo "📝 开始更新项目信息" | |
| 257 | + | echo "======================================" | |
| 258 | + | echo "→ 仓库地址: $repo_url" | |
| 259 | + | if [[ -n "$title" ]]; then | |
| 260 | + | echo "→ 文档标题: $title 中文文档" | |
| 261 | + | fi | |
| 262 | + | ||
| 263 | + | if [[ -f README.md ]]; then | |
| 264 | + | sed -i "s#https://github.com/xxx/docs.git#$repo_url#g" README.md | |
| 265 | + | if [[ -n "$title" ]]; then | |
| 266 | + | sed -i "s/^# 中文文档/# $title 中文文档/g" README.md | |
| 267 | + | fi | |
| 268 | + | echo "✓ README.md 已更新" | |
| 269 | + | else | |
| 270 | + | echo "⚠️ README.md 不存在,跳过" | |
| 271 | + | fi | |
| 272 | + | ||
| 273 | + | # 同步更新 docs.yml | |
| 274 | + | if [[ -f .github/workflows/docs.yml ]]; then | |
| 275 | + | sed -i "s#https://github.com/xxx/docs.git#$repo_url#g" .github/workflows/docs.yml | |
| 276 | + | echo "✓ .github/workflows/docs.yml 已更新" | |
| 277 | + | fi | |
| 278 | + | ||
| 279 | + | echo "======================================" | |
| 280 | + | echo "✓ 项目信息更新完成" | |
| 281 | + | echo "======================================" | |
| 282 | + | } | |
| 283 | + | ||
| 244 | 284 | # 调用翻译脚本 | |
| 245 | 285 | translate() { | |
| 246 | 286 | echo "======================================" | |
| @@ -262,6 +302,7 @@ usage() { | |||
| 262 | 302 | 用法: $0 [选项] | |
| 263 | 303 | ||
| 264 | 304 | 选项: | |
| 305 | + | -i --init 初始化项目信息 (替换仓库地址和标题) | |
| 265 | 306 | -d --deploy 部署 docs_zh 到 docsite | |
| 266 | 307 | -c --config 设置配置文件 | |
| 267 | 308 | -s --sync 同步源文档 | |
| @@ -272,6 +313,7 @@ usage() { | |||
| 272 | 313 | -h --help 显示此帮助信息 | |
| 273 | 314 | ||
| 274 | 315 | 示例: | |
| 316 | + | $0 --init https://github.com/user/repo.git "我的文档" | |
| 275 | 317 | $0 --translate | |
| 276 | 318 | $0 --update | |
| 277 | 319 | $0 --sync --branch develop | |
| @@ -292,8 +334,21 @@ main() { | |||
| 292 | 334 | ||
| 293 | 335 | # 先解析所有参数 | |
| 294 | 336 | local actions=() | |
| 337 | + | local INIT_REPO="" | |
| 338 | + | local INIT_TITLE="" | |
| 295 | 339 | while [[ $# -gt 0 ]]; do | |
| 296 | 340 | case $1 in | |
| 341 | + | -i|--init) | |
| 342 | + | INIT_REPO="$2" | |
| 343 | + | # 检查 $3 是否存在且不是一个选项 (以 - 开头) | |
| 344 | + | if [[ -n "${3:-}" && "${3:-}" != -* ]]; then | |
| 345 | + | INIT_TITLE="$3" | |
| 346 | + | shift 3 | |
| 347 | + | else | |
| 348 | + | shift 2 | |
| 349 | + | fi | |
| 350 | + | actions+=("init") | |
| 351 | + | ;; | |
| 297 | 352 | -b|--branch) | |
| 298 | 353 | CUSTOM_BRANCH="$2" | |
| 299 | 354 | shift 2 | |
| @@ -354,6 +409,10 @@ main() { | |||
| 354 | 409 | # 执行操作 | |
| 355 | 410 | for action in "${actions[@]}"; do | |
| 356 | 411 | case $action in | |
| 412 | + | init) | |
| 413 | + | echo "→ 执行操作: 初始化项目信息" | |
| 414 | + | update_info "$INIT_REPO" "$INIT_TITLE" | |
| 415 | + | ;; | |
| 357 | 416 | deploy) | |
| 358 | 417 | echo "→ 执行操作: 部署 docs_zh" | |
| 359 | 418 | deploy_docs_zh | |
docs.yml
| @@ -24,31 +24,21 @@ defaults: | |||
| 24 | 24 | jobs: | |
| 25 | 25 | build: | |
| 26 | 26 | env: | |
| 27 | - | HUGO_VERSION: 0.154.2 | |
| 28 | 27 | TZ: Asia/Shanghai | |
| 29 | 28 | runs-on: ubuntu-latest | |
| 30 | 29 | steps: | |
| 31 | 30 | - uses: actions/checkout@v6 | |
| 32 | - | - name: Install Hugo | |
| 33 | - | run: | | |
| 34 | - | curl -L https://fx4.cn/hugo | bash -s -- -v "$HUGO_VERSION" -w | |
| 35 | - | - name: Verify installations | |
| 36 | - | run: | | |
| 37 | - | echo "Hugo: $(hugo version)" | |
| 38 | - | echo "Node.js: $(node --version)" | |
| 39 | 31 | - name: Fetch Source | |
| 40 | 32 | run: | | |
| 41 | 33 | git clone https://github.com/xxx/docs.git docsite | |
| 42 | - | - name: Fix | |
| 43 | - | run: | | |
| 44 | - | # sed -i 's/refLinksErrorLevel: WARNING/refLinksErrorLevel: ERROR/' docsite/hugo.yaml | |
| 45 | - | sed -i '/baseURL/d' docsite/hugo.yaml | |
| 46 | 34 | - name: Build Docs | |
| 47 | 35 | run: | | |
| 48 | 36 | cp -r docs_zh/* ./docsite/content | |
| 49 | 37 | cd docsite/ | |
| 50 | - | npm install | |
| 51 | - | hugo build | |
| 38 | + | - name: Build Docs | |
| 39 | + | working-directory: ./docsite | |
| 40 | + | run: | | |
| 41 | + | echo "Building documentation..." | |
| 52 | 42 | - name: Copy CNAME | |
| 53 | 43 | run: cp CNAME docsite/public/ | |
| 54 | 44 | - name: Upload build artifacts | |
init.sh
| @@ -16,8 +16,6 @@ download_files() { | |||
| 16 | 16 | ||
| 17 | 17 | curl -fsSL -O "${BASE_URL}/config.example.toml" | |
| 18 | 18 | ||
| 19 | - | curl -fsSL -O "${BASE_URL}/config.example.toml" | |
| 20 | - | ||
| 21 | 19 | curl -fsSL -O "${BASE_URL}/.gitignore" | |
| 22 | 20 | ||
| 23 | 21 | curl -fsSL --create-dirs -o ".github/workflows/docs.yml" "${BASE_URL}/docs.yml" | |
Jetsung Chan revised this gist 4 months ago. Go to revision
3 files changed, 250 insertions, 55 deletions
DOCS.md
| @@ -20,13 +20,7 @@ git push origin docs | |||
| 20 | 20 | 3. 拉取上游源码 | |
| 21 | 21 | ```bash | |
| 22 | 22 | mkdir -p docsite | |
| 23 | - | pushd docsite | |
| 24 | - | if [[ -d .git ]]; then | |
| 25 | - | git remote set-url upstream https://github.com/xxx/docs.git | |
| 26 | - | else | |
| 27 | - | git init | |
| 28 | - | git remote add upstream https://github.com/xxx/docs.git | |
| 29 | - | fi | |
| 23 | + | git remote add upstream https://github.com/xxx/docs.git | |
| 30 | 24 | git reset --hard | |
| 31 | 25 | git fetch upstream main | |
| 32 | 26 | git merge upstream/main | |
config.example.toml
| @@ -13,6 +13,9 @@ exclude_dir = "node_modules,.git,_build" | |||
| 13 | 13 | # 最大 token 数 | |
| 14 | 14 | max_tokens = 99999 | |
| 15 | 15 | ||
| 16 | + | # 大文件拆分阈值 (单位:字符) | |
| 17 | + | max_chunk_size = 8192 | |
| 18 | + | ||
| 16 | 19 | # 系统提示词(支持多行,使用 """ 包裹) | |
| 17 | 20 | system_prompt = """ | |
| 18 | 21 | 你是一个专业的技术文档翻译专家。请将以下英文 Markdown 文档翻译成流畅、自然的简体中文。 | |
deploy.sh
| @@ -2,12 +2,12 @@ | |||
| 2 | 2 | ||
| 3 | 3 | #============================================================ | |
| 4 | 4 | # File: deploy.sh | |
| 5 | - | # Description: 部署 | |
| 5 | + | # Description: 部署中文文档 | |
| 6 | 6 | # URL: | |
| 7 | 7 | # Author: Jetsung Chan <[email protected]> | |
| 8 | 8 | # Version: 0.2.0 | |
| 9 | 9 | # CreatedAt: 2025-12-16 | |
| 10 | - | # UpdatedAt: 2026-01-08 | |
| 10 | + | # UpdatedAt: 2026-01-27 | |
| 11 | 11 | #============================================================ | |
| 12 | 12 | ||
| 13 | 13 | ||
| @@ -17,7 +17,7 @@ else | |||
| 17 | 17 | set -euo pipefail | |
| 18 | 18 | fi | |
| 19 | 19 | ||
| 20 | - | DEFAULT_BRANCH="main" | |
| 20 | + | DEFAULT_BRANCH="${BRANCH:-main}" | |
| 21 | 21 | HUGO_VERSION=${HUGO:-0.154.2} | |
| 22 | 22 | ||
| 23 | 23 | DELETE_FILE="deleted_docs.txt" | |
| @@ -25,73 +25,157 @@ ADD_FILE="new_docs.txt" | |||
| 25 | 25 | MODIFIED_FILE="modified_docs.txt" | |
| 26 | 26 | TRANSLATE_LIST="translate_list.txt" | |
| 27 | 27 | ||
| 28 | + | UPSTREAM_URL="${UPSTREAM_URL:-}" | |
| 29 | + | UPSTREAM_NAME="upstream" | |
| 30 | + | ||
| 31 | + | # 命令行参数 | |
| 32 | + | CUSTOM_BRANCH="" | |
| 33 | + | CUSTOM_UPSTREAM="" | |
| 34 | + | ||
| 28 | 35 | install_hugo() { | |
| 36 | + | echo "======================================" | |
| 37 | + | echo "📦 开始安装 Hugo" | |
| 38 | + | echo "======================================" | |
| 39 | + | echo "→ 目标版本: $HUGO_VERSION" | |
| 40 | + | echo "→ 正在下载并安装..." | |
| 29 | 41 | curl -L https://fx4.cn/hugo | bash -s -- -v "$HUGO_VERSION" -w | |
| 42 | + | echo "✓ Hugo 安装完成" | |
| 43 | + | hugo version | |
| 44 | + | echo "======================================" | |
| 30 | 45 | } | |
| 31 | 46 | ||
| 32 | - | merge_config() { | |
| 47 | + | setup_config() { | |
| 48 | + | echo "======================================" | |
| 49 | + | echo "⚙️ 开始设置配置文件" | |
| 50 | + | echo "======================================" | |
| 33 | 51 | if [[ -f config.example.toml ]]; then | |
| 52 | + | echo "→ 从 config.example.toml 提取基础配置..." | |
| 34 | 53 | sed '/providers/,$d' ./config.example.toml | tee config.toml > /dev/null | |
| 54 | + | echo "✓ 基础配置提取完成" | |
| 55 | + | else | |
| 56 | + | echo "⚠️ config.example.toml 不存在,跳过基础配置" | |
| 35 | 57 | fi | |
| 36 | 58 | ||
| 37 | 59 | if [[ -f aitr.toml ]]; then | |
| 60 | + | echo "→ 从 aitr.toml 追加日志配置..." | |
| 38 | 61 | sed -n '/logging/,$p' aitr.toml | tee -a config.toml > /dev/null | |
| 62 | + | echo "✓ 日志配置追加完成" | |
| 63 | + | else | |
| 64 | + | echo "⚠️ aitr.toml 不存在,跳过日志配置" | |
| 39 | 65 | fi | |
| 66 | + | echo "✓ 配置文件设置完成" | |
| 67 | + | echo "======================================" | |
| 40 | 68 | } | |
| 41 | 69 | ||
| 42 | - | merge_source() { | |
| 70 | + | sync_source() { | |
| 71 | + | echo "======================================" | |
| 72 | + | echo "📚 开始同步源文档" | |
| 73 | + | echo "======================================" | |
| 74 | + | echo "→ 准备工作目录..." | |
| 43 | 75 | [[ -d docsite ]] || mkdir docsite | |
| 44 | - | ||
| 45 | - | pushd docsite | |
| 46 | - | if [[ -d .git ]]; then | |
| 47 | - | git remote set-url upstream https://github.com/xxx/docs.git | |
| 48 | - | else | |
| 76 | + | ||
| 77 | + | pushd docsite > /dev/null | |
| 78 | + | if [[ ! -d .git ]]; then | |
| 79 | + | echo "→ 初始化 git 仓库..." | |
| 49 | 80 | git init | |
| 50 | - | git remote add upstream https://github.com/xxx/docs.git | |
| 81 | + | echo "→ 添加 upstream remote: ${UPSTREAM_URL}" | |
| 82 | + | git remote add "${UPSTREAM_NAME}" "${UPSTREAM_URL}" | |
| 83 | + | else | |
| 84 | + | # 检查是否已经存在 upstream | |
| 85 | + | if ! git remote get-url "${UPSTREAM_NAME}" >/dev/null 2>&1; then | |
| 86 | + | echo "→ 添加 upstream remote..." | |
| 87 | + | git remote add "${UPSTREAM_NAME}" "${UPSTREAM_URL}" | |
| 88 | + | else | |
| 89 | + | current_url=$(git remote get-url "${UPSTREAM_NAME}") | |
| 90 | + | if [[ "${current_url}" != "${UPSTREAM_URL}" ]]; then | |
| 91 | + | echo "→ 更新 upstream URL" | |
| 92 | + | echo " 旧 URL: ${current_url}" | |
| 93 | + | echo " 新 URL: ${UPSTREAM_URL}" | |
| 94 | + | git remote set-url "${UPSTREAM_NAME}" "${UPSTREAM_URL}" | |
| 95 | + | fi | |
| 96 | + | fi | |
| 51 | 97 | fi | |
| 98 | + | echo "→ 正在拉取最新代码..." | |
| 99 | + | echo " 分支: $DEFAULT_BRANCH" | |
| 100 | + | echo " Remote: ${UPSTREAM_NAME}" | |
| 52 | 101 | git reset --hard | |
| 53 | - | git fetch upstream main | |
| 54 | - | git merge upstream/main | |
| 55 | - | git rev-parse --short HEAD > ../commit.txt | |
| 56 | - | popd | |
| 102 | + | git fetch "${UPSTREAM_NAME}" "${DEFAULT_BRANCH}" | |
| 103 | + | git merge "${UPSTREAM_NAME}"/"${DEFAULT_BRANCH}" | |
| 104 | + | COMMIT_SHA=$(git rev-parse --short HEAD) | |
| 105 | + | echo "$COMMIT_SHA" > ../commit.txt | |
| 106 | + | echo "✓ 代码同步完成 (commit: $COMMIT_SHA)" | |
| 107 | + | popd > /dev/null | |
| 57 | 108 | ||
| 109 | + | echo "→ 清理旧文档目录..." | |
| 58 | 110 | rm -rf docs | |
| 59 | - | # cp -r docsite/docs . | |
| 60 | - | cp -r docsite/content . | |
| 61 | - | mv content docs | |
| 111 | + | echo "→ 复制源文档..." | |
| 112 | + | if [[ -d docsite/content ]]; then | |
| 113 | + | cp -r docsite/content . | |
| 114 | + | mv content docs | |
| 115 | + | echo "✓ 已从 docsite/content 复制文档" | |
| 116 | + | elif [[ -d docsite/docs ]]; then | |
| 117 | + | cp -r docsite/docs . | |
| 118 | + | echo "✓ 已从 docsite/docs 复制文档" | |
| 119 | + | else | |
| 120 | + | echo "❌ docsite 目录下没有 content 或 docs 目录,无法同步文档。" >&2 | |
| 121 | + | exit 1 | |
| 122 | + | fi | |
| 123 | + | echo "✓ 源文档同步完成" | |
| 124 | + | echo "======================================" | |
| 62 | 125 | } | |
| 63 | 126 | ||
| 64 | 127 | # 增量更新 | |
| 65 | - | incremental_update() { | |
| 66 | - | merge_source | |
| 128 | + | update_incremental() { | |
| 129 | + | echo "======================================" | |
| 130 | + | echo "🔄 开始增量更新流程" | |
| 131 | + | echo "======================================" | |
| 132 | + | if [[ -z "$UPSTREAM_URL" ]]; then | |
| 133 | + | echo "❌ UPSTREAM_URL 未设置,无法进行增量更新。" >&2 | |
| 134 | + | exit 1 | |
| 135 | + | fi | |
| 136 | + | ||
| 137 | + | echo "→ 步骤 1/6: 同步源文档" | |
| 138 | + | sync_source | |
| 67 | 139 | ||
| 68 | 140 | # 记录删除的文件 | |
| 141 | + | echo "→ 步骤 2/6: 检测已删除的文件" | |
| 142 | + | echo " 正在扫描已删除的文档..." | |
| 69 | 143 | git ls-files --deleted docs/ | tee "$DELETE_FILE" | |
| 70 | 144 | ROOT_DIR=$(grep root_dir config.toml | cut -d'"' -f 2 | sed 's|^\./||') | |
| 71 | 145 | export ROOT_DIR | |
| 72 | 146 | OUTPUT_DIR=$(grep output_dir config.toml | cut -d'"' -f 2 | sed 's|^\./||') | |
| 73 | 147 | export OUTPUT_DIR | |
| 148 | + | echo " 根目录: $ROOT_DIR" | |
| 149 | + | echo " 输出目录: $OUTPUT_DIR" | |
| 74 | 150 | # sed -i "s|^$ROOT_DIR/|$OUTPUT_DIR/|g" "$DELETE_FILE" | |
| 75 | 151 | # 删除对应的输出文件 | |
| 152 | + | echo " 正在清理对应的输出文件..." | |
| 76 | 153 | while read -r file; do | |
| 77 | 154 | new_file="${file/$ROOT_DIR/$OUTPUT_DIR}" | |
| 78 | - | echo "$new_file" | |
| 155 | + | echo " 删除: $new_file" | |
| 79 | 156 | rm -rf "$new_file" || true | |
| 80 | 157 | done < "$DELETE_FILE" | |
| 158 | + | echo "✓ 已清理删除的文件" | |
| 81 | 159 | ||
| 82 | 160 | # 更新 git 索引 | |
| 161 | + | echo "→ 步骤 3/6: 更新 git 索引" | |
| 83 | 162 | git add . | |
| 84 | 163 | # 记录新增和修改的文件 | |
| 164 | + | echo " 正在检测新增的文件..." | |
| 85 | 165 | git diff --cached --name-only --diff-filter=A docs/ | tee "$ADD_FILE" | |
| 166 | + | echo " 正在检测修改的文件..." | |
| 86 | 167 | git diff --cached --name-only --diff-filter=M docs/ | tee "$MODIFIED_FILE" | |
| 87 | 168 | ||
| 169 | + | echo "→ 步骤 4/6: 生成待翻译文件列表" | |
| 88 | 170 | cat "$ADD_FILE" "$MODIFIED_FILE" | tee "$TRANSLATE_LIST" | |
| 89 | 171 | ||
| 90 | 172 | # 移除以 .png .jpg .jpeg .gif .svg 结尾的文件 | |
| 173 | + | echo " 过滤图片文件..." | |
| 91 | 174 | sed -i '/\.\(png\|jpg\|jpeg\|gif\|svg\)$/d' "$TRANSLATE_LIST" | |
| 175 | + | echo "✓ 已生成待翻译文件列表: $TRANSLATE_LIST" | |
| 92 | 176 | ||
| 93 | - | # 合并 config.toml | |
| 94 | - | merge_config | |
| 177 | + | echo "→ 步骤 5/6: 设置配置文件" | |
| 178 | + | setup_config | |
| 95 | 179 | ||
| 96 | 180 | # # 翻译增量文件 | |
| 97 | 181 | # if ! command -v aitr &> /dev/null; then | |
| @@ -100,30 +184,77 @@ incremental_update() { | |||
| 100 | 184 | # fi | |
| 101 | 185 | ||
| 102 | 186 | # 调用 aitr 进行翻译 | |
| 187 | + | echo "→ 步骤 6/6: 执行翻译" | |
| 103 | 188 | if command -v aitr &> /dev/null; then | |
| 189 | + | echo " 正在调用 aitr 翻译文件..." | |
| 104 | 190 | aitr --input "$TRANSLATE_LIST" --list --output translated | |
| 191 | + | echo " 正在复制翻译结果到输出目录..." | |
| 105 | 192 | cp -r "translated/${ROOT_DIR}/"* "${OUTPUT_DIR}"/ | |
| 193 | + | echo "✓ 翻译完成" | |
| 106 | 194 | else | |
| 107 | - | echo "aitr 未安装,跳过构建步骤。" | |
| 195 | + | echo "⚠️ aitr 未安装,跳过翻译步骤。" | |
| 108 | 196 | fi | |
| 197 | + | echo "======================================" | |
| 198 | + | echo "✓ 增量更新完成" | |
| 199 | + | echo "======================================" | |
| 109 | 200 | } | |
| 110 | 201 | ||
| 111 | - | # 复制 docs_zh 至 content | |
| 112 | - | copy_docs_zh() { | |
| 202 | + | # 部署 docs_zh 到 docsite | |
| 203 | + | deploy_docs_zh() { | |
| 204 | + | echo "======================================" | |
| 205 | + | echo "📋 开始部署 docs_zh 到 docsite" | |
| 206 | + | echo "======================================" | |
| 113 | 207 | if [[ ! -d docsite ]]; then | |
| 114 | - | git clone https://github.com/xxx/docs.git docsite | |
| 208 | + | if [[ -z "$UPSTREAM_URL" ]]; then | |
| 209 | + | echo "❌ UPSTREAM_URL 未设置,无法克隆文档站点。" >&2 | |
| 210 | + | exit 1 | |
| 211 | + | fi | |
| 212 | + | echo "→ docsite 目录不存在,正在克隆..." | |
| 213 | + | git clone "$UPSTREAM_URL" docsite | |
| 214 | + | echo "✓ 克隆完成" | |
| 115 | 215 | fi | |
| 216 | + | ||
| 116 | 217 | if [[ -d "translated/docs" ]]; then | |
| 117 | - | echo "使用 translated/docs 的文档覆盖 docs_zh" | |
| 218 | + | echo "→ 检测到 translated/docs,正在覆盖 docs_zh..." | |
| 118 | 219 | cp -r translated/docs/* docs_zh/ | |
| 220 | + | echo "✓ 已覆盖 docs_zh" | |
| 221 | + | fi | |
| 222 | + | ||
| 223 | + | if [[ ! -d docs_zh ]]; then | |
| 224 | + | echo "❌ docs_zh 目录不存在,无法部署。" >&2 | |
| 225 | + | exit 1 | |
| 119 | 226 | fi | |
| 120 | - | # cp -r docs_zh/* docsite/docs/ | |
| 121 | - | cp -r docs_zh/* ./docsite/content/ | |
| 227 | + | ||
| 228 | + | echo "→ 正在部署 docs_zh 到 docsite..." | |
| 229 | + | if [[ -d docsite/content ]]; then | |
| 230 | + | cp -r docs_zh/* ./docsite/content/ | |
| 231 | + | echo "✓ 已部署到 docsite/content/" | |
| 232 | + | elif [[ -d docsite/docs ]]; then | |
| 233 | + | cp -r docs_zh/* ./docsite/docs/ | |
| 234 | + | echo "✓ 已部署到 docsite/docs/" | |
| 235 | + | else | |
| 236 | + | echo "❌ docsite 目录下没有 content 或 docs 目录,无法部署。" >&2 | |
| 237 | + | exit 1 | |
| 238 | + | fi | |
| 239 | + | echo "======================================" | |
| 240 | + | echo "✓ 文档部署完成" | |
| 241 | + | echo "======================================" | |
| 122 | 242 | } | |
| 123 | 243 | ||
| 124 | 244 | # 调用翻译脚本 | |
| 125 | 245 | translate() { | |
| 246 | + | echo "======================================" | |
| 247 | + | echo "🌐 开始执行翻译" | |
| 248 | + | echo "======================================" | |
| 249 | + | if ! command -v aitr &> /dev/null; then | |
| 250 | + | echo "❌ aitr 未安装,请先安装 aitr。" >&2 | |
| 251 | + | exit 1 | |
| 252 | + | fi | |
| 253 | + | echo "→ 正在调用 aitr 翻译工具..." | |
| 126 | 254 | aitr | |
| 255 | + | echo "======================================" | |
| 256 | + | echo "✓ 翻译完成" | |
| 257 | + | echo "======================================" | |
| 127 | 258 | } | |
| 128 | 259 | ||
| 129 | 260 | usage() { | |
| @@ -131,44 +262,64 @@ usage() { | |||
| 131 | 262 | 用法: $0 [选项] | |
| 132 | 263 | ||
| 133 | 264 | 选项: | |
| 134 | - | -c --copy 复制 docs_zh | |
| 135 | - | -g --config 合并 config.toml | |
| 136 | - | -s --source 合并文档 | |
| 137 | - | -i --incremental 增量更新 | |
| 138 | - | -t --translate 调用翻译脚本 | |
| 139 | - | -h --help 显示此帮助信息 | |
| 265 | + | -d --deploy 部署 docs_zh 到 docsite | |
| 266 | + | -c --config 设置配置文件 | |
| 267 | + | -s --sync 同步源文档 | |
| 268 | + | -u --update 增量更新(同步+翻译) | |
| 269 | + | -t --translate 执行翻译 | |
| 270 | + | -b --branch 指定分支 (默认: main) | |
| 271 | + | -U --upstream 指定上游 URL | |
| 272 | + | -h --help 显示此帮助信息 | |
| 140 | 273 | ||
| 141 | 274 | 示例: | |
| 142 | 275 | $0 --translate | |
| 276 | + | $0 --update | |
| 277 | + | $0 --sync --branch develop | |
| 278 | + | $0 --update --upstream https://github.com/user/repo.git | |
| 143 | 279 | EOF | |
| 144 | 280 | } | |
| 145 | 281 | ||
| 146 | 282 | main() { | |
| 283 | + | echo "======================================" | |
| 284 | + | echo "🚀 部署脚本启动" | |
| 285 | + | echo "======================================" | |
| 286 | + | ||
| 147 | 287 | if [[ $# -eq 0 ]]; then | |
| 288 | + | echo "❌ 未指定任何操作" >&2 | |
| 148 | 289 | usage | |
| 149 | 290 | exit 1 | |
| 150 | 291 | fi | |
| 151 | 292 | ||
| 293 | + | # 先解析所有参数 | |
| 294 | + | local actions=() | |
| 152 | 295 | while [[ $# -gt 0 ]]; do | |
| 153 | 296 | case $1 in | |
| 154 | - | -c|--copy) | |
| 155 | - | copy_docs_zh | |
| 297 | + | -b|--branch) | |
| 298 | + | CUSTOM_BRANCH="$2" | |
| 299 | + | shift 2 | |
| 300 | + | ;; | |
| 301 | + | -U|--upstream) | |
| 302 | + | CUSTOM_UPSTREAM="$2" | |
| 303 | + | shift 2 | |
| 304 | + | ;; | |
| 305 | + | -d|--deploy) | |
| 306 | + | actions+=("deploy") | |
| 156 | 307 | shift | |
| 157 | 308 | ;; | |
| 158 | - | -g|--config) | |
| 159 | - | merge_config | |
| 309 | + | -c|--config) | |
| 310 | + | actions+=("config") | |
| 160 | 311 | shift | |
| 161 | - | ;; | |
| 162 | - | -s|--source) | |
| 163 | - | merge_source | |
| 312 | + | ;; | |
| 313 | + | -s|--sync) | |
| 314 | + | actions+=("sync") | |
| 164 | 315 | shift | |
| 165 | - | ;; | |
| 166 | - | -i|--incremental) | |
| 167 | - | incremental_update | |
| 316 | + | ;; | |
| 317 | + | -u|--update) | |
| 318 | + | actions+=("update") | |
| 168 | 319 | shift | |
| 169 | 320 | ;; | |
| 170 | 321 | -t|--translate) | |
| 171 | - | translate | |
| 322 | + | actions+=("translate") | |
| 172 | 323 | shift | |
| 173 | 324 | ;; | |
| 174 | 325 | --help|-h) | |
| @@ -176,12 +327,59 @@ main() { | |||
| 176 | 327 | exit 0 | |
| 177 | 328 | ;; | |
| 178 | 329 | *) | |
| 179 | - | echo "未知参数: $1" >&2 | |
| 330 | + | echo "❌ 未知参数: $1" >&2 | |
| 180 | 331 | usage | |
| 181 | 332 | exit 1 | |
| 182 | 333 | ;; | |
| 183 | 334 | esac | |
| 184 | 335 | done | |
| 336 | + | ||
| 337 | + | # 应用自定义参数 | |
| 338 | + | if [[ -n "$CUSTOM_BRANCH" ]]; then | |
| 339 | + | DEFAULT_BRANCH="$CUSTOM_BRANCH" | |
| 340 | + | fi | |
| 341 | + | if [[ -n "$CUSTOM_UPSTREAM" ]]; then | |
| 342 | + | UPSTREAM_URL="$CUSTOM_UPSTREAM" | |
| 343 | + | fi | |
| 344 | + | ||
| 345 | + | echo "当前分支: $DEFAULT_BRANCH" | |
| 346 | + | echo "Hugo 版本: $HUGO_VERSION" | |
| 347 | + | if [[ -n "$UPSTREAM_URL" ]]; then | |
| 348 | + | echo "Upstream URL: $UPSTREAM_URL" | |
| 349 | + | else | |
| 350 | + | echo "Upstream URL: (未设置)" | |
| 351 | + | fi | |
| 352 | + | echo "======================================" | |
| 353 | + | ||
| 354 | + | # 执行操作 | |
| 355 | + | for action in "${actions[@]}"; do | |
| 356 | + | case $action in | |
| 357 | + | deploy) | |
| 358 | + | echo "→ 执行操作: 部署 docs_zh" | |
| 359 | + | deploy_docs_zh | |
| 360 | + | ;; | |
| 361 | + | config) | |
| 362 | + | echo "→ 执行操作: 设置配置文件" | |
| 363 | + | setup_config | |
| 364 | + | ;; | |
| 365 | + | sync) | |
| 366 | + | echo "→ 执行操作: 同步源文档" | |
| 367 | + | sync_source | |
| 368 | + | ;; | |
| 369 | + | update) | |
| 370 | + | echo "→ 执行操作: 增量更新" | |
| 371 | + | update_incremental | |
| 372 | + | ;; | |
| 373 | + | translate) | |
| 374 | + | echo "→ 执行操作: 执行翻译" | |
| 375 | + | translate | |
| 376 | + | ;; | |
| 377 | + | esac | |
| 378 | + | done | |
| 379 | + | ||
| 380 | + | echo "======================================" | |
| 381 | + | echo "✓ 部署脚本执行完成" | |
| 382 | + | echo "======================================" | |
| 185 | 383 | } | |
| 186 | 384 | ||
| 187 | 385 | main "$@" | |
Jetsung Chan revised this gist 4 months ago. Go to revision
6 files changed, 127 insertions, 75 deletions
.gitignore
| @@ -8,6 +8,7 @@ tmp/ | |||
| 8 | 8 | ||
| 9 | 9 | **.log | |
| 10 | 10 | **.txt | |
| 11 | + | !commit.txt | |
| 11 | 12 | ||
| 12 | 13 | aitr.toml | |
| 13 | 14 | config.toml | |
DOCS.md(file created)
| @@ -0,0 +1,91 @@ | |||
| 1 | + | # 中文文档 | |
| 2 | + | ||
| 3 | + | 本文档使用 AI 翻译 | |
| 4 | + | ||
| 5 | + | ## 项目流程 | |
| 6 | + | ||
| 7 | + | ### 首次使用 | |
| 8 | + | 1. 创建空分支 | |
| 9 | + | ```bash | |
| 10 | + | git switch --orphan docs | |
| 11 | + | ``` | |
| 12 | + | ||
| 13 | + | 2. 首次提交 | |
| 14 | + | ```bash | |
| 15 | + | git add README.md | |
| 16 | + | git commit -am init | |
| 17 | + | git push origin docs | |
| 18 | + | ``` | |
| 19 | + | ||
| 20 | + | 3. 拉取上游源码 | |
| 21 | + | ```bash | |
| 22 | + | mkdir -p docsite | |
| 23 | + | pushd docsite | |
| 24 | + | if [[ -d .git ]]; then | |
| 25 | + | git remote set-url upstream https://github.com/xxx/docs.git | |
| 26 | + | else | |
| 27 | + | git init | |
| 28 | + | git remote add upstream https://github.com/xxx/docs.git | |
| 29 | + | fi | |
| 30 | + | git reset --hard | |
| 31 | + | git fetch upstream main | |
| 32 | + | git merge upstream/main | |
| 33 | + | git rev-parse --short HEAD > ../commit.txt | |
| 34 | + | popd | |
| 35 | + | ``` | |
| 36 | + | ||
| 37 | + | 4. 复制源文档 | |
| 38 | + | ```bash | |
| 39 | + | rm -rf docs | |
| 40 | + | # cp -r docsite/docs . | |
| 41 | + | cp -r docsite/content . | |
| 42 | + | mv content docs | |
| 43 | + | ``` | |
| 44 | + | ||
| 45 | + | 5. 全量翻译 | |
| 46 | + | ```bash | |
| 47 | + | aitr | |
| 48 | + | ``` | |
| 49 | + | ||
| 50 | + | 6. 本地测试与构建 | |
| 51 | + | ```bash | |
| 52 | + | git clone https://github.com/xxx/docs.git docsite | |
| 53 | + | cp -r docs_zh/* ./docsite/content | |
| 54 | + | cd docsite | |
| 55 | + | ``` | |
| 56 | + | ||
| 57 | + | 8. 启动或构建 | |
| 58 | + | ```bash | |
| 59 | + | # NodeJS | |
| 60 | + | npm install | |
| 61 | + | npm run dev | |
| 62 | + | ||
| 63 | + | # Hugo | |
| 64 | + | hugo server | |
| 65 | + | ||
| 66 | + | ... | |
| 67 | + | ``` | |
| 68 | + | ||
| 69 | + | ### 2. AI 翻译 | |
| 70 | + | - 安装 [**CLI**](https://git.jetsung.com/jetsung/ai-translator) 工具 (增量更新直接使用 AI CLI 工具直接对比) | |
| 71 | + | ```bash | |
| 72 | + | curl -L https://fx4.cn/aitr | bash | |
| 73 | + | ``` | |
| 74 | + | ||
| 75 | + | 1. 设置环境变量 [`config.toml`](config.example.toml) | |
| 76 | + | ```bash | |
| 77 | + | ... | |
| 78 | + | [[providers]] | |
| 79 | + | enabled = true | |
| 80 | + | name = "grok" | |
| 81 | + | api_key = "xxx" | |
| 82 | + | base_url = "https://api.x.ai/v1" | |
| 83 | + | model = "grok-3" | |
| 84 | + | concurrency = 1 # 线程数 | |
| 85 | + | rate_delay = 3.0 # 每个请求后等待 1.0 秒(可根据限流调整) | |
| 86 | + | ``` | |
| 87 | + | ||
| 88 | + | 2. AI 翻译 | |
| 89 | + | ```bash | |
| 90 | + | aitr | |
| 91 | + | ``` | |
README.md
| @@ -1,89 +1,39 @@ | |||
| 1 | - | # XX 中文文档 | |
| 1 | + | # 教程 | |
| 2 | 2 | ||
| 3 | - | 本文档使用 AI 翻译 | |
| 3 | + | 本项目使用的教程 | |
| 4 | 4 | ||
| 5 | - | ## 项目流程 | |
| 5 | + | ## 初始化项目 | |
| 6 | 6 | ||
| 7 | - | ### 首次使用 | |
| 8 | 7 | 1. 创建空分支 | |
| 9 | 8 | ```bash | |
| 10 | - | git switch --orphan docs | |
| 9 | + | # 新项目 | |
| 10 | + | git init | |
| 11 | + | git branch -m docs | |
| 11 | 12 | ``` | |
| 12 | 13 | ||
| 13 | - | 2. 首次提交 | |
| 14 | 14 | ```bash | |
| 15 | - | git add README.md | |
| 16 | - | git commit -am init | |
| 17 | - | git push origin docs | |
| 18 | - | ``` | |
| 19 | - | ||
| 20 | - | 3. 拉取上游源码 | |
| 21 | - | ```bash | |
| 22 | - | mkdir -p docsite | |
| 23 | - | pushd docsite | |
| 24 | - | if [[ -d .git ]]; then | |
| 25 | - | git remote set-url upstream https://github.com/xxx/docs.git | |
| 26 | - | else | |
| 27 | - | git init | |
| 28 | - | git remote add upstream https://github.com/xxx/docs.git | |
| 29 | - | fi | |
| 30 | - | git reset --hard | |
| 31 | - | git fetch upstream main | |
| 32 | - | git merge upstream/main | |
| 33 | - | popd | |
| 34 | - | ``` | |
| 35 | - | ||
| 36 | - | 4. 复制源文档 | |
| 37 | - | ```bash | |
| 38 | - | rm -rf docs | |
| 39 | - | cp -r docsite/content . | |
| 40 | - | mv content docs | |
| 41 | - | ``` | |
| 42 | - | ||
| 43 | - | 5. 全量翻译 | |
| 44 | - | ```bash | |
| 45 | - | aitr | |
| 46 | - | ``` | |
| 47 | - | ||
| 48 | - | 6. 本地测试与构建 | |
| 49 | - | ```bash | |
| 50 | - | git clone https://github.com/xxx/docs.git docsite | |
| 51 | - | cp -r docs_zh/* ./docsite/content | |
| 52 | - | cd docsite | |
| 15 | + | # 已存在的项目,创建空分支 | |
| 16 | + | git switch --orphan docs | |
| 53 | 17 | ``` | |
| 54 | 18 | ||
| 55 | - | 8. 启动或构建 | |
| 19 | + | 2. 将本项目的文件下载至创建的翻译项目 | |
| 56 | 20 | ```bash | |
| 57 | - | # NodeJS | |
| 58 | - | npm install | |
| 59 | - | npm run dev | |
| 60 | - | ||
| 61 | - | # Hugo | |
| 62 | - | hugo server | |
| 63 | - | ||
| 64 | - | ... | |
| 21 | + | curl -fsSL https://fx4.cn/gendocs | bash | |
| 65 | 22 | ``` | |
| 66 | 23 | ||
| 67 | - | ### 2. AI 翻译 | |
| 68 | - | - 安装 [**CLI**](https://git.jetsung.com/jetsung/ai-translator) 工具 (增量更新直接使用 AI CLI 工具直接对比) | |
| 24 | + | 3. 更新上游项目链接 | |
| 69 | 25 | ```bash | |
| 70 | - | curl -L https://fx4.cn/aitr | bash | |
| 26 | + | GIT_DOCS=含.git结尾的项目地址 | |
| 27 | + | sed -i "s#https://github.com/xxx/docs.git#${GIT_DOCS}#g" *.* | |
| 28 | + | sed -i "s#https://github.com/xxx/docs.git#${GIT_DOCS}#g" .github/workflows/docs.yml | |
| 71 | 29 | ``` | |
| 72 | 30 | ||
| 73 | - | 1. 设置环境变量 [`config.toml`](config.example.toml) | |
| 31 | + | 4. 设置项目地址 | |
| 74 | 32 | ```bash | |
| 75 | - | ... | |
| 76 | - | [[providers]] | |
| 77 | - | enabled = true | |
| 78 | - | name = "grok" | |
| 79 | - | api_key = "xxx" | |
| 80 | - | base_url = "https://api.x.ai/v1" | |
| 81 | - | model = "grok-3" | |
| 82 | - | concurrency = 1 # 线程数 | |
| 83 | - | rate_delay = 3.0 # 每个请求后等待 1.0 秒(可根据限流调整) | |
| 33 | + | # 新项目 | |
| 34 | + | git remote add origin <https 或 git 地址> | |
| 84 | 35 | ``` | |
| 85 | - | ||
| 86 | - | 2. AI 翻译 | |
| 87 | 36 | ```bash | |
| 88 | - | aitr | |
| 37 | + | # 已存在的项目 | |
| 38 | + | git remote set-url origin <https 或 git 地址> | |
| 89 | 39 | ``` | |
deploy.sh
| @@ -52,10 +52,13 @@ merge_source() { | |||
| 52 | 52 | git reset --hard | |
| 53 | 53 | git fetch upstream main | |
| 54 | 54 | git merge upstream/main | |
| 55 | + | git rev-parse --short HEAD > ../commit.txt | |
| 55 | 56 | popd | |
| 56 | 57 | ||
| 57 | 58 | rm -rf docs | |
| 58 | - | cp -r docsite/docs . | |
| 59 | + | # cp -r docsite/docs . | |
| 60 | + | cp -r docsite/content . | |
| 61 | + | mv content docs | |
| 59 | 62 | } | |
| 60 | 63 | ||
| 61 | 64 | # 增量更新 | |
| @@ -64,8 +67,10 @@ incremental_update() { | |||
| 64 | 67 | ||
| 65 | 68 | # 记录删除的文件 | |
| 66 | 69 | git ls-files --deleted docs/ | tee "$DELETE_FILE" | |
| 67 | - | export ROOT_DIR=$(grep root_dir config.toml | cut -d'"' -f 2 | sed 's|^\./||') | |
| 68 | - | export OUTPUT_DIR=$(grep output_dir config.toml | cut -d'"' -f 2 | sed 's|^\./||') | |
| 70 | + | ROOT_DIR=$(grep root_dir config.toml | cut -d'"' -f 2 | sed 's|^\./||') | |
| 71 | + | export ROOT_DIR | |
| 72 | + | OUTPUT_DIR=$(grep output_dir config.toml | cut -d'"' -f 2 | sed 's|^\./||') | |
| 73 | + | export OUTPUT_DIR | |
| 69 | 74 | # sed -i "s|^$ROOT_DIR/|$OUTPUT_DIR/|g" "$DELETE_FILE" | |
| 70 | 75 | # 删除对应的输出文件 | |
| 71 | 76 | while read -r file; do | |
| @@ -112,7 +117,8 @@ copy_docs_zh() { | |||
| 112 | 117 | echo "使用 translated/docs 的文档覆盖 docs_zh" | |
| 113 | 118 | cp -r translated/docs/* docs_zh/ | |
| 114 | 119 | fi | |
| 115 | - | cp -r docs_zh/* docsite/docs/ | |
| 120 | + | # cp -r docs_zh/* docsite/docs/ | |
| 121 | + | cp -r docs_zh/* ./docsite/content/ | |
| 116 | 122 | } | |
| 117 | 123 | ||
| 118 | 124 | # 调用翻译脚本 | |
docs.yml
| @@ -38,7 +38,7 @@ jobs: | |||
| 38 | 38 | echo "Node.js: $(node --version)" | |
| 39 | 39 | - name: Fetch Source | |
| 40 | 40 | run: | | |
| 41 | - | git clone https://github.com/docker/docs.git docsite | |
| 41 | + | git clone https://github.com/xxx/docs.git docsite | |
| 42 | 42 | - name: Fix | |
| 43 | 43 | run: | | |
| 44 | 44 | # sed -i 's/refLinksErrorLevel: WARNING/refLinksErrorLevel: ERROR/' docsite/hugo.yaml | |
init.sh
| @@ -12,7 +12,7 @@ download_files() { | |||
| 12 | 12 | curl -fsSL -O "${BASE_URL}/deploy.sh" | |
| 13 | 13 | chmod +x deploy.sh | |
| 14 | 14 | ||
| 15 | - | curl -fsSL -O "${BASE_URL}/README.md" | |
| 15 | + | curl -fsSL -o README.md "${BASE_URL}/DOCS.md" | |
| 16 | 16 | ||
| 17 | 17 | curl -fsSL -O "${BASE_URL}/config.example.toml" | |
| 18 | 18 | ||
| @@ -25,6 +25,10 @@ download_files() { | |||
| 25 | 25 | ||
| 26 | 26 | main() { | |
| 27 | 27 | download_files | |
| 28 | + | ||
| 29 | + | if [[ ! -f CNAME ]]; then | |
| 30 | + | echo "" > CNAME | |
| 31 | + | fi | |
| 28 | 32 | } | |
| 29 | 33 | ||
| 30 | 34 | main "$@" | |
jetsung revised this gist 4 months ago. Go to revision
1 file changed, 2 insertions, 2 deletions
deploy.sh
| @@ -82,8 +82,8 @@ incremental_update() { | |||
| 82 | 82 | ||
| 83 | 83 | cat "$ADD_FILE" "$MODIFIED_FILE" | tee "$TRANSLATE_LIST" | |
| 84 | 84 | ||
| 85 | - | # 移除以 .png .jpg .jpeg .gif 结尾的文件 | |
| 86 | - | sed -i '/\.\(png\|jpg\|jpeg\|gif\)$/d' "$TRANSLATE_LIST" | |
| 85 | + | # 移除以 .png .jpg .jpeg .gif .svg 结尾的文件 | |
| 86 | + | sed -i '/\.\(png\|jpg\|jpeg\|gif\|svg\)$/d' "$TRANSLATE_LIST" | |
| 87 | 87 | ||
| 88 | 88 | # 合并 config.toml | |
| 89 | 89 | merge_config | |
jetsung revised this gist 4 months ago. Go to revision
1 file changed, 26 insertions, 12 deletions
deploy.sh
| @@ -29,8 +29,17 @@ install_hugo() { | |||
| 29 | 29 | curl -L https://fx4.cn/hugo | bash -s -- -v "$HUGO_VERSION" -w | |
| 30 | 30 | } | |
| 31 | 31 | ||
| 32 | - | # 增量更新 | |
| 33 | - | incremental_update() { | |
| 32 | + | merge_config() { | |
| 33 | + | if [[ -f config.example.toml ]]; then | |
| 34 | + | sed '/providers/,$d' ./config.example.toml | tee config.toml > /dev/null | |
| 35 | + | fi | |
| 36 | + | ||
| 37 | + | if [[ -f aitr.toml ]]; then | |
| 38 | + | sed -n '/logging/,$p' aitr.toml | tee -a config.toml > /dev/null | |
| 39 | + | fi | |
| 40 | + | } | |
| 41 | + | ||
| 42 | + | merge_source() { | |
| 34 | 43 | [[ -d docsite ]] || mkdir docsite | |
| 35 | 44 | ||
| 36 | 45 | pushd docsite | |
| @@ -47,6 +56,11 @@ incremental_update() { | |||
| 47 | 56 | ||
| 48 | 57 | rm -rf docs | |
| 49 | 58 | cp -r docsite/docs . | |
| 59 | + | } | |
| 60 | + | ||
| 61 | + | # 增量更新 | |
| 62 | + | incremental_update() { | |
| 63 | + | merge_source | |
| 50 | 64 | ||
| 51 | 65 | # 记录删除的文件 | |
| 52 | 66 | git ls-files --deleted docs/ | tee "$DELETE_FILE" | |
| @@ -89,16 +103,6 @@ incremental_update() { | |||
| 89 | 103 | fi | |
| 90 | 104 | } | |
| 91 | 105 | ||
| 92 | - | merge_config() { | |
| 93 | - | if [[ -f config.example.toml ]]; then | |
| 94 | - | sed '/providers/,$d' ./config.example.toml | tee config.toml > /dev/null | |
| 95 | - | fi | |
| 96 | - | ||
| 97 | - | if [[ -f aitr.toml ]]; then | |
| 98 | - | sed -n '/logging/,$p' aitr.toml | tee -a config.toml > /dev/null | |
| 99 | - | fi | |
| 100 | - | } | |
| 101 | - | ||
| 102 | 106 | # 复制 docs_zh 至 content | |
| 103 | 107 | copy_docs_zh() { | |
| 104 | 108 | if [[ ! -d docsite ]]; then | |
| @@ -122,6 +126,8 @@ usage() { | |||
| 122 | 126 | ||
| 123 | 127 | 选项: | |
| 124 | 128 | -c --copy 复制 docs_zh | |
| 129 | + | -g --config 合并 config.toml | |
| 130 | + | -s --source 合并文档 | |
| 125 | 131 | -i --incremental 增量更新 | |
| 126 | 132 | -t --translate 调用翻译脚本 | |
| 127 | 133 | -h --help 显示此帮助信息 | |
| @@ -143,6 +149,14 @@ main() { | |||
| 143 | 149 | copy_docs_zh | |
| 144 | 150 | shift | |
| 145 | 151 | ;; | |
| 152 | + | -g|--config) | |
| 153 | + | merge_config | |
| 154 | + | shift | |
| 155 | + | ;; | |
| 156 | + | -s|--source) | |
| 157 | + | merge_source | |
| 158 | + | shift | |
| 159 | + | ;; | |
| 146 | 160 | -i|--incremental) | |
| 147 | 161 | incremental_update | |
| 148 | 162 | shift | |
jetsung revised this gist 4 months ago. Go to revision
1 file changed, 2 insertions
init.sh
| @@ -18,6 +18,8 @@ download_files() { | |||
| 18 | 18 | ||
| 19 | 19 | curl -fsSL -O "${BASE_URL}/config.example.toml" | |
| 20 | 20 | ||
| 21 | + | curl -fsSL -O "${BASE_URL}/.gitignore" | |
| 22 | + | ||
| 21 | 23 | curl -fsSL --create-dirs -o ".github/workflows/docs.yml" "${BASE_URL}/docs.yml" | |
| 22 | 24 | } | |
| 23 | 25 | ||
jetsung revised this gist 4 months ago. Go to revision
1 file changed, 13 insertions
.gitignore(file created)
| @@ -0,0 +1,13 @@ | |||
| 1 | + | # Python | |
| 2 | + | .venv/ | |
| 3 | + | ||
| 4 | + | build/ | |
| 5 | + | docsite/ | |
| 6 | + | translated/ | |
| 7 | + | tmp/ | |
| 8 | + | ||
| 9 | + | **.log | |
| 10 | + | **.txt | |
| 11 | + | ||
| 12 | + | aitr.toml | |
| 13 | + | config.toml | |
jetsung revised this gist 4 months ago. Go to revision
1 file changed, 3 insertions, 46 deletions
deploy.sh
| @@ -45,9 +45,8 @@ incremental_update() { | |||
| 45 | 45 | git merge upstream/main | |
| 46 | 46 | popd | |
| 47 | 47 | ||
| 48 | - | cp -r docsite/content . | |
| 49 | 48 | rm -rf docs | |
| 50 | - | mv content docs | |
| 49 | + | cp -r docsite/docs . | |
| 51 | 50 | ||
| 52 | 51 | # 记录删除的文件 | |
| 53 | 52 | git ls-files --deleted docs/ | tee "$DELETE_FILE" | |
| @@ -100,42 +99,16 @@ merge_config() { | |||
| 100 | 99 | fi | |
| 101 | 100 | } | |
| 102 | 101 | ||
| 103 | - | # Patch Hugo layouts to avoid errors on missing metadata | |
| 104 | - | patch_hugo_layouts() { | |
| 105 | - | if [[ -d docsite/layouts ]]; then | |
| 106 | - | sed -i 's/errorf "\[summary-bar\]/warnf "[summary-bar]/g' docsite/layouts/shortcodes/summary-bar.html || true | |
| 107 | - | sed -i 's/errorf "\[tags\]/warnf "[tags]/g' docsite/layouts/partials/tags.html || true | |
| 108 | - | sed -i 's/errorf "\[languages\]/warnf "[languages]/g' docsite/layouts/partials/languages.html || true | |
| 109 | - | fi | |
| 110 | - | } | |
| 111 | - | ||
| 112 | 102 | # 复制 docs_zh 至 content | |
| 113 | 103 | copy_docs_zh() { | |
| 114 | 104 | if [[ ! -d docsite ]]; then | |
| 115 | - | git clone https://github.com/docker/docs.git docsite | |
| 105 | + | git clone https://github.com/xxx/docs.git docsite | |
| 116 | 106 | fi | |
| 117 | - | patch_hugo_layouts | |
| 118 | 107 | if [[ -d "translated/docs" ]]; then | |
| 119 | 108 | echo "使用 translated/docs 的文档覆盖 docs_zh" | |
| 120 | 109 | cp -r translated/docs/* docs_zh/ | |
| 121 | 110 | fi | |
| 122 | - | cp -r docs_zh/* docsite/content/ | |
| 123 | - | } | |
| 124 | - | ||
| 125 | - | # 本地测试 | |
| 126 | - | start_dev() { | |
| 127 | - | copy_docs_zh | |
| 128 | - | cd docsite | |
| 129 | - | npm install | |
| 130 | - | hugo server -D | |
| 131 | - | } | |
| 132 | - | ||
| 133 | - | # 构建网站 | |
| 134 | - | build_site() { | |
| 135 | - | copy_docs_zh | |
| 136 | - | cd docsite | |
| 137 | - | npm install | |
| 138 | - | hugo --minify | |
| 111 | + | cp -r docs_zh/* docsite/docs/ | |
| 139 | 112 | } | |
| 140 | 113 | ||
| 141 | 114 | # 调用翻译脚本 | |
| @@ -149,15 +122,11 @@ usage() { | |||
| 149 | 122 | ||
| 150 | 123 | 选项: | |
| 151 | 124 | -c --copy 复制 docs_zh | |
| 152 | - | -b --build 构建网站 | |
| 153 | 125 | -i --incremental 增量更新 | |
| 154 | - | -s --start 本地测试 | |
| 155 | - | -x --hugo 安装 Hugo extended(linux-amd64) | |
| 156 | 126 | -t --translate 调用翻译脚本 | |
| 157 | 127 | -h --help 显示此帮助信息 | |
| 158 | 128 | ||
| 159 | 129 | 示例: | |
| 160 | - | $0 --hugo | |
| 161 | 130 | $0 --translate | |
| 162 | 131 | EOF | |
| 163 | 132 | } | |
| @@ -178,18 +147,6 @@ main() { | |||
| 178 | 147 | incremental_update | |
| 179 | 148 | shift | |
| 180 | 149 | ;; | |
| 181 | - | -x|--hugo) | |
| 182 | - | install_hugo | |
| 183 | - | shift | |
| 184 | - | ;; | |
| 185 | - | -b|--build) | |
| 186 | - | build_site | |
| 187 | - | shift | |
| 188 | - | ;; | |
| 189 | - | -s|--start) | |
| 190 | - | start_dev | |
| 191 | - | shift | |
| 192 | - | ;; | |
| 193 | 150 | -t|--translate) | |
| 194 | 151 | translate | |
| 195 | 152 | shift | |
jetsung revised this gist 4 months ago. Go to revision
1 file changed, 6 insertions, 15 deletions
README.md
| @@ -10,23 +10,14 @@ | |||
| 10 | 10 | git switch --orphan docs | |
| 11 | 11 | ``` | |
| 12 | 12 | ||
| 13 | - | 2. 创建 `README.md` | |
| 14 | - | ```bash | |
| 15 | - | cat > README.md <<EOF | |
| 16 | - | # XX 中文文档 | |
| 17 | - | ||
| 18 | - | 本文档使用 AI 翻译 | |
| 19 | - | EOF | |
| 20 | - | ``` | |
| 21 | - | ||
| 22 | - | 3. 首次提交 | |
| 13 | + | 2. 首次提交 | |
| 23 | 14 | ```bash | |
| 24 | 15 | git add README.md | |
| 25 | 16 | git commit -am init | |
| 26 | 17 | git push origin docs | |
| 27 | 18 | ``` | |
| 28 | 19 | ||
| 29 | - | 4. 拉取上游源码 | |
| 20 | + | 3. 拉取上游源码 | |
| 30 | 21 | ```bash | |
| 31 | 22 | mkdir -p docsite | |
| 32 | 23 | pushd docsite | |
| @@ -42,19 +33,19 @@ git merge upstream/main | |||
| 42 | 33 | popd | |
| 43 | 34 | ``` | |
| 44 | 35 | ||
| 45 | - | 5. 复制源文档 | |
| 36 | + | 4. 复制源文档 | |
| 46 | 37 | ```bash | |
| 47 | - | cp -r docsite/content . | |
| 48 | 38 | rm -rf docs | |
| 39 | + | cp -r docsite/content . | |
| 49 | 40 | mv content docs | |
| 50 | 41 | ``` | |
| 51 | 42 | ||
| 52 | - | 6. 全量翻译 | |
| 43 | + | 5. 全量翻译 | |
| 53 | 44 | ```bash | |
| 54 | 45 | aitr | |
| 55 | 46 | ``` | |
| 56 | 47 | ||
| 57 | - | 7. 本地测试与构建 | |
| 48 | + | 6. 本地测试与构建 | |
| 58 | 49 | ```bash | |
| 59 | 50 | git clone https://github.com/xxx/docs.git docsite | |
| 60 | 51 | cp -r docs_zh/* ./docsite/content | |