Bump module version to 1.5.0 and update Invoke-GiteaFileDownload and Get-GiteaChildItem functions to use 'Result' instead of 'Success' for status reporting, and add OverwriteByHash parameter for conditional file overwriting.
Some checks failed
Publish Powershell Module to Gitea Repository / test (push) Failing after 10s
Publish Powershell Module to Gitea Repository / deploy (push) Has been skipped

This commit is contained in:
2025-05-27 13:14:28 -04:00
parent ed9ba80938
commit 67d69c52e9
2 changed files with 43 additions and 15 deletions

View File

@@ -12,7 +12,7 @@
RootModule = 'PS-GiteaUtilities.psm1'
# Version number of this module.
ModuleVersion = '1.4.5'
ModuleVersion = '1.5.0'
# Supported PSEditions
# CompatiblePSEditions = @()

View File

@@ -207,7 +207,7 @@ Function Get-GiteaFileContent {
Content = $content
Size = $fileContent.size
SHA = $fileContent.sha
Success = $true
Result = 'Success'
Error = $null
}
}
@@ -218,7 +218,7 @@ Function Get-GiteaFileContent {
Content = $null
Size = $null
SHA = $null
Success = $false
Result = 'Failure'
Error = $_.Exception.Message
}
}
@@ -336,6 +336,9 @@ Function Invoke-GiteaFileDownload {
If used without specifying an outputPath, creates the directory structure in the current location.
If used with outputPath, treats the outputPath as the base directory to append the relative path to.
Cannot be used with outputName.
.PARAMETER OverwriteByHash
A switch parameter to overwrite the file if it exists based on its hash.
.PARAMETER force
A switch parameter to force overwriting of an existing file at the output path.
@@ -344,6 +347,10 @@ Function Invoke-GiteaFileDownload {
The type of the item to download (file, dir, lfs). This parameter is typically used with pipeline input from Get-GiteaChildItem.
Directories will be skipped with a verbose message.
.PARAMETER sha
The SHA of the file to download. This parameter is typically used with pipeline input from Get-GiteaChildItem.
Can be combined with OverwriteByHash to overwrite an existing file if the hashes do not match.
.EXAMPLE
# Example 1: Download a file to the current directory
Invoke-GiteaFileDownload -downloadURL "https://gitea.example.com/api/v1/repos/owner/repo/raw/path/to/file.txt" -token "your_token"
@@ -375,9 +382,12 @@ Function Invoke-GiteaFileDownload {
[Parameter(ValueFromPipelineByPropertyName)]
[string]$outputName,
[switch]$PreserveRelativePath,
[switch]$OverwriteByHash,
[switch]$force,
[Parameter(ValueFromPipelineByPropertyName)]
[string]$type
[string]$type,
[Parameter(ValueFromPipelineByPropertyName)]
[string]$sha
)
begin {
@@ -424,7 +434,7 @@ Function Invoke-GiteaFileDownload {
return [PSCustomObject]@{
SourceURL = $downloadURL
Type = $type
Success = $true
Result = 'Success'
Error = "Skipped - item is a directory"
Timestamp = Get-Date
FileSize = $null
@@ -438,7 +448,7 @@ Function Invoke-GiteaFileDownload {
return [PSCustomObject]@{
SourceURL = $downloadURL
Type = $type
Success = $false
Result = 'Failure'
Error = $errorMsg
Timestamp = Get-Date
FileSize = $null
@@ -511,17 +521,35 @@ Function Invoke-GiteaFileDownload {
Path = $fileOutputPath
SourceURL = $downloadURL
Type = "file"
Success = $false
Result = 'Failure'
Error = $null
Timestamp = Get-Date
FileSize = $null
}
if((Test-Path -Path $fileOutputPath -PathType Leaf) -and (-not $force)) {
$errorMsg = "The file '$fileOutputPath' already exists. Use the -Force switch to overwrite the file."
Write-Error $errorMsg
$result.Error = $errorMsg
return $result
# Check if OverwriteByHash is set
if ($OverwriteByHash) {
Write-Verbose "OverwriteByHash is set; checking file hash for existing file: $fileOutputPath"
$existingFileHash = (Get-FileHash -Path $fileOutputPath -Algorithm SHA256).Hash
$downloadFileHash = $sha
if ($existingFileHash -eq $downloadFileHash) {
Write-Host "The file '$fileOutputPath' already exists and hashes match. Skipping download."
$result.Result = 'Skipped'
return $result
}
else {
Write-Host "The file '$fileOutputPath' already exists but hashes do not match and OverwriteByHash is set; overwriting file."
}
}
else {
$errorMsg = "The file '$fileOutputPath' already exists. Use the -Force switch to overwrite the file."
Write-Error $errorMsg
$result.Error = $errorMsg
return $result
}
}
try {
@@ -546,7 +574,7 @@ Function Invoke-GiteaFileDownload {
$result.FileSize = $fileInfo.Length
}
$result.Success = $true
$result.Result = 'Success'
return $result
}
catch {
@@ -756,7 +784,7 @@ Function Get-GiteaChildItem {
size = $item.size
sha = $item.sha
downloadURL = $item.download_url
Success = $true
Result = 'Success'
Error = $null
Level = 0
}
@@ -839,7 +867,7 @@ Function Get-GiteaChildItem {
size = $subItem.size
sha = $subItem.sha
downloadURL = $subItem.download_url
Success = $true
Result = 'Success'
Error = $null
Level = $currentLevel
}
@@ -886,7 +914,7 @@ Function Get-GiteaChildItem {
size = $null
sha = $null
downloadURL = $null
Success = $false
Result = 'Failure'
Error = $_.Exception.Message
Level = 0
}