-
Notifications
You must be signed in to change notification settings - Fork 1
/
Build.ps1
87 lines (68 loc) · 2.95 KB
/
Build.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# Generatorskript für Dataline.Tax.BmfPapConverter
# Generiert aus allen PAP in .\data Projekte, buildet sie und verschiebt sie in das Rootprojekt
Param(
[switch]$Test,
[switch]$Pack,
[switch]$BuildOld,
[switch]$RebuildExisting,
[String]$Version="0.0.1",
[String]$PackOutput="dist"
)
$ErrorActionPreference = "Stop"
function Fail([string] $message)
{
Throw "Buildskript fehlgeschlagen: $message"
}
function CheckExitCode()
{
if (!$?) {
Fail("Der vorausgegangene Befehl gab einen Fehler zurück.")
}
}
Write-Progress -Activity "Vorbereitung" -Status "Build"
dotnet build -c Release ".\src\Dataline.Tax.BmfPapConverter.Cmdlets\Dataline.Tax.BmfPapConverter.Cmdlets.csproj"
CheckExitCode
Write-Progress -Activity "Vorbereitung" -Status "Importiere Modul"
Import-Module ".\src\Dataline.Tax.BmfPapConverter.Cmdlets\bin\Release\net472\Dataline.Tax.BmfPapConverter.Cmdlets.dll"
CheckExitCode
$thisDir = Resolve-Path .
$generatedDir = Join-Path -Path $thisDir -ChildPath "generated"
$targetDir = Join-Path -Path $thisDir -ChildPath "data"
$packDir = Join-Path -Path $thisDir -ChildPath $PackOutput
if (!(Test-Path $generatedDir)) {
New-Item -ItemType Directory -Path $generatedDir
}
foreach ($jahrPath in Get-ChildItem -Directory $targetDir) {
if ($jahrPath.Name.EndsWith("-old")) {
if (!$BuildOld) {
continue;
}
$jahr = $jahrPath.Name.Substring(0, $jahrPath.Name.Length - 4)
} else {
$jahr = $jahrPath.Name
}
$jahrKurz = $jahr.Substring(2, 2)
$name = "Dataline.Tax.LSt$jahr"
$currentDir = Join-Path -Path $targetDir -ChildPath $jahrPath
$papPath = Join-Path -Path $currentDir -ChildPath "pap.xml"
$outDir = Join-Path -Path $generatedDir -ChildPath $name
$outExists = Test-Path $outDir
if ($RebuildExisting -or -not $outExists) {
if ($outExists) {
Remove-Item -Recurse $outDir
}
$testCsvs = Get-ChildItem (Join-Path -Path $currentDir -ChildPath "test-*.csv")
Write-Progress -Activity $name -Status "Konvertiere PAP"
Convert-BmfPap -PapPath $papPath -Year $jahr -OutputDirectory $outDir -Namespace $name -TestDataPaths $testCsvs -ProjectAuthor "DATALINE Lohnabzug GmbH" -ProjectCopyright "$((Get-Date).Year) DATALINE Lohnabzug GmbH" -ProjectDescription "BMF-PAP Lohnsteuerberechnung $jahr" -ProjectVersion $Version -ProjectTags "DATALINE", "$jahr" -Extensions "TariflicheEinkommensteuer" -Macros "yearshort", $jahrKurz
CheckExitCode
}
if ($Test -and $jahr -ne "2014") { # Der PAP 2014 unterstützt das Testprojekt nicht
Write-Progress -Activity $name -Status "Ausführung Testprojekt"
dotnet test (Join-Path -Path $outDir -ChildPath "$name.Test\$name.Test.csproj")
CheckExitCode
}
if ($Pack) {
Write-Progress -Activity $name -Status "Erstelle Paket"
dotnet pack -c Release -o $packDir (Join-Path -Path $outDir -ChildPath "$name\$name.csproj")
}
}