mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-16 12:39:38 +08:00
Compare commits
7 Commits
Author | SHA1 | Date | |
---|---|---|---|
bc0db6a7b6 | |||
eb2444d04a | |||
f318bcc1b5 | |||
c56559873c | |||
e33713a93f | |||
324aaf74f2 | |||
d73f9592d8 |
33
.github/workflows/branches.yml
vendored
33
.github/workflows/branches.yml
vendored
@ -1,33 +0,0 @@
|
|||||||
name: Update branches
|
|
||||||
|
|
||||||
# Controls when the action will run.
|
|
||||||
on:
|
|
||||||
# Triggers the workflow on push events for the development branch
|
|
||||||
push:
|
|
||||||
branches: [ master ]
|
|
||||||
|
|
||||||
# Allows you to run this workflow manually from the Actions tab
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
|
||||||
jobs:
|
|
||||||
# This job updates the development branch with the master branch
|
|
||||||
update-development:
|
|
||||||
# The type of runner that the job will run on
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
# 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
|
|
||||||
with:
|
|
||||||
fetch-depth: 0 # fetch all history for all branches and tags
|
|
||||||
|
|
||||||
# Runs a single command using the runners shell
|
|
||||||
- name: Merge master into development
|
|
||||||
run: |
|
|
||||||
git config user.name "${{ github.actor }}"
|
|
||||||
git config user.email "${{ github.actor }}@users.noreply.github.com"
|
|
||||||
git checkout development
|
|
||||||
git merge --no-ff master
|
|
||||||
git push origin development
|
|
20
.github/workflows/build.yml
vendored
20
.github/workflows/build.yml
vendored
@ -11,7 +11,7 @@ on:
|
|||||||
tags:
|
tags:
|
||||||
- "v*"
|
- "v*"
|
||||||
pull_request:
|
pull_request:
|
||||||
branches: [ "master", "development" ]
|
branches: [ "master" ]
|
||||||
|
|
||||||
#---------------------------------#
|
#---------------------------------#
|
||||||
# environment configuration #
|
# environment configuration #
|
||||||
@ -30,17 +30,15 @@ jobs:
|
|||||||
build:
|
build:
|
||||||
name: Build Project
|
name: Build Project
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
permissions:
|
|
||||||
contents: 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 +51,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
|
||||||
|
29
.github/workflows/codeql.yml
vendored
29
.github/workflows/codeql.yml
vendored
@ -3,25 +3,20 @@
|
|||||||
#
|
#
|
||||||
# You may wish to alter this file to override the set of languages analyzed,
|
# You may wish to alter this file to override the set of languages analyzed,
|
||||||
# or to provide custom queries or build logic.
|
# 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"
|
name: "CodeQL"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches: [ "master", "development" ]
|
branches: [ "master" ]
|
||||||
paths-ignore:
|
|
||||||
- '**/*.md'
|
|
||||||
- '**/*.txt'
|
|
||||||
- '.github/**'
|
|
||||||
- '**/.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:
|
|
||||||
- '**/*.md'
|
|
||||||
- '**/*.txt'
|
|
||||||
- '.github/**'
|
|
||||||
- '**/.gitignore'
|
|
||||||
schedule:
|
schedule:
|
||||||
- cron: '30 19 * * 0'
|
- cron: '30 19 * * 0'
|
||||||
|
|
||||||
@ -45,11 +40,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 +55,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 +63,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}}"
|
||||||
|
14
.github/workflows/tests.yml
vendored
14
.github/workflows/tests.yml
vendored
@ -4,21 +4,9 @@ on:
|
|||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- development
|
|
||||||
paths-ignore:
|
|
||||||
- '**/*.md'
|
|
||||||
- '**/*.txt'
|
|
||||||
- '.github/**'
|
|
||||||
- '**/.gitignore'
|
|
||||||
pull_request:
|
pull_request:
|
||||||
branches:
|
branches:
|
||||||
- master
|
- master
|
||||||
- development
|
|
||||||
paths-ignore:
|
|
||||||
- '**/*.md'
|
|
||||||
- '**/*.txt'
|
|
||||||
- '.github/**'
|
|
||||||
- '**/.gitignore'
|
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@ -38,7 +26,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
|
||||||
|
4
.github/workflows/vendor.yml
vendored
4
.github/workflows/vendor.yml
vendored
@ -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@v4
|
||||||
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'
|
||||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -31,3 +31,4 @@ launcher/src/version.rc2
|
|||||||
.vs/*
|
.vs/*
|
||||||
.vscode
|
.vscode
|
||||||
.idea
|
.idea
|
||||||
|
.vagrant/
|
||||||
|
24
SECURITY.md
24
SECURITY.md
@ -1,24 +0,0 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
## Supported Versions
|
|
||||||
|
|
||||||
| Version | Supported |
|
|
||||||
| ------- | ------------------ |
|
|
||||||
| 1.3.x | :white_check_mark: |
|
|
||||||
| < 1.3 | ❎ |
|
|
||||||
|
|
||||||
## 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 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 affected source file(s) with full paths
|
|
||||||
- The location of the vulnerable code (tag/branch/commit or direct URL)
|
|
||||||
- Any special configuration needed to reproduce the issue
|
|
||||||
- Detailed steps to reproduce the issue
|
|
||||||
- Proof-of-concept or exploit code (if possible)
|
|
||||||
- The impact of the issue, including how an attacker could exploit it
|
|
||||||
|
|
||||||
Please do not disclose the vulnerability publicly until we have resolved it.
|
|
64
Vagrantfile
vendored
Normal file
64
Vagrantfile
vendored
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
Vagrant.configure("2") do |config|
|
||||||
|
required_plugins = %w( vagrant-vbguest )
|
||||||
|
required_plugins.each do |plugin|
|
||||||
|
system "vagrant plugin install #{plugin}" unless Vagrant.has_plugin? plugin
|
||||||
|
end
|
||||||
|
|
||||||
|
# config.vbguest.iso_path = "../../../../usr/share/virtualbox/VBoxGuestAdditions.iso"
|
||||||
|
config.vbguest.allow_downgrade = true
|
||||||
|
|
||||||
|
config.vm.define "cmderdev-10" do |win10|
|
||||||
|
win10.vm.hostname = "cmderdev-10"
|
||||||
|
win10.vm.box = "cmderdev-10"
|
||||||
|
|
||||||
|
# win10.vm.network :private_network, ip: "192.168.56.101"
|
||||||
|
|
||||||
|
win10.vm.provider :virtualbox do |v|
|
||||||
|
# v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
|
||||||
|
v.customize ["modifyvm", :id, "--name", "cmderdev-10"]
|
||||||
|
v.customize ["modifyvm", :id, "--ostype", "Windows10_64"]
|
||||||
|
v.customize ["modifyvm", :id, "--graphicscontroller", "vboxsvga"]
|
||||||
|
v.customize ["modifyvm", :id, "--memory", 8192]
|
||||||
|
v.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
|
||||||
|
#v.customize ["setextradata", :id, "GUI/ScaleFactor", "1.75"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define "cmderdev-11" do |win11|
|
||||||
|
win11.vm.hostname = "cmderdev-11"
|
||||||
|
win11.vm.box = "cmderdev-11"
|
||||||
|
|
||||||
|
# win11.vm.network :private_network, ip: "192.168.56.111"
|
||||||
|
|
||||||
|
win11.vm.provider :virtualbox do |v|
|
||||||
|
# v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
|
||||||
|
v.customize ["modifyvm", :id, "--name", "cmderdev-11"]
|
||||||
|
v.customize ["modifyvm", :id, "--ostype", "Windows11_64"]
|
||||||
|
v.customize ["modifyvm", :id, "--graphicscontroller", "vboxvga"]
|
||||||
|
v.customize ["modifyvm", :id, "--memory", 8192]
|
||||||
|
v.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
|
||||||
|
#v.customize ["setextradata", :id, "GUI/ScaleFactor", "1.75"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.define "cmderdev-10-pro-scaled" do |cmderdev|
|
||||||
|
cmderdev.vm.hostname = 'cmderdev-10-pro'
|
||||||
|
cmderdev.vm.box = "cmderdev-10"
|
||||||
|
|
||||||
|
cmderdev.vm.provider :virtualbox do |v|
|
||||||
|
# v.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
|
||||||
|
v.customize ["modifyvm", :id, "--name", "cmderdev-pro"]
|
||||||
|
v.customize ["modifyvm", :id, "--graphicscontroller", "vboxsvga"]
|
||||||
|
v.customize ["modifyvm", :id, "--memory", 8192]
|
||||||
|
v.customize ["modifyvm", :id, "--clipboard", "bidirectional"]
|
||||||
|
v.customize ["setextradata", :id, "GUI/ScaleFactor", "1.75"]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
config.vm.provision "file", source: "./scripts/vagrant/windows_terminal_settings.json.default", destination: "windows_terminal_settings.json.default"
|
||||||
|
config.vm.provision "file", source: "./scripts/vagrant/windows_terminal_state.json.default", destination: "windows_terminal_state.json.default"
|
||||||
|
config.vm.provision "shell", path: './scripts/vagrant/add-cmder.ps1'
|
||||||
|
config.vm.provision "shell", path: './vendor/bin/add-vscodeprofile.ps1'
|
||||||
|
config.vm.provision "shell", path: './vendor/bin/add-windowsterminalprofiles.ps1'
|
||||||
|
config.vm.provision "shell", path: './vendor/bin/add-cmdertodesktop.ps1'
|
||||||
|
end
|
60
appveyor.yml
Normal file
60
appveyor.yml
Normal 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
|
@ -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)
|
||||||
|
@ -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.
|
||||||
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -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) {
|
||||||
|
40
scripts/vagrant/add-cmder.ps1
Normal file
40
scripts/vagrant/add-cmder.ps1
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
choco install -y --force 7zip 7zip.install
|
||||||
|
choco install -y --force cmder
|
||||||
|
|
||||||
|
$env:path = "$env:path;c:/tools/cmder/vendor/git-for-windows/cmd"
|
||||||
|
c:
|
||||||
|
cd $env:userprofile
|
||||||
|
git clone https://github.com/cmderdev/cmder cmderdev
|
||||||
|
write-host "USERNAME: $env:USERNAME"
|
||||||
|
|
||||||
|
if ("$env:USERNAME" -eq "vagrant" -and -not (test-path "$env:userprofile/cmderdev/vendor/git-for-windows")) {
|
||||||
|
invoke-expression -command "TAKEOWN /F `"$env:userprofile/cmderdev`" /R /D y /s localhost /u vagrant /p vagrant"
|
||||||
|
}
|
||||||
|
|
||||||
|
cd cmderdev
|
||||||
|
git checkout vagrant
|
||||||
|
git pull origin vagrant
|
||||||
|
git remote add upstream https://github.com/cmderdev/cmder
|
||||||
|
git pull upstream master
|
||||||
|
|
||||||
|
# cmd.exe "/K" '"C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvars64.bat" && powershell -command "& ''$env:userprofile/cmderdev/scripts/build.ps1'' -verbose -compile" && exit'
|
||||||
|
# copy $env:userprofile/cmderdev/launcher/x64/release/cmder.exe $env:userprofile/cmderdev
|
||||||
|
# cmd.exe "/K" '"C:/Program Files (x86)/Microsoft Visual Studio/2022/Community/VC/Auxiliary/Build/vcvars64.bat" && powershell -noexit -command "& ''build.ps1 -verbose -compile''"'
|
||||||
|
|
||||||
|
cd scripts
|
||||||
|
./build.ps1 -verbose
|
||||||
|
|
||||||
|
copy C:/Tools/Cmder/Cmder.exe $env:userprofile/cmderdev
|
||||||
|
|
||||||
|
# tabby
|
||||||
|
setx cmder_root "${env:userprofile}\cmderdev"
|
||||||
|
|
||||||
|
# C:\Users\vagrant\AppData\Roaming\Hyper
|
||||||
|
# // shell: '',
|
||||||
|
# shell: 'cmd.exe',
|
||||||
|
# // for setting shell arguments (i.e. for using interactive shellArgs: `['-i']`)
|
||||||
|
# // by default `['--login']` will be used
|
||||||
|
# // shellArgs: ['--login'],
|
||||||
|
# shellArgs: ['/k', 'C:\\users\\vagrant\\cmderdev\\vendor\\init.bat'],
|
||||||
|
|
||||||
|
|
283
scripts/vagrant/windows_terminal_settings.json.default
Normal file
283
scripts/vagrant/windows_terminal_settings.json.default
Normal file
@ -0,0 +1,283 @@
|
|||||||
|
{
|
||||||
|
"$help": "https://aka.ms/terminal-documentation",
|
||||||
|
"$schema": "https://aka.ms/terminal-profiles-schema",
|
||||||
|
"actions":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"command":
|
||||||
|
{
|
||||||
|
"action": "copy",
|
||||||
|
"singleLine": false
|
||||||
|
},
|
||||||
|
"keys": "ctrl+c"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "paste",
|
||||||
|
"keys": "ctrl+v"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command": "find",
|
||||||
|
"keys": "ctrl+shift+f"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"command":
|
||||||
|
{
|
||||||
|
"action": "splitPane",
|
||||||
|
"split": "auto",
|
||||||
|
"splitMode": "duplicate"
|
||||||
|
},
|
||||||
|
"keys": "alt+shift+d"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"copyFormatting": "none",
|
||||||
|
"copyOnSelect": false,
|
||||||
|
"defaultProfile": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
|
||||||
|
"profiles":
|
||||||
|
{
|
||||||
|
"defaults": {},
|
||||||
|
"list":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"commandline": "%SystemRoot%\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",
|
||||||
|
"guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
|
||||||
|
"hidden": false,
|
||||||
|
"name": "Windows PowerShell"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"commandline": "%SystemRoot%\\System32\\cmd.exe",
|
||||||
|
"guid": "{0caa0dad-35be-5f56-a8ff-afceeeaa6101}",
|
||||||
|
"hidden": false,
|
||||||
|
"name": "Command Prompt"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
|
||||||
|
"hidden": false,
|
||||||
|
"name": "Azure Cloud Shell",
|
||||||
|
"source": "Windows.Terminal.Azure"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "{3b26d644-1d3b-5a0c-ab09-39d4dd9ae00e}",
|
||||||
|
"hidden": false,
|
||||||
|
"name": "Developer Command Prompt for VS 2022",
|
||||||
|
"source": "Windows.Terminal.VisualStudio"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"guid": "{589cd367-e65f-5e6a-a1c7-2b8d6f250da8}",
|
||||||
|
"hidden": false,
|
||||||
|
"name": "Developer PowerShell for VS 2022",
|
||||||
|
"source": "Windows.Terminal.VisualStudio"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"schemes":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"background": "#0C0C0C",
|
||||||
|
"black": "#0C0C0C",
|
||||||
|
"blue": "#0037DA",
|
||||||
|
"brightBlack": "#767676",
|
||||||
|
"brightBlue": "#3B78FF",
|
||||||
|
"brightCyan": "#61D6D6",
|
||||||
|
"brightGreen": "#16C60C",
|
||||||
|
"brightPurple": "#B4009E",
|
||||||
|
"brightRed": "#E74856",
|
||||||
|
"brightWhite": "#F2F2F2",
|
||||||
|
"brightYellow": "#F9F1A5",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#3A96DD",
|
||||||
|
"foreground": "#CCCCCC",
|
||||||
|
"green": "#13A10E",
|
||||||
|
"name": "Campbell",
|
||||||
|
"purple": "#881798",
|
||||||
|
"red": "#C50F1F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#CCCCCC",
|
||||||
|
"yellow": "#C19C00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#012456",
|
||||||
|
"black": "#0C0C0C",
|
||||||
|
"blue": "#0037DA",
|
||||||
|
"brightBlack": "#767676",
|
||||||
|
"brightBlue": "#3B78FF",
|
||||||
|
"brightCyan": "#61D6D6",
|
||||||
|
"brightGreen": "#16C60C",
|
||||||
|
"brightPurple": "#B4009E",
|
||||||
|
"brightRed": "#E74856",
|
||||||
|
"brightWhite": "#F2F2F2",
|
||||||
|
"brightYellow": "#F9F1A5",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#3A96DD",
|
||||||
|
"foreground": "#CCCCCC",
|
||||||
|
"green": "#13A10E",
|
||||||
|
"name": "Campbell Powershell",
|
||||||
|
"purple": "#881798",
|
||||||
|
"red": "#C50F1F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#CCCCCC",
|
||||||
|
"yellow": "#C19C00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#282C34",
|
||||||
|
"black": "#282C34",
|
||||||
|
"blue": "#61AFEF",
|
||||||
|
"brightBlack": "#5A6374",
|
||||||
|
"brightBlue": "#61AFEF",
|
||||||
|
"brightCyan": "#56B6C2",
|
||||||
|
"brightGreen": "#98C379",
|
||||||
|
"brightPurple": "#C678DD",
|
||||||
|
"brightRed": "#E06C75",
|
||||||
|
"brightWhite": "#DCDFE4",
|
||||||
|
"brightYellow": "#E5C07B",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#56B6C2",
|
||||||
|
"foreground": "#DCDFE4",
|
||||||
|
"green": "#98C379",
|
||||||
|
"name": "One Half Dark",
|
||||||
|
"purple": "#C678DD",
|
||||||
|
"red": "#E06C75",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#DCDFE4",
|
||||||
|
"yellow": "#E5C07B"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FAFAFA",
|
||||||
|
"black": "#383A42",
|
||||||
|
"blue": "#0184BC",
|
||||||
|
"brightBlack": "#4F525D",
|
||||||
|
"brightBlue": "#61AFEF",
|
||||||
|
"brightCyan": "#56B5C1",
|
||||||
|
"brightGreen": "#98C379",
|
||||||
|
"brightPurple": "#C577DD",
|
||||||
|
"brightRed": "#DF6C75",
|
||||||
|
"brightWhite": "#FFFFFF",
|
||||||
|
"brightYellow": "#E4C07A",
|
||||||
|
"cursorColor": "#4F525D",
|
||||||
|
"cyan": "#0997B3",
|
||||||
|
"foreground": "#383A42",
|
||||||
|
"green": "#50A14F",
|
||||||
|
"name": "One Half Light",
|
||||||
|
"purple": "#A626A4",
|
||||||
|
"red": "#E45649",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#FAFAFA",
|
||||||
|
"yellow": "#C18301"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#002B36",
|
||||||
|
"black": "#002B36",
|
||||||
|
"blue": "#268BD2",
|
||||||
|
"brightBlack": "#073642",
|
||||||
|
"brightBlue": "#839496",
|
||||||
|
"brightCyan": "#93A1A1",
|
||||||
|
"brightGreen": "#586E75",
|
||||||
|
"brightPurple": "#6C71C4",
|
||||||
|
"brightRed": "#CB4B16",
|
||||||
|
"brightWhite": "#FDF6E3",
|
||||||
|
"brightYellow": "#657B83",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#2AA198",
|
||||||
|
"foreground": "#839496",
|
||||||
|
"green": "#859900",
|
||||||
|
"name": "Solarized Dark",
|
||||||
|
"purple": "#D33682",
|
||||||
|
"red": "#DC322F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#EEE8D5",
|
||||||
|
"yellow": "#B58900"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FDF6E3",
|
||||||
|
"black": "#002B36",
|
||||||
|
"blue": "#268BD2",
|
||||||
|
"brightBlack": "#073642",
|
||||||
|
"brightBlue": "#839496",
|
||||||
|
"brightCyan": "#93A1A1",
|
||||||
|
"brightGreen": "#586E75",
|
||||||
|
"brightPurple": "#6C71C4",
|
||||||
|
"brightRed": "#CB4B16",
|
||||||
|
"brightWhite": "#FDF6E3",
|
||||||
|
"brightYellow": "#657B83",
|
||||||
|
"cursorColor": "#002B36",
|
||||||
|
"cyan": "#2AA198",
|
||||||
|
"foreground": "#657B83",
|
||||||
|
"green": "#859900",
|
||||||
|
"name": "Solarized Light",
|
||||||
|
"purple": "#D33682",
|
||||||
|
"red": "#DC322F",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#EEE8D5",
|
||||||
|
"yellow": "#B58900"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#000000",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#3465A4",
|
||||||
|
"brightBlack": "#555753",
|
||||||
|
"brightBlue": "#729FCF",
|
||||||
|
"brightCyan": "#34E2E2",
|
||||||
|
"brightGreen": "#8AE234",
|
||||||
|
"brightPurple": "#AD7FA8",
|
||||||
|
"brightRed": "#EF2929",
|
||||||
|
"brightWhite": "#EEEEEC",
|
||||||
|
"brightYellow": "#FCE94F",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#06989A",
|
||||||
|
"foreground": "#D3D7CF",
|
||||||
|
"green": "#4E9A06",
|
||||||
|
"name": "Tango Dark",
|
||||||
|
"purple": "#75507B",
|
||||||
|
"red": "#CC0000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#D3D7CF",
|
||||||
|
"yellow": "#C4A000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#FFFFFF",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#3465A4",
|
||||||
|
"brightBlack": "#555753",
|
||||||
|
"brightBlue": "#729FCF",
|
||||||
|
"brightCyan": "#34E2E2",
|
||||||
|
"brightGreen": "#8AE234",
|
||||||
|
"brightPurple": "#AD7FA8",
|
||||||
|
"brightRed": "#EF2929",
|
||||||
|
"brightWhite": "#EEEEEC",
|
||||||
|
"brightYellow": "#FCE94F",
|
||||||
|
"cursorColor": "#000000",
|
||||||
|
"cyan": "#06989A",
|
||||||
|
"foreground": "#555753",
|
||||||
|
"green": "#4E9A06",
|
||||||
|
"name": "Tango Light",
|
||||||
|
"purple": "#75507B",
|
||||||
|
"red": "#CC0000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#D3D7CF",
|
||||||
|
"yellow": "#C4A000"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"background": "#000000",
|
||||||
|
"black": "#000000",
|
||||||
|
"blue": "#000080",
|
||||||
|
"brightBlack": "#808080",
|
||||||
|
"brightBlue": "#0000FF",
|
||||||
|
"brightCyan": "#00FFFF",
|
||||||
|
"brightGreen": "#00FF00",
|
||||||
|
"brightPurple": "#FF00FF",
|
||||||
|
"brightRed": "#FF0000",
|
||||||
|
"brightWhite": "#FFFFFF",
|
||||||
|
"brightYellow": "#FFFF00",
|
||||||
|
"cursorColor": "#FFFFFF",
|
||||||
|
"cyan": "#008080",
|
||||||
|
"foreground": "#C0C0C0",
|
||||||
|
"green": "#008000",
|
||||||
|
"name": "Vintage",
|
||||||
|
"purple": "#800080",
|
||||||
|
"red": "#800000",
|
||||||
|
"selectionBackground": "#FFFFFF",
|
||||||
|
"white": "#C0C0C0",
|
||||||
|
"yellow": "#808000"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"themes": []
|
||||||
|
}
|
9
scripts/vagrant/windows_terminal_state.json.default
Normal file
9
scripts/vagrant/windows_terminal_state.json.default
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{
|
||||||
|
"generatedProfiles" :
|
||||||
|
[
|
||||||
|
"{b453ae62-4e3d-5e58-b989-0a998ec441b8}",
|
||||||
|
"{589cd367-e65f-5e6a-a1c7-2b8d6f250da8}",
|
||||||
|
"{3b26d644-1d3b-5a0c-ab09-39d4dd9ae00e}"
|
||||||
|
],
|
||||||
|
"settingsHash" : "6e0f2330b78337f3-01d95614596b3f65"
|
||||||
|
}
|
1
vendor/bin/add-cmderrootenvar.ps1
vendored
Normal file
1
vendor/bin/add-cmderrootenvar.ps1
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
setx cmder_root "${env:cmder_root}"
|
30
vendor/bin/add-cmdertodesktop.ps1
vendored
Normal file
30
vendor/bin/add-cmdertodesktop.ps1
vendored
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
if (test-path "${env:USERPROFILE}\cmderdev") {
|
||||||
|
$env:cmder_root = "${env:USERPROFILE}\cmderdev"
|
||||||
|
write-host "Creating '${env:USERPROFILE}\Desktop\Cmderdev.lnk'..."
|
||||||
|
|
||||||
|
$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
39
vendor/bin/add-vscodeprofile.ps1
vendored
Normal 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
|
||||||
|
|
||||||
|
|
74
vendor/bin/add-windowsterminalprofiles.ps1
vendored
Normal file
74
vendor/bin/add-windowsterminalprofiles.ps1
vendored
Normal 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!"
|
||||||
|
}
|
||||||
|
|
2
vendor/bin/cmder_shell.cmd
vendored
2
vendor/bin/cmder_shell.cmd
vendored
@ -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
14
vendor/bin/excd.cmd
vendored
@ -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%
|
|
||||||
|
21
vendor/bin/set-shortcut.ps1
vendored
Normal file
21
vendor/bin/set-shortcut.ps1
vendored
Normal 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()
|
177
vendor/clink.lua
vendored
177
vendor/clink.lua
vendored
@ -3,12 +3,7 @@
|
|||||||
-- !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
-- !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||||
-- !!! Use "%CMDER_ROOT%\config\<whatever>.lua" to add your lua startup scripts
|
-- !!! Use "%CMDER_ROOT%\config\<whatever>.lua" to add your lua startup scripts
|
||||||
|
|
||||||
-- luacheck: globals CMDER_SESSION
|
-- luacheck: globals clink
|
||||||
-- luacheck: globals uah_color cwd_color lamb_color clean_color dirty_color conflict_color unknown_color
|
|
||||||
-- luacheck: globals prompt_homeSymbol prompt_lambSymbol prompt_type prompt_useHomeSymbol prompt_useUserAtHost
|
|
||||||
-- luacheck: globals prompt_singleLine prompt_includeVersionControl
|
|
||||||
-- luacheck: globals prompt_overrideGitStatusOptIn prompt_overrideSvnStatusOptIn
|
|
||||||
-- luacheck: globals clink io.popenyield os.isdir settings.get
|
|
||||||
|
|
||||||
-- At first, load the original clink.lua file
|
-- At first, load the original clink.lua file
|
||||||
-- this is needed as we set the script path to this dir and therefore the original
|
-- this is needed as we set the script path to this dir and therefore the original
|
||||||
@ -51,37 +46,11 @@ local function get_unknown_color()
|
|||||||
end
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Escapes special characters in a string.gsub `find` parameter, so that it
|
-- Makes a string safe to use as the replacement in string.gsub
|
||||||
-- 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
|
|
||||||
---
|
---
|
||||||
local function escape_gsub_find_arg(text)
|
local function verbatim(s)
|
||||||
return text and text:gsub("([-+*?.%%()%[%]$^])", "%%%1") or ""
|
s = string.gsub(s, "%%", "%%%%")
|
||||||
end
|
return s
|
||||||
|
|
||||||
---
|
|
||||||
-- 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))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Extracts only the folder name from the input Path
|
-- Extracts only the folder name from the input Path
|
||||||
@ -179,15 +148,15 @@ local function set_prompt_filter()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if prompt_useHomeSymbol and string.find(cwd, clink.get_env("HOME")) then
|
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
|
end
|
||||||
|
|
||||||
local uah = ''
|
uah = ''
|
||||||
if prompt_useUserAtHost then
|
if prompt_useUserAtHost then
|
||||||
uah = clink.get_env("USERNAME") .. "@" .. clink.get_env("COMPUTERNAME") .. ' '
|
uah = clink.get_env("USERNAME") .. "@" .. clink.get_env("COMPUTERNAME") .. ' '
|
||||||
end
|
end
|
||||||
|
|
||||||
local cr = "\n"
|
cr = "\n"
|
||||||
if prompt_singleLine then
|
if prompt_singleLine then
|
||||||
cr = ' '
|
cr = ' '
|
||||||
end
|
end
|
||||||
@ -201,15 +170,15 @@ local function set_prompt_filter()
|
|||||||
|
|
||||||
local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or ""
|
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 = "{uah}{cwd}" .. version_control .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m "
|
||||||
prompt = gsub_plain(prompt, "{uah}", uah)
|
prompt = string.gsub(prompt, "{uah}", uah)
|
||||||
prompt = gsub_plain(prompt, "{cwd}", cwd)
|
prompt = string.gsub(prompt, "{cwd}", cwd)
|
||||||
prompt = gsub_plain(prompt, "{env}", env)
|
prompt = string.gsub(prompt, "{env}", env)
|
||||||
clink.prompt.value = gsub_plain(prompt, "{lamb}", prompt_lambSymbol)
|
clink.prompt.value = string.gsub(prompt, "{lamb}", prompt_lambSymbol)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function percent_prompt_filter()
|
local function percent_prompt_filter()
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{percent}", "%")
|
clink.prompt.value = string.gsub(clink.prompt.value, "{percent}", "%%")
|
||||||
end
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -222,7 +191,7 @@ end
|
|||||||
local function get_dir_contains(path, dirname)
|
local function get_dir_contains(path, dirname)
|
||||||
|
|
||||||
-- return parent path for specified entry (either file or directory)
|
-- return parent path for specified entry (either file or directory)
|
||||||
local function pathname(path) -- luacheck: ignore 432
|
local function pathname(path)
|
||||||
local prefix = ""
|
local prefix = ""
|
||||||
local i = path:find("[\\/:][^\\/:]*$")
|
local i = path:find("[\\/:][^\\/:]*$")
|
||||||
if i then
|
if i then
|
||||||
@ -232,14 +201,14 @@ local function get_dir_contains(path, dirname)
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- Navigates up one level
|
-- Navigates up one level
|
||||||
local function up_one_level(path) -- luacheck: ignore 432
|
local function up_one_level(path)
|
||||||
if path == nil then path = '.' end
|
if path == nil then path = '.' end
|
||||||
if path == '.' then path = clink.get_cwd() end
|
if path == '.' then path = clink.get_cwd() end
|
||||||
return pathname(path)
|
return pathname(path)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Checks if provided directory contains git directory
|
-- Checks if provided directory contains git directory
|
||||||
local function has_specified_dir(path, specified_dir) -- luacheck: ignore 432
|
local function has_specified_dir(path, specified_dir)
|
||||||
if path == nil then path = '.' end
|
if path == nil then path = '.' end
|
||||||
local found_dirs = clink.find_dirs(path..'/'..specified_dir)
|
local found_dirs = clink.find_dirs(path..'/'..specified_dir)
|
||||||
if #found_dirs > 0 then return true end
|
if #found_dirs > 0 then return true end
|
||||||
@ -267,7 +236,7 @@ end
|
|||||||
local function get_git_dir(path)
|
local function get_git_dir(path)
|
||||||
|
|
||||||
-- return parent path for specified entry (either file or directory)
|
-- return parent path for specified entry (either file or directory)
|
||||||
local function pathname(path) -- luacheck: ignore 432
|
local function pathname(path)
|
||||||
local prefix = ""
|
local prefix = ""
|
||||||
local i = path:find("[\\/:][^\\/:]*$")
|
local i = path:find("[\\/:][^\\/:]*$")
|
||||||
if i then
|
if i then
|
||||||
@ -286,8 +255,7 @@ local function get_git_dir(path)
|
|||||||
local gitfile = io.open(dir..'/.git')
|
local gitfile = io.open(dir..'/.git')
|
||||||
if not gitfile then return false end
|
if not gitfile then return false end
|
||||||
|
|
||||||
local line = gitfile:read() or ''
|
local git_dir = gitfile:read():match('gitdir: (.*)')
|
||||||
local git_dir = line:match('gitdir: (.*)')
|
|
||||||
gitfile:close()
|
gitfile:close()
|
||||||
|
|
||||||
if os.isdir then -- only available in Clink v1.0.0 and higher
|
if os.isdir then -- only available in Clink v1.0.0 and higher
|
||||||
@ -335,9 +303,6 @@ local function get_git_branch(git_dir)
|
|||||||
local HEAD = head_file:read()
|
local HEAD = head_file:read()
|
||||||
head_file:close()
|
head_file:close()
|
||||||
|
|
||||||
-- If HEAD is missing, something is wrong.
|
|
||||||
if not HEAD then return end
|
|
||||||
|
|
||||||
-- if HEAD matches branch expression, then we're on named branch
|
-- if HEAD matches branch expression, then we're on named branch
|
||||||
-- otherwise it is a detached commit
|
-- otherwise it is a detached commit
|
||||||
local branch_name = HEAD:match('ref: refs/heads/(.+)')
|
local branch_name = HEAD:match('ref: refs/heads/(.+)')
|
||||||
@ -357,9 +322,6 @@ local function get_hg_branch()
|
|||||||
-- local cmd = "hg prompt \"{branch}{status}{|{patch}}{update}\""
|
-- local cmd = "hg prompt \"{branch}{status}{|{patch}}{update}\""
|
||||||
local cmd = "hg branch 2>nul"
|
local cmd = "hg branch 2>nul"
|
||||||
local file = io.popen(cmd)
|
local file = io.popen(cmd)
|
||||||
if not file then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
for line in file:lines() do
|
for line in file:lines() do
|
||||||
local m = line:match("(.+)$")
|
local m = line:match("(.+)$")
|
||||||
@ -377,12 +339,8 @@ end
|
|||||||
-- Find out current branch
|
-- Find out current branch
|
||||||
-- @return {false|svn branch name}
|
-- @return {false|svn branch name}
|
||||||
---
|
---
|
||||||
local function get_svn_branch()
|
local function get_svn_branch(svn_dir)
|
||||||
local file = io_popenyield("svn info 2>nul")
|
local file = io_popenyield("svn info 2>nul")
|
||||||
if not file then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
|
|
||||||
for line in file:lines() do
|
for line in file:lines() do
|
||||||
local m = line:match("^Relative URL:")
|
local m = line:match("^Relative URL:")
|
||||||
if m then
|
if m then
|
||||||
@ -401,16 +359,12 @@ end
|
|||||||
---
|
---
|
||||||
local function get_git_status()
|
local function get_git_status()
|
||||||
local file = io_popenyield("git --no-optional-locks status --porcelain 2>nul")
|
local file = io_popenyield("git --no-optional-locks status --porcelain 2>nul")
|
||||||
if not file then
|
|
||||||
return {}
|
|
||||||
end
|
|
||||||
|
|
||||||
local conflict_found = false
|
local conflict_found = false
|
||||||
local is_status = true
|
local is_status = true
|
||||||
for line in file:lines() do
|
for line in file:lines() do
|
||||||
local code = line:sub(1, 2)
|
local code = line:sub(1, 2)
|
||||||
-- print (string.format("code: %s, line: %s", code, line))
|
-- print (string.format("code: %s, line: %s", code, line))
|
||||||
if code == "DD" or code == "AU" or code == "UD" or code == "UA" or code == "DU" or code == "AA" or code == "UU" then -- luacheck: no max line length
|
if code == "DD" or code == "AU" or code == "UD" or code == "UA" or code == "DU" or code == "AA" or code == "UU" then
|
||||||
is_status = false
|
is_status = false
|
||||||
conflict_found = true
|
conflict_found = true
|
||||||
break
|
break
|
||||||
@ -420,27 +374,38 @@ local function get_git_status()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
file:close()
|
file:close()
|
||||||
|
|
||||||
return { status = is_status, conflict = conflict_found }
|
return { status = is_status, conflict = conflict_found }
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---
|
||||||
|
-- Get the status of working dir
|
||||||
|
-- @return {bool}
|
||||||
|
---
|
||||||
|
local function get_hg_status()
|
||||||
|
local file = io.popen("hg status -0")
|
||||||
|
for line in file:lines() do
|
||||||
|
file:close()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
file:close()
|
||||||
|
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Get the status of working dir
|
-- Get the status of working dir
|
||||||
-- @return {bool}
|
-- @return {bool}
|
||||||
---
|
---
|
||||||
local function get_svn_status()
|
local function get_svn_status()
|
||||||
local file = io_popenyield("svn status -q")
|
local file = io_popenyield("svn status -q")
|
||||||
if not file then
|
for line in file:lines() do
|
||||||
return { error = true }
|
|
||||||
end
|
|
||||||
|
|
||||||
for line in file:lines() do -- luacheck: ignore 512, no unused
|
|
||||||
file:close()
|
file:close()
|
||||||
return { clean = false }
|
return false
|
||||||
end
|
end
|
||||||
file:close()
|
file:close()
|
||||||
|
|
||||||
return { clean = true }
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -468,28 +433,24 @@ local function get_git_status_setting()
|
|||||||
end
|
end
|
||||||
|
|
||||||
local gitStatusConfig = io_popenyield("git --no-pager config cmder.status 2>nul")
|
local gitStatusConfig = io_popenyield("git --no-pager config cmder.status 2>nul")
|
||||||
if gitStatusConfig then
|
for line in gitStatusConfig:lines() do
|
||||||
for line in gitStatusConfig:lines() do
|
if string.match(line, 'false') then
|
||||||
if string.match(line, 'false') then
|
gitStatusConfig:close()
|
||||||
gitStatusConfig:close()
|
last_git_status_setting = false
|
||||||
last_git_status_setting = false
|
return false
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
gitStatusConfig:close()
|
|
||||||
end
|
end
|
||||||
|
gitStatusConfig:close()
|
||||||
|
|
||||||
local gitCmdStatusConfig = io_popenyield("git --no-pager config cmder.cmdstatus 2>nul")
|
local gitCmdStatusConfig = io_popenyield("git --no-pager config cmder.cmdstatus 2>nul")
|
||||||
if gitCmdStatusConfig then
|
for line in gitCmdStatusConfig:lines() do
|
||||||
for line in gitCmdStatusConfig:lines() do
|
if string.match(line, 'false') then
|
||||||
if string.match(line, 'false') then
|
gitCmdStatusConfig:close()
|
||||||
gitCmdStatusConfig:close()
|
last_git_status_setting = false
|
||||||
last_git_status_setting = false
|
return false
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
gitCmdStatusConfig:close()
|
|
||||||
end
|
end
|
||||||
|
gitCmdStatusConfig:close()
|
||||||
|
|
||||||
last_git_status_setting = true
|
last_git_status_setting = true
|
||||||
return true
|
return true
|
||||||
@ -558,13 +519,13 @@ local function git_prompt_filter()
|
|||||||
color = colors.conflict
|
color = colors.conflict
|
||||||
end
|
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
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- No git present or not in git file
|
-- 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
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -575,6 +536,8 @@ local function hg_prompt_filter()
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local result = ""
|
||||||
|
|
||||||
local hg_dir = get_hg_dir()
|
local hg_dir = get_hg_dir()
|
||||||
if hg_dir then
|
if hg_dir then
|
||||||
-- Colors for mercurial status
|
-- Colors for mercurial status
|
||||||
@ -596,20 +559,16 @@ local function hg_prompt_filter()
|
|||||||
local color = colors.clean
|
local color = colors.clean
|
||||||
|
|
||||||
local pipe = io.popen("hg status -amrd 2>&1")
|
local pipe = io.popen("hg status -amrd 2>&1")
|
||||||
if pipe then
|
local output = pipe:read('*all')
|
||||||
output = pipe:read('*all')
|
local rc = { pipe:close() }
|
||||||
pipe:close()
|
|
||||||
if output ~= nil and output ~= "" then color = colors.dirty end
|
|
||||||
end
|
|
||||||
|
|
||||||
local result = color .. "(" .. branch .. ")"
|
if output ~= nil and output ~= "" then color = colors.dirty end
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", " "..result)
|
result = color .. "(" .. branch .. ")"
|
||||||
return false
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- No hg present or not in hg repo
|
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", " "..verbatim(result))
|
||||||
clink.prompt.value = gsub_plain(clink.prompt.value, "{hg}", "")
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local function svn_prompt_filter()
|
local function svn_prompt_filter()
|
||||||
@ -630,6 +589,7 @@ local function svn_prompt_filter()
|
|||||||
if svn_dir then
|
if svn_dir then
|
||||||
-- if we're inside of svn repo then try to detect current branch
|
-- if we're inside of svn repo then try to detect current branch
|
||||||
local branch = get_svn_branch()
|
local branch = get_svn_branch()
|
||||||
|
local color
|
||||||
if branch then
|
if branch then
|
||||||
-- If in a different repo or branch than last time, discard cached info
|
-- If in a different repo or branch than last time, discard cached info
|
||||||
if cached_info.svn_dir ~= svn_dir or cached_info.svn_branch ~= branch then
|
if cached_info.svn_dir ~= svn_dir or cached_info.svn_branch ~= branch then
|
||||||
@ -639,7 +599,7 @@ local function svn_prompt_filter()
|
|||||||
end
|
end
|
||||||
-- Get the svn status using coroutine if available and option is enabled. Otherwise use a blocking call
|
-- Get the svn status using coroutine if available and option is enabled. Otherwise use a blocking call
|
||||||
local svnStatus
|
local svnStatus
|
||||||
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") and prompt_overrideSvnStatusOptIn then -- luacheck: no max line length
|
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") and prompt_overrideSvnStatusOptIn then
|
||||||
svnStatus = clink_promptcoroutine(function ()
|
svnStatus = clink_promptcoroutine(function ()
|
||||||
return get_svn_status()
|
return get_svn_status()
|
||||||
end)
|
end)
|
||||||
@ -653,22 +613,21 @@ local function svn_prompt_filter()
|
|||||||
svnStatus = get_svn_status()
|
svnStatus = get_svn_status()
|
||||||
end
|
end
|
||||||
|
|
||||||
local color
|
if svnStatus == nil then
|
||||||
if not svnStatus or svnStatus.error then
|
|
||||||
color = colors.nostatus
|
color = colors.nostatus
|
||||||
elseif svnStatus.clean then
|
elseif svnStatus then
|
||||||
color = colors.clean
|
color = colors.clean
|
||||||
else
|
else
|
||||||
color = colors.dirty
|
color = colors.dirty
|
||||||
end
|
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
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- No svn present or not in svn file
|
-- 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
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
|
4
vendor/clink_settings.default
vendored
4
vendor/clink_settings.default
vendored
@ -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
|
||||||
|
10
vendor/cmder_prompt_config.lua.default
vendored
10
vendor/cmder_prompt_config.lua.default
vendored
@ -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
|
||||||
|
70
vendor/git-prompt.sh
vendored
70
vendor/git-prompt.sh
vendored
@ -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
|
|
17
vendor/init.bat
vendored
17
vendor/init.bat
vendored
@ -153,8 +153,7 @@ if not "%CMDER_SHELL%" == "cmd" (
|
|||||||
set CMDER_ALIASES=0
|
set CMDER_ALIASES=0
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Pick the right version of Clink
|
:: Pick right version of Clink
|
||||||
:: TODO: Support for ARM
|
|
||||||
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||||
set clink_architecture=x86
|
set clink_architecture=x86
|
||||||
set architecture_bits=32
|
set architecture_bits=32
|
||||||
@ -167,7 +166,7 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
|||||||
)
|
)
|
||||||
|
|
||||||
if "%CMDER_CLINK%" == "1" (
|
if "%CMDER_CLINK%" == "1" (
|
||||||
REM TODO: Detect if clink is already injected, if so goto :CLINK_FINISH
|
REM TODO: If clink is already injected, goto :CLINK_FINISH
|
||||||
goto :INJECT_CLINK
|
goto :INJECT_CLINK
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -206,10 +205,8 @@ goto :SKIP_CLINK
|
|||||||
|
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
||||||
|
|
||||||
:: Check if a fatal error occurred when trying to inject Clink
|
if errorlevel 1 (
|
||||||
if errorlevel 2 (
|
%print_error% "Clink initialization has failed with error code: %errorlevel%"
|
||||||
REM %print_error% "Clink injection has failed with error code: %errorlevel%"
|
|
||||||
goto :SKIP_CLINK
|
|
||||||
)
|
)
|
||||||
|
|
||||||
goto :CLINK_FINISH
|
goto :CLINK_FINISH
|
||||||
@ -240,8 +237,8 @@ if "%CMDER_CONFIGURED%" GTR "1" (
|
|||||||
:: Prepare for git-for-windows
|
:: Prepare for git-for-windows
|
||||||
|
|
||||||
:: Detect which git.exe version to use
|
:: Detect which git.exe version to use
|
||||||
:: * if the user points to a specific git, use that
|
:: * if the users points as to a specific git, use that
|
||||||
:: * test if git is in path and if yes, use that
|
:: * test if a git is in path and if yes, use that
|
||||||
:: * last, use our vendored git
|
:: * last, use our vendored git
|
||||||
:: also check that we have a recent enough version of git by examining the version string
|
:: also check that we have a recent enough version of git by examining the version string
|
||||||
if defined GIT_INSTALL_ROOT (
|
if defined GIT_INSTALL_ROOT (
|
||||||
@ -426,7 +423,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
|
||||||
|
64
vendor/lib/lib_base.cmd
vendored
64
vendor/lib/lib_base.cmd
vendored
@ -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" (
|
||||||
|
31
vendor/lib/lib_git.cmd
vendored
31
vendor/lib/lib_git.cmd
vendored
@ -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
|
||||||
|
|
||||||
|
42
vendor/lib/lib_path.cmd
vendored
42
vendor/lib/lib_path.cmd
vendored
@ -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
|
||||||
|
|
||||||
|
19
vendor/lib/lib_profile.cmd
vendored
19
vendor/lib/lib_profile.cmd
vendored
@ -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
|
||||||
|
|
||||||
|
1
vendor/profile.ps1
vendored
1
vendor/profile.ps1
vendored
@ -28,6 +28,7 @@ if (!$ENV:CMDER_ROOT) {
|
|||||||
# Remove trailing '\'
|
# Remove trailing '\'
|
||||||
$ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
$ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
||||||
|
|
||||||
|
# Do not load bundled PsGet if a module installer is already available
|
||||||
# -> 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)
|
||||||
|
|
||||||
|
3
vendor/psmodules/Cmder.ps1
vendored
3
vendor/psmodules/Cmder.ps1
vendored
@ -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")
|
||||||
|
2155
vendor/psmodules/PsGet/PsGet.psm1
vendored
Normal file
2155
vendor/psmodules/PsGet/PsGet.psm1
vendored
Normal file
File diff suppressed because it is too large
Load Diff
16
vendor/sources.json
vendored
16
vendor/sources.json
vendored
@ -1,22 +1,22 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "git-for-windows",
|
"name": "git-for-windows",
|
||||||
"version": "2.49.0.windows.1",
|
"version": "2.40.0-rc2.windows.1",
|
||||||
"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.40.0-rc2.windows.1/PortableGit-2.40.0-rc2-64-bit.7z.exe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink",
|
"name": "clink",
|
||||||
"version": "1.7.14",
|
"version": "1.4.22",
|
||||||
"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.4.22/clink.1.4.22.33f515.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "conemu-maximus5",
|
"name": "conemu-maximus5",
|
||||||
"version": "23.07.24",
|
"version": "22.12.18",
|
||||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v23.07.24/ConEmuPack.230724.7z"
|
"url": "https://github.com/Maximus5/ConEmu/releases/download/v22.12.18/ConEmuPack.221218.7z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink-completions",
|
"name": "clink-completions",
|
||||||
"version": "0.6.2",
|
"version": "0.4.7",
|
||||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.6.2.zip"
|
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.4.7.zip"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
Reference in New Issue
Block a user