<# .SYNOPSIS Montage temporaire d'un mod d'assets (lot H3b, Docs/Migration/16_H3_Mods_Paquets.md). .DESCRIPTION Les sources d'un mod vivent dans ModSources\\ : .uplugin plugin de contenu (CanContainContent) Content\ assets du mod (non versionnes, comme Content/Heavy) Module\ module LifePlay en texte (.lpmod, Hairstyles\*.lphair, CREDITS.txt) L'editeur ne monte // que si le plugin est dans \Mods\ ; mais un plugin laisse dans Mods\ serait cuit avec le jeu de base. Mount-ModSource deplace donc ModSources\ vers Mods\ le temps d'un travail (import, cuisson DLC) et Dismount-ModSource le remet en place (deplacements seulement, rien n'est copie ni supprime). A charger par dot-sourcing : . (Join-Path $PSScriptRoot 'ModSource.ps1') #> function Get-ModSourcePaths([string] $Root, [string] $Name) { [pscustomobject]@{ Source = Join-Path $Root "ModSources\$Name" Mounted = Join-Path $Root "Mods\$Name" } } function Mount-ModSource([string] $Root, [string] $Name) { $p = Get-ModSourcePaths $Root $Name if (Test-Path $p.Mounted) { throw "Mods\$Name existe deja (travail precedent interrompu ?) : le remettre dans ModSources\$Name a la main avant de relancer" } if (-not (Test-Path (Join-Path $p.Source "$Name.uplugin"))) { throw "ModSources\$Name\$Name.uplugin introuvable" } New-Item -ItemType Directory -Force (Split-Path $p.Mounted -Parent) | Out-Null Move-Item $p.Source $p.Mounted Write-Host "Mod $Name monte dans Mods\$Name" $p.Mounted } function Dismount-ModSource([string] $Root, [string] $Name) { $p = Get-ModSourcePaths $Root $Name if (Test-Path $p.Mounted) { Move-Item $p.Mounted $p.Source Write-Host "Mod $Name remis dans ModSources\$Name" } } # Autres plugins presents dans Mods\ (ils seraient cuits avec le jeu de base). function Get-StrayMods([string] $Root, [string] $Except = '') { $mods = Join-Path $Root 'Mods' if (-not (Test-Path $mods)) { return @() } @(Get-ChildItem $mods -Directory | Where-Object { $_.Name -ne $Except } | ForEach-Object Name) }