param (
    [string]$WorkDir = "./workdir",
    [string]$BackupPath = "./backup",
    [boolean]$OverWrite = $False
)

Write-Host "Démarrage de la sauvegarde..."
if (!(Test-Path -Path $WorkDir))
{
    Write-Host "Le dossier de travail ($WorkDir) n'existe pas."
    exit
}

if (!(Test-Path -Path $BackupPath))
{
    Write-Host "Création du dossier des sauvegardes. ($BackupPath)"
    New-Item -ItemType directory -Path $BackupPath | Out-Null
}

Write-Host "Début de la compression..."
$BackupFile = "$BackupPath/backup_$( Get-Date -f yyyyMMdd-HHmm ).zip"
$CompressArgs = @{
    'Path' = $WorkDir
    'DestinationPath' = $BackupFile
    'Update' = $OverWrite
}

try
{
    Compress-Archive @CompressArgs

    Write-Host "Sauvegarde réussie! ($BackupFile)"
}
catch [System.IO.IOException]
{
    Write-Output "Une erreur est survenue lors de la sauvegarde:"

    if ($_.FullyQualifiedErrorId -like "ArchiveFileExists*")
    {
        Write-Host "L'archive de sauvegarde '$BackupFile' existe déjà. Ajoutez l'argument '-OverWrite `$true' pour écraser l'archive."
    }
    else
    {
        Write-Host $_
    }
}