Atlassian.Bitbucket.Repository.Environment.Variable.psm1
using module .\Atlassian.Bitbucket.Authentication.psm1 using module .\Atlassian.Bitbucket.Repository.Environment.psm1 function Get-BitbucketRepositoryEnvironmentVariable { [CmdletBinding()] param( [Parameter( ValueFromPipelineByPropertyName=$true, HelpMessage='Name of the team in Bitbucket. Defaults to selected team if not provided.')] [string]$Team = (Get-BitbucketSelectedTeam), [Parameter( Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, HelpMessage='The repository slug.')] [Alias('Slug')] [string]$RepoSlug, [Parameter( Mandatory=$true, Position=1, ValueFromPipelineByPropertyName=$true, HelpMessage='Name of the environment.')] [string]$Environment ) Begin { Write-Warning 'This functionality uses an internal Bitbucket API. The functionality required is not present in the Public API.' Write-Warning 'Because this is using an internal API it may break in the future and require an update.' } Process { $_environments = Get-BitbucketRepositoryEnvironment -Team $Team -RepoSlug $RepoSlug $_uuid = ($_environments | Where-Object {$_.name -eq $Environment}).uuid if($_uuid){ $endpoint = "repositories/$Team/$RepoSlug/deployments_config/environments/$_uuid/variables/" return Invoke-BitbucketAPI -Path $endpoint -Paginated -InternalAPI }else{ Throw "Couldn't find the environment: $Environment" } } } function New-BitbucketRepositoryEnvironmentVariable { [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='Low')] param( [Parameter( ValueFromPipelineByPropertyName=$true, HelpMessage='Name of the team in Bitbucket. Defaults to selected team if not provided.')] [string]$Team = (Get-BitbucketSelectedTeam), [Parameter( Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, HelpMessage='The repository slug.')] [Alias('Slug')] [string]$RepoSlug, [Parameter( Mandatory=$true, Position=1, ValueFromPipelineByPropertyName=$true, HelpMessage='Name of the environment.')] [string]$Environment, [Parameter( Mandatory=$true, ValueFromPipelineByPropertyName=$true, HelpMessage='Variable key')] [string]$Key, [Parameter( Mandatory=$true, ValueFromPipelineByPropertyName=$true, HelpMessage='Variable value')] [string]$Value, [Parameter( ValueFromPipelineByPropertyName=$true, HelpMessage='Obscure the variable value')] [switch]$Secured ) Begin { Write-Warning 'This functionality uses an internal Bitbucket API. The functionality required is not present in the Public API.' Write-Warning 'Because this is using an internal API it may break in the future and require an update.' } Process { $_environments = Get-BitbucketRepositoryEnvironment -Team $Team -RepoSlug $RepoSlug $_uuid = ($_environments | Where-Object {$_.name -eq $Environment}).uuid if($_uuid){ $body = [ordered]@{ key = $Key secured = $Secured.IsPresent value = $Value } | ConvertTo-Json -Depth 1 -Compress $endpoint = "repositories/$Team/$RepoSlug/deployments_config/environments/$_uuid/variables/" if ($pscmdlet.ShouldProcess("$Key in the environment $Environment in the repo $RepoSlug", 'create')){ return Invoke-BitbucketAPI -Path $endpoint -Method Post -Body $body -InternalAPI } }else{ Throw "Couldn't find the environment: $Environment" } } } function Remove-BitbucketRepositoryEnvironmentVariable { [CmdletBinding(SupportsShouldProcess=$true, ConfirmImpact='High')] param( [Parameter( ValueFromPipelineByPropertyName=$true, HelpMessage='Name of the team in Bitbucket. Defaults to selected team if not provided.')] [string]$Team = (Get-BitbucketSelectedTeam), [Parameter( Mandatory=$true, Position=0, ValueFromPipeline=$true, ValueFromPipelineByPropertyName=$true, HelpMessage='The repository slug.')] [Alias('Slug')] [string]$RepoSlug, [Parameter( Mandatory=$true, Position=1, ValueFromPipelineByPropertyName=$true, HelpMessage='Name of the environment.')] [string]$Environment, [Parameter( Mandatory=$true, ValueFromPipelineByPropertyName=$true, HelpMessage='Variable key')] [string]$Key ) Begin { Write-Warning 'This functionality uses an internal Bitbucket API. The functionality required is not present in the Public API.' Write-Warning 'Because this is using an internal API it may break in the future and require an update.' } Process { $_uuidEnv = (Get-BitbucketRepositoryEnvironment -Team $Team -RepoSlug $RepoSlug | Where-Object {$_.name -eq $Environment}).uuid if($_uuidEnv){ $_uuidVar = (Get-BitbucketRepositoryEnvironmentVariable -Team $Team -RepoSlug $RepoSlug -Environment $Environment | Where-Object {$_.key -eq $Key}).uuid if($_uuidVar){ $endpoint = "repositories/$Team/$RepoSlug/deployments_config/environments/$_uuidEnv/variables/$_uuidVar" if ($pscmdlet.ShouldProcess("$Key in the environment $Environment in the repo $RepoSlug", 'delete')){ return Invoke-BitbucketAPI -Path $endpoint -Method Delete -InternalAPI } } }else{ Throw "Couldn't find the environment: $Environment" } } } |