core/modules/monkeyutils/public/Get-MonkeyLatestReleaseFromGitHub.ps1
|
# Monkey365 - the PowerShell Cloud Security Tool for Azure and Microsoft 365 (copyright 2022) by Juan Garrido # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. Function Get-MonkeyLatestReleaseFromGitHub{ <# .SYNOPSIS Get the latest published full release for the repository .DESCRIPTION Get the latest published full release for the repository .INPUTS .OUTPUTS .EXAMPLE .NOTES Author : Juan Garrido Twitter : @tr1ana File Name : Get-MonkeyLatestReleaseFromGitHub Version : 1.0 .LINK https://github.com/silverhack/monkey365 #> [cmdletbinding()] [OutputType([System.String])] Param ( [parameter(Mandatory=$true, ValueFromPipeline = $True, HelpMessage="GitHub repository")] [String]$Url ) Process{ #Set null $repoUrl = $ghUser = $repository = $null $URI = [System.Uri]::new($Url); If($URI.Segments.Count -gt 2 -and $URI.Host.ToLower() -eq 'github.com'){ $ghUser = $URI.Segments[1].ToLower().TrimEnd('/') $repository = $URI.Segments[2].ToLower().TrimEnd('/') If($null -ne $ghUser -and $null -ne $repository){ $repoUrl = ('https://api.github.com/repos/{0}/{1}/releases/latest' -f $ghUser,$repository); } } If($null -ne $repoUrl){ Try{ $rawContent = Invoke-WebRequest -Uri $repoUrl -UseBasicParsing If($rawContent.StatusCode -eq [System.Net.HttpStatusCode]::OK){ $content = $rawContent.Content | ConvertFrom-Json Write-Verbose ("Found {0}" -f $content.html_url) $content.tag_name.TrimStart('v') } } Catch{ Write-Warning $_.Exception.Message } } } } |