i18n - Text Search Menu Text in Chinese and Russian (#771) #49
This file contains 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
# Original script from totoa553/OpenTaiko and DragonRatTiger/OpenTaiko | |
name: Build OpenTaiko | |
on: | |
push: | |
branches: | |
- main | |
jobs: | |
build: | |
runs-on: windows-latest | |
permissions: | |
# Give the default GITHUB_TOKEN write permission to commit and push the | |
# added or changed files to the repository. | |
contents: write | |
env: | |
messagePathPrefix: COMMIT_MSG_ | |
versionsPath: COMMIT_VERSIONS | |
steps: | |
- name: Checkout Repository | |
uses: actions/checkout@v4 | |
- name: Setup .NET | |
uses: actions/setup-dotnet@v4 | |
with: | |
dotnet-version: 8.0.x | |
- name: Observe the Directory | |
shell: cmd | |
run: | | |
dir | |
- name: Get each commit message for version checking | |
id: get-latest-commits | |
run: | | |
$messages = ConvertFrom-Json $env:messagesJson | |
$nMessages = $messages.Count | |
echo "nMessages=$nMessages" >> $env:GITHUB_ENV | |
for ($c = 0; $c -lt $nMessages; ++$c) { | |
New-Item -Path ($env:messagePathPrefix + $c) -Type file | |
$message = $messages | Select-Object -Index $c | |
echo $message > ($env:messagePathPrefix + $c) | |
} | |
env: | |
messagesJson: ${{ toJSON(github.event.commits.*.message) }} | |
- name: Get project version | |
uses: kzrnm/get-net-sdk-project-versions-action@v2 | |
id: get-version | |
with: | |
proj-path: OpenTaiko/OpenTaiko.csproj | |
- name: Store projectVersion in environment | |
run: | | |
echo "projectVersion=${{ steps.get-version.outputs.version }}" >> $env:GITHUB_ENV | |
- name: Extract latest version info from each commit message | |
id: extract-versions | |
run: | | |
$hasVersion = $false | |
$version = $env:projectVersion | |
New-Item -Path $env:versionsPath -Type file | |
for ($c = 0; $c -lt $env:nMessages; ++$c) { | |
$commitSubject = Get-Content -Path ($env:messagePathPrefix + $c) | Select-Object -First 1 | |
if ($commitSubject -match '^(?<version>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)\s-\s') { | |
$hasVersion = $true | |
$version = $matches['version'] | |
} | |
if ($c -eq 0) { | |
echo "versionFirst=$version" >> $env:GITHUB_ENV | |
} | |
echo $version >> $env:versionsPath | |
} | |
# check the latest version | |
if ($hasVersion) { | |
Write-Host "Extracted latest version is: $version" | |
echo "version=$version" >> $env:GITHUB_ENV | |
} else { | |
Write-Host "No valid version found in the latest commit messages. Skipping bump." | |
echo "version=" >> $env:GITHUB_ENV | |
} | |
echo "versionLast=$version" >> $env:GITHUB_ENV | |
- name: Bump OpenTaiko version if necessary | |
if: env.version != '' | |
run: | | |
$newVersion = $env:version | |
Write-Host "Updating version in OpenTaiko.csproj to $newVersion" | |
(Get-Content OpenTaiko/OpenTaiko.csproj) -replace '<Version>.*<\/Version>', "<Version>$newVersion</Version>" | Set-Content OpenTaiko/OpenTaiko.csproj | |
- name: Get current date | |
id: get-date | |
run: | | |
$date = Get-Date -Format "yyyy-MM-dd" | |
echo "date=$date" >> $env:GITHUB_ENV | |
- name: Update CHANGELOG.md | |
run: | | |
$versions = Get-Content -Path $env:versionsPath | |
$date = $env:date | |
$changelogPath = "CHANGELOG.md" | |
:commit for ($c = 0; $c -lt $env:nMessages; ++$c) { | |
# (Re-)read CHANGELOG.md content as (re-)split lines | |
$changelog = Get-Content -Path $changelogPath | |
# Ensure list type for []-indexing | |
if ($changelog.Count -eq 1) { | |
$changelog = , $changelog | |
} | |
# Read the message as individual items | |
$commitBody = Get-Content -Path ($env:messagePathPrefix + $c) | Select-Object -Skip 1 | |
# Remove empty lines from the message | |
$message = ($commitBody | Where-Object { $_ -ne "" }) -join "`n" | |
# Check if the version already exists | |
$version = $versions | Select-Object -Index $c | |
for ($i = 0; $i -lt $changelog.Count; ++$i) { | |
if (-not ($changelog[$i] -match "## \[$version\]")) { | |
continue | |
} | |
# Capture the existing content under the version heading | |
if ($message) { | |
# Append after the empty line (if exist) or the heading | |
$di = ($changelog[$i + 1] -eq "") | |
$changelog[$i + $di] += "`n$message" | |
} | |
# Write updated content back to CHANGELOG.md | |
Set-Content -Path $changelogPath -Value $changelog | |
continue commit | |
} | |
# Insert new version under '# Changelog' | |
for ($i = 0; $i -lt $changelog.Count; ++$i) { | |
if (-not ($changelog[$i] -match "# Changelog")) { | |
continue | |
} | |
# Append after the title, create empty line space | |
$changelog[$i] += "`n`n## [$version] - $date (Beta)`n`n" | |
if ($message) { | |
$changelog[$i] += "$message`n" | |
} | |
# Remove original empty line space | |
while (++$i -lt $changelog.Count) { | |
if ($changelog[$i] -ne "") { | |
break | |
} | |
$changelog[$i] = $null | |
} | |
# Write updated content back to CHANGELOG.md | |
Set-Content -Path $changelogPath -Value $changelog | |
continue commit | |
} | |
# No '# Changelog', do nothing | |
break commit | |
} | |
- name: Commit CHANGELOG.md and OpenTaiko.csproj changes | |
run: | | |
git config --global user.name "github-actions" | |
git config --global user.email "actions@github.com" | |
git add OpenTaiko/OpenTaiko.csproj | |
git add CHANGELOG.md | |
if ($env:versionLast -eq $env:versionFirst) { | |
git commit -m "Update changelog for version $env:versionLast" | |
} else { | |
git commit -m "Update changelog for versions $env:versionFirst to $env:versionLast" | |
} | |
git push https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} HEAD:${{ github.ref }} | |
- name: Build for Windows x64 | |
shell: cmd | |
run: | | |
build-win-x64.bat | |
- name: Create Archive (Win x64) | |
shell: cmd | |
run: | | |
cd OpenTaiko\bin\Release\net8.0\win-x64\ | |
7z a ../../../../../OpenTaiko.Win.x64.zip publish/ -xr!publish/Songs/ -xr!publish/FFmpeg/ -xr!publish/System/ -xr!publish/Libs/ | |
7z u ../../../../../OpenTaiko.Win.x64.zip "publish/Libs/win-x64/*" "publish/FFmpeg/win-x64/*" "publish/Songs/L2 Custom Charts/*" "publish/Songs/L3 Downloaded Songs/*" "publish/Songs/S1 Dan-i Dojo/box.def" "publish/Songs/S2 Taiko Towers/box.def" "publish/Songs/X1 Favorite/*" "publish/Songs/X2 Recent/*" "publish/Songs/X3 Search By Difficulty/*" "publish/Songs/X4 Search By Text/*" | |
cd ..\..\..\..\..\ | |
- name: Build for Linux x64 | |
shell: cmd | |
run: | | |
build-linux-x64.bat | |
- name: Create Archive (Linux x64) | |
shell: cmd | |
run: | | |
cd OpenTaiko\bin\Release\net8.0\linux-x64\ | |
7z a ../../../../../OpenTaiko.Linux.x64.zip publish/ -xr!publish/Songs/ -xr!publish/FFmpeg/ -xr!publish/System/ -xr!publish/Libs/ | |
7z u ../../../../../OpenTaiko.Linux.x64.zip "publish/Libs/linux-x64/*" "publish/FFmpeg/linux-x64/*" "publish/Songs/L2 Custom Charts/*" "publish/Songs/L3 Downloaded Songs/*" "publish/Songs/S1 Dan-i Dojo/box.def" "publish/Songs/S2 Taiko Towers/box.def" "publish/Songs/X1 Favorite/*" "publish/Songs/X2 Recent/*" "publish/Songs/X3 Search By Difficulty/*" "publish/Songs/X4 Search By Text/*" | |
cd ..\..\..\..\..\ | |
- name: Check if tag exists | |
uses: mukunku/tag-exists-action@v1.6.0 | |
id: check-tag | |
with: | |
tag: ${{ env.version }} | |
- name: Create Release | |
if: steps.check-tag.outputs.exists == 'false' && env.version != '' | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ env.version }} | |
release_name: OpenTaiko v${{ env.version }} | |
body: | | |
Note: The releases do not contain skins nor songs. | |
Please download/update through the OpenTaiko Hub: https://github.com/OpenTaiko/OpenTaiko-Hub/releases | |
draft: false | |
prerelease: false | |
- name: Upload All Builds for the Latest Release | |
uses: xresloader/upload-to-github-release@v1.6.0 | |
with: | |
file: "OpenTaiko.Win.x64.zip;OpenTaiko.Linux.x64.zip" | |
overwrite: true | |
tag_name: ${{ env.versionLast }} | |
draft: false | |
token: ${{ secrets.GITHUB_TOKEN }} |