mirror of
https://github.com/cmderdev/cmder.git
synced 2026-02-25 06:26:08 +08:00
Fixes and Cleanup
This commit is contained in:
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
@@ -5,7 +5,11 @@
|
||||
|
||||
version: 2
|
||||
updates:
|
||||
# Enable version updates for GitHub Actions
|
||||
- package-ecosystem: "github-actions" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
labels:
|
||||
- "👆 Dependencies"
|
||||
- "🔄️ GitHub Actions"
|
||||
|
||||
21
.github/workflows/build.yml
vendored
21
.github/workflows/build.yml
vendored
@@ -93,6 +93,7 @@ jobs:
|
||||
$summary += "`n| ``$($vendor.name)`` | $($vendor.version) |"
|
||||
}
|
||||
}
|
||||
|
||||
$summary += "`n"
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
@@ -109,7 +110,7 @@ jobs:
|
||||
if: success()
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
|
||||
---
|
||||
|
||||
@@ -117,7 +118,9 @@ jobs:
|
||||
|
||||
✅ Cmder built successfully.
|
||||
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
- name: Pack the built files
|
||||
shell: pwsh
|
||||
@@ -125,26 +128,26 @@ jobs:
|
||||
run: .\pack.ps1 -verbose
|
||||
|
||||
- name: Upload artifact (cmder.zip)
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
path: build/cmder.zip
|
||||
name: cmder.zip
|
||||
if-no-files-found: error
|
||||
|
||||
- name: Upload artifact (cmder.7z)
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
path: build/cmder.7z
|
||||
name: cmder.7z
|
||||
|
||||
- name: Upload artifact (cmder_mini.zip)
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
path: build/cmder_mini.zip
|
||||
name: cmder_mini.zip
|
||||
|
||||
- name: Upload artifact (hashes.txt)
|
||||
uses: actions/upload-artifact@v5
|
||||
uses: actions/upload-artifact@v6
|
||||
with:
|
||||
path: build/hashes.txt
|
||||
name: hashes.txt
|
||||
@@ -245,7 +248,7 @@ jobs:
|
||||
if: startsWith(github.ref, 'refs/tags/')
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
|
||||
---
|
||||
|
||||
@@ -259,4 +262,6 @@ jobs:
|
||||
- File hashes (``hashes.txt``)
|
||||
|
||||
> ⚠️ Release is in **draft** mode. Please review and publish manually.
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
18
.github/workflows/codeql.yml
vendored
18
.github/workflows/codeql.yml
vendored
@@ -50,7 +50,7 @@ jobs:
|
||||
- name: Summary - CodeQL analysis started
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
## 🔒 CodeQL Security Analysis - Workflow Summary
|
||||
|
||||
### Analysis Configuration
|
||||
@@ -62,7 +62,9 @@ jobs:
|
||||
| Language | ``${{ matrix.language }}`` |
|
||||
| Commit | ``${{ github.sha }}`` |
|
||||
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
@@ -88,12 +90,14 @@ jobs:
|
||||
if: success()
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
### ✅ Build Completed
|
||||
|
||||
Cmder launcher built successfully for CodeQL analysis.
|
||||
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v4
|
||||
@@ -104,7 +108,7 @@ jobs:
|
||||
if: success()
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
### 🔍 CodeQL Analysis Results
|
||||
|
||||
✅ CodeQL security analysis completed successfully.
|
||||
@@ -112,4 +116,6 @@ jobs:
|
||||
**Language analyzed:** ``${{ matrix.language }}``
|
||||
|
||||
> Check the Security tab for detailed findings and recommendations.
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
18
.github/workflows/tests.yml
vendored
18
.github/workflows/tests.yml
vendored
@@ -47,7 +47,7 @@ jobs:
|
||||
. scripts/utils.ps1
|
||||
$cmderVersion = Get-VersionStr
|
||||
|
||||
@"
|
||||
$summary = @"
|
||||
## ✅ Run Tests - Workflow Summary
|
||||
|
||||
### Test Environment
|
||||
@@ -61,7 +61,9 @@ jobs:
|
||||
| PowerShell Version | **$($PSVersionTable.PSVersion)** |
|
||||
| Event | ``${{ github.event_name }}`` |
|
||||
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
- name: Initialize vendors
|
||||
shell: pwsh
|
||||
@@ -106,12 +108,14 @@ jobs:
|
||||
if: success()
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
### 📋 Test Results
|
||||
|
||||
| Test | Status | Duration |
|
||||
| --- | --- | --- |
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
- name: Testing Clink Shell
|
||||
id: test-clink
|
||||
@@ -148,7 +152,7 @@ jobs:
|
||||
if: success()
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
|
||||
### ✅ All Tests Completed
|
||||
|
||||
@@ -158,4 +162,6 @@ jobs:
|
||||
- ✅ Clink shell environment (Windows cmd.exe with Clink)
|
||||
- ✅ PowerShell environment (with Cmder profile)
|
||||
- ✅ Bash environment (Git Bash integration)
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
24
.github/workflows/vendor.yml
vendored
24
.github/workflows/vendor.yml
vendored
@@ -31,12 +31,14 @@ jobs:
|
||||
- name: Summary - Workflow started
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$summary = @"
|
||||
## 📦 Update Vendor - Workflow Summary
|
||||
|
||||
Checking for vendor dependency updates...
|
||||
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
- id: make-changes
|
||||
name: Checking for updates
|
||||
@@ -66,22 +68,24 @@ jobs:
|
||||
run: |
|
||||
$count = $env:COUNT_UPDATED
|
||||
if ($count -eq 0) {
|
||||
@"
|
||||
$summary = @"
|
||||
### ✅ No Updates Available
|
||||
|
||||
All vendor dependencies are up to date.
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
} else {
|
||||
$word = if ($count -eq 1) { 'dependency' } else { 'dependencies' }
|
||||
@"
|
||||
$summary = @"
|
||||
### 🔄 Updates Found
|
||||
|
||||
**$count** vendor $word updated:
|
||||
|
||||
$env:UPDATE_MESSAGE
|
||||
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
}
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
- uses: peter-evans/create-pull-request@v7
|
||||
if: env.COUNT_UPDATED > 0
|
||||
@@ -100,9 +104,9 @@ jobs:
|
||||
if: env.COUNT_UPDATED > 0
|
||||
shell: pwsh
|
||||
run: |
|
||||
@"
|
||||
$Summary = @"
|
||||
### 🎉 Pull Request Created
|
||||
|
||||
|
||||
A pull request has been created to update the vendor dependencies.
|
||||
|
||||
**Branch:** ``update-vendor``
|
||||
@@ -110,4 +114,6 @@ jobs:
|
||||
**Updated dependencies:** $env:LIST_UPDATED
|
||||
|
||||
> Please review and merge the pull request to apply the updates.
|
||||
"@ | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
"@
|
||||
|
||||
$summary | Add-Content -Path $env:GITHUB_STEP_SUMMARY -Encoding utf8
|
||||
|
||||
79
CHANGELOG.md
79
CHANGELOG.md
@@ -1,5 +1,84 @@
|
||||
# Change Log
|
||||
|
||||
## [1.3.25](https://github.com/cmderdev/cmder/tree/v1.3.25) (2024-05-31)
|
||||
|
||||
### Changes
|
||||
|
||||
- Component Updates
|
||||
- Update Git for Windows to 2.45.1.windows.1.
|
||||
- Update ConEmu to 24.05.31.
|
||||
- Clink 1.6.14.
|
||||
- clink-completions 0.5.2.
|
||||
|
||||
- Add `SECURITY.md` and refresh CI workflows and actions.
|
||||
- Enable `match.expand_envvars` and improve git diagnostics for improper versions.
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fix #2944.
|
||||
- Fix script error when the working directory contains `%`.
|
||||
- Remove environment refresh race condition.
|
||||
|
||||
## [1.3.24](https://github.com/cmderdev/cmder/tree/v1.3.24) (2023-07-24)
|
||||
|
||||
### Changes
|
||||
|
||||
- Update `build.yml` workflow.
|
||||
|
||||
## [1.3.23](https://github.com/cmderdev/cmder/tree/v1.3.23) (2023-07-24)
|
||||
|
||||
### Changes
|
||||
|
||||
- Update ConEmu (conemu-maximus5) to 23.07.24.
|
||||
|
||||
## [1.3.22](https://github.com/cmderdev/cmder/tree/v1.3.22) (2023-07-24)
|
||||
|
||||
### Changes
|
||||
|
||||
- Handle Clink injction differently in `init.bat`.
|
||||
- Changes to `clink_settings.lua.default`.
|
||||
- Do not add commands to Clink Command Line History that begin with whitespace as a default.
|
||||
- This can be changed to the old behavior by setting `history_ignore_space` to `0` in `config\clink_settings.lua`.
|
||||
- `history.max_lines` is now defaults to `25000` instead of `10000`.
|
||||
- This can be changed back to the old behavior by setting `history_max_lines` to `10000` in `config\clink_settings.lua`.
|
||||
- `history.shared` now defaults to `False` instead of `True`.
|
||||
- The previous default of `True` was causing issues with some users when using Cmder in multiple sessions.
|
||||
- This can be changed back to the old behavior by setting `history_shared` to `1` in `config\clink_settings.lua`.
|
||||
|
||||
- Component Updates
|
||||
- Git for Windows to 2.41.0.windows.3
|
||||
- Clink to 1.5.1
|
||||
- ConEmu to 23.07.23
|
||||
- clink-completions to 0.4.10
|
||||
|
||||
- Remove AppVeyor configuration and add CodeQL scanning and Dependabot updates.
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fix `/task "<taskName>"` handling.
|
||||
- Skip clink injection when initialization fails fatally.
|
||||
- Fix errors when git/svn/hg are not installed and in profile.d PowerShell scripts.
|
||||
|
||||
## [1.3.21](https://github.com/cmderdev/cmder/tree/v1.3.21) (2022-12-19)
|
||||
|
||||
### Fixes
|
||||
|
||||
- Fix #2789.
|
||||
- Fix Git Bash `GIT_INSTALL_ROOT` handling.
|
||||
|
||||
### Changes
|
||||
|
||||
- Refactor `clink.lua` to speed up the prompt.
|
||||
- Refactor and Cleanup `init.bat` and related scripts.
|
||||
- Refactor and Cleanup `profile.ps1` and related scripts.
|
||||
- Remove handling of `clink` and `tcc` incompatibility.
|
||||
- Update ConEmu to mitigate CVE-2022-46387.
|
||||
- Update Git for Windows to 2.39.0.windows.1 and Clink to 1.4.4.
|
||||
|
||||
### Adds
|
||||
|
||||
- Add `show_warning` function to `vendor\lib\lib_console.cmd` for showing warning messages in yellow.
|
||||
|
||||
## [1.3.20](https://github.com/cmderdev/cmder/tree/v1.3.20) (2022-03-18)
|
||||
|
||||
### Changes
|
||||
|
||||
116
vendor/clink.lua
vendored
116
vendor/clink.lua
vendored
@@ -324,7 +324,7 @@ end
|
||||
-- Find out current branch
|
||||
-- @return {nil|git branch name}
|
||||
---
|
||||
local function get_git_branch(git_dir)
|
||||
local function get_git_branch(git_dir, fast)
|
||||
git_dir = git_dir or get_git_dir()
|
||||
|
||||
-- If git directory not found then we're probably outside of repo
|
||||
@@ -341,8 +341,90 @@ local function get_git_branch(git_dir)
|
||||
-- if HEAD matches branch expression, then we're on named branch
|
||||
-- otherwise it is a detached commit
|
||||
local branch_name = HEAD:match('ref: refs/heads/(.+)')
|
||||
if os.getenv("CLINK_DEBUG_GIT_REFTABLE") then
|
||||
branch_name = '.invalid'
|
||||
end
|
||||
|
||||
return branch_name or 'HEAD detached at '..HEAD:sub(1, 7)
|
||||
-- If the branch name is ".invalid" and the fast method wasn't requested,
|
||||
-- then invoke git.exe to get accurate current branch info (slow method).
|
||||
if branch_name == ".invalid" and not fast then
|
||||
local file
|
||||
branch_name = nil
|
||||
|
||||
-- Handle the most common case first.
|
||||
if not branch_name then
|
||||
file = io_popenyield("git --no-optional-locks branch 2>nul")
|
||||
if file then
|
||||
for line in file:lines() do
|
||||
local b = line:match("^%*%s+(.*)")
|
||||
if b then
|
||||
b = b:match("^%((HEAD detached at .*)%)") or b
|
||||
branch_name = b
|
||||
break
|
||||
end
|
||||
end
|
||||
file:close()
|
||||
end
|
||||
end
|
||||
|
||||
-- Handle the cases where "git branch" output is empty, but "git
|
||||
-- branch --show-current" shows the branch name (e.g. a new repo).
|
||||
if not branch_name then
|
||||
file = io_popenyield("git --no-optional-locks branch --show-current 2>nul")
|
||||
if file then
|
||||
for line in file:lines() do -- luacheck: ignore 512
|
||||
branch_name = line
|
||||
break
|
||||
end
|
||||
file:close()
|
||||
end
|
||||
end
|
||||
else
|
||||
branch_name = branch_name or 'HEAD detached at '..HEAD:sub(1, 7)
|
||||
end
|
||||
|
||||
return branch_name
|
||||
end
|
||||
|
||||
local function get_git_remote(git_dir, branch)
|
||||
if not git_dir then return nil end
|
||||
if not branch then return nil end
|
||||
|
||||
local file = io.open(git_dir.."/config", 'r')
|
||||
if not file then return nil end
|
||||
|
||||
local git_config = {}
|
||||
|
||||
local function get_git_config_value(section, param)
|
||||
return git_config[section] and git_config[section][param] or nil
|
||||
end
|
||||
|
||||
local section
|
||||
for line in file:lines() do
|
||||
if (line:sub(1,1) == "[" and line:sub(-1) == "]") then
|
||||
if (line:sub(2,5) == "lfs ") then
|
||||
section = nil -- skip LFS entries as there can be many and we never use them
|
||||
else
|
||||
section = line:sub(2,-2)
|
||||
git_config[section] = git_config[section] or {}
|
||||
end
|
||||
elseif section then
|
||||
local param, value = line:match('^%s-([%w|_]+)%s-=%s+(.+)$')
|
||||
if (param and value ~= nil) then
|
||||
git_config[section][param] = value
|
||||
end
|
||||
end
|
||||
end
|
||||
file:close()
|
||||
|
||||
local remote_to_push = get_git_config_value('branch "'..branch..'"', 'remote') or ''
|
||||
local remote_ref = get_git_config_value('remote "'..remote_to_push..'"', 'push') or
|
||||
get_git_config_value('push', 'default')
|
||||
|
||||
local text = remote_to_push
|
||||
if remote_ref then text = text..'/'..remote_ref end
|
||||
|
||||
return text ~= '' and text or nil
|
||||
end
|
||||
|
||||
---
|
||||
@@ -394,7 +476,7 @@ end
|
||||
-- Get the status and conflict status of working dir
|
||||
-- @return {bool <status>, bool <is_conflict>}
|
||||
---
|
||||
local function get_git_status()
|
||||
local function get_git_status(git_dir)
|
||||
local file = io_popenyield("git --no-optional-locks status --porcelain 2>nul")
|
||||
if not file then
|
||||
return {}
|
||||
@@ -416,7 +498,10 @@ local function get_git_status()
|
||||
end
|
||||
file:close()
|
||||
|
||||
return { status = is_status, conflict = conflict_found }
|
||||
local branch = get_git_branch(git_dir, false--[[fast]])
|
||||
local remote = get_git_remote(git_dir, branch)
|
||||
|
||||
return { status = is_status, branch = branch, remote = remote, conflict = conflict_found }
|
||||
end
|
||||
|
||||
---
|
||||
@@ -515,11 +600,11 @@ end
|
||||
-- Use a prompt coroutine to get git status in the background.
|
||||
-- Cache the info so we can reuse it next time to reduce flicker.
|
||||
---
|
||||
local function get_git_info_table()
|
||||
local function get_git_info_table(git_dir)
|
||||
local info = clink_promptcoroutine(function ()
|
||||
-- Use git status if allowed.
|
||||
local cmderGitStatusOptIn = get_git_status_setting()
|
||||
return cmderGitStatusOptIn and get_git_status() or {}
|
||||
return cmderGitStatusOptIn and get_git_status(git_dir) or {}
|
||||
end)
|
||||
if not info then
|
||||
info = cached_info.git_info or {}
|
||||
@@ -539,10 +624,11 @@ local function git_prompt_filter()
|
||||
local git_dir = get_git_dir()
|
||||
local color
|
||||
if git_dir then
|
||||
local branch = get_git_branch(git_dir)
|
||||
local branch = get_git_branch(git_dir, true--[[fast]])
|
||||
if branch then
|
||||
-- If in a different repo or branch than last time, discard cached info.
|
||||
if cached_info.git_dir ~= git_dir or cached_info.git_branch ~= branch then
|
||||
if cached_info.git_dir ~= git_dir or
|
||||
(branch ~= ".invalid" and cached_info.git_branch ~= branch) then
|
||||
cached_info.git_info = nil
|
||||
cached_info.git_dir = git_dir
|
||||
cached_info.git_branch = branch
|
||||
@@ -550,10 +636,22 @@ local function git_prompt_filter()
|
||||
|
||||
-- If we're inside of git repo then try to detect current branch
|
||||
-- Has branch => therefore it is a git folder, now figure out status
|
||||
local gitInfo = get_git_info_table()
|
||||
local gitInfo = get_git_info_table(git_dir)
|
||||
local gitStatus = gitInfo.status
|
||||
local gitConflict = gitInfo.conflict
|
||||
|
||||
-- Compensate for git reftables.
|
||||
branch = gitInfo.branch or branch
|
||||
if branch == ".invalid" then
|
||||
branch = "Loading..."
|
||||
elseif gitInfo.remote then
|
||||
branch = branch.." -> "..gitInfo.remote
|
||||
end
|
||||
|
||||
-- Prevent an older clink-completions git_prompt.lua scripts from
|
||||
-- modifying the prompt.
|
||||
branch = "\x1b[10m"..branch
|
||||
|
||||
if gitStatus == nil then
|
||||
color = get_unknown_color()
|
||||
elseif gitStatus then
|
||||
|
||||
Reference in New Issue
Block a user