Compare commits

..

1 Commits

Author SHA1 Message Date
6ca74732a0 Create SECURITY.md 2023-07-27 13:21:11 +01:00
21 changed files with 133 additions and 208 deletions

View File

@ -19,7 +19,7 @@ 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@v4 - uses: actions/checkout@v3
with: with:
fetch-depth: 0 # fetch all history for all branches and tags fetch-depth: 0 # fetch all history for all branches and tags

View File

@ -11,7 +11,7 @@ on:
tags: tags:
- "v*" - "v*"
pull_request: pull_request:
branches: [ "master", "development" ] branches: [ "master" ]
#---------------------------------# #---------------------------------#
# environment configuration # # environment configuration #
@ -35,12 +35,12 @@ 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@v4 uses: actions/checkout@v3
with: with:
fetch-depth: 0 fetch-depth: 0
- name: Add MSBuild to PATH - name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v1
- name: Build Cmder Launcher - name: Build Cmder Launcher
shell: pwsh shell: pwsh
@ -53,32 +53,32 @@ jobs:
run: .\pack.ps1 -verbose run: .\pack.ps1 -verbose
- name: Upload artifact (cmder.zip) - name: Upload artifact (cmder.zip)
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v3
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@v4 uses: actions/upload-artifact@v3
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@v4 uses: actions/upload-artifact@v3
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@v4 uses: actions/upload-artifact@v3
with: with:
path: build/hashes.txt path: build/hashes.txt
name: hashes.txt name: hashes.txt
- name: Create Release - name: Create Release
uses: softprops/action-gh-release@v2 uses: softprops/action-gh-release@v1
with: with:
files: | files: |
build/cmder.zip build/cmder.zip

View File

@ -8,7 +8,7 @@ name: "CodeQL"
on: on:
push: push:
branches: [ "master", "development" ] branches: [ "master" ]
paths-ignore: paths-ignore:
- '**/*.md' - '**/*.md'
- '**/*.txt' - '**/*.txt'
@ -16,7 +16,7 @@ on:
- '**/.gitignore' - '**/.gitignore'
pull_request: pull_request:
# The branches below must be a subset of the branches above # The branches below must be a subset of the branches above
branches: [ "master", "development" ] branches: [ "master" ]
paths-ignore: paths-ignore:
- '**/*.md' - '**/*.md'
- '**/*.txt' - '**/*.txt'
@ -45,11 +45,11 @@ jobs:
steps: steps:
- name: Checkout repository - name: Checkout repository
uses: actions/checkout@v4 uses: actions/checkout@v3
# Initializes the CodeQL tools for scanning. # Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL - name: Initialize CodeQL
uses: github/codeql-action/init@v3 uses: github/codeql-action/init@v2
with: with:
languages: ${{ matrix.language }} languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file. # If you wish to specify custom queries, you can do so here or in a config file.
@ -60,7 +60,7 @@ jobs:
# queries: security-extended,security-and-quality # queries: security-extended,security-and-quality
- name: Add MSBuild to PATH - name: Add MSBuild to PATH
uses: microsoft/setup-msbuild@v2 uses: microsoft/setup-msbuild@v1
- name: Build Cmder Launcher - name: Build Cmder Launcher
shell: pwsh shell: pwsh
@ -68,6 +68,6 @@ jobs:
run: .\build.ps1 -Compile -verbose run: .\build.ps1 -Compile -verbose
- name: Perform CodeQL Analysis - name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v3 uses: github/codeql-action/analyze@v2
with: with:
category: "/language:${{matrix.language}}" category: "/language:${{matrix.language}}"

View File

@ -4,7 +4,6 @@ on:
push: push:
branches: branches:
- master - master
- development
paths-ignore: paths-ignore:
- '**/*.md' - '**/*.md'
- '**/*.txt' - '**/*.txt'
@ -13,7 +12,6 @@ on:
pull_request: pull_request:
branches: branches:
- master - master
- development
paths-ignore: paths-ignore:
- '**/*.md' - '**/*.md'
- '**/*.txt' - '**/*.txt'
@ -38,7 +36,7 @@ jobs:
continue-on-error: false continue-on-error: false
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
- name: Initialize vendors - name: Initialize vendors
shell: pwsh shell: pwsh
working-directory: scripts working-directory: scripts

View File

@ -24,7 +24,7 @@ jobs:
pull-requests: write pull-requests: write
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v3
with: with:
fetch-depth: 0 fetch-depth: 0
@ -51,7 +51,7 @@ jobs:
Set-GHVariable -Name LIST_UPDATED -Value $listUpdated.Trim(', ') Set-GHVariable -Name LIST_UPDATED -Value $listUpdated.Trim(', ')
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 - uses: peter-evans/create-pull-request@v5
if: env.COUNT_UPDATED > 0 if: env.COUNT_UPDATED > 0
with: with:
title: 'Updates to `${{ env.COUNT_UPDATED }}` vendored dependencies' title: 'Updates to `${{ env.COUNT_UPDATED }}` vendored dependencies'

View File

@ -9,16 +9,14 @@
## Reporting a Vulnerability ## Reporting a Vulnerability
If you discover a security issue in our project, please report it to [MartiUK](https://github.com/MartiUK). We will acknowledge your email within 24 hours and provide a more detailed response within 48 hours. We will try to fix the issue as soon as possible and inform you when a new version is released. 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: Please include as much of the information listed below as you can to help us better understand and resolve the issue:
- The nature of the issue The type of issue
- The affected source file(s) with full paths Full paths of source file(s) related to the manifestation of the issue
- The location of the vulnerable code (tag/branch/commit or direct URL) The location of the affected source code (tag/branch/commit or direct URL)
- Any special configuration needed to reproduce the issue Any special configuration required to reproduce the issue
- Detailed steps to reproduce the issue Step-by-step instructions to reproduce the issue
- Proof-of-concept or exploit code (if possible) Proof-of-concept or exploit code (if possible)
- The impact of the issue, including how an attacker could exploit it Impact of the issue, including how an attacker might exploit the issue
Please do not disclose the vulnerability publicly until we have resolved it.

View File

@ -469,6 +469,9 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK); MessageBox(NULL, _T("Unable to create the ConEmu process!"), _T("Error"), MB_OK);
return; return;
} }
LRESULT lr = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)"Environment", SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 5000, NULL);
lr = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, (LPARAM)L"Environment", SMTO_ABORTIFHUNG | SMTO_NOTIMEOUTIFNOTHUNG, 5000, NULL); // For Windows >= 8
} }
bool IsUserOnly(std::wstring opt) bool IsUserOnly(std::wstring opt)

View File

@ -1,8 +1,9 @@
/** /**
* WARNING: This file should NOT be manually modified! * WARNING: do NOT modify this file! the content of this file should be
* The contents will be automatically generated using the `.ps1` PowerShell scripts, * automatically genereted before AppVeyor builds using the
* during builds by the CI. * respective .ps1 Powershell scripts.
*
*/ */
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////

View File

@ -79,7 +79,7 @@ if ($Compile) {
Write-Verbose "Building the launcher..." Write-Verbose "Building the launcher..."
# Reference: https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference # Referene: https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release /m msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release /m
if ($LastExitCode -ne 0) { if ($LastExitCode -ne 0) {

View File

@ -9,5 +9,5 @@ if "%cmder_init%" == "1" (
) )
pushd "%CMDER_ROOT%" pushd "%CMDER_ROOT%"
call "%CMDER_ROOT%\vendor\init.bat" /f %* call "%CMDER_ROOT%\vendor\init.bat" /f
popd popd

14
vendor/bin/excd.cmd vendored
View File

@ -1,8 +1,6 @@
@echo off @if "%~1"=="/?" (@cd %*)
set excd=%* @set excd=%*
set excd=%excd:"=% @set excd=%excd:"=%
set excd_param=/d @if "%excd:~0,1%"=="~" (@set excd=%userprofile%\%excd:~1%)
if /i "%excd:~0,2%"=="/d" set "excd=%excd:~2%" @if not "%~1"=="/d" (@set excd_param="/d") else (@set excd_param=)
if "%excd:~0,1%"=="~" (set excd=%userprofile%\%excd:~1%) @cd %excd_param% "%excd%"
if "%excd:~0,1%"=="/" (set excd_param=)
cd %excd_param% %excd%

View File

@ -1,10 +1,6 @@
# For explanation of these and other settings see: # For explanation of these and other settings see:
# https://chrisant996.github.io/clink/clink.html # https://chrisant996.github.io/clink/clink.html
# name: Expand envvars when completing
# type: boolean
match.expand_envvars = True
# name: Sets how command history expansion is applied # name: Sets how command history expansion is applied
# type: enum # type: enum
# options: off,on,not_squoted,not_dquoted,not_quoted # options: off,on,not_squoted,not_dquoted,not_quoted

View File

@ -48,15 +48,15 @@ prompt_overrideSvnStatusOptIn = false
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors -- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
-- Effects: https://github.com/cmderdev/cmder/wiki/Customization#list-of-effects -- Effects: https://github.com/cmderdev/cmder/wiki/Customization#list-of-effects
-- --
-- Green: "\x1b[1;32;49m" -- Green: "\x1b[1;33;49m"
-- Yellow: "\x1b[1;33;49m" -- Yellow: "\x1b[1;32;49m"
-- Light Grey: "\x1b[1;30;49m" -- Light Grey: "\x1b[1;30;49m"
-- Prompt Element Colors -- Prompt Element Colors
uah_color = "\x1b[1;33;49m" -- Yellow uah = [user]@[hostname] uah_color = "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
cwd_color = "\x1b[1;32;49m" -- Green cwd = Current Working Directory cwd_color = "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
lamb_color = "\x1b[1;30;49m" -- Light Grey = Lambda Color lamb_color = "\x1b[1;30;49m" -- Light Grey = Lambda Color
clean_color = "\x1b[37;1m" clean_color = "\x1b[37;1m"
dirty_color = "\x1b[33;3m" -- Yellow, Italic dirty_color = "\x1b[33;3m" -- Yellow, Italic
conflict_color = "\x1b[31;1m" -- Red, Bold conflict_color = "\x1b[31;1m" -- Red, Bold
unknown_color = "\x1b[37;1m" -- White, Bold = No VCS Status Branch Color unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color

68
vendor/git-prompt.sh vendored
View File

@ -1,35 +1,26 @@
# Returns 1 if git status for Cmder is disabled, otherwise returns 0
function getGitStatusSetting() { function getGitStatusSetting() {
local gitConfig gitStatusSetting=$(git --no-pager config -l 2>/dev/null)
# Get all git config entries for the current repository without pager if [[ -n ${gitStatusSetting} ]] && [[ ${gitStatusSetting} =~ cmder.status=false ]] || [[ ${gitStatusSetting} =~ cmder.shstatus=false ]]
gitConfig=$(git --no-pager config -l 2>/dev/null) || return 0 # treat failure as enabled
# Check if git status for Cmder is disabled
if [[ $gitConfig =~ (^|$'\n')cmder\.status=false($|$'\n') ]] || \
[[ $gitConfig =~ (^|$'\n')cmder\.shstatus=false($|$'\n') ]]
then then
return 1 # disabled echo false
else
echo true
fi fi
return 0
} }
# Prints current branch or detached HEAD short commit hash
function getSimpleGitBranch() { function getSimpleGitBranch() {
local gitDir gitDir=$(git rev-parse --git-dir 2>/dev/null)
gitDir=$(git rev-parse --git-dir 2>/dev/null) || return 0 if [ -z "$gitDir" ]; then
return 0
fi
local headFile="$gitDir/HEAD" headContent=$(< "$gitDir/HEAD")
[ -f "$headFile" ] || return 0 if [[ "$headContent" == "ref: refs/heads/"* ]]
local headContent
headContent=$(< "$headFile")
if [[ "$headContent" =~ ^ref:\ refs/heads/(.+)$ ]]
then then
echo " (${BASH_REMATCH[1]})" echo " (${headContent:16})"
else else
echo " (HEAD detached at ${headContent:0:7})" echo " (HEAD detached at ${headContent:0:7})"
fi fi
} }
@ -42,18 +33,18 @@ fi
if test -f ~/.config/git/git-prompt.sh if test -f ~/.config/git/git-prompt.sh
then then
if getGitStatusSetting if [[ $(getGitStatusSetting) == true ]]
then 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 PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]' # set window title
PS1='\[\033]0;${TITLEPREFIX:+$TITLEPREFIX:}${PWD//[^[:ascii:]]/?}\007\]' # set window title to TITLEPREFIX (if set) and current working directory # PS1="$PS1"'\n' # new line
# PS1="$PS1"'\n' # new line (disabled) PS1="$PS1"'\[\033[32m\]' # change to green
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"'\[\033[35m\]' # change to purple
PS1="$PS1"'\[\033[1;33m\]' # change to dark yellow in bold # PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
PS1="$PS1"'\[\033[33m\]' # change to brownish yellow
PS1="$PS1"'\w' # current working directory PS1="$PS1"'\w' # current working directory
if test -z "$WINELOADERNOEXEC" if test -z "$WINELOADERNOEXEC"
then then
@ -64,7 +55,7 @@ else
if test -f "$COMPLETION_PATH/git-prompt.sh" if test -f "$COMPLETION_PATH/git-prompt.sh"
then then
. "$COMPLETION_PATH/git-completion.bash" . "$COMPLETION_PATH/git-completion.bash"
if getGitStatusSetting if [[ $(getGitStatusSetting) == true ]]
then then
. "$COMPLETION_PATH/git-prompt.sh" . "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[\033[36m\]' # change color to cyan PS1="$PS1"'\[\033[36m\]' # change color to cyan
@ -75,22 +66,9 @@ else
fi fi
fi fi
fi fi
PS1="$PS1"'\[\033[0m\]' # reset color PS1="$PS1"'\[\033[0m\]' # change color
PS1="$PS1"'\n' # new line PS1="$PS1"'\n' # new line
PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold PS1="$PS1"'λ ' # prompt: always λ
PS1="$PS1"'λ ' # prompt: Cmder uses λ
PS1="$PS1"'\[\033[0m\]' # reset color
fi fi
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
# Evaluate all user-specific Bash completion scripts (if any)
if test -z "$WINELOADERNOEXEC"
then
for c in "$HOME"/bash_completion.d/*.bash
do
# Handle absence of any scripts (or the folder) gracefully
test ! -f "$c" ||
. "$c"
done
fi

2
vendor/init.bat vendored
View File

@ -426,7 +426,7 @@ if "%CMDER_ALIASES%" == "1" (
) )
:: Add aliases to the environment :: Add aliases to the environment
type "%user_aliases%" | %WINDIR%\System32\findstr /b /l /i "history=cat " >nul type "%user_aliases%" | findstr /b /l /i "history=cat " >nul
if "%ERRORLEVEL%" == "0" ( if "%ERRORLEVEL%" == "0" (
echo Migrating alias 'history' to new Clink 1.x.x... echo Migrating alias 'history' to new Clink 1.x.x...
call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history

View File

@ -10,8 +10,9 @@ if "%~1" == "/h" (
exit /b exit /b
:help
:::=============================================================================== :::===============================================================================
:::help - shows all sub routines in a .bat/.cmd file with documentation :::show_subs - shows all sub routines in a .bat/.cmd file with documentation
:::. :::.
:::include: :::include:
:::. :::.
@ -19,15 +20,16 @@ exit /b
:::. :::.
:::usage: :::usage:
:::. :::.
::: %lib_base% help "file" ::: %lib_base% show_subs "file"
:::. :::.
:::options: :::options:
:::. :::.
::: file <in> full path to file containing lib_routines to display ::: file <in> full path to file containing lib_routines to display
:::.
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
for /f "tokens=* delims=:" %%a in ('type "%~1" ^| %WINDIR%\System32\findstr /i /r "^:::"') do (
rem echo a="%%a"
:help
for /f "tokens=* delims=:" %%a in ('%WINDIR%\System32\findstr /i /r "^:::" "%~1"') do (
if "%%a"=="." ( if "%%a"=="." (
echo. echo.
) else if /i "%%a" == "usage" ( ) else if /i "%%a" == "usage" (
@ -42,13 +44,9 @@ exit /b
pause pause
exit /b exit /b
:cmder_shell
:::=============================================================================== :::===============================================================================
:::cmder_shell - Initializes the Cmder shell environment variables :::show_subs - shows all sub routines in a .bat/.cmd file with documentation
:::.
:::description:
:::.
::: This routine sets up the Cmder shell environment by detecting the
::: command shell and initializing related variables.
:::. :::.
:::include: :::include:
:::. :::.
@ -57,30 +55,15 @@ exit /b
:::usage: :::usage:
:::. :::.
::: %lib_base% cmder_shell ::: %lib_base% cmder_shell
:::.
:::options:
:::.
::: file <in> full path to file containing lib_routines to display
:::.
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
:cmder_shell
call :detect_comspec %ComSpec% call :detect_comspec %ComSpec%
exit /b exit /b
:::===============================================================================
:::detect_comspec - Detects the command shell being used:::
:::.
:::description:
:::.
::: This function sets the CMDER_SHELL variable to the name of the
::: detected command shell. It also initializes the CMDER_CLINK and
::: CMDER_ALIASES variables if they are not already defined.
:::.
:::include:
:::.
::: call "lib_base.cmd"
:::.
:::usage:
:::.
::: %lib_base% detect_comspec %ComSpec%
:::-------------------------------------------------------------------------------
:detect_comspec :detect_comspec
set CMDER_SHELL=%~n1 set CMDER_SHELL=%~n1
if not defined CMDER_CLINK ( if not defined CMDER_CLINK (
@ -91,27 +74,6 @@ exit /b
) )
exit /b exit /b
:::===============================================================================
:::update_legacy_aliases - Updates the legacy alias definitions in the user_aliases file
:::.
:::description:
:::.
::: This function checks if the user_aliases file contains the marker
::: ";= Add aliases below here". If the marker is not found, it creates
::: an initial user_aliases store by copying the default user_aliases file
::: from the CMDER_ROOT directory. If the CMDER_USER_CONFIG environment
::: variable is defined, it creates a backup of the existing user_aliases
::: file before copying the default file.
:::.
:::include:
:::.
::: call "lib_base.cmd"
:::.
:::usage:
:::.
::: %lib_base% update_legacy_aliases
:::-------------------------------------------------------------------------------
:update_legacy_aliases :update_legacy_aliases
type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul
if "%errorlevel%" == "1" ( if "%errorlevel%" == "1" (

View File

@ -12,6 +12,7 @@ if "%~1" == "/h" (
exit /b exit /b
:read_version
:::=============================================================================== :::===============================================================================
:::read_version - Get the git.exe version :::read_version - Get the git.exe version
:::. :::.
@ -33,7 +34,6 @@ exit /b
::: GIT_VERSION_[GIT SCOPE] <out> Env variable containing Git semantic version string ::: GIT_VERSION_[GIT SCOPE] <out> Env variable containing Git semantic version string
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
:read_version
:: clear the variables :: clear the variables
set GIT_VERSION_%~1= set GIT_VERSION_%~1=
@ -55,7 +55,6 @@ exit /b
set "GIT_VERSION=%%C" set "GIT_VERSION=%%C"
) else ( ) else (
echo "'git --version' returned an improper version string!" echo "'git --version' returned an improper version string!"
%print_debug% :read_version "returned string: '%%A %%B %%C' by executable path: %git_executable%"
pause pause
exit /b exit /b
) )
@ -64,6 +63,7 @@ exit /b
exit /b exit /b
:parse_version
:::=============================================================================== :::===============================================================================
:::parse_version - Parse semantic version string 'x.x.x.x' and return the pieces :::parse_version - Parse semantic version string 'x.x.x.x' and return the pieces
:::. :::.
@ -88,7 +88,6 @@ exit /b
::: [SCOPE]_BUILD <out> Scoped Build version. ::: [SCOPE]_BUILD <out> Scoped Build version.
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
:parse_version
:: process a `x.x.x.xxxx.x` formatted string :: process a `x.x.x.xxxx.x` formatted string
%print_debug% :parse_version "ARGV[1]=%~1, ARGV[2]=%~2" %print_debug% :parse_version "ARGV[1]=%~1, ARGV[2]=%~2"
@ -111,8 +110,9 @@ exit /b
:endlocal_set_git_version :endlocal_set_git_version
:validate_version
:::=============================================================================== :::===============================================================================
:::validate_version - Validate semantic version string 'x.x.x.x' :::validate_version - Validate semantic version string 'x.x.x.x'.
:::. :::.
:::include: :::include:
:::. :::.
@ -128,7 +128,6 @@ exit /b
::: [VERSION] <in> Semantic version String. Ex: 1.2.3.4 ::: [VERSION] <in> Semantic version String. Ex: 1.2.3.4
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
:validate_version
:: now parse the version information into the corresponding variables :: now parse the version information into the corresponding variables
%print_debug% :validate_version "ARGV[1]=%~1, ARGV[2]=%~2" %print_debug% :validate_version "ARGV[1]=%~1, ARGV[2]=%~2"
@ -143,8 +142,9 @@ exit /b
) )
exit /b exit /b
:compare_versions
:::=============================================================================== :::===============================================================================
:::compare_version - Compare semantic versions and return latest version :::compare_version - Compare semantic versions return latest version.
:::. :::.
:::include: :::include:
:::. :::.
@ -160,7 +160,6 @@ exit /b
::: [SCOPE2] <in> Example: VENDOR ::: [SCOPE2] <in> Example: VENDOR
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
:compare_versions
:: checks all major, minor, patch and build variables for the given arguments. :: checks all major, minor, patch and build variables for the given arguments.
:: whichever binary that has the most recent version will be used based on the return code. :: whichever binary that has the most recent version will be used based on the return code.
@ -185,12 +184,7 @@ exit /b
endlocal & exit /b 0 endlocal & exit /b 0
:::=============================================================================== :::===============================================================================
:::is_git_shim - Check if the directory has a git.shim file :::is_git_shim
:::.
:::description:
:::.
::: Shim is a small helper program for Scoop that calls the executable configured in git.shim file
::: See: github.com/ScoopInstaller/Shim and github.com/cmderdev/cmder/pull/1905
:::. :::.
:::include: :::include:
:::. :::.
@ -207,7 +201,7 @@ exit /b
:is_git_shim :is_git_shim
pushd "%~1" pushd "%~1"
:: check if there is a shim file - if yes, read the actual executable path :: check if there's shim - and if yes follow the path
setlocal enabledelayedexpansion setlocal enabledelayedexpansion
if exist git.shim ( if exist git.shim (
for /F "tokens=2 delims== " %%I in (git.shim) do ( for /F "tokens=2 delims== " %%I in (git.shim) do (
@ -224,7 +218,7 @@ exit /b
exit /b exit /b
:::=============================================================================== :::===============================================================================
:::compare_git_versions - Compare the user git version against the vendored version :::compare_git_versions
:::. :::.
:::include: :::include:
:::. :::.
@ -258,7 +252,7 @@ exit /b
:: if the user provided git executable is not found :: if the user provided git executable is not found
IF ERRORLEVEL -255 IF NOT ERRORLEVEL -254 ( IF ERRORLEVEL -255 IF NOT ERRORLEVEL -254 (
:: if not exist "%git_executable%" ( :: if not exist "%git_executable%" (
%print_debug% ":compare_git_versions" "No git at '%git_executable%' found." %print_debug% ":compare_git_versions" "No git at "%git_executable%" found."
set test_dir= set test_dir=
) )
) )
@ -267,7 +261,7 @@ exit /b
exit /b exit /b
:::=============================================================================== :::===============================================================================
:::get_user_git_version - Get the version information for the user provided git binary :::get_user_git_version - get the version information for the user provided git binary
:::. :::.
:::include: :::include:
:::. :::.
@ -283,4 +277,5 @@ exit /b
%lib_git% read_version USER "%test_dir%" 2>nul %lib_git% read_version USER "%test_dir%" 2>nul
%print_debug% ":get_user_git_version" "get_user_git_version GIT_VERSION_USER: %GIT_VERSION_USER%" %print_debug% ":get_user_git_version" "get_user_git_version GIT_VERSION_USER: %GIT_VERSION_USER%"
%lib_git% validate_version USER %GIT_VERSION_USER% %lib_git% validate_version USER %GIT_VERSION_USER%
exit /b exit /b

View File

@ -1,5 +1,6 @@
@echo off @echo off
call "%~dp0lib_base.cmd" call "%~dp0lib_base.cmd"
call "%%~dp0lib_console" call "%%~dp0lib_console"
set lib_path=call "%~dp0lib_path.cmd" set lib_path=call "%~dp0lib_path.cmd"
@ -10,13 +11,6 @@ if "%~1" == "/h" (
call :%* call :%*
) )
setlocal enabledelayedexpansion
if not defined find_pathext (
set "find_pathext=!PATHEXT:;= !"
set "find_pathext=!find_pathext:.=\.!"
)
endlocal & set "find_pathext=%find_pathext%"
exit /b exit /b
:enhance_path :enhance_path
@ -38,12 +32,13 @@ exit /b
:::options: :::options:
::: :::
::: append <in> Append to the path env variable rather than pre-pend. ::: append <in> Append to the path env variable rather than pre-pend.
::: ::B
::: :::
:::output: :::output:
::: :::
::: path <out> Sets the path env variable if required. ::: path <out> Sets the path env variable if required.
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
if "%~1" neq "" ( if "%~1" neq "" (
set "add_path=%~1" set "add_path=%~1"
) else ( ) else (
@ -57,8 +52,7 @@ exit /b
set "position=" set "position="
) )
dir "%add_path%" 2>NUL | findstr -i -e "%find_pathext%" >NUL dir "%add_path%" | findstr -i "\.COM \.EXE \.BAT \.CMD \.PS1 \.VBS" >NUL
if "%ERRORLEVEL%" == "0" ( if "%ERRORLEVEL%" == "0" (
set "add_to_path=%add_path%" set "add_to_path=%add_path%"
) else ( ) else (
@ -87,20 +81,20 @@ exit /b
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!;" echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!;"
call :set_found call :set_found
) )
%print_debug% :enhance_path "Env Var INSIDE PATH !find_query! - found=!found!" %print_debug% :enhance_path "Env Var INSIDE PATH !find_query! - found=!found!"
if /i "!position!" == "append" ( if /i "!position!" == "append" (
if "!found!" == "0" ( if "!found!" == "0" (
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!\"$" echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!\"$"
call :set_found call :set_found
) )
%print_debug% :enhance_path "Env Var END PATH !find_query! - found=!found!" %print_debug% :enhance_path "Env Var END PATH !find_query! - found=!found!"
) else ( ) else (
if "!found!" == "0" ( if "!found!" == "0" (
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:"^\"!find_query!;" echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:"^\"!find_query!;"
call :set_found call :set_found
) )
%print_debug% :enhance_path "Env Var BEGIN PATH !find_query! - found=!found!" %print_debug% :enhance_path "Env Var BEGIN PATH !find_query! - found=!found!"
) )
endlocal & set found=%found% endlocal & set found=%found%
@ -135,12 +129,13 @@ exit /b
exit /b exit /b
:changed :changed
%print_debug% :enhance_path "END Env Var - PATH=%path%" %print_debug% :enhance_path "END Env Var - PATH=%path%"
%print_debug% :enhance_path "Env Var %find_query% - found=%found%" %print_debug% :enhance_path "Env Var %find_query% - found=%found%"
exit /b exit /b
exit /b exit /b
:set_found :set_found
if "%ERRORLEVEL%" == "0" ( if "%ERRORLEVEL%" == "0" (
set found=1 set found=1
@ -191,7 +186,7 @@ exit /b
set "position=" set "position="
) )
dir "%add_path%" 2>NUL | findstr -i -e "%find_pathext%" >NUL dir "%add_path%" 2>NUL | findstr -i "\.COM \.EXE \.BAT \.CMD \.PS1 \.VBS" >NUL
if "%ERRORLEVEL%" == "0" ( if "%ERRORLEVEL%" == "0" (
set "add_to_path=%add_path%" set "add_to_path=%add_path%"
@ -210,10 +205,10 @@ exit /b
exit /b exit /b
) )
%print_debug% :enhance_path_recursive "Env Var - add_path=%add_to_path%" %print_debug% :enhance_path_recursive "Env Var - add_path=%add_to_path%"
%print_debug% :enhance_path_recursive "Env Var - position=%position%" %print_debug% :enhance_path_recursive "Env Var - position=%position%"
%print_debug% :enhance_path_recursive "Env Var - depth=%depth%" %print_debug% :enhance_path_recursive "Env Var - depth=%depth%"
%print_debug% :enhance_path_recursive "Env Var - max_depth=%max_depth%" %print_debug% :enhance_path_recursive "Env Var - max_depth=%max_depth%"
if %max_depth% gtr %depth% ( if %max_depth% gtr %depth% (
if "%add_to_path%" neq "" ( if "%add_to_path%" neq "" (
@ -228,7 +223,7 @@ exit /b
exit /b exit /b
:set_depth : set_depth
set /a "depth=%depth%+1" set /a "depth=%depth%+1"
exit /b exit /b
@ -238,9 +233,10 @@ exit /b
) )
for /d %%i in ("%add_path%\*") do ( for /d %%i in ("%add_path%\*") do (
%print_debug% :enhance_path_recursive "Env Var BEFORE - depth=%depth%" %print_debug% :enhance_path_recursive "Env Var BEFORE - depth=%depth%"
%print_debug% :enhance_path_recursive "Found Subdirectory - '%%~fi'" %print_debug% :enhance_path_recursive "Found Subdirectory - '%%~fi'"
call :enhance_path_recursive "%%~fi" %depth% %max_depth% %position% call :enhance_path_recursive "%%~fi" %depth% %max_depth% %position%
%print_debug% :enhance_path_recursive "Env Var AFTER- depth=%depth%" %print_debug% :enhance_path_recursive "Env Var AFTER- depth=%depth%"
) )
exit /b exit /b

View File

@ -12,26 +12,26 @@ if "%~1" == "/h" (
exit /b exit /b
:run_profile_d
:::=============================================================================== :::===============================================================================
:::run_profile_d - Run all scripts in the passed directory path :::run_profile_d - Run all scripts in the passed dir path
:::. :::
:::include: :::include:
:::. :::
::: call "lib_profile.cmd" ::: call "lib_profile.cmd"
:::. :::
:::usage: :::usage:
:::. :::
::: %lib_profile% "[dir_path]" ::: %lib_profile% "[dir_path]"
:::. :::
:::required: :::required:
:::. :::
::: [dir_path] <in> Fully qualified directory path containing init *.cmd|*.bat. ::: [dir_path] <in> Fully qualified directory path containing init *.cmd|*.bat.
::: Example: "c:\bin" ::: Example: "c:\bin"
:::. :::
::: path <out> Sets the path env variable if required. ::: path <out> Sets the path env variable if required.
:::------------------------------------------------------------------------------- :::-------------------------------------------------------------------------------
:run_profile_d
if not exist "%~1" ( if not exist "%~1" (
mkdir "%~1" mkdir "%~1"
) )
@ -43,3 +43,4 @@ exit /b
) )
popd popd
exit /b exit /b

View File

@ -18,8 +18,7 @@ function readVersion($gitPath) {
} }
function isGitShim($gitPath) { function isGitShim($gitPath) {
# check if there is a shim file - if yes, read the actual executable path # check if there's shim - and if yes follow the path
# See: github.com/ScoopInstaller/Shim
if (Test-Path "${gitPath}\git.shim") { if (Test-Path "${gitPath}\git.shim") {
$shim = (get-content "${gitPath}\git.shim") $shim = (get-content "${gitPath}\git.shim")

12
vendor/sources.json vendored
View File

@ -1,13 +1,13 @@
[ [
{ {
"name": "git-for-windows", "name": "git-for-windows",
"version": "2.49.0.windows.1", "version": "2.41.0.windows.3",
"url": "https://github.com/git-for-windows/git/releases/download/v2.49.0.windows.1/PortableGit-2.49.0-64-bit.7z.exe" "url": "https://github.com/git-for-windows/git/releases/download/v2.41.0.windows.3/PortableGit-2.41.0.3-64-bit.7z.exe"
}, },
{ {
"name": "clink", "name": "clink",
"version": "1.7.14", "version": "1.5.1",
"url": "https://github.com/chrisant996/clink/releases/download/v1.7.14/clink.1.7.14.843933.zip" "url": "https://github.com/chrisant996/clink/releases/download/v1.5.1/clink.1.5.1.1e9e51.zip"
}, },
{ {
"name": "conemu-maximus5", "name": "conemu-maximus5",
@ -16,7 +16,7 @@
}, },
{ {
"name": "clink-completions", "name": "clink-completions",
"version": "0.6.2", "version": "0.4.10",
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.6.2.zip" "url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.4.10.zip"
} }
] ]