-
-
Save nguyenquy0710/7b4598ea2e22cea6f8c4d4005df7e1ee to your computer and use it in GitHub Desktop.
[DocFX - Hướng dẫn cài đặt, cấu hình sử dụng](https://blogs.nhquydev.net/ung-dung/docfx/docfx-huong-dan-cai-dat-cau-hinh-su-dung)
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
| :: Tắt việc hiển thị lệnh khi chạy script, chỉ hiển thị kết quả. | |
| @echo off | |
| :: ------------------------------------------- | |
| :: Bước 1: Lấy dữ liệu từ systeminfo | |
| :: ------------------------------------------- | |
| :: Lấy ngày và giờ hiện tại | |
| set DATE_NOW=%DATE% | |
| set TIME_NOW=%TIME% | |
| :: Tách các phần của ngày (ngày, tháng, năm) và giờ (giờ, phút, giây) | |
| :: Giả sử định dạng ngày là dd/MM/yyyy | |
| set DAY=%DATE_NOW:~0,2% | |
| set MONTH=%DATE_NOW:~3,2% | |
| set YEAR=%DATE_NOW:~6,4% | |
| :: Giả sử định dạng giờ là HH:mm:ss | |
| set HOUR=%TIME_NOW:~0,2% | |
| set MINUTE=%TIME_NOW:~3,2% | |
| set SECOND=%TIME_NOW:~6,2% | |
| :: Xử lý để loại bỏ dấu cách thừa trong giờ nếu có (do hệ thống có thể thêm dấu cách nếu giờ < 10) | |
| if "%HOUR:~0,1%"==" " set HOUR=0%HOUR:~1,1% | |
| :: Tạo phiên bản theo định dạng YYYYMMDDHHmmss | |
| set VERSION=%YEAR%%MONTH%%DAY%%HOUR%%MINUTE%%SECOND% | |
| :: Tạo biến `CURRENT_DAY` theo định dạng YYYY-MM-DD. | |
| set CURRENT_DAY=%YEAR%-%MONTH%-%DAY% | |
| :: ------------------------------------------- | |
| :: Bước 2: Định nghĩa các biến cần thiết | |
| :: ------------------------------------------- | |
| :: Lấy tên file của script hiện tại (bao gồm tên và phần mở rộng). | |
| set NAME_FILE_SCRIPT=%~nx0 | |
| :: Lấy đường dẫn hiện tại (current directory), thư mục làm việc. | |
| set PROJECT_DIR=%cd% | |
| :: Đặt thư mục đích (artifact) | |
| set ARTIFACT_DIR=".\artifacts" | |
| :: Thư mục xuất ra tài liệu DocFX sau khi build. | |
| set OUTPUT_DIR=%ARTIFACT_DIR%\docfx | |
| :: Đặt thư mục đích (dest) | |
| set DEST_DIR=%ARTIFACT_DIR%\dest | |
| :: Đường dẫn đến file cấu hình DocFX (docfx.json). | |
| set CONFIG_PATH=".\quyit-docfx\docfx.json" | |
| :: Gán giá trị của các tham số dòng lệnh vào các biến ARG_1 và ARG_2. | |
| set ARG_1=%1 | |
| set ARG_2=%2 | |
| :: Kiểm tra DocFX đã được cài đặt. | |
| docfx --version >nul 2>&1 | |
| if %errorlevel% equ 0 ( | |
| for /f "tokens=*" %%i in ('docfx --version') do set DOCFX_VERSION=%%i | |
| echo You are using DocFX version: %DOCFX_VERSION% | |
| ) else ( | |
| echo You have not installed DocFX. See the installation guide at https://blogs.nhquydev.net/ung-dung/docfx/docfx-huong-dan-cai-dat-cau-hinh-su-dung | |
| :: Nếu không có tham số hợp lệ nào, chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| ) | |
| :: Chuyển đến nhãn :menu_arg_1 để xử lý tham số dòng lệnh đầu tiên. | |
| goto :menu_arg_1 | |
| :menu_arg_1 | |
| :: ------------------------------------------- | |
| :: Kiểm tra tham số và chuyển đến nhãn tương ứng | |
| :: ------------------------------------------- | |
| echo Chuyen den nhan thu 1: %ARG_1% | |
| if "%ARG_1%"=="--build" goto :case_build | |
| if "%ARG_1%"=="--help" goto :case_help | |
| if "%ARG_1%"=="--serve" goto :case_serve | |
| if "%ARG_1%"=="--deploy" goto :case_deploy | |
| :: Nếu không có tham số hợp lệ nào, chuyển đến nhãn :case_help để hiển thị hướng dẫn. | |
| goto :case_help | |
| :menu_arg_2 | |
| :: ------------------------------------------- | |
| :: Kiểm tra tham số thứ 2 và chuyển đến nhãn tương ứng | |
| :: ------------------------------------------- | |
| echo Chuyen den nhan thu 2: %ARG_2% | |
| if "%ARG_2%"=="--serve" goto :case_serve | |
| if "%ARG_2%"=="--deploy" goto :case_deploy | |
| if "%ARG_2%"=="--git" goto :case_build_arg_git | |
| if "%ARG_2%"=="--pdf" goto :case_build_arg_pdf | |
| :: Nếu không có tham số hợp lệ nào, chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| :case_help | |
| :: ------------------------------------------- | |
| :: Hiển thị hướng dẫn chi tiết cách sử dụng script | |
| :: ------------------------------------------- | |
| echo ----------------------------------------------------------- | |
| echo File script: %NAME_FILE_SCRIPT% | |
| echo Ngay tao: 11/12/2024 | |
| echo Tac gia: [Nguyen Quy](quynh@vihatgroup.com) | |
| echo ----------------------------------------------------------- | |
| echo Huong dan su dung script batch: | |
| echo 1. Build tai lieu DocFX: | |
| echo %NAME_FILE_SCRIPT% --build | |
| echo 2. Build va xuat tai lieu ra file pdf: | |
| echo %NAME_FILE_SCRIPT% --build --pdf | |
| echo 3. Build tai lieu va commit push (Git nhanh main/ develop): | |
| echo %NAME_FILE_SCRIPT% --build --git | |
| echo 4. Build va serve tai lieu (mo trinh duyet): | |
| echo %NAME_FILE_SCRIPT% --build --serve | |
| echo 5. Build va zip tai lieu: | |
| echo %NAME_FILE_SCRIPT% --build --deploy | |
| echo 6. Zip tai lieu de trien khai: | |
| echo %NAME_FILE_SCRIPT% --deploy | |
| echo 7. Serve tai lieu (mo trinh duyet): | |
| echo %NAME_FILE_SCRIPT% --serve | |
| echo 8. Hien thi huong dan su dung: | |
| echo %NAME_FILE_SCRIPT% --help | |
| echo ----------------------------------------------------------- | |
| :: Chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| :case_serve | |
| :: ------------------------------------------- | |
| :: Serve tài liệu DocFX và mở trình duyệt | |
| :: ------------------------------------------- | |
| echo "Starting DocFX serve..." | |
| :: Chạy lệnh `docfx serve` để serve tài liệu từ thư mục OUTPUT_DIR và tự động mở trình duyệt. | |
| :: USAGE: docfx serve [directory] [OPTIONS] | |
| :: ARGUMENTS: [directory] Path to docfx.json | |
| call docfx serve "%OUTPUT_DIR%" --open-browser | |
| :: Chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| :case_deploy | |
| :: ------------------------------------------- | |
| :: zip output để triển khai | |
| :: ------------------------------------------- | |
| :: Đặt tên file zip chứa nội dung đã nén, sử dụng thư mục lưu trữ %ARTIFACT_DIR% và tên phiên bản %VERSION% | |
| set ZIP_FILE=%ARTIFACT_DIR%\dest-%VERSION%.zip | |
| :: Tạo thư mục dest nếu chưa tồn tại | |
| if not exist "%DEST_DIR%" ( | |
| mkdir "%DEST_DIR%" | |
| ) else ( | |
| :: Nếu thư mục đã tồn tại, xóa các tệp và thư mục con | |
| echo Deleting files and subdirectories in "%DEST_DIR%"... | |
| :: Xóa tất cả tệp trong thư mục DEST_DIR | |
| del /q /f "%DEST_DIR%\*" >nul | |
| :: Xóa tất cả các thư mục con trong DEST_DIR | |
| for /d %%i in ("%DEST_DIR%\*") do rd /s /q "%%i" | |
| ) | |
| :: Sao chép file cấu hình docfx.json vào thư mục dest | |
| :: echo Copying docfx.json to dest... | |
| :: copy /Y "%CONFIG_PATH%" "%DEST_DIR%\docfx.json" >nul | |
| :: Kiểm tra xem có phải thư mục hiện tại là một thư mục Git repository không. | |
| :: Nếu không phải, lệnh này sẽ trả về lỗi. | |
| git rev-parse --is-inside-work-tree >nul 2>nul | |
| :: Nếu lỗi (Git chưa được khởi tạo), hiển thị thông báo và kết thúc script. | |
| if errorlevel 1 ( | |
| :: Ghi giá trị của VERSION vào file version.txt trong thư mục DEST_DIR để lưu trữ thông tin phiên bản | |
| echo %VERSION% > "%DEST_DIR%\version.txt" | |
| ) else ( | |
| echo %VERSION% > "%DEST_DIR%\version.txt" | |
| git describe --tags > "%DEST_DIR%\version.txt" | |
| ) | |
| :: Sao chép thư mục _site từ %OUTPUT_DIR% vào thư mục DEST_DIR\_site, giữ nguyên cấu trúc thư mục | |
| echo Copying _site to dest... | |
| xcopy /Y "%OUTPUT_DIR%" "%DEST_DIR%" /E /I | |
| :: Nén thư mục dest vào file zip với phiên bản hiện tại | |
| echo Creating zip archive of the dest folder with version %VERSION%... | |
| :: Sử dụng PowerShell để nén thư mục %DEST_DIR% thành file ZIP với tên %ZIP_FILE%, | |
| :: tùy chọn -Force dùng để ép ghi đè nếu file đã tồn tại | |
| powershell Compress-Archive -Path "%DEST_DIR%" -DestinationPath "%ZIP_FILE%" -Force | |
| :: Khởi động DocFX để phục vụ trang web tĩnh từ thư mục _site, mở trình duyệt mặc định | |
| call docfx serve "%DEST_DIR%" --open-browser | |
| :: Chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| :case_build | |
| :: ------------------------------------------- | |
| :: Build tài liệu DocFX | |
| :: ------------------------------------------- | |
| :: Chạy lệnh `docfx metadata` để thu thập metadata từ các dự án để xây dựng tài liệu DocFX. | |
| :: USAGE: docfx metadata [config] [OPTIONS] | |
| :: ARGUMENTS: [config] Path to docfx.json | |
| call docfx metadata "%CONFIG_PATH%" --warningsAsErrors | |
| :: Chạy lệnh `docfx build` để xây dựng tài liệu DocFX từ file cấu hình `docfx.json` | |
| :: và xuất ra thư mục OUTPUT_DIR. Thêm metadata và các tùy chọn xuất dữ liệu. | |
| call docfx build "%CONFIG_PATH%" --output %OUTPUT_DIR% --exportRawModel true --exportViewModel true | |
| :: Chạy lệnh `docfx pdf` để xuất tài liệu DocFX dưới dạng file PDF và lưu vào thư mục OUTPUT_DIR. | |
| :: call docfx pdf "%CONFIG_PATH%" --output %OUTPUT_DIR% | |
| :: Quay lại nhãn :menu_arg_2 để kiểm tra tham số thứ 2. | |
| goto :menu_arg_2 | |
| :case_build_arg_git | |
| :: ------------------------------------------- | |
| :: Kiểm tra nhánh Git hiện tại và kiểm tra cài đặt Git | |
| :: ------------------------------------------- | |
| :: Kiểm tra xem có phải thư mục hiện tại là một thư mục Git repository không. | |
| :: Nếu không phải, lệnh này sẽ trả về lỗi. | |
| git rev-parse --is-inside-work-tree >nul 2>nul | |
| :: Nếu lỗi (Git chưa được khởi tạo), hiển thị thông báo và kết thúc script. | |
| if errorlevel 1 ( | |
| echo "Git is not initialized in the current directory. Please initialize Git first." | |
| goto :end | |
| ) | |
| :: Lấy tên nhánh Git hiện tại và lưu vào biến `branch`. | |
| for /f "delims=" %%b in ('git rev-parse --abbrev-ref HEAD') do set branch=%%b | |
| :: Nếu nhánh hiện tại là "main" hoặc "develop", chuyển đến nhãn :gitPush để thực hiện push. | |
| if "%branch%"=="main" goto :gitPush | |
| if "%branch%"=="develop" goto :gitPush | |
| :: Nếu nhánh hiện tại không phải "main" hoặc "develop", hiển thị thông báo và không thực hiện push. | |
| echo "Current branch (%branch%) is not main or develop. Skipping git push." | |
| :: Chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| :case_build_arg_pdf | |
| :: ------------------------------------------- | |
| :: Xuất tài liệu DocFX dưới dạng file PDF | |
| :: ------------------------------------------- | |
| :: Chạy lệnh `docfx pdf` để xuất tài liệu DocFX dưới dạng file PDF và lưu vào thư mục OUTPUT_DIR. | |
| call docfx pdf "%CONFIG_PATH%" --output %OUTPUT_DIR% | |
| :: Chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| :gitPush | |
| :: ------------------------------------------- | |
| :: Kiểm tra cài đặt Git và Push thay đổi lên Git | |
| :: ------------------------------------------- | |
| :: Kiểm tra xem có phải thư mục hiện tại là một thư mục Git repository không. | |
| :: Nếu không phải, lệnh này sẽ trả về lỗi. | |
| git rev-parse --is-inside-work-tree >nul 2>nul | |
| :: Nếu lỗi (Git chưa được khởi tạo), hiển thị thông báo và kết thúc script. | |
| if errorlevel 1 ( | |
| echo "Git is not initialized in the current directory. Please initialize Git first." | |
| goto :end | |
| ) | |
| echo "Starting Git push..." | |
| call git add . | |
| call git commit -m "%CURRENT_DAY%: deploy docfx" | |
| call git push | |
| :: Chuyển đến nhãn :end để kết thúc script. | |
| goto :end | |
| :: Dừng script và chờ người dùng nhấn phím trước khi thoát. | |
| :end | |
| pause |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment