Compare commits

..

27 Commits

Author SHA1 Message Date
copilot-swe-agent[bot]
7b86263b0a Wrap dependency count in backticks for consistency
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 06:26:34 +00:00
copilot-swe-agent[bot]
10a0675c96 Remove unused $headBeforeReset variable
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 06:22:39 +00:00
David Refoua
400cdfed54 Update .github/workflows/vendor.yml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-12-15 09:48:22 +03:30
copilot-swe-agent[bot]
a475de2d4c Remove temporary comment from CodeQL workflow
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 04:14:39 +00:00
copilot-swe-agent[bot]
1afbd4ae49 Use PowerShell here-string to fix CodeQL parser error (reverted previous attempts)
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 04:13:57 +00:00
GitHub Copilot
82f7fdd61a Merge and use PowerShell here-string for CodeQL summary 2025-12-15 04:12:54 +00:00
copilot-swe-agent[bot]
e598536485 Use PowerShell here-string for CodeQL summary to fix parser error
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 04:11:27 +00:00
copilot-swe-agent[bot]
9cfff38939 Fix CodeQL PowerShell syntax by using Write-Output instead of echo
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 03:33:57 +00:00
copilot-swe-agent[bot]
2cc1125f62 Fix CodeQL workflow PowerShell string termination error
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 03:22:14 +00:00
copilot-swe-agent[bot]
4911924259 Make new version bold in dependency update table
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 01:43:35 +00:00
copilot-swe-agent[bot]
cd2c4ec877 Update version change emojis: 🔥 major, 🚀 minor, ⬆️ patch
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 01:30:12 +00:00
copilot-swe-agent[bot]
0f6584fa02 Improve variable initialization logic with better error handling
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 01:11:46 +00:00
copilot-swe-agent[bot]
570b1d6043 Fix single dependency variable initialization to prevent CI failures
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-15 01:09:41 +00:00
David Refoua
fa2a34a4c0 Merge branch 'master' into copilot/improve-vendor-ci-cd-messaging 2025-12-15 04:29:44 +03:30
David Refoua
9e6e1485b0 Merge pull request #3062 from cmderdev/dependabot/github_actions/actions/upload-artifact-6
Bump actions/upload-artifact from 5 to 6
2025-12-15 04:28:52 +03:30
David Refoua
baef798b6c Merge pull request #3063 from cmderdev/dependabot/github_actions/peter-evans/create-pull-request-8
Bump peter-evans/create-pull-request from 7 to 8
2025-12-15 04:07:08 +03:30
dependabot[bot]
865d0c1858 Bump peter-evans/create-pull-request from 7 to 8
Bumps [peter-evans/create-pull-request](https://github.com/peter-evans/create-pull-request) from 7 to 8.
- [Release notes](https://github.com/peter-evans/create-pull-request/releases)
- [Commits](https://github.com/peter-evans/create-pull-request/compare/v7...v8)

---
updated-dependencies:
- dependency-name: peter-evans/create-pull-request
  dependency-version: '8'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-14 23:22:03 +00:00
dependabot[bot]
60848f56c5 Bump actions/upload-artifact from 5 to 6
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/v5...v6)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-14 23:21:57 +00:00
David Refoua
b86fca35bc Update Dependabot configuration for GitHub Actions
Removed comments and added labels for GitHub Actions updates.
2025-12-15 02:51:21 +03:30
copilot-swe-agent[bot]
e6fea0bbab Use single emoji and show dependency name/version for single updates
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-08 21:22:53 +00:00
copilot-swe-agent[bot]
bf90303c96 Remove Change Type column and add collapsible changelog for major updates
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-08 21:12:27 +00:00
copilot-swe-agent[bot]
e64c0b110d Fix git reset logic in auto-merge error handling
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-08 20:57:57 +00:00
copilot-swe-agent[bot]
f2e8ae5189 Improve version parsing to handle complex version strings
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-08 20:56:30 +00:00
copilot-swe-agent[bot]
4d21982f26 Fix trailing spaces in vendor workflow YAML
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-08 20:53:19 +00:00
copilot-swe-agent[bot]
be60888258 Improve vendor CI/CD workflow with better messaging and auto-merge
Co-authored-by: DRSDavidSoft <4673812+DRSDavidSoft@users.noreply.github.com>
2025-12-08 20:52:20 +00:00
copilot-swe-agent[bot]
d61a4f7f36 Initial plan 2025-12-08 20:46:58 +00:00
David Refoua
d05d03117a Add GITHUB_STEP_SUMMARY to CI/CD workflows 2025-12-09 00:08:05 +03:30
5 changed files with 251 additions and 34 deletions

View File

@@ -1,11 +1,10 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2 version: 2
updates: updates:
- package-ecosystem: "github-actions" # See documentation for possible values # Enable version updates for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/" # Location of package manifests directory: "/" # Location of package manifests
schedule: schedule:
interval: "weekly" interval: "weekly"
labels:
- "👆 Dependencies"
- "🔄️ GitHub Actions"

View File

@@ -97,26 +97,26 @@ jobs:
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
- name: Upload artifact (cmder.zip) - name: Upload artifact (cmder.zip)
uses: actions/upload-artifact@v5 uses: actions/upload-artifact@v6
with: with:
path: build/cmder.zip path: build/cmder.zip
name: cmder.zip name: cmder.zip
if-no-files-found: error if-no-files-found: error
- name: Upload artifact (cmder.7z) - name: Upload artifact (cmder.7z)
uses: actions/upload-artifact@v5 uses: actions/upload-artifact@v6
with: with:
path: build/cmder.7z path: build/cmder.7z
name: cmder.7z name: cmder.7z
- name: Upload artifact (cmder_mini.zip) - name: Upload artifact (cmder_mini.zip)
uses: actions/upload-artifact@v5 uses: actions/upload-artifact@v6
with: with:
path: build/cmder_mini.zip path: build/cmder_mini.zip
name: cmder_mini.zip name: cmder_mini.zip
- name: Upload artifact (hashes.txt) - name: Upload artifact (hashes.txt)
uses: actions/upload-artifact@v5 uses: actions/upload-artifact@v6
with: with:
path: build/hashes.txt path: build/hashes.txt
name: hashes.txt name: hashes.txt

View File

@@ -100,10 +100,12 @@ jobs:
if: success() if: success()
shell: pwsh shell: pwsh
run: | run: |
echo "### 🔍 CodeQL Analysis Results" >> $env:GITHUB_STEP_SUMMARY @"
echo "" >> $env:GITHUB_STEP_SUMMARY ### 🔍 CodeQL Analysis Results
echo "✅ CodeQL security analysis completed successfully." >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY ✅ CodeQL security analysis completed successfully.
echo "**Language analyzed:** \`${{ matrix.language }}\`" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY **Language analyzed:** ``${{ matrix.language }}``
echo "> Check the Security tab for detailed findings and recommendations." >> $env:GITHUB_STEP_SUMMARY
> Check the Security tab for detailed findings and recommendations.
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8

View File

@@ -31,9 +31,9 @@ jobs:
- name: Summary - Workflow started - name: Summary - Workflow started
shell: pwsh shell: pwsh
run: | run: |
echo "## 📦 Update Vendor - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY echo "## 📦 Vendor Update - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
echo "Checking for vendor dependency updates..." >> $env:GITHUB_STEP_SUMMARY echo "🔍 Checking for vendor dependency updates..." >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
- id: make-changes - id: make-changes
@@ -46,19 +46,113 @@ jobs:
Set-GHVariable -Name COUNT_UPDATED -Value $count Set-GHVariable -Name COUNT_UPDATED -Value $count
$newVersion = (Get-Content .\vendor\sources.json | ConvertFrom-Json) $newVersion = (Get-Content .\vendor\sources.json | ConvertFrom-Json)
$listUpdated = "" $listUpdated = ""
$updateMessage = "| Name | Old Version | New Version |`n| :--- | ---- | ---- |`n" $updateMessage = "| Name | Old Version | New Version |`n| :--- | :---: | :---: |`n"
$majorUpdates = @()
$singleDepName = ""
$singleDepOldVersion = ""
$singleDepNewVersion = ""
foreach ($s in $newVersion) { foreach ($s in $newVersion) {
$oldVersion = ($currentVersion | Where-Object {$_.name -eq $s.name}).version $oldVersion = ($currentVersion | Where-Object {$_.name -eq $s.name}).version
if ($s.version -ne $oldVersion) { if ($s.version -ne $oldVersion) {
$repoUrl = ($repoUrl = $s.Url.Replace("/archive/", "/releases/")).Substring(0, $repoUrl.IndexOf("/releases/")) + "/releases" $repoUrl = ($repoUrl = $s.Url.Replace("/archive/", "/releases/")).Substring(0, $repoUrl.IndexOf("/releases/")) + "/releases"
# Store single dependency info for messages (only if this is the only update)
if ($count -eq 1) {
$singleDepName = $s.name
$singleDepOldVersion = $oldVersion
$singleDepNewVersion = $s.version
}
# Determine change type and emoji
$changeType = "unknown"
$emoji = "🔄"
$isMajor = $false
try {
# Handle versions with more than 4 parts
$oldVerStr = $oldVersion.Split('-')[0]
$newVerStr = $s.version.Split('-')[0]
# Split by dots and take only numeric parts, first 4 max
$oldParts = $oldVerStr.Split('.') | Where-Object { $_ -match '^\d+$' } | Select-Object -First 4
$newParts = $newVerStr.Split('.') | Where-Object { $_ -match '^\d+$' } | Select-Object -First 4
# Ensure we have at least 2 parts (major.minor)
if ($oldParts.Count -ge 2 -and $newParts.Count -ge 2) {
$oldVerParseable = $oldParts -join '.'
$newVerParseable = $newParts -join '.'
$oldVer = [System.Version]::Parse($oldVerParseable)
$newVer = [System.Version]::Parse($newVerParseable)
if ($newVer.Major -gt $oldVer.Major) {
$changeType = "major"
$emoji = "🔥"
$isMajor = $true
} elseif ($newVer.Minor -gt $oldVer.Minor) {
$changeType = "minor"
$emoji = "🚀"
} else {
$changeType = "patch"
$emoji = "⬆️"
}
}
} catch {
$changeType = "unknown"
$emoji = "🔄"
}
# Track major updates for changelog section
if ($isMajor) {
$compareUrl = "$repoUrl/compare/v$oldVersion...v$($s.version)"
$majorUpdates += @{
name = $s.name
oldVersion = $oldVersion
newVersion = $s.version
compareUrl = $compareUrl
repoUrl = $repoUrl
}
}
$listUpdated += "$($s.name) v$($s.version), " $listUpdated += "$($s.name) v$($s.version), "
$updateMessage += "| **[$($s.name)]($repoUrl)** | $oldVersion | **$($s.version)** |`n" $updateMessage += "| $emoji **[$($s.name)]($repoUrl)** | \`$oldVersion\` | **\`$($s.version)\`** |`n"
} }
} }
if ($count -eq 0) { return } if ($count -eq 0) { return }
Set-GHVariable -Name LIST_UPDATED -Value $listUpdated.Trim(', ') Set-GHVariable -Name LIST_UPDATED -Value $listUpdated.Trim(', ')
# Set single dependency variables (they will only be used if COUNT_UPDATED is 1)
# Use safe fallback values in case variables weren't set (shouldn't happen but prevents errors)
if ([string]::IsNullOrEmpty($singleDepName) -and $count -eq 1) {
# This shouldn't happen, but if it does, log a warning
Write-Warning "Single dependency name not set despite count being 1"
$singleDepName = "unknown-package"
$singleDepOldVersion = "unknown"
$singleDepNewVersion = "unknown"
} elseif ([string]::IsNullOrEmpty($singleDepName)) {
# For multiple dependencies, set placeholder values (won't be used)
$singleDepName = ""
$singleDepOldVersion = ""
$singleDepNewVersion = ""
}
Set-GHVariable -Name SINGLE_DEP_NAME -Value $singleDepName
Set-GHVariable -Name SINGLE_DEP_OLD_VERSION -Value $singleDepOldVersion
Set-GHVariable -Name SINGLE_DEP_NEW_VERSION -Value $singleDepNewVersion
echo "UPDATE_MESSAGE<<<EOF`n$updateMessage`n<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 echo "UPDATE_MESSAGE<<<EOF`n$updateMessage`n<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
# Generate major updates changelog section
if ($majorUpdates.Count -gt 0) {
$changelogSection = "`n<details>`n<summary>🔥 Major version updates - View changelog</summary>`n`n"
foreach ($update in $majorUpdates) {
$changelogSection += "### [$($update.name)]($($update.repoUrl))`n"
$changelogSection += "**$($update.oldVersion)** → **$($update.newVersion)**`n`n"
$changelogSection += "- [View full changelog]($($update.compareUrl))`n"
$changelogSection += "- [Release notes]($($update.repoUrl)/tag/v$($update.newVersion))`n`n"
}
$changelogSection += "</details>`n"
echo "CHANGELOG_SECTION<<<EOF`n$changelogSection`n<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
} else {
echo "CHANGELOG_SECTION=" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
}
- name: Summary - Update check results - name: Summary - Update check results
shell: pwsh shell: pwsh
run: | run: |
@@ -66,32 +160,96 @@ jobs:
if ($count -eq 0) { if ($count -eq 0) {
echo "### ✅ No Updates Available" >> $env:GITHUB_STEP_SUMMARY echo "### ✅ No Updates Available" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
echo "All vendor dependencies are up to date." >> $env:GITHUB_STEP_SUMMARY echo "All vendor dependencies are up to date! 🎉" >> $env:GITHUB_STEP_SUMMARY
} else { } else {
$word = if ($count -eq 1) { 'dependency' } else { 'dependencies' } $word = if ($count -eq 1) { 'dependency' } else { 'dependencies' }
echo "### 🔄 Updates Found" >> $env:GITHUB_STEP_SUMMARY echo "### 🔄 Updates Found" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
echo "**$count** vendor $word updated:" >> $env:GITHUB_STEP_SUMMARY if ($count -eq 1) {
echo "📦 **$env:SINGLE_DEP_NAME** updated from \`$env:SINGLE_DEP_OLD_VERSION\` to \`$env:SINGLE_DEP_NEW_VERSION\`" >> $env:GITHUB_STEP_SUMMARY
} else {
echo "📦 **$count** vendor $word updated:" >> $env:GITHUB_STEP_SUMMARY
}
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
echo "$env:UPDATE_MESSAGE" >> $env:GITHUB_STEP_SUMMARY echo "$env:UPDATE_MESSAGE" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
# Check if we can auto-merge (only minor/patch changes)
$hasBreaking = $env:HAS_BREAKING_CHANGES -eq 'True'
if ($hasBreaking) {
echo "> ⚠️ **Note:** This update contains major version changes that may include breaking changes." >> $env:GITHUB_STEP_SUMMARY
} else {
echo "> **Note:** This update only contains minor or patch changes." >> $env:GITHUB_STEP_SUMMARY
}
} }
- uses: peter-evans/create-pull-request@v7 - name: Auto-merge minor updates
if: env.COUNT_UPDATED > 0 if: env.COUNT_UPDATED > 0 && env.HAS_BREAKING_CHANGES != 'True'
shell: pwsh
run: |
try {
echo "### 🚀 Auto-merging Updates" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY
echo "Attempting to automatically merge non-breaking changes to master..." >> $env:GITHUB_STEP_SUMMARY
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
# Commit the changes
git add vendor/sources.json
$commitResult = git commit -m "⬆️ Update dependencies ($env:LIST_UPDATED)"
# Push directly to master
git push origin HEAD:master
echo "" >> $env:GITHUB_STEP_SUMMARY
echo "✅ **Success!** Updates have been automatically merged to master." >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY
echo "**Updated dependencies:** $env:LIST_UPDATED" >> $env:GITHUB_STEP_SUMMARY
# Set a flag to skip PR creation
echo "AUTO_MERGED=true" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
} catch {
echo "" >> $env:GITHUB_STEP_SUMMARY
echo "⚠️ **Warning:** Unable to automatically merge updates." >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY
echo "**Error:** $($_.Exception.Message)" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY
echo "Falling back to creating a pull request..." >> $env:GITHUB_STEP_SUMMARY
Write-Warning "Failed to auto-merge: $($_.Exception.Message)"
# Reset the commit if one was made
if ($commitResult) {
git reset --hard HEAD~1
}
# Set flag to create PR instead
echo "AUTO_MERGED=false" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
}
- uses: peter-evans/create-pull-request@v8
if: env.COUNT_UPDATED > 0 && (env.HAS_BREAKING_CHANGES == 'True' || env.AUTO_MERGED == 'false')
with: with:
title: 'Updates to `${{ env.COUNT_UPDATED }}` vendored dependencies' title: ${{ env.COUNT_UPDATED == '1' && format('⬆️ Update {0}', env.LIST_UPDATED) || format('⬆️ Update {0} vendored dependencies', env.COUNT_UPDATED) }}
body: | body: |
### Automatically updated `${{ env.COUNT_UPDATED }}` dependencies: ### ${{ env.COUNT_UPDATED == 1 && format('📦 Updated {0} from `{1}` to `{2}`', env.SINGLE_DEP_NAME, env.SINGLE_DEP_OLD_VERSION, env.SINGLE_DEP_NEW_VERSION) || format('📦 Automatically updated `{0}` dependencies', env.COUNT_UPDATED) }}
${{ env.UPDATE_MESSAGE }} ${{ env.UPDATE_MESSAGE }}
${{ env.CHANGELOG_SECTION }}
--- ---
Please verify and then **Merge** the pull request to update.
${{ env.HAS_BREAKING_CHANGES == 'True' && '⚠️ **This update contains major version changes that may include breaking changes.**' || ' This update only contains minor or patch changes.' }}
Please verify and then **Merge** the pull request to apply the updates.
commit-message: '⬆️ Update dependencies (${{ env.LIST_UPDATED }})' commit-message: '⬆️ Update dependencies (${{ env.LIST_UPDATED }})'
branch: update-vendor branch: update-vendor
base: master base: master
- name: Summary - Pull request created - name: Summary - Pull request created
if: env.COUNT_UPDATED > 0 if: env.COUNT_UPDATED > 0 && (env.HAS_BREAKING_CHANGES == 'True' || env.AUTO_MERGED == 'false')
shell: pwsh shell: pwsh
run: | run: |
echo "### 🎉 Pull Request Created" >> $env:GITHUB_STEP_SUMMARY echo "### 🎉 Pull Request Created" >> $env:GITHUB_STEP_SUMMARY
@@ -102,4 +260,10 @@ jobs:
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
echo "**Updated dependencies:** $env:LIST_UPDATED" >> $env:GITHUB_STEP_SUMMARY echo "**Updated dependencies:** $env:LIST_UPDATED" >> $env:GITHUB_STEP_SUMMARY
echo "" >> $env:GITHUB_STEP_SUMMARY echo "" >> $env:GITHUB_STEP_SUMMARY
echo "> Please review and merge the pull request to apply the updates." >> $env:GITHUB_STEP_SUMMARY if ($env:HAS_BREAKING_CHANGES -eq 'True') {
echo "> ⚠️ **Manual review required:** This update contains major version changes." >> $env:GITHUB_STEP_SUMMARY
} else {
echo "> **Note:** Auto-merge failed, manual review required." >> $env:GITHUB_STEP_SUMMARY
}
echo "" >> $env:GITHUB_STEP_SUMMARY
echo "Please review and merge the pull request to apply the updates." >> $env:GITHUB_STEP_SUMMARY

View File

@@ -259,6 +259,8 @@ function Fetch-DownloadUrl {
} }
$count = 0 $count = 0
$hasBreakingChanges = $false
$updateDetails = @()
# Read the current sources content # Read the current sources content
$sources = Get-Content $sourcesPath | Out-String | ConvertFrom-Json $sources = Get-Content $sourcesPath | Out-String | ConvertFrom-Json
@@ -301,6 +303,52 @@ foreach ($s in $sources) {
# } # }
$count++ $count++
# Analyze version change type
$changeType = "unknown"
try {
# Try parsing as semantic version
# Handle versions with more than 4 parts by taking only the first 3-4 parts
$oldVerStr = $s.version.Split('-')[0]
$newVerStr = $version.Split('-')[0]
# Split by dots and take only numeric parts, first 4 max
$oldParts = $oldVerStr.Split('.') | Where-Object { $_ -match '^\d+$' } | Select-Object -First 4
$newParts = $newVerStr.Split('.') | Where-Object { $_ -match '^\d+$' } | Select-Object -First 4
# Ensure we have at least 2 parts (major.minor)
if ($oldParts.Count -ge 2 -and $newParts.Count -ge 2) {
$oldVerParseable = $oldParts -join '.'
$newVerParseable = $newParts -join '.'
$oldVer = [System.Version]::Parse($oldVerParseable)
$newVer = [System.Version]::Parse($newVerParseable)
if ($newVer.Major -gt $oldVer.Major) {
$changeType = "major"
$hasBreakingChanges = $true
} elseif ($newVer.Minor -gt $oldVer.Minor) {
$changeType = "minor"
} else {
$changeType = "patch"
}
} else {
# Not enough numeric parts for semantic versioning
throw "Not enough numeric version parts"
}
} catch {
# If semantic versioning fails, treat as unknown (potentially breaking)
$changeType = "unknown"
$hasBreakingChanges = $true
Write-Verbose "Could not parse version as semantic version, treating as potentially breaking"
}
$updateDetails += @{
name = $s.name
oldVersion = $s.version
newVersion = $version
changeType = $changeType
}
} }
$s.url = $downloadUrl $s.url = $downloadUrl
@@ -314,12 +362,16 @@ if ($count -eq 0) {
return return
} }
# Export update details for GitHub Actions
if ($Env:GITHUB_ACTIONS -eq 'true') {
$updateDetailsJson = $updateDetails | ConvertTo-Json -Compress
Write-Output "UPDATE_DETAILS=$updateDetailsJson" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
Write-Output "HAS_BREAKING_CHANGES=$hasBreakingChanges" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
Write-Output "::notice title=Task Complete::Successfully updated $count dependencies."
}
if ($Env:APPVEYOR -eq 'True') { if ($Env:APPVEYOR -eq 'True') {
Add-AppveyorMessage -Message "Successfully updated $count dependencies." -Category Information Add-AppveyorMessage -Message "Successfully updated $count dependencies." -Category Information
} }
if ($Env:GITHUB_ACTIONS -eq 'true') {
Write-Output "::notice title=Task Complete::Successfully updated $count dependencies."
}
Write-Host -ForegroundColor green "Successfully updated $count dependencies." Write-Host -ForegroundColor green "Successfully updated $count dependencies."