|
1 | | -function Set-GitHubConfig { |
| 1 | +#Requires -Modules Store |
| 2 | + |
| 3 | +function Set-GitHubConfig { |
2 | 4 | <# |
3 | 5 | .SYNOPSIS |
4 | 6 | Set the GitHub configuration. |
|
63 | 65 | [Parameter()] |
64 | 66 | [string] $Repo, |
65 | 67 |
|
| 68 | + # Set the secret vault name. |
| 69 | + [Parameter()] |
| 70 | + [string] $SecretVaultName, |
| 71 | + |
| 72 | + # Set the secret vault type. |
| 73 | + [Parameter()] |
| 74 | + [string] $SecretVaultType, |
| 75 | + |
66 | 76 | # Set the scope. |
67 | 77 | [Parameter()] |
68 | 78 | [string] $Scope, |
|
72 | 82 | [string] $UserName |
73 | 83 | ) |
74 | 84 |
|
75 | | - $prefix = $script:SecretVault.Prefix |
76 | | - |
77 | | - #region AccessToken |
78 | | - $secretName = "$prefix`AccessToken" |
79 | | - $removeKeys = 'AccessToken', 'RefreshToken', 'RefreshTokenExpirationDate' |
80 | | - $keepTypes = 'String', 'Int', 'DateTime' |
81 | | - |
82 | | - # Get existing metadata if it exists |
83 | | - $newSecretMetadata = @{} |
84 | | - if (Get-SecretInfo -Name $secretName) { |
85 | | - $secretGetInfoParam = @{ |
86 | | - Name = $secretName |
87 | | - Vault = $script:SecretVault.Name |
88 | | - } |
89 | | - $secretInfo = Get-SecretInfo @secretGetInfoParam |
90 | | - Write-Verbose "$secretName - secretInfo : $($secretInfo | Out-String)" |
91 | | - $secretMetadata = $secretInfo.Metadata | ConvertFrom-HashTable | ConvertTo-HashTable |
92 | | - $newSecretMetadata = Join-Object -Main $newSecretMetadata -Overrides $secretMetadata -AsHashtable |
93 | | - } |
94 | | - |
95 | | - # Get metadata updates from parameters and clean up unwanted data |
96 | | - $updateSecretMetadata = $PSBoundParameters | ConvertFrom-HashTable | ConvertTo-HashTable |
97 | | - Write-Verbose "updateSecretMetadata : $($updateSecretMetadata | Out-String)" |
98 | | - Write-Verbose "updateSecretMetadataType : $($updateSecretMetadata.GetType())" |
99 | | - Remove-HashtableEntry -Hashtable $updateSecretMetadata -KeepTypes $keepTypes -RemoveNames $removeKeys |
100 | | - Write-Verbose "updateSecretMetadata : $($updateSecretMetadata | Out-String)" |
101 | | - |
102 | | - $newSecretMetadata = Join-Object -Main $newSecretMetadata -Overrides $updateSecretMetadata -AsHashtable |
103 | | - Write-Verbose "newSecretMetadata : $($newSecretMetadata | Out-String)" |
104 | | - Write-Verbose "newSecretMetadataType : $($newSecretMetadata.GetType())" |
105 | | - |
106 | | - if ($AccessToken) { |
107 | | - $accessTokenSetParam = @{ |
108 | | - Name = $secretName |
109 | | - Vault = $script:SecretVault.Name |
110 | | - SecureStringSecret = $AccessToken |
111 | | - } |
112 | | - if ($PSCmdlet.ShouldProcess("secret [$secretName] in secret vault [$($script:SecretVault.Name)]", 'Set')) { |
113 | | - Set-Secret @accessTokenSetParam |
114 | | - } |
115 | | - } |
116 | | - |
117 | | - if (Get-SecretInfo -Name $secretName) { |
118 | | - $secretSetInfoParam = @{ |
119 | | - Name = $secretName |
120 | | - Vault = $script:SecretVault.Name |
121 | | - Metadata = $newSecretMetadata |
122 | | - } |
123 | | - if ($PSCmdlet.ShouldProcess("secret [$secretName] in secret vault [$($script:SecretVault.Name)]", 'Set')) { |
124 | | - Set-SecretInfo @secretSetInfoParam |
125 | | - } |
126 | | - } |
127 | | - #endregion AccessToken |
128 | | - |
129 | | - #region RefreshToken |
130 | | - $secretName = "$prefix`RefreshToken" |
131 | | - $removeKeys = 'AccessToken', 'RefreshToken', 'AccessTokenExpirationDate' |
132 | | - |
133 | | - # Get existing metadata if it exists |
134 | | - $newSecretMetadata = @{} |
135 | | - if (Get-SecretInfo -Name $secretName) { |
136 | | - $secretGetInfoParam = @{ |
137 | | - Name = $secretName |
138 | | - Vault = $script:SecretVault.Name |
139 | | - } |
140 | | - $secretInfo = Get-SecretInfo @secretGetInfoParam |
141 | | - Write-Verbose "$secretName - secretInfo : $($secretInfo | Out-String)" |
142 | | - $secretMetadata = $secretInfo.Metadata | ConvertFrom-HashTable | ConvertTo-HashTable |
143 | | - $newSecretMetadata = Join-Object -Main $newSecretMetadata -Overrides $secretMetadata -AsHashtable |
| 85 | + $prefix = $script:Config.Prefix |
| 86 | + |
| 87 | + $Settings = @{ |
| 88 | + "$prefix`AccessToken" = $AccessToken |
| 89 | + AccessTokenExpirationDate = $AccessTokenExpirationDate |
| 90 | + AccessTokenType = $AccessTokenType |
| 91 | + ApiBaseUri = $ApiBaseUri |
| 92 | + ApiVersion = $ApiVersion |
| 93 | + AuthType = $AuthType |
| 94 | + DeviceFlowType = $DeviceFlowType |
| 95 | + Owner = $Owner |
| 96 | + "$prefix`RefreshToken" = $RefreshToken |
| 97 | + RefreshTokenExpirationDate = $RefreshTokenExpirationDate |
| 98 | + Repo = $Repo |
| 99 | + SecretVaultName = $SecretVaultName |
| 100 | + SecretVaultType = $SecretVaultType |
| 101 | + Scope = $Scope |
| 102 | + UserName = $UserName |
144 | 103 | } |
145 | 104 |
|
146 | | - # Get metadata updates from parameters and clean up unwanted data |
147 | | - $updateSecretMetadata = $PSBoundParameters | ConvertFrom-HashTable | ConvertTo-HashTable |
148 | | - Write-Verbose "updateSecretMetadata : $($updateSecretMetadata | Out-String)" |
149 | | - Write-Verbose "updateSecretMetadataType : $($updateSecretMetadata.GetType())" |
150 | | - Remove-HashtableEntry -Hashtable $updateSecretMetadata -KeepTypes $keepTypes -RemoveNames $removeKeys |
151 | | - Write-Verbose "updateSecretMetadata : $($updateSecretMetadata | Out-String)" |
152 | | - |
153 | | - $newSecretMetadata = Join-Object -Main $newSecretMetadata -Overrides $updateSecretMetadata -AsHashtable |
154 | | - Write-Verbose "newSecretMetadata : $($newSecretMetadata | Out-String)" |
155 | | - Write-Verbose "newSecretMetadataType : $($newSecretMetadata.GetType())" |
156 | | - |
157 | | - if ($RefreshToken) { |
158 | | - $refreshTokenSetParam = @{ |
159 | | - Name = $secretName |
160 | | - Vault = $script:SecretVault.Name |
161 | | - SecureStringSecret = $RefreshToken |
162 | | - } |
163 | | - if ($PSCmdlet.ShouldProcess("secret [$secretName] in secret vault [$($script:SecretVault.Name)]", 'Set')) { |
164 | | - Set-Secret @refreshTokenSetParam |
165 | | - } |
166 | | - } |
| 105 | + $Settings | Remove-HashtableEntry -NullOrEmptyValues |
167 | 106 |
|
168 | | - if (Get-SecretInfo -Name $secretName) { |
169 | | - $secretSetInfoParam = @{ |
170 | | - Name = $secretName |
171 | | - Vault = $script:SecretVault.Name |
172 | | - Metadata = $newSecretMetadata |
173 | | - } |
174 | | - if ($PSCmdlet.ShouldProcess("secret [$secretName] in secret vault [$($script:SecretVault.Name)]", 'Set')) { |
175 | | - Set-SecretInfo @secretSetInfoParam |
| 107 | + foreach ($key in $Settings.Keys) { |
| 108 | + if ($PSCmdlet.ShouldProcess("Setting $key", "Setting $key to $($Settings[$key])")) { |
| 109 | + Write-Verbose "Setting $key to $($Settings[$key])" |
| 110 | + Set-StoreConfig -Name $key -Value $Settings[$key] |
176 | 111 | } |
177 | 112 | } |
178 | | - #endregion AccessToken |
179 | 113 | } |
0 commit comments