Fix mod content installers.

In 4312a4d3f4 MiniYaml merging was adjusted. One effect of this change was that duplicate keys in files that did not previously require merging was previously allowed, but was now an error. (Test case `TestMergeConflictsNoMerge`)

The installer files were relying on the previous behaviour to allow multiple `ContentPackage` keys. The above change caused a regression where attempting to manage mod content would crash due to now erroring on the duplicate keys.

We fix the issue by applying a unique ID suffix, as is a common pattern elsewhere in our yaml files, and teach InstallFromSourceLogic to recognise and strip it.
This commit is contained in:
RoosterDragon
2024-07-30 19:15:37 +01:00
committed by Gustas
parent ebaed9966b
commit 578a9fe457
22 changed files with 198 additions and 193 deletions

View File

@@ -5,7 +5,7 @@ covertops: Covert Operations Expansion (English)
CONQUER.MIX: 713b53fa4c188ca9619c6bbeadbfc86513704266
Install:
# Covert Operations music (optional):
ContentPackage:
ContentPackage@music-covertops:
Name: music-covertops
Actions:
Copy: .

View File

@@ -22,7 +22,7 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/cnc/transit.mix: CnC\\TRANSIT.MIX
^SupportDir|Content/cnc/movies.mix: CnC\\MOVIES.MIX
# GDI campaign briefings (optional):
ContentPackage:
ContentPackage@movies-gdi:
Name: movies-gdi
Actions:
ExtractMix: ^SupportDir|Content/cnc/movies.mix
@@ -92,7 +92,7 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/cnc/movies/bcanyon.vqa: bcanyon.vqa
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
# Nod campaign briefings (optional):
ContentPackage:
ContentPackage@movies-nod:
Name: movies-nod
Actions:
ExtractMix: ^SupportDir|Content/cnc/movies.mix
@@ -158,7 +158,7 @@ tfd: C&C The First Decade (English)
^SupportDir|Content/cnc/movies/akira.vqa: akira.vqa
^SupportDir|Content/cnc/movies/airstrk.vqa: airstrk.vqa
# Base game music (optional):
ContentPackage:
ContentPackage@music:
Name: music
Actions:
ExtractIscab: data1.hdr
@@ -168,7 +168,7 @@ tfd: C&C The First Decade (English)
Extract:
^SupportDir|Content/cnc/scores.mix: CnC\\SCORES.MIX
# Covert Operations music (optional):
ContentPackage:
ContentPackage@music-covertops:
Name: music-covertops
Actions:
ExtractIscab: data1.hdr

View File

@@ -5,7 +5,7 @@ gdi95: C&C Gold (GDI Disc, English)
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
# Base game files:
ContentPackage:
ContentPackage@base:
Name: base
Actions:
Copy: .
@@ -20,13 +20,13 @@ gdi95: C&C Gold (GDI Disc, English)
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
# Base game music (optional):
ContentPackage:
ContentPackage@music:
Name: music
Actions:
Copy: .
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
# GDI campaign briefings (optional):
ContentPackage:
ContentPackage@movies-gdi:
Name: movies-gdi
Actions:
ExtractMix: MOVIES.MIX

View File

@@ -5,7 +5,7 @@ nod95: C&C Gold (Nod Disc, English)
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
# Base game files:
ContentPackage:
ContentPackage@base:
Name: base
Actions:
Copy: .
@@ -20,13 +20,13 @@ nod95: C&C Gold (Nod Disc, English)
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
# Base game music (optional):
ContentPackage:
ContentPackage@music:
Name: music
Actions:
Copy: .
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
# Nod campaign briefings (optional):
ContentPackage:
ContentPackage@movies-nod:
Name: movies-nod
Actions:
ExtractMix: MOVIES.MIX

View File

@@ -7,7 +7,7 @@ tuc-origin: C&C The Ultimate Collection (Origin version, English)
CONQUER.MIX: 833e02a09aae694659eb312d3838367f681d1b30
Install:
# Base game files:
ContentPackage:
ContentPackage@base:
Name: base
Actions:
Copy: .
@@ -21,19 +21,19 @@ tuc-origin: C&C The Ultimate Collection (Origin version, English)
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
# Base game music (optional):
ContentPackage:
ContentPackage@music:
Name: music
Actions:
Copy: .
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
# Covert Operations music (optional):
ContentPackage:
ContentPackage@music-covertops:
Name: music-covertops
Actions:
Copy: .
^SupportDir|Content/cnc/scores-covertops.mix: covert/SCORES.MIX
# GDI campaign briefings (optional):
ContentPackage:
ContentPackage@movies-gdi:
Name: movies-gdi
Actions:
ExtractMix: movies.mix
@@ -103,7 +103,7 @@ tuc-origin: C&C The Ultimate Collection (Origin version, English)
^SupportDir|Content/cnc/movies/bcanyon.vqa: bcanyon.vqa
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
# Nod campaign briefings (optional):
ContentPackage:
ContentPackage@movies-nod:
Name: movies-nod
Actions:
ExtractMix: movies.mix
@@ -179,7 +179,7 @@ cncr-origin: C&C Remastered Collection (Origin version, English)
Data/CNCDATA/TIBERIAN_DAWN/CD1/CONQUER.MIX: 3f891c8dc0864f654e1710430ea4ff34c3715e97
Install:
# Base game files:
ContentPackage:
ContentPackage@base:
Name: base
Actions:
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
@@ -193,20 +193,20 @@ cncr-origin: C&C Remastered Collection (Origin version, English)
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
^SupportDir|Content/cnc/winter.mix: WINTER.MIX
# Base game music (optional):
ContentPackage:
ContentPackage@music:
Name: music
Actions:
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
# Covert Operations music (optional):
ContentPackage:
ContentPackage@music-covertops:
Name: music-covertops
Actions:
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD3
^SupportDir|Content/cnc/scores-covertops.mix: SCORES.MIX
# GDI campaign briefings (optional):
# The Remastered Collection doesn't include trailer.vqa.
ContentPackage:
ContentPackage@movies-gdi:
Name: movies-gdi
TooltipText: The Remastered Collection doesn't include trailer.vqa.
Actions:
@@ -277,7 +277,7 @@ cncr-origin: C&C Remastered Collection (Origin version, English)
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
# Nod campaign briefings (optional):
# The Remastered Collection doesn't include trailer.vqa.
ContentPackage:
ContentPackage@movies-nod:
Name: movies-nod
TooltipText: The Remastered Collection doesn't include trailer.vqa.
Actions:

View File

@@ -5,7 +5,7 @@ tuc-steam: C&C The Ultimate Collection (Steam version, English)
CONQUER.MIX: 713b53fa4c188ca9619c6bbeadbfc86513704266
Install:
# Base game files:
ContentPackage:
ContentPackage@base:
Name: base
Actions:
Copy: .
@@ -19,19 +19,19 @@ tuc-steam: C&C The Ultimate Collection (Steam version, English)
^SupportDir|Content/cnc/tempicnh.mix: TEMPICNH.MIX
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
# Base game music (optional):
ContentPackage:
ContentPackage@music:
Name: music
Actions:
Copy: .
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
# Covert Operations music (optional):
ContentPackage:
ContentPackage@music-covertops:
Name: music-covertops
Actions:
Copy: .
^SupportDir|Content/cnc/scores-covertops.mix: SCORES.MIX
# GDI campaign briefings (optional):
ContentPackage:
ContentPackage@movies-gdi:
Name: movies-gdi
Actions:
ExtractMix: movies.mix
@@ -101,7 +101,7 @@ tuc-steam: C&C The Ultimate Collection (Steam version, English)
^SupportDir|Content/cnc/movies/bcanyon.vqa: bcanyon.vqa
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
# Nod campaign briefings (optional):
ContentPackage:
ContentPackage@movies-nod:
Name: movies-nod
Actions:
ExtractMix: movies.mix
@@ -174,7 +174,7 @@ cncr-steam: C&C Remastered Collection (Steam version, English)
Data/CNCDATA/TIBERIAN_DAWN/CD1/CONQUER.MIX: 3f891c8dc0864f654e1710430ea4ff34c3715e97
Install:
# Base game files:
ContentPackage:
ContentPackage@base:
Name: base
Actions:
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
@@ -188,20 +188,20 @@ cncr-steam: C&C Remastered Collection (Steam version, English)
^SupportDir|Content/cnc/transit.mix: TRANSIT.MIX
^SupportDir|Content/cnc/winter.mix: WINTER.MIX
# Base game music (optional):
ContentPackage:
ContentPackage@music:
Name: music
Actions:
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD1
^SupportDir|Content/cnc/scores.mix: SCORES.MIX
# Covert Operations music (optional):
ContentPackage:
ContentPackage@music-covertops:
Name: music-covertops
Actions:
Copy: Data/CNCDATA/TIBERIAN_DAWN/CD3
^SupportDir|Content/cnc/scores-covertops.mix: SCORES.MIX
# GDI campaign briefings (optional):
# The Remastered Collection doesn't include trailer.vqa.
ContentPackage:
ContentPackage@movies-gdi:
Name: movies-gdi
TooltipText: The Remastered Collection doesn't include trailer.vqa.
Actions:
@@ -272,7 +272,7 @@ cncr-steam: C&C Remastered Collection (Steam version, English)
^SupportDir|Content/cnc/movies/banner.vqa: banner.vqa
# Nod campaign briefings (optional):
# The Remastered Collection doesn't include trailer.vqa.
ContentPackage:
ContentPackage@movies-nod:
Name: movies-nod
TooltipText: The Remastered Collection doesn't include trailer.vqa.
Actions: