-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGetNovaResolvedProjectPackageSettings.ps1
More file actions
72 lines (62 loc) · 3.38 KB
/
Copy pathGetNovaResolvedProjectPackageSettings.ps1
File metadata and controls
72 lines (62 loc) · 3.38 KB
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
function Get-NovaResolvedProjectPackageSettings {
[Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '', Justification = 'Package settings is the domain term represented by this resolver.')]
[CmdletBinding()]
param(
[Parameter(Mandatory)][hashtable]$ProjectData,
[Parameter(Mandatory)][hashtable]$ManifestSettings,
[Parameter(Mandatory)][string]$ProjectRoot
)
$packageSettings = Get-NovaProjectPackageSettingsTable -ProjectData $ProjectData
$packageSettings['Types'] = @(Get-NovaResolvedProjectPackageTypeList -PackageSettings $packageSettings)
$packageSettings['OutputDirectory'] = Get-NovaResolvedProjectPackageOutputDirectorySettings -PackageSettings $packageSettings -ProjectRoot $ProjectRoot
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'Id' -Value $ProjectData['ProjectName'] -TreatWhitespaceAsMissing
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'PackageFileName' -Value "$( $packageSettings['Id'] ).$( $ProjectData['Version'] ).nupkg" -TreatWhitespaceAsMissing
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'AddVersionToFileName' -Value $false
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'FileNamePattern' -Value "$( $packageSettings['Id'] )*" -TreatWhitespaceAsMissing
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'Authors' -Value $ManifestSettings['Author']
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'Description' -Value $ProjectData['Description'] -TreatWhitespaceAsMissing
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'Latest' -Value 'never'
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'Repositories' -Value @()
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'Headers' -Value ([ordered]@{})
Set-NovaPackageSettingDefault -PackageSettings $packageSettings -Name 'Auth' -Value ([ordered]@{})
$packageSettings['Latest'] = ConvertTo-NovaPackageLatestPolicy -Value $packageSettings['Latest']
$packageSettings['AddVersionToFileName'] = [bool]$packageSettings['AddVersionToFileName']
$packageSettings['Repositories'] = @($packageSettings['Repositories'])
$packageSettings['Headers'] = [ordered]@{} + $packageSettings['Headers']
$packageSettings['Auth'] = [ordered]@{} + $packageSettings['Auth']
return $packageSettings
}
function ConvertTo-NovaPackageLatestPolicy {
[CmdletBinding()]
param(
[AllowNull()]$Value
)
if ($null -eq $Value) {
return 'never'
}
# TODO: Remove legacy boolean Package.Latest handling in the next major version.
if ($Value -is [bool]) {
if ($Value) {
return 'always'
}
return 'never'
}
$policy = "$Value".Trim()
if ([string]::IsNullOrWhiteSpace($policy)) {
return 'never'
}
switch -Regex ($policy) {
'^(?i)never$' {
return 'never'
}
'^(?i)stable$' {
return 'stable'
}
'^(?i)always$' {
return 'always'
}
default {
Stop-NovaOperation -Message "Invalid project.json Package.Latest value: $Value. Use one of: 'never', 'stable', 'always'." -ErrorId 'Nova.Validation.InvalidPackageLatestPolicy' -Category InvalidData -TargetObject $Value
}
}
}