TVTDataBroadcastingWV2をビルドするバッチファイル

スポンサーリンク
スポンサーリンク
TS抜き

ソースをダウンロードしてビルド、アーカイブを作成するバッチファイルです。

スポンサーリンク
スポンサーリンク

必要

Visual Studio

2019以降でビルドできます。

こちらの記事を参考にインストールしてください。

2022で動作確認しています。

Node.js

公式サイトからLTS版をダウンロードします。

インストールで特に変更するところはありません。

Yarn

コマンドプロンプトで以下のコマンドを実行してインストールします。

npm install -g yarn

Git for Windows

公式サイトの「Download」をクリックします。

インストールで特に変更するところはありません。

7-Zip

公式サイトからダウンロードしてインストールします。

バッチファイル

拡張子を.batにして保存します。

@echo off
setlocal
cd /d %~dp0

rem デフォルト設定
set ARCH=x86
set TARGET=Build
set CONFIG=Release
set REPO_DEL=False
set REPO_DIR=TVTDataBroadcastingWV2
set OUT_DIR=package

rem 引数の取得
for %%i in (%*) do (
    if /i "%%i" == "help"    goto Help
    if /i "%%i" == "x86"     set ARCH=x86
    if /i "%%i" == "x64"     set ARCH=x64
    if /i "%%i" == "Both"    set ARCH=Both
    if /i "%%i" == "Build"   set TARGET=Build
    if /i "%%i" == "Rebuild" set TARGET=Rebuild
    if /i "%%i" == "Clean"   set TARGET=Clean
    if /i "%%i" == "Debug"   set CONFIG=Debug
    if /i "%%i" == "Release" set CONFIG=Release
    if /i "%%i" == "del"     set REPO_DEL=True
)

if /i "%REPO_DEL%" == "True" (
    if exist "%REPO_DIR%" rd /s /q "%REPO_DIR%"
)
rem ソースのダウンロード
if not exist "%REPO_DIR%" (
    git clone --recursive https://github.com/otya128/TVTDataBroadcastingWV2.git "%REPO_DIR%"
)
cd /d "%REPO_DIR%"

rem Visual Studioのインストールフォルダの検索
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
    set VS_INSTALL_DIR=%%i
)

rem 開発者コマンドプロンプトの起動
call "%VS_INSTALL_DIR%\Common7\Tools\VsDevCmd.bat" -no_logo

if /i "%ARCH%" == "Both" (
    call :Build x86
    if errorlevel 1 exit /b 1
    call :Build x64
    if errorlevel 1 exit /b 1
) else (
    call :Build %ARCH%
    if errorlevel 1 exit /b 1
)

exit /b 0

:Build
set ARCH=%1

set TOOLSET=v142
if "%VisualStudioVersion%" == "17.0" set TOOLSET=v143

rem ビルド
MSBuild TVTDataBroadcastingWV2.sln /nologo /m /t:%TARGET% /restore /p:Configuration=%CONFIG%;Platform=%ARCH%;PlatformToolset=%TOOLSET%;RestorePackagesConfig=true
if errorlevel 1 exit /b 1

if /i "%TARGET%" == "Clean" exit /b 0

pushd browser
if not exist dist\TVTDataBroadcastingWV2.js (
    call yarn install
    call yarn workspace @chinachu/aribts build
    call yarn run build
)
popd
if errorlevel 1 exit /b 1

rem フォントのダウンロード
if not exist fonts (
    md fonts
    curl -L https://github.com/googlefonts/kosugi/raw/main/fonts/ttf/Kosugi-Regular.ttf          -o fonts\Kosugi-Regular.ttf
    curl -L https://github.com/googlefonts/kosugi-maru/raw/main/fonts/ttf/KosugiMaru-Regular.ttf -o fonts\KosugiMaru-Regular.ttf
)

if /i "%ARCH%" == "x86" (
    set SRC_DIR=%CONFIG%
) else (
    set SRC_DIR=%ARCH%\%CONFIG%
)
set DST_DIR=%OUT_DIR%\%ARCH%\%CONFIG%

rem フォルダの準備
if exist "%DST_DIR%" rd /s /q "%DST_DIR%"
md "%DST_DIR%\TVTDataBroadcastingWV2\resources\dist"

rem ファイルの配置
copy /v %SRC_DIR%\TVTDataBroadcastingWV2.tvtp  "%DST_DIR%" >nul
copy /v browser\dist\TVTDataBroadcastingWV2.js "%DST_DIR%\TVTDataBroadcastingWV2\resources\dist" >nul
copy /v browser\TVTDataBroadcastingWV2.html    "%DST_DIR%\TVTDataBroadcastingWV2\resources" >nul
copy /v fonts                                  "%DST_DIR%\TVTDataBroadcastingWV2\resources\dist" >nul
copy /v README.md                              "%DST_DIR%\TVTDataBroadcastingWV2_README.md" >nul

rem コミットハッシュの取得
for /f "usebackq tokens=*" %%i in (`git rev-parse --short HEAD`) do set GIT_HASH=%%i
set ARCHIVE_NAME=%OUT_DIR%\TVTDataBroadcastingWV2_%GIT_HASH%_%ARCH%

rem 7-Zipのインストールフォルダの検索
for /f "usebackq tokens=1,2*" %%i in (`reg query HKLM\Software\7-Zip /v Path`) do if "%%i" == "Path" set PATH=%%k;%PATH%

if exist "%ARCHIVE_NAME%.7z" del "%ARCHIVE_NAME%.7z"
rem アーカイブの作成
7z a "%ARCHIVE_NAME%.7z" ".\%DST_DIR%\*" -mx=9 -ms=on -myx=9

exit /b

:Help
echo %~nx0 [x86^|x64^|Both] [Build^|Rebuild^|Clean] [Debug^|Release] [del]

exit /b

使い方

コマンドプロンプトでバッチファイルを実行するときに引数を指定します。

TVTDataBroadcastingWV2.bat [x86|x64|Both] [Build|Rebuild|Clean] [Debug|Release] [del]

上記はhelpを指定すると表示されます。

引数のデフォルト値は以下です。

TVTDataBroadcastingWV2.bat x86 Build Release

x86は32bit版、x64は64bit版、Bothは32bit版と64bit版の両方です。

delはソースを削除します。ダウンロードし直す場合に指定します。

バッチファイルと同じフォルダにある TVTDataBroadcastingWV2\package に出力されます。

ソースのダウンロード先を変更する場合は「set REPO_DIR=」にフォルダパスを書きます。

アーカイブの出力先を変更する場合は「set OUT_DIR=」にフォルダパスを書きます。

コメント

タイトルとURLをコピーしました