mirror of
https://github.com/cmderdev/cmder.git
synced 2026-06-11 04:57:28 +08:00
Compare commits
4 Commits
copilot/im
...
copilot/up
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8329fb8275 | ||
|
|
27e27cae14 | ||
|
|
4763821a77 | ||
|
|
ddaa2f1c4e |
2
.github/workflows/build.yml
vendored
2
.github/workflows/build.yml
vendored
@@ -242,7 +242,7 @@ jobs:
|
|||||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||||
|
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v3
|
||||||
with:
|
with:
|
||||||
files: |
|
files: |
|
||||||
build/cmder.zip
|
build/cmder.zip
|
||||||
|
|||||||
201
.github/workflows/vendor.yml
vendored
201
.github/workflows/vendor.yml
vendored
@@ -6,10 +6,6 @@ on:
|
|||||||
# At 13:37 UTC every day.
|
# At 13:37 UTC every day.
|
||||||
- cron: '37 13 * * *'
|
- cron: '37 13 * * *'
|
||||||
|
|
||||||
concurrency:
|
|
||||||
group: vendor-update
|
|
||||||
cancel-in-progress: false
|
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
@@ -51,221 +47,62 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
$currentVersion = (Get-Content -Raw .\vendor\sources.json | ConvertFrom-Json)
|
$currentVersion = (Get-Content -Raw .\vendor\sources.json | ConvertFrom-Json)
|
||||||
. .\scripts\update.ps1 -verbose
|
. .\scripts\update.ps1 -verbose
|
||||||
|
|
||||||
# Export count of updated packages (update.ps1 is expected to set $count)
|
|
||||||
if (-not ($count)) { $count = 0 }
|
|
||||||
Set-GHVariable -Name COUNT_UPDATED -Value $count
|
Set-GHVariable -Name COUNT_UPDATED -Value $count
|
||||||
|
|
||||||
$newVersion = (Get-Content -Raw .\vendor\sources.json | ConvertFrom-Json)
|
$newVersion = (Get-Content -Raw .\vendor\sources.json | ConvertFrom-Json)
|
||||||
# Source utility functions
|
|
||||||
. scripts/utils.ps1
|
|
||||||
|
|
||||||
$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 using shared function
|
|
||||||
$result = Get-VersionChangeType -OldVersion $oldVersion -NewVersion $s.version
|
|
||||||
$changeType = $result.ChangeType
|
|
||||||
$emoji = $result.Emoji
|
|
||||||
$isMajor = $result.IsMajor
|
|
||||||
|
|
||||||
# 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 += "| $emoji **[$($s.name)]($repoUrl)** | \`$oldVersion\` | **\`$($s.version)\`** |`n"
|
$updateMessage += "| **[$($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
|
echo "UPDATE_MESSAGE<<EOF`n$updateMessage`nEOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||||
Set-GHVariable -Name SINGLE_DEP_OLD_VERSION -Value $singleDepOldVersion
|
|
||||||
Set-GHVariable -Name SINGLE_DEP_NEW_VERSION -Value $singleDepNewVersion
|
|
||||||
|
|
||||||
# Write multiline UPDATE_MESSAGE to GITHUB_ENV
|
|
||||||
## echo "UPDATE_MESSAGE<<EOF`n$updateMessage`nEOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "UPDATE_MESSAGE<<EOF"
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value $updateMessage
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "EOF"
|
|
||||||
|
|
||||||
# Generate major updates changelog section and export
|
|
||||||
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"
|
|
||||||
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "CHANGELOG_SECTION<<EOF"
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value $changelogSection
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "EOF"
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "HAS_BREAKING_CHANGES=True"
|
|
||||||
} else {
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "CHANGELOG_SECTION="
|
|
||||||
Add-Content -Path $env:GITHUB_ENV -Value "HAS_BREAKING_CHANGES=False"
|
|
||||||
}
|
|
||||||
|
|
||||||
- name: Summary - Update check results
|
- name: Summary - Update check results
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
$count = [int]$env:COUNT_UPDATED
|
$count = [int]$env:COUNT_UPDATED
|
||||||
|
|
||||||
if ($count -eq 0) {
|
if ($count -eq 0) {
|
||||||
$summary = @"
|
$summary = @"
|
||||||
### ✅ No Updates Available
|
### ✅ No Updates Available
|
||||||
|
|
||||||
All vendor dependencies are up to date! 🎉
|
All vendor dependencies are up to date.
|
||||||
"@
|
"@
|
||||||
} else {
|
} else {
|
||||||
$word = if ($count -eq 1) { 'dependency' } else { 'dependencies' }
|
$word = if ($count -eq 1) { 'dependency' } else { 'dependencies' }
|
||||||
$summary = @"
|
$summary = @"
|
||||||
### 🔄 Updates Found
|
### 🔄 Updates Found
|
||||||
|
|
||||||
|
**$count** vendor $word updated:
|
||||||
|
|
||||||
|
$env:UPDATE_MESSAGE
|
||||||
|
|
||||||
"@
|
"@
|
||||||
$summary += '📦 **' + $env:SINGLE_DEP_NAME + '** updated from `' + $env:SINGLE_DEP_OLD_VERSION + '` to `' + $env:SINGLE_DEP_NEW_VERSION + '`' + "`n" + "`n"
|
|
||||||
$summary += '📦 **' + $count + '** vendor ' + $word + ' updated:' + "`n" + "`n"
|
|
||||||
}
|
|
||||||
|
|
||||||
$summary += $env:UPDATE_MESSAGE + "`n"
|
|
||||||
|
|
||||||
# Check if we can auto-merge (only minor/patch changes)
|
|
||||||
$hasBreaking = $env:HAS_BREAKING_CHANGES -eq 'True'
|
|
||||||
if ($hasBreaking) {
|
|
||||||
$summary += '> ⚠️ **Note:** This update contains major version changes that may include breaking changes.'
|
|
||||||
} else {
|
|
||||||
$summary += '> ℹ️ **Note:** This update only contains minor or patch changes.'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||||
|
|
||||||
- name: Auto-merge minor updates
|
|
||||||
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)"
|
|
||||||
$commitSuccess = $LASTEXITCODE -eq 0
|
|
||||||
|
|
||||||
if ($commitSuccess) {
|
|
||||||
# Push directly to master
|
|
||||||
git push origin HEAD:master
|
|
||||||
$pushSuccess = $LASTEXITCODE -eq 0
|
|
||||||
|
|
||||||
if ($pushSuccess) {
|
|
||||||
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
|
|
||||||
} else {
|
|
||||||
throw "Failed to push to master (exit code: $LASTEXITCODE)"
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
throw "Failed to commit changes (exit code: $LASTEXITCODE)"
|
|
||||||
}
|
|
||||||
} 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)"
|
|
||||||
|
|
||||||
# Only reset if commit was successful but push failed
|
|
||||||
if ($commitSuccess -and -not $pushSuccess) {
|
|
||||||
try {
|
|
||||||
git reset --hard HEAD~1
|
|
||||||
if ($LASTEXITCODE -ne 0) {
|
|
||||||
Write-Warning "Failed to reset commit (exit code: $LASTEXITCODE), continuing with PR creation"
|
|
||||||
}
|
|
||||||
} catch {
|
|
||||||
Write-Warning "Failed to reset commit: $($_.Exception.Message), continuing with PR creation"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# 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
|
- uses: peter-evans/create-pull-request@v8
|
||||||
if: fromJSON(env.COUNT_UPDATED) > 0 && (env.HAS_BREAKING_CHANGES == 'True' || env.AUTO_MERGED == 'false')
|
if: env.COUNT_UPDATED > 0
|
||||||
with:
|
with:
|
||||||
title: ${{ env.COUNT_UPDATED == 1 && format('⬆️ Update {0}', env.LIST_UPDATED) || format('⬆️ Update {0} vendored dependencies', env.COUNT_UPDATED) }}
|
title: 'Updates to `${{ env.COUNT_UPDATED }}` vendored dependencies'
|
||||||
body: |
|
body: |
|
||||||
### ${{ 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) }}
|
### Automatically updated `${{ env.COUNT_UPDATED }}` dependencies:
|
||||||
|
|
||||||
${{ 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 && (env.HAS_BREAKING_CHANGES == 'True' || env.AUTO_MERGED == 'false')
|
if: env.COUNT_UPDATED > 0
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
run: |
|
run: |
|
||||||
$summary = @"
|
$summary = @"
|
||||||
@@ -275,19 +112,9 @@ jobs:
|
|||||||
|
|
||||||
**Branch:** ``update-vendor``
|
**Branch:** ``update-vendor``
|
||||||
|
|
||||||
$(if (-not [string]::IsNullOrEmpty($env:LIST_UPDATED)) { "**Updated dependencies:** $env:LIST_UPDATED" } else { "**Updated dependencies:** " })
|
**Updated dependencies:** $env:LIST_UPDATED
|
||||||
|
|
||||||
"@
|
|
||||||
|
|
||||||
if ($env:HAS_BREAKING_CHANGES -eq 'True') {
|
|
||||||
$summary += "> ⚠️ **Manual review required:** This update contains major version changes."
|
|
||||||
} else {
|
|
||||||
$summary += "> ℹ️ **Note:** Auto-merge failed, manual review required."
|
|
||||||
}
|
|
||||||
|
|
||||||
$summary += @"
|
|
||||||
> Please review and merge the pull request to apply the updates.
|
> Please review and merge the pull request to apply the updates.
|
||||||
|
|
||||||
"@
|
"@
|
||||||
|
|
||||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||||
|
|||||||
11
README.md
11
README.md
@@ -1,6 +1,6 @@
|
|||||||
# Cmder
|
# Cmder
|
||||||
|
|
||||||
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/cmderdev/cmder) [](https://github.com/cmderdev/cmder/actions/workflows/build.yml)
|
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://github.com/cmderdev/cmder/actions/workflows/build.yml?query=event%3Apush+branch%3Amaster)
|
||||||
|
|
||||||
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, comes with a Monokai color scheme, amazing [clink](https://chrisant996.github.io/clink/) (further enhanced by [clink-completions](https://github.com/vladimir-kotikov/clink-completions)) and a custom prompt layout.
|
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, comes with a Monokai color scheme, amazing [clink](https://chrisant996.github.io/clink/) (further enhanced by [clink-completions](https://github.com/vladimir-kotikov/clink-completions)) and a custom prompt layout.
|
||||||
|
|
||||||
@@ -388,13 +388,10 @@ If you do not have a `[cmder_root]/config/user[-|_]conemu.xml`, you are running
|
|||||||
|
|
||||||
## Current development builds
|
## Current development builds
|
||||||
|
|
||||||
You can download builds of the current development branch by going to AppVeyor via the following link:
|
Download the latest successful GitHub Actions build, then open the run and download the artifacts from the **Artifacts** section:
|
||||||
|
|
||||||
[](https://ci.appveyor.com/project/cmderdev/cmder/branch/master/artifacts)
|
* **Master branch builds**: https://github.com/cmderdev/cmder/actions/workflows/build.yml?query=event%3Apush+branch%3Amaster+is%3Asuccess
|
||||||
|
* **Development branch builds**: https://github.com/cmderdev/cmder/actions/workflows/build.yml?query=event%3Apull_request+branch%3Adevelopment+is%3Asuccess
|
||||||
The latest download builds by GitHub Actions can be downloaded from the link below:
|
|
||||||
|
|
||||||
[](https://github.com/cmderdev/cmder/actions/workflows/build.yml)
|
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
|||||||
@@ -259,8 +259,6 @@ 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
|
||||||
@@ -303,26 +301,6 @@ foreach ($s in $sources) {
|
|||||||
# }
|
# }
|
||||||
|
|
||||||
$count++
|
$count++
|
||||||
|
|
||||||
# Analyze version change type using shared function
|
|
||||||
$result = Get-VersionChangeType -OldVersion $s.version -NewVersion $version
|
|
||||||
$changeType = $result.ChangeType
|
|
||||||
|
|
||||||
# Determine if this is a breaking change
|
|
||||||
if ($changeType -eq "downgrade" -or $changeType -eq "major") {
|
|
||||||
$hasBreakingChanges = $true
|
|
||||||
} elseif ($changeType -eq "unknown") {
|
|
||||||
# If version parsing failed, treat as potentially breaking
|
|
||||||
$hasBreakingChanges = $true
|
|
||||||
Write-Verbose "Could not parse version as semantic version for dependency '$($s.name)' (old: '$($s.version)', new: '$version'), treating as potentially breaking"
|
|
||||||
}
|
|
||||||
|
|
||||||
$updateDetails += @{
|
|
||||||
name = $s.name
|
|
||||||
oldVersion = $s.version
|
|
||||||
newVersion = $version
|
|
||||||
changeType = $changeType
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$s.url = $downloadUrl
|
$s.url = $downloadUrl
|
||||||
@@ -336,16 +314,12 @@ 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."
|
||||||
|
|||||||
@@ -285,100 +285,6 @@ function Format-FileSize {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Get-VersionChangeType {
|
|
||||||
<#
|
|
||||||
.SYNOPSIS
|
|
||||||
Analyzes version changes using semantic versioning to determine the type of update and appropriate emoji.
|
|
||||||
|
|
||||||
.DESCRIPTION
|
|
||||||
Parses old and new version strings, compares them using semantic versioning rules,
|
|
||||||
and returns information about the change type, emoji indicator, and whether it's a major update.
|
|
||||||
|
|
||||||
.PARAMETER OldVersion
|
|
||||||
The previous version string (e.g., "1.2.3" or "2.52.0.windows.1").
|
|
||||||
|
|
||||||
.PARAMETER NewVersion
|
|
||||||
The new version string (e.g., "1.3.0" or "3.0.0.windows.1").
|
|
||||||
|
|
||||||
.OUTPUTS
|
|
||||||
Returns a hashtable with the following keys:
|
|
||||||
- ChangeType: "major", "minor", "patch", "downgrade", or "unknown"
|
|
||||||
- Emoji: The corresponding emoji indicator (🔥, 🚀, ⬆️, or 🔄)
|
|
||||||
- IsMajor: Boolean indicating if this is a major version update
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
$result = Get-VersionChangeType -OldVersion "1.2.3" -NewVersion "2.0.0"
|
|
||||||
# Returns: @{ ChangeType = "major"; Emoji = "🔥"; IsMajor = $true }
|
|
||||||
|
|
||||||
.EXAMPLE
|
|
||||||
$result = Get-VersionChangeType -OldVersion "1.2.3" -NewVersion "1.3.0"
|
|
||||||
# Returns: @{ ChangeType = "minor"; Emoji = "🚀"; IsMajor = $false }
|
|
||||||
#>
|
|
||||||
param(
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[string]$OldVersion,
|
|
||||||
|
|
||||||
[Parameter(Mandatory = $true)]
|
|
||||||
[string]$NewVersion
|
|
||||||
)
|
|
||||||
|
|
||||||
$changeType = "unknown"
|
|
||||||
$emoji = "🔄"
|
|
||||||
$isMajor = $false
|
|
||||||
|
|
||||||
try {
|
|
||||||
# Handle versions with more than 4 parts and strip pre-release identifiers
|
|
||||||
$oldVerStr = $OldVersion.Split('-')[0]
|
|
||||||
$newVerStr = $NewVersion.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) for semantic versioning
|
|
||||||
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 -lt $oldVer) {
|
|
||||||
$changeType = "downgrade"
|
|
||||||
# Don't set emoji for downgrades in this function - caller handles it
|
|
||||||
} elseif ($newVer.Major -gt $oldVer.Major) {
|
|
||||||
$changeType = "major"
|
|
||||||
$emoji = "🔥"
|
|
||||||
$isMajor = $true
|
|
||||||
} elseif ($newVer.Minor -gt $oldVer.Minor) {
|
|
||||||
$changeType = "minor"
|
|
||||||
$emoji = "🚀"
|
|
||||||
} elseif ($newVer -gt $oldVer) {
|
|
||||||
$changeType = "patch"
|
|
||||||
$emoji = "⬆️"
|
|
||||||
} else {
|
|
||||||
# No version increase detected (versions are equal)
|
|
||||||
$changeType = "unknown"
|
|
||||||
$emoji = "🔄"
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
# Not enough numeric parts for semantic versioning
|
|
||||||
throw "Not enough numeric version parts"
|
|
||||||
}
|
|
||||||
} catch {
|
|
||||||
# If semantic versioning fails, return unknown
|
|
||||||
$changeType = "unknown"
|
|
||||||
$emoji = "🔄"
|
|
||||||
$isMajor = $false
|
|
||||||
}
|
|
||||||
|
|
||||||
return @{
|
|
||||||
ChangeType = $changeType
|
|
||||||
Emoji = $emoji
|
|
||||||
IsMajor = $isMajor
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function Get-ArtifactDownloadUrl {
|
function Get-ArtifactDownloadUrl {
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
|
|||||||
4
vendor/clink_settings.default
vendored
4
vendor/clink_settings.default
vendored
@@ -30,3 +30,7 @@ cmd.auto_answer = answer_yes
|
|||||||
# name: Doskey completions
|
# name: Doskey completions
|
||||||
# type: color
|
# type: color
|
||||||
color.doskey = yellow
|
color.doskey = yellow
|
||||||
|
|
||||||
|
# name: Show a suggestion in a muted color
|
||||||
|
# type: boolean
|
||||||
|
autosuggest.inline
|
||||||
|
|||||||
Reference in New Issue
Block a user