Skip to content

matrix.yaml: simplify responseFile #8

matrix.yaml: simplify responseFile

matrix.yaml: simplify responseFile #8

Workflow file for this run

on:
push:
branches: [matrix]
paths:
- "Steam/**/pakchunk0-WindowsNoEditor.pak/Game/Content/Localization/Game/Game.locres.yaml"
- "Steam/**/pakchunk0-WindowsNoEditor.pak/Game/Content/NonAssets/ETP/ETP.yaml"
- ".github/workflows/matrix.yml"
jobs:
Checkout_Repos:
permissions: write-all
runs-on: self-hosted
steps:
- name: Checkout dqx_dat_dump
uses: actions/checkout@v4
with:
path: ./MATRIX/dqx_dat_dump
ref: testing
repository: KodywithaK/dqx_dat_dump
- name: Checkout dqx-offline-localization
uses: actions/checkout@v4
with:
path: ./MATRIX/dqx-offline-localization
ref: main
repository: KodywithaK/dqx-offline-localization
- name: Checkout LocRes-Builder
uses: actions/checkout@v4
with:
path: ./MATRIX/LocRes-Builder
ref: testing
repository: KodywithaK/LocRes-Builder
LocRes-Builder-Input:
needs: [Checkout_Repos]
runs-on: self-hosted
steps:
- name: LocRes-Builder Inputs
run: |
# echo -e "::group::\033[0;34m Building LocRes-Builder's Inputs \033[0m"
mkdir -p ${{ github.workspace }}/MATRIX/LocRes-Builder/INPUT
cp \
"${{ github.workspace }}/MATRIX/dqx-offline-localization/Steam/App_ID-1358750/Build_ID-14529657/pakchunk0-WindowsNoEditor.pak/Game/Content/Localization/Game/locmetav2.json" \
"${{ github.workspace }}/MATRIX/LocRes-Builder/INPUT/locmeta.json"
echo -e "Splitting Game.locres.yaml"
for LANGUAGE in de en es fr it ja ko la pt-BR zh-Hans zh-Hant; do \
echo -e "Splitting \033[0;32m$LANGUAGE\033[0m"
yq "." \
"${{ github.workspace }}/MATRIX/dqx-offline-localization/Steam/App_ID-1358750/Build_ID-14529657/pakchunk0-WindowsNoEditor.pak/Game/Content/Localization/Game/Game.locres.yaml" \
--yaml-fix-merge-anchor-to-spec -o json \
| jq --arg LANGUAGE $LANGUAGE \
--from-file "${{ github.workspace }}/MATRIX/dqx-offline-localization/Steam/App_ID-1358750/Build_ID-14529657/pakchunk0-WindowsNoEditor.pak/Game/Content/Localization/Game/Game.locres.json_--from-file.txt" \
> "${{ github.workspace }}/MATRIX/LocRes-Builder/INPUT/${LANGUAGE}.json"
done
# echo "::endgroup::"
LocRes-Builder-Output:
needs: [Checkout_Repos, LocRes-Builder-Input]
runs-on: self-hosted
strategy:
matrix:
LocResVersion: [Optimized_CRC32, Optimized_CityHash64_UTF16]
steps:
- name: LocRes-Builder Outputs
run: |
if [[ ${{ matrix.LocResVersion }} == @(Optimized_CRC32) ]]; then
LOCRES_VERSION="Optimized_CRC32";
LOCRES_VERSION_ID=2
else
LOCRES_VERSION="Optimized_CityHash64_UTF16";
LOCRES_VERSION_ID=3
fi
echo -e "::group::\033[0;34m Building LocRes-Builder's Outputs \033[0m"
mkdir -p ${{ github.workspace }}/MATRIX/LocRes-Builder/OUTPUT/${LOCRES_VERSION}
python3 "${{ github.workspace }}/MATRIX/LocRes-Builder/src/main.py" \
-i "${{ github.workspace }}/MATRIX/LocRes-Builder/INPUT/locmeta.json" \
-v ${LOCRES_VERSION_ID} \
-o "${{ github.workspace }}/MATRIX/LocRes-Builder/OUTPUT/${LOCRES_VERSION}" -f=json
for LANGUAGE in de en es fr it ja ko pt-BR zh-Hans zh-Hant; do \
mkdir -p "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game"
cp \
"${{ github.workspace }}/MATRIX/LocRes-Builder/OUTPUT/${LOCRES_VERSION}/Game/${LANGUAGE}/Game.locres" \
"${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/Game.locres.${LOCRES_VERSION}"
done
echo "::endgroup::"
YAML_to_ETP:
needs: [Checkout_Repos, LocRes-Builder-Input, LocRes-Builder-Output]
runs-on: self-hosted
steps:
- name: Setup Python
id: setup_python
uses: actions/setup-python@v4
with:
architecture: "x64"
# python-version: '3.x'
python-version: "3.11"
- name: cache virtualenv
uses: actions/cache@v3
id: setup_cache
with:
path: ./MATRIX/dqx_dat_dump/venv/
key: ${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}-venv-${{ hashFiles('requirements.txt') }}
restore-keys: |
${{ runner.os }}-${{ steps.setup_python.outputs.python-version }}-venv-
- name: Split ETP.yaml
run: |
cd "${{ github.workspace }}/MATRIX/dqx-offline-localization/Steam/App_ID-1358750/Build_ID-14529657/pakchunk0-WindowsNoEditor.pak/Game/Content/NonAssets/ETP"
echo -e "Splitting ETP.yaml"
yq -s "keys[], . = .[]" \
"./ETP.yaml" \
--yaml-fix-merge-anchor-to-spec -o json
rm "./anchors.json"
- name: dqx_dat_dump ( no cache )
if: steps.setup_cache.outputs.cache-hit != 'true'
run: |
cd "${{ github.workspace }}/MATRIX/dqx_dat_dump"
python -m venv venv
source ./venv/bin/activate
pip install -r requirements.txt
cd ./tools/packing/
for LANGUAGE in de en es fr it ja ko pt-BR zh-Hans zh-Hant; do
echo -e "::group::Packing \033[0;32m ETP_${LANGUAGE}\033[0m"
python pack_etp--KwK_20250626.py -L ${LANGUAGE}
echo "::endgroup::"
done
deactivate
cd ~
- name: dqx_dat_dump ( cache )
if: steps.setup_cache.outputs.cache-hit == 'true'
run: |
cd "${{ github.workspace }}/MATRIX/dqx_dat_dump"
source ./venv/bin/activate
cd ./tools/packing/
for LANGUAGE in de en es fr it ja ko pt-BR zh-Hans zh-Hant; do
echo -e "::group::Packing \033[0;32m ETP_${LANGUAGE}\033[0m"
python pack_etp--KwK_20250626.py -L ${LANGUAGE}
echo "::endgroup::"
done
deactivate
cd ~
UnrealPak_-Create:
needs: [Checkout_Repos, LocRes-Builder-Input, LocRes-Builder-Output, YAML_to_ETP]
runs-on: self-hosted
steps:
- name: UnrealPak -Create
run: |
mkdir -p \
"${{ github.workspace }}/MATRIX/releases"
for PLATFORM in Android_ETC2 ios ps4 Switch WindowsNoEditor; do\
for LANGUAGE in de en es fr it ja ko pt-BR zh-Hans zh-Hant; do\
echo -e "::group::Creating \033[0;34m Titlescreen Version Info \033[0m"
mkdir -p "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Settings/Version"
jq -n "{\"AppVersionString\": \"2.0.1\n$(echo -e ${LANGUAGE}_v$(date -u +%Y.%m.%d ))\n${PLATFORM}\"}" \
> "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Settings/Version/version_settings.json"
echo -e "$(jq -n "{\"AppVersionString\": \"2.0.1\n$(echo -e ${LANGUAGE}_v$(date -u +%Y.%m.%d ))\n${PLATFORM}\"}")"
echo "::endgroup::"
for VERSION in Optimized_CRC32 Optimized_CityHash64_UTF16; do\
if [[ ${VERSION} == @(Optimized_CRC32) ]]; then
if [[ ${PLATFORM} == @(Android_ETC2|ios) ]]; then
continue
elif [[ ${PLATFORM} == @(ps4|Switch) ]]; then
DESTINATION="Holiday";
else
DESTINATION="Game";
fi
LOCRES_VERSION="Optimized_CRC32";
LOCRES_VERSION_ID=2;
echo -e "::group::Creating \033[0;34m ja to ko + zh-Hans + zh-Hant fail-safes \033[0m"
mkdir -p \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/ja
cp \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/Game.locres.${VERSION} \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/ja/Game.locres
echo "::endgroup::"
echo -e "::group::Creating \033[0;34m responseFile--pakchunk0-${PLATFORM}_${LOCRES_VERSION_ID}_Dialogue_Latest.pak.txt \033[0m"
echo -e \
"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\ja\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/ja/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Settings\\Version\\\version_settings.json\" \"../../../${DESTINATION}/Content/Settings/Version/version_settings.json\"\
" | sed -e 's/ /\n/g ; s/^[[:space:]]*//g ; s/[[:space:]]*$//g' > ${{ github.workspace }}/MATRIX/staging/responseFile--pakchunk0-${PLATFORM}_${LOCRES_VERSION_ID}_Dialogue_Latest.pak.txt
echo -e \
"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\ja\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/ja/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Settings\\Version\\\version_settings.json\" \"../../../${DESTINATION}/Content/Settings/Version/version_settings.json\"\
" | sed -e 's/ /\n/g ; s/^[[:space:]]*//g ; s/[[:space:]]*$//g'
echo "::endgroup::"
else
if [[ ${PLATFORM} == @(Switch) ]]; then
continue
elif [[ ${PLATFORM} == @(Android_ETC2|ios|ps4) ]]; then
DESTINATION="Holiday";
else
DESTINATION="Game";
fi
LOCRES_VERSION="Optimized_CityHash64_UTF16";
LOCRES_VERSION_ID=3;
echo -e "::group::Creating \033[0;34m ja to ko + zh-Hans + zh-Hant fail-safes \033[0m"
mkdir -p \
"${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/ko" \
"${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/zh-Hans" \
"${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/zh-Hant" \
"${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_ko" \
"${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hans" \
"${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hant"
cp \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/Game.locres.${LOCRES_VERSION} \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/ko/Game.locres
cp \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/Game.locres.${LOCRES_VERSION} \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/zh-Hans/Game.locres
cp \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/Game.locres.${LOCRES_VERSION} \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Localization/Game/zh-Hant/Game.locres
cp \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP/* \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_ko
cp \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP/* \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hans
cp \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP/* \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hant
echo "::endgroup::"
echo -e "::group::Creating \033[0;34m responseFile--pakchunk0-${PLATFORM}_${LOCRES_VERSION_ID}_Dialogue_Latest.pak.txt \033[0m"
echo -e \
"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\ko\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/ko/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\zh-Hans\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/zh-Hans/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\zh-Hant\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/zh-Hant/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_ko\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_ko/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hans\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hans/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hant\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hant/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Settings\\Version\\\version_settings.json\" \"../../../${DESTINATION}/Content/Settings/Version/version_settings.json\"\
" | sed -e 's/ /\n/g ; s/^[[:space:]]*//g ; s/[[:space:]]*$//g' > ${{ github.workspace }}/MATRIX/staging/responseFile--pakchunk0-${PLATFORM}_${LOCRES_VERSION_ID}_Dialogue_Latest.pak.txt
echo -e \
"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\ko\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/ko/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\zh-Hans\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/zh-Hans/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\zh-Hant\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/zh-Hant/Game.locres\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_ko\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_ko/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hans\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hans/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hant\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hant/\"\
\"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Settings\\Version\\\version_settings.json\" \"../../../${DESTINATION}/Content/Settings/Version/version_settings.json\"\
" | sed -e 's/ /\n/g ; s/^[[:space:]]*//g ; s/[[:space:]]*$//g'
echo "::endgroup::"
fi
echo -e "::group::Creating \033[0;34m pakchunk0-${PLATFORM}_${LANGUAGE}_v${LOCRES_VERSION_ID}_Dialogue_Latest_P.pak \033[0m"
~/UnrealEngine-4.27.2-release/Engine/Binaries/Linux/UnrealPak \
"../../../../actions-runner/_work/dqx-offline-localization/dqx-offline-localization/MATRIX/staging/${LANGUAGE}/pakchunk0-${PLATFORM}_${LANGUAGE}_v${LOCRES_VERSION_ID}_Dialogue_Latest_P.pak" \
-Create="../../../../actions-runner/_work/dqx-offline-localization/dqx-offline-localization/MATRIX/staging/responseFile--pakchunk0-${PLATFORM}_${LOCRES_VERSION_ID}_Dialogue_Latest.pak.txt"
echo "::endgroup::"
echo -e "::group::Creating \033[0;34m pakchunk0-${PLATFORM}_${LANGUAGE}_v${LOCRES_VERSION_ID}_Dialogue_Latest_P.pak.zip \033[0m"
zip -uj \
${{ github.workspace }}/MATRIX/releases/pakchunk0-${PLATFORM}_${LANGUAGE}_v${LOCRES_VERSION_ID}_Dialogue_Latest_P.pak.zip \
${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/pakchunk0-${PLATFORM}_${LANGUAGE}_v${LOCRES_VERSION_ID}_Dialogue_Latest_P.pak
echo "::endgroup::"
echo -e "::notice::\033[0;32m Successfully created: \033[0;34m pakchunk0-${PLATFORM}_${LANGUAGE}_v${LOCRES_VERSION_ID}_Dialogue_Latest_P.pak \033[0m\n"
done;
done;
done;
########################################################################################################################################################################################################
# if [[ ${PLATFORM} == @(ps4|ps4_ZZZ) ]]; then
# # filename priority fix
# PLATFORM="ps4_ZZZ"
# else
# PLATFORM="${PLATFORM}"
# fi
########################################################################################################################################################################################################
# UnrealPak_-Create:
# needs: [Checkout_Repos, LocRes-Builder-Input, LocRes-Builder-Output, YAML_to_ETP]
# runs-on: self-hosted
# steps:
# - name: UnrealPak -Create
# run: |
# mkdir -p \
# "${{ github.workspace }}/MATRIX/staging" \
# "${{ github.workspace }}/MATRIX/releases"
#
# for PLATFORM in Android_ETC2 ios ps4 Switch WindowsNoEditor; do\
# for LANGUAGE in de en es fr it ja ko pt-BR zh-Hans zh-Hant; do\
# mkdir -p \
# "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}" \
# "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_ko" \
# "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hans" \
# "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hant"
#
# cp \
# ${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP/* \
# ${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_ko
#
# cp \
# ${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP/* \
# ${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hans
#
# cp \
# ${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP/* \
# ${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/NonAssets/ETP_zh_hant
#
# if [[ ${PLATFORM} == @(Android_ETC2|ios|ps4|Switch) ]]; then
# DESTINATION="Holiday";
# else
# DESTINATION="Game";
# fi
# echo -e "::group::Creating \033[0;34m Titlescreen Version Info \033[0m"
# mkdir -p "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Settings/Version"
#
# jq -n "{\"AppVersionString\": \"2.0.1\n$(echo -e ${LANGUAGE}_v$(date -u +%Y.%m.%d ))\n${PLATFORM}\"}" \
# > "${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/Game/Content/Settings/Version/version_settings.json"
#
# echo -e "$(jq -n "{\"AppVersionString\": \"2.0.1\n$(echo -e ${LANGUAGE}_v$(date -u +%Y.%m.%d ))\n${PLATFORM}\"}")"
# echo "::endgroup::"
#
# if [[ ${PLATFORM} == @(ps4|ps4_ZZZ) ]]; then
# # filename priority fix
# PLATFORM="ps4_ZZZ"
# else
# PLATFORM="${PLATFORM}"
# fi
#
# echo -e "::group::Creating \033[0;34m responseFile--pakchunk0-${PLATFORM}_Latest.pak.txt \033[0m"
# echo -e \
# "\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_ko\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_ko/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hans\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hans/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hant\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hant/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\\\${LANGUAGE}\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/ko/Game.locres\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Settings\\Version\\\version_settings.json\" \"../../../${DESTINATION}/Content/Settings/Version/version_settings.json\"\
# " | sed -e 's/ /\n/g ; s/^[[:space:]]*//g ; s/[[:space:]]*$//g' > ${{ github.workspace }}/MATRIX/staging/responseFile--pakchunk0-${PLATFORM}_Latest.pak.txt
#
# echo -e \
# "\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_ko\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_ko/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hans\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hans/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\NonAssets\\\ETP_zh_hant\*\" \"../../../${DESTINATION}/Content/NonAssets/ETP_zh_hant/\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Localization\\Game\\\\${LANGUAGE}\\Game.locres\" \"../../../${DESTINATION}/Content/Localization/Game/ko/Game.locres\"\
# \"..\\..\\..\\..\\\actions-runner\\_work\\dqx-offline-localization\\dqx-offline-localization\\MATRIX\\staging\\\\${LANGUAGE}\\Game\\Content\\Settings\\Version\\\version_settings.json\" \"../../../${DESTINATION}/Content/Settings/Version/version_settings.json\"\
# " | sed -e 's/ /\n/g ; s/^[[:space:]]*//g ; s/[[:space:]]*$//g'
# echo "::endgroup::"
#
# echo -e "::group::Creating \033[0;34m pakchunk0-${PLATFORM}_${LANGUAGE}_Dialogue_Latest_P.pak \033[0m"
# ~/UnrealEngine-4.27.2-release/Engine/Binaries/Linux/UnrealPak \
# "../../../../actions-runner/_work/dqx-offline-localization/dqx-offline-localization/MATRIX/staging/${LANGUAGE}/pakchunk0-${PLATFORM}_${LANGUAGE}_Dialogue_Latest_P.pak" \
# -Create="../../../../actions-runner/_work/dqx-offline-localization/dqx-offline-localization/MATRIX/staging/responseFile--pakchunk0-${PLATFORM}_Latest.pak.txt"
# echo "::endgroup::"
#
# echo -e "::group::Creating \033[0;34m pakchunk0-${PLATFORM}_${LANGUAGE}_Dialogue_Latest_P.pak.zip \033[0m"
# zip -uj \
# ${{ github.workspace }}/MATRIX/releases/pakchunk0-${PLATFORM}_${LANGUAGE}_Dialogue_Latest_P.pak.zip \
# ${{ github.workspace }}/MATRIX/staging/${LANGUAGE}/pakchunk0-${PLATFORM}_${LANGUAGE}_Dialogue_Latest_P.pak
# echo "::endgroup::"
#
# echo -e "::notice::\033[0;32m Successfully created: \033[0;34m pakchunk0-${PLATFORM}_${LANGUAGE}_Dialogue_Latest_P.pak \033[0m\n"
# done;
# done;
#
########################################################################################################################################################################################################
# Create_Latest_Release:
# needs: [Checkout_Repos, LocRes-Builder, YAML_to_ETP, UnrealPak_-Create]
# runs-on: self-hosted
# steps:
# - name: Create Release
# env:
# GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# run: |
# gh release create Latest \
# ${{ github.workspace }}/MATRIX/releases/pakchunk0-ps4_*_Dialogue_Latest_P.pak.zip \
# ${{ github.workspace }}/MATRIX/releases/pakchunk0-Switch_*_Dialogue_Latest_P.pak.zip \
# ${{ github.workspace }}/MATRIX/releases/pakchunk0-WindowsNoEditor_*_Dialogue_Latest_P.pak.zip \
# --notes-file ${{ github.workspace }}/MATRIX/dqx-offline-localization/docs/CHANGELOG.md \
# --title "$(echo -e v$(date -u +%Y.%m.%d ))"
#
# echo "Successfully uploaded new files to [Releases/Latest](https://github.com/KodywithaK/dqx-offline-localization/releases/tag/Latest)." >> $GITHUB_STEP_SUMMARY
# echo -e "\n::notice:: \033[0;32m Successfully uploaded new files to Latest release. \033[0m"
#
########################################################################################################################################################################################################
# 202500921_2100: `Game.locres.yaml` > `Game.locres.json`
# - To make use of anchors (&anchor) and aliases (*anchor), readability, & smaller file size
# ```bash
# clear && \
# yq "." -o=json \
# "/mnt/r/\${{ github.workspace }}/MATRIX/dqx-offline-localization/Steam/App_ID-1358750/Build_ID-14529657/pakchunk0-WindowsNoEditor.pak/Game/Content/Localization/Game/Game.locres.yaml" \
# > "/mnt/r/\${{ github.workspace }}/MATRIX/dqx-offline-localization/Steam/App_ID-1358750/Build_ID-14529657/BACKLOG/pakchunk0-WindowsNoEditor.pak/Game/Content/Localization/Game/Game.locres.json"
# ```
#
########################################################################################################################################################################################################
# 20250713_2100: `gh release edit` still not supported by github actions
# ```bash
# gh release delete Latest --yes
#
# gh release edit Multi-Languages \
# --title "(echo -e $(gh release list --json name -q ".[1].name"))" \
# --tag "previous"
# ```
#
########################################################################################################################################################################################################
# 20250728_1600: gh release edit Latest
# ```cmd
# FOR /F "usebackq" %A IN (`gh release list --json name -q "sort | reverse | .[0].name"`) DO @ECHO gh release edit Latest --title "%A" --tag "%A"
# ```
#
########################################################################################################################################################################################################
# 20250807_0000: Release PS4 `.pkg`
# - see TODO.md
# - .github/workflows/Create_Latest_Release.yml
# - PS4 `.pkg`
#
########################################################################################################################################################################################################
# 20250808_0100: `Game.locres.json` > `OUTPUT/StringTables/${LANGUAGE}/**/*.csv`
# - see TODO.md
# - .github/workflows/Create_Latest_Release.yml
# - `Game.locres.json` > `OUTPUT/StringTables/${LANGUAGE}/**/*.csv`
# - Invalid workflow file: .github/workflows/Create_Latest_Release_DEBUG.yml#L1
# (Line: 195, Col: 14): Exceeded max expression length 21000
# - Optimize/add `run` step(s)?
#
# ```yaml
# gh release create Latest \
# ...
# ${{ github.workspace }}/MATRIX/releases/StringTables.zip \
# ...
# ```
########################################################################################################################################################################################################