Compare commits

..

5 Commits

12 changed files with 262 additions and 96 deletions

View File

@ -30,9 +30,7 @@ jobs:
build:
name: Build Project
runs-on: windows-latest
permissions:
contents: write
discussions: write
steps:
- name: Check out repository code (Action from GitHub)
uses: actions/checkout@v3

View File

@ -3,25 +3,20 @@
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ "master" ]
paths-ignore:
- '**/*.md'
- '**/*.txt'
- '.github/**'
- '**/.gitignore'
pull_request:
# The branches below must be a subset of the branches above
branches: [ "master" ]
paths-ignore:
- '**/*.md'
- '**/*.txt'
- '.github/**'
- '**/.gitignore'
schedule:
- cron: '30 19 * * 0'

View File

@ -4,19 +4,9 @@ on:
push:
branches:
- master
paths-ignore:
- '**/*.md'
- '**/*.txt'
- '.github/**'
- '**/.gitignore'
pull_request:
branches:
- master
paths-ignore:
- '**/*.md'
- '**/*.txt'
- '.github/**'
- '**/.gitignore'
defaults:
run:

View File

@ -1,22 +0,0 @@
# Security Policy
## Supported Versions
| Version | Supported |
| ------- | ------------------ |
| 1.3.x | :white_check_mark: |
| < 1.3 | |
## Reporting a Vulnerability
Please report any vulnerabilities to [MartiUK](https://github.com/MartiUK).
Please include as much of the information listed below as you can to help us better understand and resolve the issue:
The type of issue
Full paths of source file(s) related to the manifestation of the issue
The location of the affected source code (tag/branch/commit or direct URL)
Any special configuration required to reproduce the issue
Step-by-step instructions to reproduce the issue
Proof-of-concept or exploit code (if possible)
Impact of the issue, including how an attacker might exploit the issue

60
appveyor.yml Normal file
View File

@ -0,0 +1,60 @@
#---------------------------------#
# general configuration #
#---------------------------------#
version: 1.0.{build}-{branch}
# branches to build
branches:
# blacklist
except:
- gh-pages
#---------------------------------#
# environment configuration #
#---------------------------------#
# Operating system (build VM template)
os: Visual Studio 2022
#---------------------------------#
# build configuration #
#---------------------------------#
build_script:
- ps: cd scripts; .\build.ps1 -Compile -verbose
after_build:
- ps: .\pack.ps1 -verbose
# Disable test search, since we don't have any.
test: off
#---------------------------------#
# artifacts #
#---------------------------------#
artifacts:
- path: build\cmder.zip
name: cmderzip
- path: build\cmder.7z
name: cmder7z
- path: build\cmder_mini.zip
name: cmdermini
- path: build\hashes.txt
name: hashes
#---------------------------------#
# notifications #
#---------------------------------#
notifications:
# Webhook
- provider: Webhook
url: https://webhooks.gitter.im/e/d673abb1b2e659dcd625
on_build_success: true
on_build_failure: true
on_build_status_changed: true

1
vendor/bin/add-cmderrootenvar.ps1 vendored Normal file
View File

@ -0,0 +1 @@
setx cmder_root "${env:cmder_root}"

36
vendor/bin/add-cmdertodesktop.ps1 vendored Normal file
View File

@ -0,0 +1,36 @@
if (test-path "c:\windows\set-shortcut.ps1") {
$setShortcut = "c:\windows\set-shortcut.ps1"
}
if (test-path "${env:USERPROFILE}\cmderdev") {
$env:cmder_root = "${env:USERPROFILE}\cmderdev"
write-host "Creating '${env:USERPROFILE}\Desktop\Cmderdev.lnk'..."
if (test-path "${env:USERPROFILE}\cmderdev\vendor\bin\set-shortcut.ps1") {
$setShortcut = "$env:cmder_root\vendor\bin\set-shortcut.ps1"
}
start-process -NoNewWindow -filePath "powershell.exe" -ArgumentList "-file `"${setShortcut}`" -sourceexe `"${env:cmder_root}\Cmder.exe`" -DestinationPath `"${env:USERPROFILE}\Desktop\Cmderdev.lnk`" -WorkingDirectory `"${env:cmder_root}`""
}
if (test-path "${env:USERPROFILE}\cmder") {
$env:cmder_root = "${env:USERPROFILE}\cmder"
if (test-path "${cmder_root}\vendor\bin\set-shortcut.ps1") {
$setShortcut = "$env:cmder_root\vendor\bin\set-shortcut.ps1"
}
write-host "Creating '${env:USERPROFILE}\Desktop\Cmder.lnk'..."
start-process -NoNewWindow -filePath "powershell.exe" -ArgumentList "-file `"${setShortcut}`" -sourceexe `"$env:cmder_root\Cmder.exe`" -DestinationPath `"${env:USERPROFILE}\Desktop\Cmder.lnk`" -WorkingDirectory `"${env:USERPROFILE}`""
} elseif (test-path "C:\tools\cmder") {
$env:cmder_root = "C:\tools\cmder"
if (test-path "${cmder_root}\vendor\bin\set-shortcut.ps1") {
$setShortcut = "$env:cmder_root\vendor\bin\set-shortcut.ps1"
}
write-host "Creating '${env:USERPROFILE}\Desktop\Cmder.lnk'..."
start-process -NoNewWindow -filePath "powershell.exe" -ArgumentList "-file `"${setShortcut}`" -sourceexe `"$env:cmder_root\Cmder.exe`" -DestinationPath `"${env:USERPROFILE}\Desktop\Cmder.lnk`" -WorkingDirectory `"${env:USERPROFILE}`""
}

39
vendor/bin/add-vscodeprofile.ps1 vendored Normal file
View File

@ -0,0 +1,39 @@
# VSCode
$VSCodeUserSettings = "$env:APPDATA/Code/User"
$VSCodeSettings = "$VSCodeUserSettings/settings.json";
$VSCodeSettingsNew = $VSCodeSettings.replace('.json', '-new.json')
if (test-path $VSCodeSettings) {
$data = get-content -path $VSCodeSettings -ErrorAction silentlycontinue | out-string | ConvertFrom-Json
}
else {
New-Item -ItemType directory $VSCodeUserSettings -force
$data = @{}
}
write-host $data
$data | Add-Member -force -Name 'terminal.integrated.defaultProfile.windows' -MemberType NoteProperty -Value "Cmder"
if ($null -eq $data.'terminal.integrated.profiles.windows') {
write-host "Adding 'terminal.integrated.profiles.windows'..."
$data | Add-Member -force -Name 'terminal.integrated.profiles.windows' -MemberType NoteProperty -Value @{}
}
write-host "Adding 'terminal.integrated.profiles.windows.Cmder' profile..."
$data.'terminal.integrated.profiles.windows'.'Cmder' = @{
"name" = "Cmder";
"path" = @(
"`${env:windir}/Sysnative/cmd.exe";
"`${env:windir}/System32/cmd.exe";
);
"args" = @(
"/k";
"`${env:USERPROFILE}/cmderdev/vendor/bin/vscode_init.cmd");
"icon" = "terminal-cmd";
"color" = "terminal.ansiGreen";
};
$data | ConvertTo-Json -depth 100 | set-content $VSCodeSettings

View File

@ -0,0 +1,74 @@
# Windows Terminal
$windowsTerminalFolder = (dir "$env:userprofile/AppData/Local/Packages/Microsoft.WindowsTerminal_*").name
$windowsTerminalPath = "$env:userprofile/AppData/Local/Packages/$windowsTerminalFolder"
$windowsTerminalSettings = $windowsTerminalPath + '/localState/settings.json'
$windowsTerminalSettingsNew = $windowsTerminalPath + '/localState/settings-new.json'
if (test-path "$env:userprofile/Documents/windows_terminal_settings.json.default") {
if (test-path "$windowsTerminalPath/LocalState/settings.json") {
del "$env:userprofile/Documents/windows_terminal_settings.json.default"
} else {
move-item -path $env:userprofile/Documents/windows_terminal_settings.json.default -destination $windowsTerminalPath/LocalState/settings.json
}
}
if (test-path "$env:userprofile/Documents/windows_terminal_state.json.default") {
if (test-path "$windowsTerminalPath/LocalState/state.json") {
del "$env:userprofile/Documents/windows_terminal_state.json.default"
} else {
move-item -path $env:userprofile/Documents/windows_terminal_state.json.default -destination $windowsTerminalPath/LocalState/state.json
}
}
if (test-path "$windowsTerminalPath/LocalState/state.json") {
$json = get-content $windowsTerminalSettings | ConvertFrom-Json
$json.defaultProfile="{00000000-0000-0000-ba54-000000000132}"
$cmderFound = $false
$cmderAsAdminFound = $false
foreach ($profile in $json.profiles.list) {
if ($profile.Name -eq "Cmder") {
$cmderFound = $true
}
elseIf ($profile.Name -eq "Cmder as Admin") {
$cmderAsAdminFound = $true
}
}
if (-not $cmderFound) {
write-host "Adding 'Cmder' to Windows Terminal..."
$json.profiles.list += @{
commandline="cmd.exe /k `"%USERPROFILE%/cmderdev/vendor/init.bat`"";
startingDirectory="%USERPROFILE%/cmderdev";
icon="%USERPROFILE%/cmderdev/icons/cmder.ico";
closeOnExit="graceful";
guid="{00000000-0000-0000-ba54-000000000132}";
hidden=$false;
name="Cmder"
}
}
if (-not $cmderAsAdminFound) {
write-host "Adding 'Cmder as Admin' to Windows Terminal..."
$json.profiles.list += @{
commandline="cmd.exe /k `"%USERPROFILE%/cmderdev/vendor/init.bat`"";
startingDirectory="%USERPROFILE%/cmderdev";
icon="%USERPROFILE%/cmderdev/icons/cmder_red.ico";
closeOnExit="graceful";
guid="{00000000-0000-0000-ba54-000000000133}";
hidden=$false;
elevate=$true;
name="Cmder as Admin"
}
}
$json | ConvertTo-Json -depth 100 | set-content $windowsTerminalSettings
}
else {
write-host "Cannot add profiles for Windows Terminal. The Windows Terminal settings file does not exist!"
}

21
vendor/bin/set-shortcut.ps1 vendored Normal file
View File

@ -0,0 +1,21 @@
[CmdletBinding()]
param(
[Parameter()]
[string]$SourceExe,
[string]$Arguments,
[string]$DestinationPath,
[string]$WorkingDirectory,
[String]$IconLocation
)
if ($IconLocation -eq '') {
$IconLocation = $SourceExe
}
$WshShell = New-Object -comObject WScript.Shell
$Shortcut = $WshShell.CreateShortcut($destinationPath)
$Shortcut.TargetPath = $SourceExe
$Shortcut.Arguments = $Arguments
$shortcut.WorkingDirectory = $WorkingDirectory
$shortcut.IconLocation = $IconLocation
$Shortcut.Save()

58
vendor/clink.lua vendored
View File

@ -51,37 +51,11 @@ local function get_unknown_color()
end
---
-- Escapes special characters in a string.gsub `find` parameter, so that it
-- can be matched as a literal plain text string, i.e. disable Lua pattern
-- matching. See "Patterns" (https://www.lua.org/manual/5.2/manual.html#6.4.1).
-- @param {string} text Text to escape
-- @returns {string} Escaped text
-- Makes a string safe to use as the replacement in string.gsub
---
local function escape_gsub_find_arg(text)
return text and text:gsub("([-+*?.%%()%[%]$^])", "%%%1") or ""
end
---
-- Escapes special characters in a string.gsub `replace` parameter, so that it
-- can be replaced as a literal plain text string, i.e. disable Lua pattern
-- matching. See "Patterns" (https://www.lua.org/manual/5.2/manual.html#6.4.1).
-- @param {string} text Text to escape
-- @returns {string} Escaped text
---
local function escape_gsub_replace_arg(text)
return text and text:gsub("%%", "%%%%") or ""
end
---
-- Perform string.sub, but disable Lua pattern matching and just treat both
-- the `find` and `replace` parameters as a literal plain text replacement.
-- @param {string} str Text in which to perform find and replace
-- @param {string} find Text to find (plain text; not a Lua pattern)
-- @param {string} replace Replacement text (plain text; not a Lua pattern)
-- @returns {string} Copy of the input `str` with `find` replaced by `replace`
---
local function gsub_plain(str, find, replace)
return string.gsub(str, escape_gsub_find_arg(find), escape_gsub_replace_arg(replace))
local function verbatim(s)
s = string.gsub(s, "%%", "%%%%")
return s
end
-- Extracts only the folder name from the input Path
@ -179,7 +153,7 @@ local function set_prompt_filter()
end
if prompt_useHomeSymbol and string.find(cwd, clink.get_env("HOME")) then
cwd = gsub_plain(cwd, clink.get_env("HOME"), prompt_homeSymbol)
cwd = string.gsub(cwd, clink.get_env("HOME"), prompt_homeSymbol)
end
local uah = ''
@ -202,14 +176,14 @@ local function set_prompt_filter()
local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or ""
local prompt = "{uah}{cwd}" .. version_control .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m "
prompt = gsub_plain(prompt, "{uah}", uah)
prompt = gsub_plain(prompt, "{cwd}", cwd)
prompt = gsub_plain(prompt, "{env}", env)
clink.prompt.value = gsub_plain(prompt, "{lamb}", prompt_lambSymbol)
prompt = string.gsub(prompt, "{uah}", uah)
prompt = string.gsub(prompt, "{cwd}", cwd)
prompt = string.gsub(prompt, "{env}", env)
clink.prompt.value = string.gsub(prompt, "{lamb}", prompt_lambSymbol)
end
local function percent_prompt_filter()
clink.prompt.value = gsub_plain(clink.prompt.value, "{percent}", "%")
clink.prompt.value = string.gsub(clink.prompt.value, "{percent}", "%%")
end
---
@ -558,13 +532,13 @@ local function git_prompt_filter()
color = colors.conflict
end
clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", " "..color.."("..branch..")")
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", " "..color.."("..verbatim(branch)..")")
return false
end
end
-- No git present or not in git file
clink.prompt.value = gsub_plain(clink.prompt.value, "{git}", "")
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", "")
return false
end
@ -603,13 +577,13 @@ local function hg_prompt_filter()
end
local result = color .. "(" .. branch .. ")"
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", " "..result)
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", " "..verbatim(result))
return false
end
end
-- No hg present or not in hg repo
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", "")
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", "")
end
local function svn_prompt_filter()
@ -662,13 +636,13 @@ local function svn_prompt_filter()
color = colors.dirty
end
clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", " "..color.."("..branch..")")
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", " "..color.."("..verbatim(branch)..")")
return false
end
end
-- No svn present or not in svn file
clink.prompt.value = gsub_plain(clink.prompt.value, "{svn}", "")
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", "")
return false
end

16
vendor/sources.json vendored
View File

@ -1,22 +1,22 @@
[
{
"name": "git-for-windows",
"version": "2.41.0.windows.3",
"url": "https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.3/PortableGit-2.41.0.3-64-bit.7z.exe"
"version": "2.40.1.windows.1",
"url": "https://github.com/git-for-windows/git/releases/download/v2.40.1.windows.1/PortableGit-2.40.1-64-bit.7z.exe"
},
{
"name": "clink",
"version": "1.5.1",
"url": "https://github.com/chrisant996/clink/releases/download/v1.5.1/clink.1.5.1.1e9e51.zip"
"version": "1.4.24",
"url": "https://github.com/chrisant996/clink/releases/download/v1.4.24/clink.1.4.24.688975.zip"
},
{
"name": "conemu-maximus5",
"version": "23.07.24",
"url": "https://github.com/Maximus5/ConEmu/releases/download/v23.07.24/ConEmuPack.230724.7z"
"version": "22.12.18",
"url": "https://github.com/Maximus5/ConEmu/releases/download/v22.12.18/ConEmuPack.221218.7z"
},
{
"name": "clink-completions",
"version": "0.4.10",
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.4.10.zip"
"version": "0.4.8",
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.4.8.zip"
}
]