mirror of
https://github.com/cmderdev/cmder.git
synced 2025-12-15 10:18:53 +08:00
Compare commits
52 Commits
copilot/fi
...
copilot/im
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4911924259 | ||
|
|
cd2c4ec877 | ||
|
|
0f6584fa02 | ||
|
|
570b1d6043 | ||
|
|
fa2a34a4c0 | ||
|
|
9e6e1485b0 | ||
|
|
baef798b6c | ||
|
|
865d0c1858 | ||
|
|
60848f56c5 | ||
|
|
b86fca35bc | ||
|
|
e6fea0bbab | ||
|
|
bf90303c96 | ||
|
|
e64c0b110d | ||
|
|
f2e8ae5189 | ||
|
|
4d21982f26 | ||
|
|
be60888258 | ||
|
|
d61a4f7f36 | ||
|
|
d05d03117a | ||
|
|
1509616205 | ||
|
|
6a698046a0 | ||
|
|
148f685bb3 | ||
|
|
73685145ea | ||
|
|
799f63de1f | ||
|
|
6da8e5849e | ||
|
|
25ac8f113e | ||
|
|
40ddf9a451 | ||
|
|
0db2dbf6f8 | ||
|
|
d285f63068 | ||
|
|
62cccaf284 | ||
|
|
e79f54e16e | ||
|
|
24427c1a41 | ||
|
|
a918a6aae1 | ||
|
|
d3ae747a6d | ||
|
|
7f0cfac498 | ||
|
|
dc3b142b32 | ||
|
|
9c3bbe9b24 | ||
|
|
be44bac956 | ||
|
|
4fb6bed907 | ||
|
|
f4e68b0388 | ||
|
|
a824b721cb | ||
|
|
153f7310a1 | ||
|
|
3172771f15 | ||
|
|
ef46d6465d | ||
|
|
eabadf96dc | ||
|
|
7b248bc9a3 | ||
|
|
2ce0146d6e | ||
|
|
5dfa14ccce | ||
|
|
4d259ba84c | ||
|
|
bbd7507b4e | ||
|
|
b9246177c0 | ||
|
|
a8d897f633 | ||
|
|
304b8c7a05 |
11
.github/dependabot.yml
vendored
11
.github/dependabot.yml
vendored
@@ -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"
|
||||||
|
|||||||
29
.github/workflows/branches.yml
vendored
29
.github/workflows/branches.yml
vendored
@@ -19,10 +19,25 @@ jobs:
|
|||||||
# Steps represent a sequence of tasks that will be executed as part of the job
|
# Steps represent a sequence of tasks that will be executed as part of the job
|
||||||
steps:
|
steps:
|
||||||
# Checks-out the repository under $GITHUB_WORKSPACE, so the job can access it
|
# Checks-out the repository under $GITHUB_WORKSPACE, so the job can access it
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0 # fetch all history for all branches and tags
|
fetch-depth: 0 # fetch all history for all branches and tags
|
||||||
|
|
||||||
|
- name: Summary - Merge operation started
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "## 🔀 Update Branches - Workflow Summary" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "### Merge Operation" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Property | Value |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "| --- | --- |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Source Branch | \`master\` |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Target Branch | \`development\` |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Triggered by | @${{ github.actor }} |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Commit | \`${{ github.sha }}\` |" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
# Runs a single command using the runners shell
|
# Runs a single command using the runners shell
|
||||||
- name: Merge master into development
|
- name: Merge master into development
|
||||||
run: |
|
run: |
|
||||||
@@ -31,3 +46,15 @@ jobs:
|
|||||||
git checkout development
|
git checkout development
|
||||||
git merge --no-ff master
|
git merge --no-ff master
|
||||||
git push origin development
|
git push origin development
|
||||||
|
|
||||||
|
- name: Summary - Merge completed
|
||||||
|
if: success()
|
||||||
|
shell: bash
|
||||||
|
run: |
|
||||||
|
echo "### ✅ Merge Successful" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "The \`master\` branch has been successfully merged into \`development\`." >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "**Merge type:** No fast-forward merge" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $GITHUB_STEP_SUMMARY
|
||||||
|
echo "> The development branch is now synchronized with the latest changes from master." >> $GITHUB_STEP_SUMMARY
|
||||||
|
|||||||
82
.github/workflows/build.yml
vendored
82
.github/workflows/build.yml
vendored
@@ -35,10 +35,25 @@ jobs:
|
|||||||
discussions: write
|
discussions: write
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository code (Action from GitHub)
|
- name: Check out repository code (Action from GitHub)
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Summary - Repository checkout
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "## 📦 Build Cmder - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "### Repository Information" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Property | Value |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Repository | \`${{ github.repository }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Branch | \`${{ github.ref_name }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Commit | \`${{ github.sha }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Actor | @${{ github.actor }} |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Workflow | \`${{ github.workflow }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- name: Add MSBuild to PATH
|
- name: Add MSBuild to PATH
|
||||||
uses: microsoft/setup-msbuild@v2
|
uses: microsoft/setup-msbuild@v2
|
||||||
|
|
||||||
@@ -47,36 +62,78 @@ jobs:
|
|||||||
working-directory: scripts
|
working-directory: scripts
|
||||||
run: .\build.ps1 -Compile -verbose
|
run: .\build.ps1 -Compile -verbose
|
||||||
|
|
||||||
|
- name: Summary - Build completed
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### ✅ Build Status" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "Cmder launcher successfully compiled." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- name: Pack the built files
|
- name: Pack the built files
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
working-directory: scripts
|
working-directory: scripts
|
||||||
run: .\pack.ps1 -verbose
|
run: .\pack.ps1 -verbose
|
||||||
|
|
||||||
|
- name: Summary - Package artifacts
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### 📦 Artifacts Created" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Artifact | Size | Hash (SHA256) |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| --- | --- | --- |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
$artifacts = @("cmder.zip", "cmder.7z", "cmder_mini.zip")
|
||||||
|
foreach ($artifact in $artifacts) {
|
||||||
|
$path = "build/$artifact"
|
||||||
|
if (Test-Path $path) {
|
||||||
|
$size = (Get-Item $path).Length / 1MB
|
||||||
|
# Truncate hash to first 16 chars for summary readability (full hash in hashes.txt)
|
||||||
|
$hash = (Get-FileHash $path -Algorithm SHA256).Hash.Substring(0, 16)
|
||||||
|
echo "| \`$artifact\` | $([math]::Round($size, 2)) MB | \`$hash...\` |" >> $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
|
||||||
|
|
||||||
|
- name: Summary - Artifacts uploaded
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### ☁️ Upload Status" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "All artifacts successfully uploaded to GitHub Actions:" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "- ✅ \`cmder.zip\`" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "- ✅ \`cmder.7z\`" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "- ✅ \`cmder_mini.zip\`" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "- ✅ \`hashes.txt\`" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- name: Create Release
|
- name: Create Release
|
||||||
uses: softprops/action-gh-release@v2
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
@@ -88,3 +145,18 @@ jobs:
|
|||||||
draft: true
|
draft: true
|
||||||
generate_release_notes: true
|
generate_release_notes: true
|
||||||
if: startsWith(github.ref, 'refs/tags/')
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
|
||||||
|
- name: Summary - Release created
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### 🚀 Release Information" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "Draft release created for tag: **\`${{ github.ref_name }}\`**" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "Release includes:" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "- Full version (\`cmder.zip\`, \`cmder.7z\`)" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "- Mini version (\`cmder_mini.zip\`)" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "- File hashes (\`hashes.txt\`)" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "> ⚠️ Release is in **draft** mode. Please review and publish manually." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|||||||
38
.github/workflows/codeql.yml
vendored
38
.github/workflows/codeql.yml
vendored
@@ -45,7 +45,22 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout repository
|
- name: Checkout repository
|
||||||
uses: actions/checkout@v5
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Summary - CodeQL analysis started
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "## 🔒 CodeQL Security Analysis - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "### Analysis Configuration" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Property | Value |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Repository | \`${{ github.repository }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Branch | \`${{ github.ref_name }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Language | \`${{ matrix.language }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Commit | \`${{ github.sha }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
@@ -67,7 +82,28 @@ jobs:
|
|||||||
working-directory: scripts
|
working-directory: scripts
|
||||||
run: .\build.ps1 -Compile -verbose
|
run: .\build.ps1 -Compile -verbose
|
||||||
|
|
||||||
|
- name: Summary - Build status
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### ✅ Build Completed" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "Cmder launcher built successfully for CodeQL analysis." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
- name: Perform CodeQL Analysis
|
||||||
uses: github/codeql-action/analyze@v4
|
uses: github/codeql-action/analyze@v4
|
||||||
with:
|
with:
|
||||||
category: "/language:${{matrix.language}}"
|
category: "/language:${{matrix.language}}"
|
||||||
|
|
||||||
|
- name: Summary - Analysis completed
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### 🔍 CodeQL Analysis Results" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "✅ CodeQL security analysis completed successfully." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "**Language analyzed:** \`${{ matrix.language }}\`" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "> Check the Security tab for detailed findings and recommendations." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|||||||
65
.github/workflows/tests.yml
vendored
65
.github/workflows/tests.yml
vendored
@@ -38,17 +38,78 @@ jobs:
|
|||||||
continue-on-error: false
|
continue-on-error: false
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Summary - Test execution started
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "## 🧪 Run Tests - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "### Test Environment" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Property | Value |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Repository | \`${{ github.repository }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Branch | \`${{ github.ref_name }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Commit | \`${{ github.sha }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Runner OS | \`${{ runner.os }}\` |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- name: Initialize vendors
|
- name: Initialize vendors
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
working-directory: scripts
|
working-directory: scripts
|
||||||
run: .\build.ps1 -verbose
|
run: .\build.ps1 -verbose
|
||||||
|
|
||||||
|
- name: Summary - Vendor initialization
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### ⚙️ Vendor Initialization" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "✅ Vendor dependencies initialized successfully." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
|
- name: Summary - Test results table header
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### 📋 Test Results" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| Test | Status |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "| --- | --- |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- name: Testing Clink Shell
|
- name: Testing Clink Shell
|
||||||
run: |
|
run: |
|
||||||
cmd /c vendor\init.bat /v /d /t
|
cmd /c vendor\init.bat /v /d /t
|
||||||
|
|
||||||
|
- name: Summary - Clink Shell test
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "| Clink Shell | ✅ Passed |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
- name: Testing PowerShell
|
- name: Testing PowerShell
|
||||||
run: |
|
run: |
|
||||||
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Invoke-Expression '. ''vendor\profile.ps1'''"
|
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "$env:CMDER_DEBUG='1'; . 'vendor\profile.ps1'"
|
||||||
|
|
||||||
|
- name: Summary - PowerShell test
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "| PowerShell | ✅ Passed |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
- name: Testing Bash
|
- name: Testing Bash
|
||||||
run: |
|
run: |
|
||||||
bash vendor/cmder.sh
|
bash vendor/cmder.sh
|
||||||
|
|
||||||
|
- name: Summary - Bash test
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "| Bash | ✅ Passed |" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
|
- name: Summary - All tests completed
|
||||||
|
if: success()
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "### ✅ All Tests Completed" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "All shell environments tested successfully!" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|||||||
221
.github/workflows/vendor.yml
vendored
221
.github/workflows/vendor.yml
vendored
@@ -24,10 +24,18 @@ jobs:
|
|||||||
pull-requests: write
|
pull-requests: write
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v5
|
- uses: actions/checkout@v6
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Summary - Workflow started
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "## 📦 Vendor Update - Workflow Summary" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "🔍 Checking for vendor dependency updates..." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
|
||||||
- id: make-changes
|
- id: make-changes
|
||||||
name: Checking for updates
|
name: Checking for updates
|
||||||
env:
|
env:
|
||||||
@@ -38,28 +46,225 @@ 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
|
||||||
|
|
||||||
- uses: peter-evans/create-pull-request@v7
|
# Generate major updates changelog section
|
||||||
if: env.COUNT_UPDATED > 0
|
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
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
$count = $env:COUNT_UPDATED
|
||||||
|
if ($count -eq 0) {
|
||||||
|
echo "### ✅ No Updates Available" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "All vendor dependencies are up to date! 🎉" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
} else {
|
||||||
|
$word = if ($count -eq 1) { 'dependency' } else { 'dependencies' }
|
||||||
|
echo "### 🔄 Updates Found" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $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:UPDATE_MESSAGE" >> $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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- 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)"
|
||||||
|
|
||||||
|
# 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 only if a commit was made (check if HEAD moved)
|
||||||
|
$headBeforeReset = git rev-parse HEAD
|
||||||
|
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
|
||||||
|
if: env.COUNT_UPDATED > 0 && (env.HAS_BREAKING_CHANGES == 'True' || env.AUTO_MERGED == 'false')
|
||||||
|
shell: pwsh
|
||||||
|
run: |
|
||||||
|
echo "### 🎉 Pull Request Created" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "A pull request has been created to update the vendor dependencies." >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "**Branch:** \`update-vendor\`" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "**Updated dependencies:** $env:LIST_UPDATED" >> $env:GITHUB_STEP_SUMMARY
|
||||||
|
echo "" >> $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
|
||||||
|
|||||||
@@ -354,7 +354,7 @@ However, Cmder can in fact run in a variety of other terminal emulators, and eve
|
|||||||
|
|
||||||
⚠ *Note:* Cmder includes built-in support for Windows Terminal directory tracking via OSC 9;9 sequences. This enables "Duplicate Tab" and "Split Pane" features to preserve the current working directory for both `cmd.exe` and PowerShell sessions.
|
⚠ *Note:* Cmder includes built-in support for Windows Terminal directory tracking via OSC 9;9 sequences. This enables "Duplicate Tab" and "Split Pane" features to preserve the current working directory for both `cmd.exe` and PowerShell sessions.
|
||||||
|
|
||||||
⚠ *Note:* Cmder also includes built-in support for [Windows Terminal shell integration](https://learn.microsoft.com/en-us/windows/terminal/tutorials/shell-integration) via OSC 133 sequences (A, B, C) for PowerShell sessions. This enables features like command navigation (jump between commands), command selection, visual command separators, and improved command history management in Windows Terminal.
|
⚠ *Note:* Cmder also includes built-in support for [Windows Terminal shell integration](https://learn.microsoft.com/en-us/windows/terminal/tutorials/shell-integration) via OSC 133 sequences (A, B, C, D) for PowerShell sessions. This enables features like command navigation (jump between commands), command selection, visual command separators, command exit code tracking, and improved command history management in Windows Terminal.
|
||||||
|
|
||||||
For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration).
|
For instructions on how to integrate Cmder with your IDE, please read our [Wiki section](https://github.com/cmderdev/cmder/wiki#cmder-integration).
|
||||||
|
|
||||||
|
|||||||
@@ -27,7 +27,7 @@
|
|||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build.ps1 -SourcesPath '~/custom/vendors.json'
|
.\build.ps1 -SourcesPath '~/custom/vendors.json'
|
||||||
|
|
||||||
Build cmder with your own packages. See vendor/sources.json for the syntax you need to copy.
|
Build Cmder with your own packages. See vendor/sources.json for the syntax you need to copy.
|
||||||
.NOTES
|
.NOTES
|
||||||
AUTHORS
|
AUTHORS
|
||||||
Samuel Vasko, Jack Bennett
|
Samuel Vasko, Jack Bennett
|
||||||
@@ -60,7 +60,7 @@ Param(
|
|||||||
[switch]$Compile
|
[switch]$Compile
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get the scripts and cmder root dirs we are building in.
|
# Get the scripts and Cmder root dirs we are building in.
|
||||||
$cmder_root = Resolve-Path "$PSScriptRoot\.."
|
$cmder_root = Resolve-Path "$PSScriptRoot\.."
|
||||||
|
|
||||||
# Dot source util functions into this scope
|
# Dot source util functions into this scope
|
||||||
|
|||||||
@@ -2,18 +2,18 @@
|
|||||||
.Synopsis
|
.Synopsis
|
||||||
Pack Cmder
|
Pack Cmder
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
Use this script to pack cmder into release archives
|
Use this script to pack Cmder into release archives
|
||||||
|
|
||||||
You will need to make this script executable by setting your Powershell Execution Policy to Remote signed
|
You will need to make this script executable by setting your Powershell Execution Policy to Remote signed
|
||||||
Then unblock the script for execution with UnblockFile .\pack.ps1
|
Then unblock the script for execution with UnblockFile .\pack.ps1
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\pack.ps1
|
.\pack.ps1
|
||||||
|
|
||||||
Creates default archives for cmder
|
Creates default archives for Cmder
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\pack.ps1 -verbose
|
.\pack.ps1 -verbose
|
||||||
|
|
||||||
Creates default archives for cmder with plenty of information
|
Creates default archives for Cmder with plenty of information
|
||||||
.NOTES
|
.NOTES
|
||||||
AUTHORS
|
AUTHORS
|
||||||
Samuel Vasko, Jack Bennett, Martin Kemp
|
Samuel Vasko, Jack Bennett, Martin Kemp
|
||||||
|
|||||||
@@ -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."
|
||||||
|
|||||||
@@ -172,13 +172,13 @@ function Register-Cmder() {
|
|||||||
# Text for the context menu item.
|
# Text for the context menu item.
|
||||||
$MenuText = "Cmder Here"
|
$MenuText = "Cmder Here"
|
||||||
|
|
||||||
, # Defaults to the current cmder directory when run from cmder.
|
, # Defaults to the current Cmder directory when run from Cmder.
|
||||||
$PathToExe = (Join-Path $env:CMDER_ROOT "cmder.exe")
|
$PathToExe = (Join-Path $env:CMDER_ROOT "cmder.exe")
|
||||||
|
|
||||||
, # Commands the context menu will execute.
|
, # Commands the context menu will execute.
|
||||||
$Command = "%V"
|
$Command = "%V"
|
||||||
|
|
||||||
, # Defaults to the icons folder in the cmder package.
|
, # Defaults to the icons folder in the Cmder package.
|
||||||
$icon = (Split-Path $PathToExe | Join-Path -ChildPath 'icons/cmder.ico')
|
$icon = (Split-Path $PathToExe | Join-Path -ChildPath 'icons/cmder.ico')
|
||||||
)
|
)
|
||||||
Begin
|
Begin
|
||||||
|
|||||||
45
vendor/git-prompt.sh
vendored
45
vendor/git-prompt.sh
vendored
@@ -5,9 +5,9 @@ function getGitStatusSetting() {
|
|||||||
# Get all git config entries for the current repository without pager
|
# Get all git config entries for the current repository without pager
|
||||||
gitConfig=$(git --no-pager config -l 2>/dev/null) || return 0 # treat failure as enabled
|
gitConfig=$(git --no-pager config -l 2>/dev/null) || return 0 # treat failure as enabled
|
||||||
|
|
||||||
# Check if git status for Cmder is disabled
|
# Check if git status display for Cmder is disabled via config
|
||||||
if [[ $gitConfig =~ (^|$'\n')cmder\.status=false($|$'\n') ]] || \
|
# Matches: cmder.status=false or cmder.shstatus=false (Bash-specific)
|
||||||
[[ $gitConfig =~ (^|$'\n')cmder\.shstatus=false($|$'\n') ]]
|
if [[ $gitConfig =~ (^|$'\n')cmder\.(sh)?status=false($|$'\n') ]]
|
||||||
then
|
then
|
||||||
return 1 # disabled
|
return 1 # disabled
|
||||||
fi
|
fi
|
||||||
@@ -47,9 +47,41 @@ then
|
|||||||
. ~/.config/git/git-prompt.sh
|
. ~/.config/git/git-prompt.sh
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
# Taken parts from https://github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh
|
|
||||||
|
# Setup OSC 133 shell integration for Windows Terminal
|
||||||
|
if [ -n "$WT_SESSION" ]; then
|
||||||
|
__cmder_prompt_command() {
|
||||||
|
local exit_code=$?
|
||||||
|
# Emit OSC 133;D to mark the end of command execution with exit code
|
||||||
|
printf '\e]133;D;%s\a' "$exit_code"
|
||||||
|
return $exit_code
|
||||||
|
}
|
||||||
|
|
||||||
|
__cmder_preexec() {
|
||||||
|
# Emit OSC 133;C to mark the start of command execution
|
||||||
|
printf '\e]133;C\a'
|
||||||
|
}
|
||||||
|
|
||||||
|
# Append to PROMPT_COMMAND to emit sequences just before each prompt
|
||||||
|
if [ -z "$PROMPT_COMMAND" ]; then
|
||||||
|
PROMPT_COMMAND="__cmder_prompt_command"
|
||||||
|
else
|
||||||
|
PROMPT_COMMAND="__cmder_prompt_command;$PROMPT_COMMAND"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Use DEBUG trap to emit OSC 133;C before command execution
|
||||||
|
trap '__cmder_preexec' DEBUG
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Source: github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh
|
||||||
PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory
|
PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory
|
||||||
# PS1="$PS1"'\n' # new line (disabled)
|
# PS1="$PS1"'\n' # new line (disabled)
|
||||||
|
|
||||||
|
if [ -n "$WT_SESSION" ]; then
|
||||||
|
# Emit OSC 133;A to mark the start of prompt
|
||||||
|
PS1="$PS1"'\e]133;A\a'
|
||||||
|
fi
|
||||||
|
|
||||||
PS1="$PS1"'\[\033[32m\]' # change to green and bold
|
PS1="$PS1"'\[\033[32m\]' # change to green and bold
|
||||||
PS1="$PS1"'\u@\h ' # user@host<space>
|
PS1="$PS1"'\u@\h ' # user@host<space>
|
||||||
PS1="$PS1${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set)
|
PS1="$PS1${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set)
|
||||||
@@ -80,6 +112,11 @@ else
|
|||||||
PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold
|
PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold
|
||||||
PS1="$PS1"'λ ' # prompt: Cmder uses λ
|
PS1="$PS1"'λ ' # prompt: Cmder uses λ
|
||||||
PS1="$PS1"'\[\033[0m\]' # reset color
|
PS1="$PS1"'\[\033[0m\]' # reset color
|
||||||
|
|
||||||
|
if [ -n "$WT_SESSION" ]; then
|
||||||
|
# Emit OSC 133;B to mark the end of prompt
|
||||||
|
PS1="$PS1"'\[\e]133;B\a\]'
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
|
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
|
||||||
|
|||||||
3
vendor/init.bat
vendored
3
vendor/init.bat
vendored
@@ -223,6 +223,9 @@ goto :SKIP_CLINK
|
|||||||
:: Revert back to plain cmd.exe prompt without clink
|
:: Revert back to plain cmd.exe prompt without clink
|
||||||
prompt $E[1;32;49m$P$S$_$E[1;30;49mλ$S$E[0m
|
prompt $E[1;32;49m$P$S$_$E[1;30;49mλ$S$E[0m
|
||||||
|
|
||||||
|
:: Add Windows Terminal shell integration support (OSC 133 sequences)
|
||||||
|
if defined WT_SESSION (prompt $e]133;D$e\$e]133;A$e\$e]9;9;$P$e\%PROMPT%$e]133;B$e\)
|
||||||
|
|
||||||
chcp %cp%>nul
|
chcp %cp%>nul
|
||||||
|
|
||||||
:CLINK_FINISH
|
:CLINK_FINISH
|
||||||
|
|||||||
63
vendor/profile.ps1
vendored
63
vendor/profile.ps1
vendored
@@ -7,15 +7,11 @@
|
|||||||
|
|
||||||
$CMDER_INIT_START = Get-Date
|
$CMDER_INIT_START = Get-Date
|
||||||
|
|
||||||
# Compatibility with PS major versions <= 2
|
# Determine the script root if not already set
|
||||||
if (!$PSScriptRoot) {
|
if (!$PSScriptRoot) {
|
||||||
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ENV:CMDER_USER_CONFIG) {
|
|
||||||
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
|
||||||
}
|
|
||||||
|
|
||||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
||||||
if (!$ENV:CMDER_ROOT) {
|
if (!$ENV:CMDER_ROOT) {
|
||||||
if ($ENV:ConEmuDir) {
|
if ($ENV:ConEmuDir) {
|
||||||
@@ -31,6 +27,12 @@ $ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
|||||||
# Recent PowerShell versions include PowerShellGet out of the box
|
# Recent PowerShell versions include PowerShellGet out of the box
|
||||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
|
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
|
||||||
|
|
||||||
|
# Enable Debug and Verbose output if CMDER_DEBUG environment variable is set to '1' or 'true'
|
||||||
|
if ($env:CMDER_DEBUG -and ($env:CMDER_DEBUG -match '^(1|true)$')) {
|
||||||
|
$DebugPreference = 'Continue'
|
||||||
|
$VerbosePreference = 'Continue'
|
||||||
|
}
|
||||||
|
|
||||||
# Add Cmder modules directory to the autoload path.
|
# Add Cmder modules directory to the autoload path.
|
||||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||||
|
|
||||||
@@ -43,28 +45,40 @@ if (-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderMo
|
|||||||
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($env:CMDER_USER_CONFIG) {
|
||||||
|
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||||
|
}
|
||||||
|
|
||||||
# Read vendored Git Version
|
# Read vendored Git Version
|
||||||
$gitVersionVendor = Get-GitVersion -GitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd"
|
$gitVendorPath = Join-Path $ENV:CMDER_ROOT 'vendor\git-for-windows\cmd'
|
||||||
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
$gitVersionVendor = Get-GitVersion -GitPath $gitVendorPath
|
||||||
|
if (-not [string]::IsNullOrEmpty($gitVersionVendor)) {
|
||||||
|
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
||||||
|
} else {
|
||||||
|
Write-Debug "GIT VENDOR is not present at '$gitVendorPath'"
|
||||||
|
}
|
||||||
|
|
||||||
# Get user installed Git version(s) if found, and compare them with vendored version.
|
# Get user installed Git version(s) if found, and compare them with vendored version.
|
||||||
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
||||||
Write-Debug "GIT PATH: {$git.Path}"
|
Write-Debug "GIT USER PATH: $($git.Path)"
|
||||||
$gitDir = Split-Path -Path $git.Path
|
$gitDir = Split-Path -Path $git.Path
|
||||||
$gitDir = Get-GitShimPath -GitPath $gitDir
|
$gitDir = Get-GitShimPath -GitPath $gitDir
|
||||||
$gitVersionUser = Get-GitVersion -GitPath $gitDir
|
$gitVersionUser = Get-GitVersion -GitPath $gitDir
|
||||||
Write-Debug "GIT USER: ${gitVersionUser}"
|
Write-Debug "GIT USER VERSION: ${gitVersionUser}"
|
||||||
|
|
||||||
$useGitVersion = Compare-GitVersion -UserVersion $gitVersionUser -VendorVersion $gitVersionVendor
|
$useGitVersion = Compare-GitVersion -UserVersion $gitVersionUser -VendorVersion $gitVersionVendor
|
||||||
Write-Debug "Using Git Version: ${useGitVersion}"
|
Write-Debug "Using Git Version: ${useGitVersion}"
|
||||||
|
|
||||||
# Use user installed Git
|
# Use user installed Git
|
||||||
if ($null -eq $gitPathUser) {
|
if ($null -eq $gitPathUser) {
|
||||||
|
Write-Debug "Detected Git from mingw bin directory"
|
||||||
|
Write-Debug "Git Dir: ${gitDir}"
|
||||||
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
||||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 12))
|
$gitPathUser = $gitDir.subString(0, $gitDir.Length - 12)
|
||||||
} else {
|
} else {
|
||||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 4))
|
$gitPathUser = $gitDir.subString(0, $gitDir.Length - 4)
|
||||||
}
|
}
|
||||||
|
Write-Debug "Git Path User: ${gitDir}"
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($useGitVersion -eq $gitVersionUser) {
|
if ($useGitVersion -eq $gitVersionUser) {
|
||||||
@@ -98,8 +112,7 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
|||||||
# Display an extra prompt line between the prompt and the command input
|
# Display an extra prompt line between the prompt and the command input
|
||||||
Set-PSReadlineOption -ExtraPromptLineCount 1
|
Set-PSReadlineOption -ExtraPromptLineCount 1
|
||||||
|
|
||||||
# Add OSC 133;C support for Windows Terminal shell integration
|
# Invoked when Enter is pressed to submit a command
|
||||||
# This marks the start of command output (emitted when Enter is pressed)
|
|
||||||
if ($env:WT_SESSION) {
|
if ($env:WT_SESSION) {
|
||||||
Set-PSReadLineKeyHandler -Key Enter -ScriptBlock {
|
Set-PSReadLineKeyHandler -Key Enter -ScriptBlock {
|
||||||
# Get the current command line
|
# Get the current command line
|
||||||
@@ -110,7 +123,7 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
|||||||
# Accept the line first
|
# Accept the line first
|
||||||
[Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
|
[Microsoft.PowerShell.PSConsoleReadLine]::AcceptLine()
|
||||||
|
|
||||||
# Emit OSC 133;C sequence to mark start of command output
|
# Emit OSC 133;C to mark start of command output
|
||||||
# This is written directly to the console after the command is accepted
|
# This is written directly to the console after the command is accepted
|
||||||
[Console]::Write("$([char]0x1B)]133;C$([char]7)")
|
[Console]::Write("$([char]0x1B)]133;C$([char]7)")
|
||||||
}
|
}
|
||||||
@@ -221,21 +234,26 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
|||||||
$lastSUCCESS = $?
|
$lastSUCCESS = $?
|
||||||
$realLastExitCode = $LastExitCode
|
$realLastExitCode = $LastExitCode
|
||||||
|
|
||||||
# Emit OSC 9;9 sequence for Windows Terminal directory tracking
|
# Terminal-specific escape sequences for Windows Terminal and ConEmu
|
||||||
# This enables "Duplicate Tab" and "Split Pane" to preserve the working directory
|
if ($env:WT_SESSION -or $env:ConEmuPID) {
|
||||||
# Only active in Windows Terminal ($env:WT_SESSION) or ConEmu ($env:ConEmuPID)
|
# Emit OSC 133;D to mark the end of command execution with exit code
|
||||||
|
if ($env:WT_SESSION) {
|
||||||
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;D;$realLastExitCode$([char]7)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Emit OSC 9;9 to enable directory tracking
|
||||||
|
# Enables "Duplicate Tab" and "Split Pane" to preserve the working directory
|
||||||
$loc = $executionContext.SessionState.Path.CurrentLocation
|
$loc = $executionContext.SessionState.Path.CurrentLocation
|
||||||
if (($env:WT_SESSION -or $env:ConEmuPID) -and $loc.Provider.Name -eq "FileSystem") {
|
if ($loc.Provider.Name -eq "FileSystem") {
|
||||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]9;9;`"$($loc.ProviderPath)`"$([char]0x1B)\"
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]9;9;`"$($loc.ProviderPath)`"$([char]0x1B)\"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Emit OSC 133;A sequence for Windows Terminal shell integration
|
# Emit OSC 133;A to mark the start of the prompt
|
||||||
# This marks the start of the prompt
|
|
||||||
# Enables features like command navigation, selection, and visual separators
|
# Enables features like command navigation, selection, and visual separators
|
||||||
# Only active in Windows Terminal ($env:WT_SESSION)
|
|
||||||
if ($env:WT_SESSION) {
|
if ($env:WT_SESSION) {
|
||||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;A$([char]7)"
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;A$([char]7)"
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
||||||
@@ -246,8 +264,7 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
|||||||
CmderPrompt
|
CmderPrompt
|
||||||
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||||
|
|
||||||
# Emit OSC 133;B sequence for Windows Terminal shell integration
|
# Emit OSC 133;B to mark the start of command input (after prompt, before user types)
|
||||||
# This marks the start of command input (after prompt, before user types)
|
|
||||||
if ($env:WT_SESSION) {
|
if ($env:WT_SESSION) {
|
||||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;B$([char]7)"
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x1B)]133;B$([char]7)"
|
||||||
}
|
}
|
||||||
|
|||||||
12
vendor/sources.json
vendored
12
vendor/sources.json
vendored
@@ -1,13 +1,13 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "git-for-windows",
|
"name": "git-for-windows",
|
||||||
"version": "2.51.2.windows.1",
|
"version": "2.52.0.windows.1",
|
||||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.51.2.windows.1/PortableGit-2.51.2-64-bit.7z.exe"
|
"url": "https://github.com/git-for-windows/git/releases/download/v2.52.0.windows.1/PortableGit-2.52.0-64-bit.7z.exe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink",
|
"name": "clink",
|
||||||
"version": "1.8.8",
|
"version": "1.9.5",
|
||||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.8.8/clink.1.8.8.a63364.zip"
|
"url": "https://github.com/chrisant996/clink/releases/download/v1.9.5/clink.1.9.5.ee6b4f.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "conemu-maximus5",
|
"name": "conemu-maximus5",
|
||||||
@@ -21,7 +21,7 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink-completions",
|
"name": "clink-completions",
|
||||||
"version": "0.6.6",
|
"version": "0.6.7",
|
||||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.6.6.zip"
|
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.6.7.zip"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user