diff --git a/.github/workflows/branches.yml b/.github/workflows/branches.yml index 333242b..d76c3a3 100644 --- a/.github/workflows/branches.yml +++ b/.github/workflows/branches.yml @@ -19,7 +19,7 @@ jobs: # Steps represent a sequence of tasks that will be executed as part of the job steps: # Checks-out the repository under $GITHUB_WORKSPACE, so the job can access it - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 # fetch all history for all branches and tags diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 144e31c..c75704f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -35,7 +35,7 @@ jobs: discussions: write steps: - name: Check out repository code (Action from GitHub) - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 0 @@ -93,26 +93,26 @@ jobs: name: cmder_wt_mini.zip - name: Upload artifact (cmder.zip) - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: path: build/cmder.zip name: cmder.zip if-no-files-found: error - name: Upload artifact (cmder.7z) - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: path: build/cmder.7z name: cmder.7z - name: Upload artifact (cmder_mini.zip) - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: path: build/cmder_mini.zip name: cmder_mini.zip - name: Upload artifact (hashes.txt) - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v5 with: path: build/hashes.txt name: hashes.txt diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 8e9f4b5..87ee1b5 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -45,11 +45,11 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v5 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL - uses: github/codeql-action/init@v3 + uses: github/codeql-action/init@v4 with: languages: ${{ matrix.language }} # If you wish to specify custom queries, you can do so here or in a config file. @@ -68,6 +68,6 @@ jobs: run: .\build.ps1 -Compile -verbose - name: Perform CodeQL Analysis - uses: github/codeql-action/analyze@v3 + uses: github/codeql-action/analyze@v4 with: category: "/language:${{matrix.language}}" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8d9ecec..f2bf770 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -38,7 +38,7 @@ jobs: continue-on-error: false steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 - name: Initialize vendors shell: pwsh working-directory: scripts diff --git a/.github/workflows/vendor.yml b/.github/workflows/vendor.yml index a9d3e17..62ccbcb 100644 --- a/.github/workflows/vendor.yml +++ b/.github/workflows/vendor.yml @@ -24,7 +24,7 @@ jobs: pull-requests: write steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v5 with: fetch-depth: 0 diff --git a/vendor/git-prompt.sh b/vendor/git-prompt.sh index 630073b..1b67e76 100644 --- a/vendor/git-prompt.sh +++ b/vendor/git-prompt.sh @@ -1,24 +1,33 @@ +# Returns 1 if git status for Cmder is disabled, otherwise returns 0 function getGitStatusSetting() { - gitStatusSetting=$(git --no-pager config -l 2>/dev/null) + local gitConfig - if [[ -n ${gitStatusSetting} ]] && [[ ${gitStatusSetting} =~ cmder.status=false ]] || [[ ${gitStatusSetting} =~ cmder.shstatus=false ]] + # 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 + + # Check if git status for Cmder is disabled + if [[ $gitConfig =~ (^|$'\n')cmder\.status=false($|$'\n') ]] || \ + [[ $gitConfig =~ (^|$'\n')cmder\.shstatus=false($|$'\n') ]] then - echo false - else - echo true + return 1 # disabled fi + + return 0 } +# Prints current branch or detached HEAD short commit hash function getSimpleGitBranch() { - gitDir=$(git rev-parse --git-dir 2>/dev/null) - if [ -z "$gitDir" ]; then - return 0 - fi + local gitDir + gitDir=$(git rev-parse --git-dir 2>/dev/null) || return 0 - headContent=$(< "$gitDir/HEAD") - if [[ "$headContent" == "ref: refs/heads/"* ]] + local headFile="$gitDir/HEAD" + [ -f "$headFile" ] || return 0 + + local headContent + headContent=$(< "$headFile") + if [[ "$headContent" =~ ^ref:\ refs/heads/(.+)$ ]] then - echo " (${headContent:16})" + echo " (${BASH_REMATCH[1]})" else echo " (HEAD detached at ${headContent:0:7})" fi @@ -33,18 +42,18 @@ fi if test -f ~/.config/git/git-prompt.sh then - if [[ $(getGitStatusSetting) == true ]] + if getGitStatusSetting then . ~/.config/git/git-prompt.sh fi else - # Taken from https://github.com/git-for-windows/build-extra/blob/main/git-extra/git-prompt.sh - PS1='\[\033]0;$TITLEPREFIX:${PWD//[^[:ascii:]]/?}\007\]' # set window title + # Taken parts from https://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="$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 PS1="$PS1${MSYSTEM:+\[\033[35m\]$MSYSTEM }" # show MSYSTEM in purple (if set) - PS1="$PS1"'\[\033[33m\]' # change to brownish yellow + PS1="$PS1"'\[\033[1;33m\]' # change to dark yellow in bold PS1="$PS1"'\w' # current working directory if test -z "$WINELOADERNOEXEC" then @@ -55,7 +64,7 @@ else if test -f "$COMPLETION_PATH/git-prompt.sh" then . "$COMPLETION_PATH/git-completion.bash" - if [[ $(getGitStatusSetting) == true ]] + if getGitStatusSetting then . "$COMPLETION_PATH/git-prompt.sh" PS1="$PS1"'\[\033[36m\]' # change color to cyan @@ -66,9 +75,11 @@ else fi fi fi - PS1="$PS1"'\[\033[0m\]' # change color + PS1="$PS1"'\[\033[0m\]' # reset color PS1="$PS1"'\n' # new line + PS1="$PS1"'\[\033[30;1m\]' # change color to grey in bold PS1="$PS1"'λ ' # prompt: Cmder uses λ + PS1="$PS1"'\[\033[0m\]' # reset color fi MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc @@ -82,4 +93,4 @@ then test ! -f "$c" || . "$c" done -fi \ No newline at end of file +fi diff --git a/vendor/lib/lib_path.cmd b/vendor/lib/lib_path.cmd index 4a9f8b9..3e68684 100644 --- a/vendor/lib/lib_path.cmd +++ b/vendor/lib/lib_path.cmd @@ -127,11 +127,18 @@ exit /b exit /b :toolong - echo "%OLD_PATH%">"%temp%\cmder_lib_pathA" - echo "%PATH%">"%temp%\cmder_lib_pathB" - fc /b "%temp%\cmder_lib_pathA" "%temp%\cmder_lib_pathB" 2>nul 1>nul - if errorlevel 1 ( del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB" & goto :changed ) - del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB" + set "_rand=%RANDOM%" + if exist "%temp%\%_rand%_cmder_lib_pathA" del "%temp%\%_rand%_cmder_lib_pathA" 2>nul 1>nul + if exist "%temp%\%_rand%_cmder_lib_pathB" del "%temp%\%_rand%_cmder_lib_pathB" 2>nul 1>nul + if exist "%temp%\%_rand%_cmder_lib_pathA" goto :toolong + if exist "%temp%\%_rand%_cmder_lib_pathB" goto :toolong + echo "%OLD_PATH%">"%temp%\%_rand%_cmder_lib_pathA" + if errorlevel 1 ( if exist "%temp%\%_rand%_cmder_lib_pathA" del "%temp%\%_rand%_cmder_lib_pathA" & goto :toolong ) + echo "%PATH%">"%temp%\%_rand%_cmder_lib_pathB" + if errorlevel 1 ( if exist "%temp%\%_rand%_cmder_lib_pathA" del "%temp%\%_rand%_cmder_lib_pathA" & if exist "%temp%\%_cmder_lib_pathB" del "%temp%\%_rand%_cmder_lib_pathB" & goto :toolong ) + fc /b "%temp%\%_rand%_cmder_lib_pathA" "%temp%\%_rand%_cmder_lib_pathB" 2>nul 1>nul + if errorlevel 1 ( del "%temp%\%_rand%_cmder_lib_pathA" & del "%temp%\%_rand%_cmder_lib_pathB" & set "_rand=" & goto :changed ) + del "%temp%\%_rand%_cmder_lib_pathA" & del "%temp%\%_rand%_cmder_lib_pathB" & set "_rand=" exit /b :changed