mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-16 12:39:38 +08:00
Compare commits
78 Commits
Author | SHA1 | Date | |
---|---|---|---|
efa2e576d0 | |||
5eaf0d0396 | |||
0e34d925ce | |||
9d2ac373c5 | |||
835343f9d6 | |||
271fe4c822 | |||
24ba9c3fa5 | |||
0fdcda98cf | |||
42df6cd05b | |||
a4fa8d5333 | |||
1ba542e915 | |||
2c656a9c34 | |||
0adbc47c7e | |||
e0ade8f3f1 | |||
ba97011bbc | |||
cfcfe6f282 | |||
048692b5b5 | |||
7c74931af8 | |||
e3d9f81e25 | |||
7c309c6a7b | |||
0c1ab3fbb1 | |||
fc44def0ad | |||
fbe3e17eea | |||
47caafb800 | |||
efb3338f5c | |||
3859f6ffc0 | |||
4e1918dcf7 | |||
dcc06a9d70 | |||
d3026aef5d | |||
159937b2df | |||
3214a6d5ea | |||
02970841c3 | |||
04bbea7d24 | |||
c8d48b7f3e | |||
0f6ed93d0d | |||
2be652707b | |||
96ce96c53d | |||
ce23189427 | |||
a2a996147e | |||
6d46df634e | |||
fe08df3fdc | |||
39ac92d61c | |||
bdbd3aab2b | |||
18aea2b258 | |||
5cd05b056b | |||
c0fc10009a | |||
cc5e4a0e60 | |||
6e0e1729d8 | |||
cbb10de06d | |||
0b7e47cdc2 | |||
96ca7cea4a | |||
0ba0dea6a2 | |||
e320ba8aae | |||
23b80264b0 | |||
90cd1130ac | |||
7f71456a41 | |||
c606e5c8ee | |||
98d28846b3 | |||
27f28e6ed7 | |||
8b6d1d8a6f | |||
211fbd6428 | |||
2acb6808ed | |||
ee913e09ee | |||
ede79c2199 | |||
665df2a8c8 | |||
a0f234b9d0 | |||
5cdb98abb7 | |||
9399cbdcd7 | |||
c992215f94 | |||
55b90cc958 | |||
971483b2b7 | |||
c8d554220a | |||
8feae5d81d | |||
6d77c988db | |||
04b6ec2ac8 | |||
b5bddc929e | |||
5d05034810 | |||
4243c5c222 |
13
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
13
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
@ -1,7 +1,7 @@
|
||||
name: "🐞 Bug report (encountered problems/errors)"
|
||||
description: Something is not working as it should
|
||||
title: "[Bug] "
|
||||
labels: [🐞 Bug report]
|
||||
labels: "🐛 Type: Bug"
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
@ -20,12 +20,13 @@ body:
|
||||
label: Version Information
|
||||
description: |
|
||||
Please write your Cmder and ConEmu version below. If applicable, write down your Windows edition too.
|
||||
**👉 See:** [How to find out which Cmder version I'm using](https://github.com/cmderdev/cmder/wiki/Cmder-troubleshooting)
|
||||
placeholder: |
|
||||
Cmder version:
|
||||
Operating system:
|
||||
value: |
|
||||
Cmder version:
|
||||
Operating system:
|
||||
Cmder version:
|
||||
Operating system:
|
||||
render: markdown
|
||||
validations:
|
||||
required: true
|
||||
@ -54,7 +55,7 @@ body:
|
||||
| 🌐 [Open Link](https://github.com/cmderdev/cmder/blob/master/README.md) | 🌐 [Open Link](https://github.com/cmderdev/cmder/wiki) |
|
||||
|
||||
(What you may be asking here could already be explained there!)
|
||||
|
||||
|
||||
- Searched for existing issues (including the **closed** ones) for similar problems here:
|
||||
|
||||
🗃 https://github.com/cmderdev/cmder/issues?q=is:issue
|
||||
@ -77,7 +78,7 @@ body:
|
||||
- **[Clink](https://github.com/chrisant996/clink)**, the default shell in Cmder
|
||||
- **[ConEmu](https://github.com/Maximus5/ConEmu)**, the terminal emulator
|
||||
- **[Git/MinGW](https://github.com/git-for-windows/git)**, which also provide *NIX tools (such as `ls`, `mv`, `cp`, etc)
|
||||
- **[clink-completions](https://github.com/repos/vladimir-kotikov/clink-completions)**, which provide autocompletion for clink
|
||||
- **[clink-completions](https://github.com/vladimir-kotikov/clink-completions)**, which provides autocompletion for clink
|
||||
|
||||
We'll try our best to help you -- but we recommend creating an issue specifically at each of the corresponding repositories for the best result.
|
||||
|
||||
@ -90,7 +91,7 @@ body:
|
||||
|
||||
#### Prerequisites before submitting an issue
|
||||
- We do not support any versions older than the current release series, if you are using an older Cmder please update to the latest version first.
|
||||
- Verify that the issue is not fixed and is reproducible in the **[latest official Cmder version](https://github.com/cmderdev/cmder/releases).**
|
||||
- Verify that the issue is not already fixed and is reproducible in the **[latest official Cmder version](https://github.com/cmderdev/cmder/releases).**
|
||||
- Check the **[current issues list](https://github.com/cmderdev/cmder/issues?q=is%3Aissue)** and perform a **search of the issue tracker (including closed ones)** to avoid posting a duplicate bug report.
|
||||
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/cmderdev/cmder/discussions)**, or the **[questions section](https://github.com/cmderdev/cmder/issues/new?template=question.yml)**.
|
||||
- Verify that the **[wiki](https://github.com/cmderdev/cmder/wiki)** did not contain a suitable solution either.
|
||||
|
4
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
4
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
@ -1,7 +1,7 @@
|
||||
name: "⭐ Feature request (request for new functionality)"
|
||||
description: Help make Cmder even better
|
||||
title: "[Feature request] "
|
||||
labels: [⭐ Feature request]
|
||||
labels: "🛠 Type: Feature Request"
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
@ -22,7 +22,7 @@ body:
|
||||
- **[Clink](https://github.com/chrisant996/clink)**, the default shell in Cmder
|
||||
- **[ConEmu](https://github.com/Maximus5/ConEmu)**, the terminal emulator
|
||||
- **[Git/MinGW](https://github.com/git-for-windows/git)**, which also provide *NIX tools (such as `ls`, `mv`, `cp`, etc)
|
||||
- **[clink-completions](https://github.com/repos/vladimir-kotikov/clink-completions)**, which provide autocompletion for clink
|
||||
- **[clink-completions](https://github.com/vladimir-kotikov/clink-completions)**, which provides autocompletion for clink
|
||||
|
||||
- If you would like to ask for guides on how to integrate Cmder with your favorite IDE of choice, or how to perform a specific task with Cmder, make sure you visit our label section first.
|
||||
|
||||
|
5
.github/ISSUE_TEMPLATE/question.yml
vendored
5
.github/ISSUE_TEMPLATE/question.yml
vendored
@ -1,6 +1,7 @@
|
||||
name: "❓ Question"
|
||||
description: Something is unclear or needs to be discussed
|
||||
labels: [❓ Question]
|
||||
title: "Question: "
|
||||
labels: "❔ Type: Question"
|
||||
|
||||
body:
|
||||
- type: markdown
|
||||
@ -18,7 +19,7 @@ body:
|
||||
|
||||
- If you would like to ask for guides on how to integrate Cmder with your favorite IDE of choice, or how to perform a specific task with Cmder, make sure you visit our label section first.
|
||||
|
||||
You may already have an answer under the Guides or Questions section.
|
||||
You may already have an answer under the [💬 Guides](https://github.com/cmderdev/cmder/issues?q=label%3A%22%F0%9F%92%AC+Type%3A+Guide%22), [📖 Documentation](https://github.com/cmderdev/cmder/issues?q=label%3A%22%F0%9F%93%96+Documentation%22) or [❔ Questions](https://github.com/cmderdev/cmder/issues?q=is%3Aissue+label%3A%22%E2%9D%94+Type%3A+Question%22) section.
|
||||
|
||||
For a list of labels, visit **[Labels](https://github.com/cmderdev/cmder/labels)**.
|
||||
|
||||
|
12
.github/workflows/tests.yml
vendored
12
.github/workflows/tests.yml
vendored
@ -7,14 +7,14 @@ on:
|
||||
pull_request:
|
||||
branches:
|
||||
- master
|
||||
|
||||
|
||||
defaults:
|
||||
run:
|
||||
shell: cmd
|
||||
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
|
||||
concurrency:
|
||||
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
||||
cancel-in-progress: true
|
||||
@ -27,9 +27,13 @@ jobs:
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Initialize vendors
|
||||
shell: pwsh
|
||||
working-directory: scripts
|
||||
run: .\build.ps1 -verbose
|
||||
- name: Testing Clink Shell
|
||||
run: |
|
||||
cmd /c vendor\init.bat
|
||||
cmd /c vendor\init.bat /v /d /t
|
||||
- name: Testing PowerShell
|
||||
run: |
|
||||
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Invoke-Expression '. ''vendor\profile.ps1'''"
|
||||
|
7
.github/workflows/vendor.yml
vendored
7
.github/workflows/vendor.yml
vendored
@ -30,6 +30,8 @@ jobs:
|
||||
|
||||
- id: make-changes
|
||||
name: Checking for updates
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
run: |
|
||||
$currentVersion = (Get-Content .\vendor\sources.json | ConvertFrom-Json)
|
||||
. .\scripts\update.ps1 -verbose
|
||||
@ -40,8 +42,9 @@ jobs:
|
||||
foreach ($s in $newVersion) {
|
||||
$oldVersion = ($currentVersion | Where-Object {$_.name -eq $s.name}).version
|
||||
if ($s.version -ne $oldVersion) {
|
||||
$repoUrl = ($repoUrl = $s.Url.Replace("/archive/", "/releases/")).Substring(0, $repoUrl.IndexOf("/releases/")) + "/releases"
|
||||
$listUpdated += "$($s.name) v$($s.version), "
|
||||
$updateMessage += "| **$($s.name)** | $oldVersion | **$($s.version)** |`n"
|
||||
$updateMessage += "| **[$($s.name)]($repoUrl)** | $oldVersion | **$($s.version)** |`n"
|
||||
}
|
||||
}
|
||||
if ($count -eq 0) { return }
|
||||
@ -57,6 +60,6 @@ jobs:
|
||||
${{ env.UPDATE_MESSAGE }}
|
||||
---
|
||||
Please verify and then **Merge** the pull request to update.
|
||||
commit-message: 'Update vendored dependencies (${{ env.LIST_UPDATED }})'
|
||||
commit-message: '⬆️ Update dependencies (${{ env.LIST_UPDATED }})'
|
||||
branch: update-vendor
|
||||
base: master
|
||||
|
2
.gitignore
vendored
2
.gitignore
vendored
@ -29,3 +29,5 @@ build/
|
||||
launcher/.vs
|
||||
launcher/src/version.rc2
|
||||
.vs/*
|
||||
.vscode
|
||||
.idea
|
||||
|
22
CHANGELOG.md
22
CHANGELOG.md
@ -1,11 +1,12 @@
|
||||
# Change Log
|
||||
|
||||
## [1.3.20-unreleased](https://ci.appveyor.com/project/MartiUK/cmder/build/artifacts) (2022-03-17)
|
||||
## [1.3.20](https://github.com/cmderdev/cmder/tree/v1.3.20) (2022-03-18)
|
||||
|
||||
### Changes
|
||||
|
||||
- Update Git for Windows to 2.37.1
|
||||
- Update to Clink 1.3.36
|
||||
- Update Git for Windows to 2.38.0.windows.1
|
||||
- Update Clink to 1.3.47
|
||||
- Update ConEmu to 22.08.07
|
||||
|
||||
### Fixes
|
||||
|
||||
@ -14,7 +15,18 @@
|
||||
- Fix using Git from vendored Git and other Git for Windows tools from other Git in path.
|
||||
- Remove setting `term=cygwin` in `init.bat` to fix random `ABCD` characters when using arrow keys in `vim`.
|
||||
- See: [Sometimes pressing on arrow keys prints symbols #1691](https://github.com/Maximus5/ConEmu/issues/169)
|
||||
- Fix Git prompt branch when using Git worktree.
|
||||
- Fix #2654: blank space added between {cwd} and version_control variable by @geekrumper in https://github.com/cmderdev/cmder/pull/2661
|
||||
- Fix #2659: Use get_hg_branch() to get Mercurial branch information. by @vsajip in https://github.com/cmderdev/cmder/pull/2660
|
||||
- Fix Git prompt branch when using Git worktree by @daxgames in https://github.com/cmderdev/cmder/pull/2680
|
||||
- Add optional clink async prompt update for svn status by @Mikaz-fr in https://github.com/cmderdev/cmder/pull/2703
|
||||
- Better bat by @daxgames in https://github.com/cmderdev/cmder/pull/2742
|
||||
- Related to #2654: Move space from "{git}{hg}{svn}" to individual parts by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2738
|
||||
- Use TaskDialog instead of MessageBox (Fixes Builds) by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2746
|
||||
- Add bin\cmder_shell.cmd by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2747
|
||||
- Fix build system scripts (closes #2723) by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2748
|
||||
- Custom option for launcher title by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2752
|
||||
- Use Github Actions to build and release by @MartiUK in https://github.com/cmderdev/cmder/pull/2725
|
||||
- Re-factor the build script to distinguish each step by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2758
|
||||
|
||||
## [1.3.19](https://github.com/cmderdev/cmder/tree/v1.3.19) (2022-01-15)
|
||||
|
||||
@ -666,7 +678,7 @@ We now use a forked version of clink since its original author is missing and we
|
||||
* 'ls' is no longer recognized command [\#757](https://github.com/cmderdev/cmder/issues/757)
|
||||
* I can't run de Cmder.exe [\#755](https://github.com/cmderdev/cmder/issues/755)
|
||||
* Multiple location references when maximizing [\#753](https://github.com/cmderdev/cmder/issues/753)
|
||||
* CLink completions for npm increase cmder startup time for one second [\#750](https://github.com/cmderdev/cmder/issues/750)
|
||||
* Clink completions for npm increase cmder startup time for one second [\#750](https://github.com/cmderdev/cmder/issues/750)
|
||||
* Prevent other apps from overwriting the prompt? [\#749](https://github.com/cmderdev/cmder/issues/749)
|
||||
* cmder.exe infected with Variant.Kazy.767238 [\#748](https://github.com/cmderdev/cmder/issues/748)
|
||||
* cmder.exe considered harmful by Bitdefender [\#744](https://github.com/cmderdev/cmder/issues/744)
|
||||
|
@ -1,6 +1,6 @@
|
||||
# How to contribute
|
||||
|
||||
Unfortunately we all can't work on cmder every day of the year, so I have decided to write some guidelines for contributing.
|
||||
Unfortunately we all can't work on Cmder every day of the year, so I have decided to write some guidelines for contributing.
|
||||
|
||||
If you follow them your contribution will likely be pulled in quicker.
|
||||
|
||||
|
@ -5,7 +5,12 @@ SET CMDER_ROOT=%~dp0
|
||||
@if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
||||
|
||||
if not exist "%CMDER_ROOT%\config\user_ConEmu.xml" (
|
||||
copy "%CMDER_ROOT%\vendor\ConEmu.xml.default" "%CMDER_ROOT%\config\user_ConEmu.xml"
|
||||
if not exist "%CMDER_ROOT%\config" mkdir "%CMDER_ROOT%\config" 2>nul
|
||||
copy "%CMDER_ROOT%\vendor\ConEmu.xml.default" "%CMDER_ROOT%\config\user_ConEmu.xml" 1>nul
|
||||
if %errorlevel% neq 0 (
|
||||
echo ERROR: CMDER Initialization has Failed
|
||||
exit /b 1
|
||||
)
|
||||
)
|
||||
|
||||
if exist "%~1" (
|
||||
|
32
README.md
32
README.md
@ -1,6 +1,6 @@
|
||||
# Cmder
|
||||
|
||||
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/MartiUK/cmder) [](https://github.com/cmderdev/cmder/actions/workflows/build.yml)
|
||||
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/cmderdev/cmder) [](https://github.com/cmderdev/cmder/actions/workflows/build.yml)
|
||||
|
||||
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, comes with a Monokai color scheme, amazing [clink](https://chrisant996.github.io/clink/) (further enhanced by [clink-completions](https://github.com/vladimir-kotikov/clink-completions)) and a custom prompt layout.
|
||||
|
||||
@ -8,7 +8,7 @@ Cmder is a **software package** created out of pure frustration over absence of
|
||||
|
||||
## Why use it
|
||||
|
||||
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like wget, curl and git) with you anywhere.
|
||||
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like `wget`, `curl` and `git`) with you anywhere.
|
||||
|
||||
The Cmder's user interface is also designed to be more eye pleasing, and you can compare the main differences between Cmder and ConEmu [here](https://conemu.github.io/en/cmder.html).
|
||||
|
||||
@ -71,7 +71,7 @@ So you've experimented with Cmder a little and want to give it a shot in a more
|
||||
1. Open a terminal as an Administrator
|
||||
2. Navigate to the directory you have placed Cmder
|
||||
3. Execute `.\cmder.exe /REGISTER ALL`
|
||||
_If you get a message "Access Denied" ensure you are executing the command in an **Administrator** prompt._
|
||||
_If you get an "Access Denied" message, make sure you are executing the command in an **Administrator** prompt._
|
||||
|
||||
In a file explorer window right click in or on a directory to see "Cmder Here" in the context menu.
|
||||
|
||||
@ -115,11 +115,11 @@ You can open multiple tabs each containing one of the following shells:
|
||||
|
||||
Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and work as you might expect in Cmder with access to use ConEmu's color schemes, key bindings and other settings defined in the ConEmu Settings dialog.
|
||||
|
||||
⚠ *NOTE:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini edition without additional configuration.
|
||||
⚠ *Note:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini edition without additional configuration.
|
||||
|
||||
You may however, choose to use an external installation of bash, such as Microsoft's [Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (called WSL) or the [Cygwin](https://cygwin.com/) project which provides POSIX support on windows.
|
||||
|
||||
⚠ *NOTE:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it.
|
||||
⚠ *Note:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it.
|
||||
|
||||
As a result mintty specific config is done via the `[%USERPROFILE%|$HOME]/.minttyrc` file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty).
|
||||
|
||||
@ -188,7 +188,7 @@ Documentation is in the file for each setting.
|
||||
| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more usage. | not set |
|
||||
|
||||
### Cmder Shell User Config
|
||||
Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
||||
Single user portable configuration is possible using the Cmder specific shell config files. Edit the below files to add your own configuration:
|
||||
|
||||
| Shell | Cmder Portable User Config |
|
||||
| ------------- | ----------------------------------------- |
|
||||
@ -196,7 +196,7 @@ Single user portable configuration is possible using the cmder specific shell co
|
||||
| PowerShell | `$ENV:CMDER_ROOT\config\user_profile.ps1` |
|
||||
| Bash/Mintty | `$CMDER_ROOT/config/user_profile.sh` |
|
||||
|
||||
Note: Bash and Mintty sessions will also source the `$HOME/.bashrc` file if it exists after it sources `$CMDER_ROOT/config/user_profile.sh`.
|
||||
**Note:** Bash and Mintty sessions will also source the `$HOME/.bashrc` file if it exists after it sources `$CMDER_ROOT/config/user_profile.sh`.
|
||||
|
||||
You can write `*.cmd|*.bat`, `*.ps1`, and `*.sh` scripts and just drop them in the `%CMDER_ROOT%\config\profile.d` folder to add startup config to Cmder.
|
||||
|
||||
@ -230,7 +230,7 @@ Aliases defined using the `alias.bat` command will automatically be saved in the
|
||||
|
||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||
|
||||
Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything stored in `%CMDER_ROOT%` will be a portable setting and will follow cmder to another machine.
|
||||
Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything stored in `%CMDER_ROOT%` will be a portable setting and will follow Cmder to another machine.
|
||||
|
||||
* `%CMDER_ROOT%\config\profile.d\*.cmd` and `\*.bat`
|
||||
* `%CMDER_ROOT%\config\user_aliases.cmd`
|
||||
@ -241,7 +241,7 @@ Bash shells support simple and complex aliases with optional parameters natively
|
||||
|
||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||
|
||||
Note: These are loaded in this order by `$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh`. Anything stored in `$CMDER_ROOT` will be a portable setting and will follow cmder to another machine.
|
||||
Note: These are loaded in this order by `$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh`. Anything stored in `$CMDER_ROOT` will be a portable setting and will follow Cmder to another machine.
|
||||
|
||||
* `$CMDER_ROOT/config/profile.d/*.sh`
|
||||
* `$CMDER_ROOT/config/user_profile.sh`
|
||||
@ -254,7 +254,7 @@ PowerShell has native simple alias support, for example `[new-alias | set-alias]
|
||||
|
||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||
|
||||
Note: These are loaded in this order by `$ENV:CMDER_ROOT\vendor\user_profile.ps1`. Anything stored in `$ENV:CMDER_ROOT` will be a portable setting and will follow cmder to another machine.
|
||||
Note: These are loaded in this order by `$ENV:CMDER_ROOT\vendor\user_profile.ps1`. Anything stored in `$ENV:CMDER_ROOT` will be a portable setting and will follow Cmder to another machine.
|
||||
|
||||
* `$ENV:CMDER_ROOT\config\profile.d\*.ps1`
|
||||
* `$ENV:CMDER_ROOT\config\user_profile.ps1`
|
||||
@ -292,7 +292,7 @@ The destination file extension depends on the shell you use in that environment.
|
||||
* bash - Copy to `/etc/profile.d/cmder_exinit.sh`
|
||||
* zsh - Copy to `/etc/profile.d/cmder_exinit.zsh`
|
||||
|
||||
Uncomment and edit the below line in the script to use Cmder config even when launched from outside Cmder.
|
||||
Uncomment and edit the line below in the script to use Cmder config even when launched from outside Cmder.
|
||||
|
||||
```
|
||||
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
||||
@ -344,9 +344,9 @@ To conditionally start `notepad.exe` when you start a specific `cmder` task:
|
||||
|
||||
```
|
||||
|
||||
To see detailed usage of `cexec`, type `cexec /?` in cmder.
|
||||
To see detailed usage of `cexec`, type `cexec /?` in Cmder.
|
||||
|
||||
### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs
|
||||
### Integrating Cmder with [Windows Terminal](https://github.com/cmderdev/cmder/wiki/Seamless-Windows-Terminal-Integration), [VS Code](https://github.com/cmderdev/cmder/wiki/Seamless-VS-Code-Integration), and your favorite IDEs
|
||||
|
||||
Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html).
|
||||
|
||||
@ -386,7 +386,11 @@ If you do not have a `[cmder_root]/config/user[-|_]conemu.xml`, you are running
|
||||
|
||||
You can download builds of the current development branch by going to AppVeyor via the following link:
|
||||
|
||||
[](https://ci.appveyor.com/project/MartiUK/cmder/branch/master/artifacts)
|
||||
[](https://ci.appveyor.com/project/cmderdev/cmder/branch/master/artifacts)
|
||||
|
||||
The latest download builds by GitHub Actions can be downloaded from the link below:
|
||||
|
||||
[](https://github.com/cmderdev/cmder/actions/workflows/build.yml)
|
||||
|
||||
## License
|
||||
|
||||
|
@ -39,12 +39,12 @@
|
||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||
<!-- Windows 8.1 -->
|
||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||
<!-- Windows 10 -->
|
||||
<!-- Windows 10 and Windows 11 -->
|
||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||
</application>
|
||||
</compatibility>
|
||||
|
||||
<!-- Add dpi awareness -->
|
||||
<!-- Add DPI awareness -->
|
||||
<asmv3:application>
|
||||
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||
<dpiAware>true/pm</dpiAware>
|
||||
|
@ -3,12 +3,15 @@ launcher
|
||||
.gitattributes
|
||||
.git
|
||||
.github
|
||||
.vs
|
||||
.vscode
|
||||
.idea
|
||||
*.md
|
||||
build
|
||||
scripts
|
||||
config\.history
|
||||
packignore
|
||||
icons\Thumbs.db
|
||||
Thumbs.db
|
||||
icons\cmder_icon.psd
|
||||
icons\icon_16*.png
|
||||
icons\icon_32*.png
|
||||
@ -20,3 +23,5 @@ appveyor.yml
|
||||
vendor\cmder.sh
|
||||
vendor\git-prompt.sh
|
||||
config\user-*
|
||||
clink_history*
|
||||
*.log
|
||||
|
@ -35,7 +35,7 @@
|
||||
.LINK
|
||||
http://cmder.app/ - Project Home
|
||||
#>
|
||||
[CmdletBinding(SupportsShouldProcess=$true)]
|
||||
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||
Param(
|
||||
# CmdletBinding will give us;
|
||||
# -verbose switch to turn on logging and
|
||||
@ -88,7 +88,7 @@ if ($Compile) {
|
||||
Pop-Location
|
||||
}
|
||||
|
||||
if (-Not $noVendor) {
|
||||
if (-not $noVendor) {
|
||||
# Check for requirements
|
||||
Ensure-Exists $sourcesPath
|
||||
Ensure-Executable "7z"
|
||||
@ -108,12 +108,14 @@ if (-Not $noVendor) {
|
||||
$ConEmuXmlSave = Join-Path $config "ConEmu.xml"
|
||||
Write-Verbose "Backup '$ConEmuXml' to '$ConEmuXmlSave'"
|
||||
Copy-Item $ConEmuXml $ConEmuXmlSave
|
||||
} else { $ConEmuXml = "" }
|
||||
} else { $ConEmuXml = "" }
|
||||
}
|
||||
else { $ConEmuXml = "" }
|
||||
}
|
||||
else { $ConEmuXml = "" }
|
||||
|
||||
# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
|
||||
foreach ($ssh_agent in $(Get-Process ssh-agent -ErrorAction SilentlyContinue)) {
|
||||
if ([string]$($ssh_agent.path) -Match [string]$cmder_root.replace('\','\\')) {
|
||||
if ([string]$($ssh_agent.path) -Match [string]$cmder_root.replace('\', '\\')) {
|
||||
Write-Verbose $("Stopping " + $ssh_agent.path + "!")
|
||||
Stop-Process $ssh_agent.id
|
||||
}
|
||||
@ -160,7 +162,7 @@ if (-Not $noVendor) {
|
||||
Pop-Location
|
||||
}
|
||||
|
||||
if (-Not $Compile -Or $noVendor) {
|
||||
if (-not $Compile -or $noVendor) {
|
||||
Write-Warning "You are not building the full project, Use -Compile without -noVendor"
|
||||
Write-Warning "This cannot be a release. Test build only!"
|
||||
return
|
||||
|
@ -22,7 +22,7 @@
|
||||
https://github.com/cmderdev/cmder - Project Home
|
||||
#>
|
||||
|
||||
[CmdletBinding(SupportsShouldProcess=$true)]
|
||||
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||
Param(
|
||||
# CmdletBinding will give us;
|
||||
# -verbose switch to turn on logging and
|
||||
@ -42,9 +42,9 @@ $ErrorActionPreference = "Stop"
|
||||
Ensure-Executable "7z"
|
||||
|
||||
$targets = @{
|
||||
"cmder.zip" = $null;
|
||||
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on";
|
||||
"cmder_mini.zip" = "-mm=Deflate -mfb=258 -mpass=15 -xr!`"vendor\git-for-windows`"";
|
||||
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on";
|
||||
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3";
|
||||
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`"";
|
||||
}
|
||||
|
||||
Push-Location -Path $cmderRoot
|
||||
@ -63,7 +63,7 @@ $version = Get-VersionStr
|
||||
|
||||
if ($PSCmdlet.MyInvocation.BoundParameters["Verbose"].IsPresent) {
|
||||
Write-Verbose "Packing Cmder $version in $saveTo..."
|
||||
$excluded = (Get-Content -Path "$cmderRoot\packignore") -Split [System.Environment]::NewLine | Where-Object {$_}
|
||||
$excluded = (Get-Content -Path "$cmderRoot\packignore") -Split [System.Environment]::NewLine | Where-Object { $_ }
|
||||
Get-ChildItem $cmderRoot -Force -Exclude $excluded
|
||||
}
|
||||
|
||||
|
@ -25,7 +25,7 @@
|
||||
.LINK
|
||||
http://cmder.app/ - Project Home
|
||||
#>
|
||||
[CmdletBinding(SupportsShouldProcess=$true)]
|
||||
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||
Param(
|
||||
# CmdletBinding will give us;
|
||||
# -verbose switch to turn on logging and
|
||||
@ -55,7 +55,7 @@ function Match-Filenames {
|
||||
|
||||
$position = 0
|
||||
|
||||
if ([String]::IsNullOrEmpty($filename) -Or [String]::IsNullOrEmpty($filenameDownload)) {
|
||||
if ([String]::IsNullOrEmpty($filename) -or [String]::IsNullOrEmpty($filenameDownload)) {
|
||||
throw "Either one or both filenames are empty!"
|
||||
}
|
||||
|
||||
@ -88,20 +88,26 @@ function Fetch-DownloadUrl {
|
||||
|
||||
$url = [uri] $urlStr
|
||||
|
||||
if ((-Not $url) -Or ($null -eq $url) -Or ($url -eq '')) {
|
||||
if ((-not $url) -or ($null -eq $url) -or ($url -eq '')) {
|
||||
throw "Failed to parse url: $urlStr"
|
||||
}
|
||||
|
||||
if (-Not ("http", "https" -Contains $url.Scheme)) {
|
||||
if (-not ("http", "https" -contains $url.Scheme)) {
|
||||
throw "unknown source scheme: $($url.Scheme)"
|
||||
}
|
||||
|
||||
if (-Not ($url.Host -ilike "*github.com")) {
|
||||
if (-not ($url.Host -ilike "*github.com")) {
|
||||
throw "unknown source domain: $($url.Host)"
|
||||
}
|
||||
|
||||
$p = $url.Segments.Split([Environment]::NewLine)
|
||||
|
||||
$headers = @{}
|
||||
|
||||
if ($($env:GITHUB_TOKEN)) {
|
||||
$headers["Authorization"] = "token $($env:GITHUB_TOKEN)"
|
||||
}
|
||||
|
||||
# Api server for GitHub
|
||||
$urlHost = "api.github.com"
|
||||
|
||||
@ -110,18 +116,18 @@ function Fetch-DownloadUrl {
|
||||
|
||||
$apiUrl = [uri] (New-Object System.UriBuilder -ArgumentList $url.Scheme, $urlHost, -1, $urlPath).Uri
|
||||
|
||||
$info = Invoke-RestMethod -Uri $apiUrl
|
||||
$info = Invoke-RestMethod -Uri $apiUrl -Headers $headers
|
||||
|
||||
$downloadLinks = (New-Object System.Collections.Generic.List[System.Object])
|
||||
|
||||
$charCount = 0
|
||||
|
||||
if (-Not ($info -Is [array])) {
|
||||
if (-not ($info -is [array])) {
|
||||
throw "The response received from API server is invalid"
|
||||
}
|
||||
|
||||
:loop foreach ($i in $info) {
|
||||
if (-Not ($i.assets -Is [array])) {
|
||||
if (-not ($i.assets -is [array])) {
|
||||
continue
|
||||
}
|
||||
|
||||
@ -130,19 +136,19 @@ function Fetch-DownloadUrl {
|
||||
continue
|
||||
}
|
||||
|
||||
# Skip some download links as we're not interested in them
|
||||
# Skip some download links as we're not interested in them
|
||||
if ( $a.browser_download_url -ilike "*_symbols*" ) {
|
||||
continue
|
||||
}
|
||||
|
||||
$score = Match-Filenames $url $a.browser_download_url
|
||||
|
||||
# Skip links that don't match or are less similar
|
||||
# Skip links that don't match or are less similar
|
||||
if ( ($score -eq 0) -or ($score -lt $charCount) ) {
|
||||
continue
|
||||
}
|
||||
|
||||
# If we reach the same download link as we have
|
||||
# If we reach the same download link as we have
|
||||
if ( $score -eq [System.IO.Path]::GetFileName($url).Length ) {
|
||||
}
|
||||
|
||||
@ -150,19 +156,19 @@ function Fetch-DownloadUrl {
|
||||
$downloadLinks.Add($a.browser_download_url)
|
||||
}
|
||||
|
||||
# If at least one download link was found, don't continue with older releases
|
||||
# If at least one download link was found, don't continue with older releases
|
||||
if ( $downloadLinks.Length -gt 0 ) {
|
||||
break :loop
|
||||
}
|
||||
}
|
||||
|
||||
# Special case for archive downloads of repository
|
||||
if (($null -eq $downloadLinks) -Or (-Not $downloadLinks)) {
|
||||
if ((($p | % {$_.Trim('/')}) -Contains "archive") -And $info[0].tag_name) {
|
||||
# Special case for archive downloads of repository
|
||||
if (($null -eq $downloadLinks) -or (-not $downloadLinks)) {
|
||||
if ((($p | ForEach-Object { $_.Trim('/') }) -contains "archive") -and $info[0].tag_name) {
|
||||
for ($i = 0; $i -lt $p.Length; $i++) {
|
||||
if ($p[$i].Trim('/') -eq "archive") {
|
||||
$p[$i+1] = $info[0].tag_name + ".zip"
|
||||
$downloadLinks = $url.Scheme + "://" + $url.Host + ($p -Join '')
|
||||
$p[$i + 1] = $info[0].tag_name + ".zip"
|
||||
$downloadLinks = $url.Scheme + "://" + $url.Host + ($p -join '')
|
||||
return $downloadLinks
|
||||
}
|
||||
}
|
||||
@ -188,11 +194,11 @@ function Fetch-DownloadUrl {
|
||||
|
||||
$downloadLinks = $temp | Where-Object { (Match-Filenames $url $_ true) -eq $charCount }
|
||||
|
||||
if (($null -eq $downloadLinks) -Or (-Not $downloadLinks)) {
|
||||
if (($null -eq $downloadLinks) -or (-not $downloadLinks)) {
|
||||
throw "No suitable download links matched for the url!"
|
||||
}
|
||||
|
||||
if (-Not($downloadLinks -is [String])) {
|
||||
if (-not($downloadLinks -is [String])) {
|
||||
throw "Found multiple matches for the same url:`n" + $downloadLinks
|
||||
}
|
||||
|
||||
@ -207,11 +213,11 @@ $sources = Get-Content $sourcesPath | Out-String | ConvertFrom-Json
|
||||
foreach ($s in $sources) {
|
||||
Write-Verbose "Updating sources link for $($s.name)..."
|
||||
|
||||
Write-Verbose "Old Link: $($s.url)"
|
||||
Write-Verbose "Old Link: $($s.url)"
|
||||
|
||||
$downloadUrl = Fetch-DownloadUrl $s.url
|
||||
|
||||
if (($null -eq $downloadUrl) -Or ($downloadUrl -eq '')) {
|
||||
if (($null -eq $downloadUrl) -or ($downloadUrl -eq '')) {
|
||||
Write-Verbose "No new links were found"
|
||||
continue
|
||||
}
|
||||
@ -222,27 +228,27 @@ foreach ($s in $sources) {
|
||||
|
||||
$version = ''
|
||||
|
||||
if ( ($url.Segments[-3] -eq "download/") -And ($url.Segments[-2].StartsWith("v")) ) {
|
||||
if (($url.Segments[-3] -eq "download/") -and ($url.Segments[-2].StartsWith("v"))) {
|
||||
$version = $url.Segments[-2].TrimStart('v').TrimEnd('/')
|
||||
}
|
||||
|
||||
if ( ($url.Segments[-2] -eq "archive/") ) {
|
||||
if (($url.Segments[-2] -eq "archive/")) {
|
||||
$version = [System.IO.Path]::GetFileNameWithoutExtension($url.Segments[-1].TrimStart('v').TrimEnd('/'))
|
||||
}
|
||||
|
||||
if ( $version -eq '' ) {
|
||||
if ($version -eq '') {
|
||||
throw "Unable to extract version from url string"
|
||||
}
|
||||
|
||||
Write-Verbose "Version: $version"
|
||||
|
||||
if ( $s.version -ne $version ) {
|
||||
# if ( ([System.Version] $s.version) -gt ([System.Version] $version) ) {
|
||||
# throw "The current version $($s.version) is already newer than the found version $version!"
|
||||
# }
|
||||
if ( $s.version -ne $version ) {
|
||||
# if ( ([System.Version] $s.version) -gt ([System.Version] $version) ) {
|
||||
# throw "The current version $($s.version) is already newer than the found version $version!"
|
||||
# }
|
||||
|
||||
$count++
|
||||
}
|
||||
$count++
|
||||
}
|
||||
|
||||
$s.url = $downloadUrl
|
||||
$s.version = $version
|
||||
@ -251,15 +257,15 @@ foreach ($s in $sources) {
|
||||
$sources | ConvertTo-Json | Set-Content $sourcesPath
|
||||
|
||||
if ($count -eq 0) {
|
||||
Write-Host -ForegroundColor yellow "No new releases were found."
|
||||
return
|
||||
Write-Host -ForegroundColor yellow "No new releases were found."
|
||||
return
|
||||
}
|
||||
|
||||
if ( $Env:APPVEYOR -eq 'True' ) {
|
||||
if ($Env:APPVEYOR -eq 'True') {
|
||||
Add-AppveyorMessage -Message "Successfully updated $count dependencies." -Category Information
|
||||
}
|
||||
|
||||
if ( $Env:GITHUB_ACTIONS -eq 'true' ) {
|
||||
if ($Env:GITHUB_ACTIONS -eq 'true') {
|
||||
Write-Output "::notice title=Task Complete::Successfully updated $count dependencies."
|
||||
}
|
||||
|
||||
|
@ -32,17 +32,19 @@ function Delete-Existing($path) {
|
||||
function Extract-Archive($source, $target) {
|
||||
Write-Verbose $("Extracting Archive '$cmder_root\vendor\" + $source.replace('/','\') + " to '$cmder_root\vendor\$target'")
|
||||
Invoke-Expression "7z x -y -o`"$($target)`" `"$source`" > `$null"
|
||||
if ($lastexitcode -ne 0) {
|
||||
if ($LastExitCode -ne 0) {
|
||||
Write-Error "Extracting of $source failed"
|
||||
}
|
||||
Remove-Item $source
|
||||
}
|
||||
|
||||
function Create-Archive($source, $target, $params) {
|
||||
$command = "7z a -xr@`"$source\packignore`" $params `"$target`" `"$source\*`" > `$null"
|
||||
$command = "7z a -x@`"$source\packignore`" $params `"$target`" `"*`" > `$null"
|
||||
Write-Verbose "Creating Archive from '$source' in '$target' with parameters '$params'"
|
||||
Push-Location $source
|
||||
Invoke-Expression $command
|
||||
if ($lastexitcode -ne 0) {
|
||||
Pop-Location
|
||||
if ($LastExitCode -ne 0) {
|
||||
Write-Error "Compressing $source failed"
|
||||
}
|
||||
}
|
||||
@ -54,7 +56,7 @@ function Flatten-Directory($name) {
|
||||
$moving = "$($name)_moving"
|
||||
Rename-Item $name -NewName $moving
|
||||
Write-Verbose "Flattening the '$name' directory..."
|
||||
$child = (Get-Childitem $moving)[0] | Resolve-Path
|
||||
$child = (Get-ChildItem $moving)[0] | Resolve-Path
|
||||
Move-Item -Path $child -Destination $name
|
||||
Remove-Item -Recurse $moving
|
||||
}
|
||||
@ -78,7 +80,7 @@ function Set-GHVariable {
|
||||
Write-Verbose "Setting CI variable $Name to $Value" -Verbose
|
||||
|
||||
if ($env:GITHUB_ENV) {
|
||||
echo "$Name=$Value" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||
Write-Output "$Name=$Value" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||
}
|
||||
}
|
||||
|
||||
@ -98,8 +100,8 @@ function Get-VersionStr {
|
||||
|
||||
# Determine if git is available
|
||||
if (Get-Command "git.exe" -ErrorAction SilentlyContinue) {
|
||||
# Determine if the current diesctory is a git repository
|
||||
$GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -erroraction SilentlyContinue
|
||||
# Determine if the current directory is a git repository
|
||||
$GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -ErrorAction SilentlyContinue
|
||||
|
||||
if ( $GitPresent -eq 'true' ) {
|
||||
$string = Invoke-Expression "git describe --abbrev=0 --tags"
|
||||
@ -130,7 +132,7 @@ function Parse-Changelog($file) {
|
||||
[regex]$regex = '^## \[(?<version>[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$';
|
||||
|
||||
# Find the first match of the version string which means the latest version
|
||||
$version = Select-String -Path $file -Pattern $regex | Select-Object -First 1 | % { $_.Matches.Groups[1].Value }
|
||||
$version = Select-String -Path $file -Pattern $regex | Select-Object -First 1 | ForEach-Object { $_.Matches.Groups[1].Value }
|
||||
|
||||
return $version
|
||||
}
|
||||
@ -226,16 +228,16 @@ function Download-File {
|
||||
|
||||
$useBitTransfer = $null -ne (Get-Module -Name BitsTransfer -ListAvailable) -and ($PSVersionTable.PSVersion.Major -le 5)
|
||||
|
||||
$File = $File -Replace "/", "\"
|
||||
$File = $File -replace "/", "\"
|
||||
|
||||
try {
|
||||
if ($useBitTransfer) {
|
||||
Start-BitsTransfer -Source $Url -Destination $File -DisplayName "Downloading $Url to $File"
|
||||
Return
|
||||
Start-BitsTransfer -Source $Url -Destination $File -DisplayName "Downloading '$Url' to $File"
|
||||
return
|
||||
}
|
||||
}
|
||||
catch {
|
||||
Write-Error "Failed to download file using BITS, reason: $_`nUsing fallback method instead...`n"
|
||||
Write-Error "Failed to download file using BITS, reason: $_`nUsing fallback method instead...`n" -ErrorAction:Continue
|
||||
}
|
||||
|
||||
Write-Verbose "Downloading from $Url to $File`n"
|
||||
|
4
vendor/ConEmu.xml.default
vendored
4
vendor/ConEmu.xml.default
vendored
@ -549,14 +549,14 @@
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
<value name="Cmd1" type="string" data="*"%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||
<value name="Cmd1" type="string" data="*set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||
</key>
|
||||
<key name="Task8" modified="2018-02-22 06:05:13" build="171109">
|
||||
<value name="Name" type="string" data="{bash::bash}"/>
|
||||
<value name="Flags" type="dword" data="00000000"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||
<value name="Cmd1" type="string" data=""%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||
<value name="Cmd1" type="string" data="set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
|
8
vendor/bin/cmder_shell.cmd
vendored
8
vendor/bin/cmder_shell.cmd
vendored
@ -1,13 +1,13 @@
|
||||
@echo off
|
||||
|
||||
set CMDER_ROOT=%~dp0..\
|
||||
set CMDER_ROOT=%~dp0..\..\
|
||||
|
||||
if "%cmder_init%" == "1" (
|
||||
"%CMDER_ROOT%\vendor\clink\clink.bat" inject -q --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||
"%CMDER_ROOT%\vendor\clink\clink.bat" inject -q --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||
) else (
|
||||
set cmder_init=1
|
||||
set cmder_init=1
|
||||
)
|
||||
|
||||
pushd %CMDER_ROOT%
|
||||
pushd "%CMDER_ROOT%"
|
||||
call "%CMDER_ROOT%\vendor\init.bat" /f
|
||||
popd
|
||||
|
6
vendor/bin/excd.cmd
vendored
Normal file
6
vendor/bin/excd.cmd
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
@if "%~1"=="/?" (@cd %*)
|
||||
@set excd=%*
|
||||
@set excd=%excd:"=%
|
||||
@if "%excd:~0,1%"=="~" (@set excd=%userprofile%\%excd:~1%)
|
||||
@if not "%~1"=="/d" (@set excd_param="/d") else (@set excd_param=)
|
||||
@cd %excd_param% "%excd%"
|
184
vendor/clink.lua
vendored
184
vendor/clink.lua
vendored
@ -15,34 +15,34 @@ dofile(clink_lua_file)
|
||||
|
||||
|
||||
local function get_uah_color()
|
||||
return uah_color or "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
|
||||
return uah_color or "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
|
||||
end
|
||||
|
||||
local function get_cwd_color()
|
||||
return cwd_color or "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
|
||||
return cwd_color or "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
|
||||
end
|
||||
|
||||
local function get_lamb_color()
|
||||
return lamb_color or "\x1b[1;30;49m" -- Light Grey = Lambda Color
|
||||
return lamb_color or "\x1b[1;30;49m" -- Light Grey = Lambda Color
|
||||
end
|
||||
|
||||
|
||||
local function get_clean_color()
|
||||
return clean_color or "\x1b[1;37;49m"
|
||||
return clean_color or "\x1b[37;1m" -- White, Bold
|
||||
end
|
||||
|
||||
|
||||
local function get_dirty_color()
|
||||
return dirty_color or "\x1b[33;3m"
|
||||
return dirty_color or "\x1b[33;3m" -- Yellow, Italic
|
||||
end
|
||||
|
||||
|
||||
local function get_conflict_color()
|
||||
return conflict_color or "\x1b[31;1m"
|
||||
return conflict_color or "\x1b[31;1m" -- Red, Bold
|
||||
end
|
||||
|
||||
local function get_unknown_color()
|
||||
return unknown_color or "\x1b[37;1m"
|
||||
return unknown_color or "\x1b[37;1m" -- White, Bold
|
||||
end
|
||||
|
||||
---
|
||||
@ -57,9 +57,9 @@ end
|
||||
-- Ex: Input C:\Windows\System32 returns System32
|
||||
---
|
||||
local function get_folder_name(path)
|
||||
local reversePath = string.reverse(path)
|
||||
local slashIndex = string.find(reversePath, "\\")
|
||||
return string.sub(path, string.len(path) - slashIndex + 2)
|
||||
local reversePath = string.reverse(path)
|
||||
local slashIndex = string.find(reversePath, "\\")
|
||||
return string.sub(path, string.len(path) - slashIndex + 2)
|
||||
end
|
||||
|
||||
|
||||
@ -115,32 +115,32 @@ local function set_prompt_filter()
|
||||
-- Much of the below was 'borrowed' from https://github.com/AmrEldib/cmder-powerline-prompt
|
||||
-- Symbol displayed for the home dir in the prompt.
|
||||
if not prompt_homeSymbol then
|
||||
prompt_homeSymbol = "~"
|
||||
prompt_homeSymbol = "~"
|
||||
end
|
||||
|
||||
-- Symbol displayed in the new line below the prompt.
|
||||
if not prompt_lambSymbol then
|
||||
prompt_lambSymbol = "λ"
|
||||
prompt_lambSymbol = "λ"
|
||||
end
|
||||
|
||||
if not prompt_type then
|
||||
prompt_type = "full"
|
||||
prompt_type = "full"
|
||||
end
|
||||
|
||||
if prompt_useHomeSymbol == nil then
|
||||
prompt_useHomeSymbol = false
|
||||
prompt_useHomeSymbol = false
|
||||
end
|
||||
|
||||
if prompt_useUserAtHost == nil then
|
||||
prompt_useUserAtHost = false
|
||||
prompt_useUserAtHost = false
|
||||
end
|
||||
|
||||
if prompt_singleLine == nil then
|
||||
prompt_singleLine = false
|
||||
prompt_singleLine = false
|
||||
end
|
||||
|
||||
if prompt_includeVersionControl == nil then
|
||||
prompt_includeVersionControl = true
|
||||
prompt_includeVersionControl = true
|
||||
end
|
||||
|
||||
if prompt_type == 'folder' then
|
||||
@ -158,9 +158,11 @@ local function set_prompt_filter()
|
||||
|
||||
cr = "\n"
|
||||
if prompt_singleLine then
|
||||
cr = ' '
|
||||
cr = ' '
|
||||
end
|
||||
|
||||
cr = "\x1b[0m" .. cr
|
||||
|
||||
if env ~= nil then env = "("..env..") " else env = "" end
|
||||
|
||||
if uah ~= '' then uah = get_uah_color() .. uah end
|
||||
@ -168,7 +170,7 @@ local function set_prompt_filter()
|
||||
|
||||
local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or ""
|
||||
|
||||
prompt = "{uah}{cwd}" .. version_control .. get_lamb_color() .. cr .. "{env}{lamb} \x1b[0m"
|
||||
prompt = "{uah}{cwd}" .. version_control .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m "
|
||||
prompt = string.gsub(prompt, "{uah}", uah)
|
||||
prompt = string.gsub(prompt, "{cwd}", cwd)
|
||||
prompt = string.gsub(prompt, "{env}", env)
|
||||
@ -363,12 +365,12 @@ local function get_git_status()
|
||||
local code = line:sub(1, 2)
|
||||
-- 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
|
||||
is_status = false
|
||||
conflict_found = true
|
||||
break
|
||||
is_status = false
|
||||
conflict_found = true
|
||||
break
|
||||
-- unversioned files are ignored, comment out 'code ~= "!!"' to unignore them
|
||||
elseif code ~= "!!" and code ~= "??" then
|
||||
is_status = false
|
||||
is_status = false
|
||||
end
|
||||
end
|
||||
file:close()
|
||||
@ -406,13 +408,63 @@ local function get_svn_status()
|
||||
return true
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
---
|
||||
local last_git_status_time = nil
|
||||
local last_git_status_setting = true
|
||||
local function get_git_status_setting()
|
||||
local time = os.clock()
|
||||
local last_time = last_git_status_time
|
||||
last_git_status_time = time
|
||||
if last_time and time >= 0 and time - last_time < 10 then
|
||||
return last_git_status_setting
|
||||
end
|
||||
|
||||
-- When async prompt filtering is available, check the
|
||||
-- prompt_overrideGitStatusOptIn config setting for whether to ignore the
|
||||
-- cmder.status and cmder.cmdstatus git config opt-in settings.
|
||||
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") then
|
||||
if prompt_overrideGitStatusOptIn then
|
||||
last_git_status_setting = true
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local gitStatusConfig = io_popenyield("git --no-pager config cmder.status 2>nul")
|
||||
for line in gitStatusConfig:lines() do
|
||||
if string.match(line, 'false') then
|
||||
gitStatusConfig:close()
|
||||
last_git_status_setting = false
|
||||
return false
|
||||
end
|
||||
end
|
||||
gitStatusConfig:close()
|
||||
|
||||
local gitCmdStatusConfig = io_popenyield("git --no-pager config cmder.cmdstatus 2>nul")
|
||||
for line in gitCmdStatusConfig:lines() do
|
||||
if string.match(line, 'false') then
|
||||
gitCmdStatusConfig:close()
|
||||
last_git_status_setting = false
|
||||
return false
|
||||
end
|
||||
end
|
||||
gitCmdStatusConfig:close()
|
||||
|
||||
last_git_status_setting = true
|
||||
return true
|
||||
end
|
||||
|
||||
---
|
||||
-- Use a prompt coroutine to get git status in the background.
|
||||
-- Cache the info so we can reuse it next time to reduce flicker.
|
||||
---
|
||||
local function get_git_info_table()
|
||||
local info = clink_promptcoroutine(function ()
|
||||
return get_git_status()
|
||||
-- Use git status if allowed.
|
||||
local cmderGitStatusOptIn = get_git_status_setting()
|
||||
return cmderGitStatusOptIn and get_git_status() or {}
|
||||
end)
|
||||
if not info then
|
||||
info = cached_info.git_info or {}
|
||||
@ -422,42 +474,6 @@ local function get_git_info_table()
|
||||
return info
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
---
|
||||
local function get_git_status_setting()
|
||||
-- When async prompt filtering is available, check the
|
||||
-- prompt_overrideGitStatusOptIn config setting for whether to ignore the
|
||||
-- cmder.status and cmder.cmdstatus git config opt-in settings.
|
||||
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") then
|
||||
if prompt_overrideGitStatusOptIn then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local gitStatusConfig = io.popen("git --no-pager config cmder.status 2>nul")
|
||||
|
||||
for line in gitStatusConfig:lines() do
|
||||
if string.match(line, 'false') then
|
||||
gitStatusConfig:close()
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
local gitCmdStatusConfig = io.popen("git --no-pager config cmder.cmdstatus 2>nul")
|
||||
for line in gitCmdStatusConfig:lines() do
|
||||
if string.match(line, 'false') then
|
||||
gitCmdStatusConfig:close()
|
||||
return false
|
||||
end
|
||||
end
|
||||
gitStatusConfig:close()
|
||||
gitCmdStatusConfig:close()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function git_prompt_filter()
|
||||
|
||||
-- Don't do any git processing if the prompt doesn't want to show git info.
|
||||
@ -475,7 +491,6 @@ local function git_prompt_filter()
|
||||
|
||||
local git_dir = get_git_dir()
|
||||
local color
|
||||
cmderGitStatusOptIn = get_git_status_setting()
|
||||
if git_dir then
|
||||
local branch = get_git_branch(git_dir)
|
||||
if branch then
|
||||
@ -485,28 +500,25 @@ local function git_prompt_filter()
|
||||
cached_info.git_dir = git_dir
|
||||
cached_info.git_branch = branch
|
||||
end
|
||||
-- Use git status if allowed.
|
||||
if cmderGitStatusOptIn then
|
||||
-- if we're inside of git repo then try to detect current branch
|
||||
-- Has branch => therefore it is a git folder, now figure out status
|
||||
local gitInfo = get_git_info_table()
|
||||
local gitStatus = gitInfo.status
|
||||
local gitConflict = gitInfo.conflict
|
||||
|
||||
if gitStatus == nil then
|
||||
color = colors.nostatus
|
||||
elseif gitStatus then
|
||||
color = colors.clean
|
||||
else
|
||||
color = colors.dirty
|
||||
end
|
||||
-- If we're inside of git repo then try to detect current branch
|
||||
-- Has branch => therefore it is a git folder, now figure out status
|
||||
local gitInfo = get_git_info_table()
|
||||
local gitStatus = gitInfo.status
|
||||
local gitConflict = gitInfo.conflict
|
||||
|
||||
if gitConflict then
|
||||
color = colors.conflict
|
||||
end
|
||||
else
|
||||
if gitStatus == nil then
|
||||
color = colors.nostatus
|
||||
elseif gitStatus then
|
||||
color = colors.clean
|
||||
else
|
||||
color = colors.dirty
|
||||
end
|
||||
|
||||
if gitConflict then
|
||||
color = colors.conflict
|
||||
end
|
||||
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", " "..color.."("..verbatim(branch)..")")
|
||||
return false
|
||||
end
|
||||
@ -640,11 +652,11 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
||||
end
|
||||
|
||||
if clink.get_env('CMDER_USER_CONFIG') then
|
||||
local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/'
|
||||
for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do
|
||||
local filename = cmder_config_dir..lua_module
|
||||
-- use dofile instead of require because require caches loaded modules
|
||||
-- so config reloading using Alt-Q won't reload updated modules.
|
||||
dofile(filename)
|
||||
end
|
||||
local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/'
|
||||
for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do
|
||||
local filename = cmder_config_dir..lua_module
|
||||
-- use dofile instead of require because require caches loaded modules
|
||||
-- so config reloading using Alt-Q won't reload updated modules.
|
||||
dofile(filename)
|
||||
end
|
||||
end
|
||||
|
9
vendor/clink_settings.default
vendored
9
vendor/clink_settings.default
vendored
@ -17,3 +17,12 @@ history.max_lines = 10000
|
||||
# name: Share history between instances
|
||||
# type: boolean
|
||||
history.shared = True
|
||||
|
||||
# name: Auto-answer terminate prompt
|
||||
# type: enum
|
||||
# options: off,answer_yes,answer_no
|
||||
cmd.auto_answer = answer_yes
|
||||
|
||||
# name: Doskey completions
|
||||
# type: color
|
||||
color.doskey = yellow
|
||||
|
6
vendor/cmder.sh
vendored
6
vendor/cmder.sh
vendored
@ -33,11 +33,11 @@ CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')
|
||||
|
||||
export CMDER_ROOT
|
||||
|
||||
if [ -d "/c/Program Files/Git" ] ; then
|
||||
if [ -f "/c/Program Files/Git/cmd/git.exe" ] ; then
|
||||
GIT_INSTALL_ROOT="/c/Program Files/Git"
|
||||
elif [ -d "/c/Program Files(x86)/Git" ] ; then
|
||||
elif [ -f "/c/Program Files(x86)/Git/cmd/git.exe" ] ; then
|
||||
GIT_INSTALL_ROOT="/c/Program Files(x86)/Git"
|
||||
elif [ -d "${CMDER_ROOT}/vendor/git-for-windows" ] ; then
|
||||
elif [ -f "${CMDER_ROOT}/vendor/git-for-windows/cmd/git.exe" ] ; then
|
||||
GIT_INSTALL_ROOT=${CMDER_ROOT}/vendor/git-for-windows
|
||||
fi
|
||||
|
||||
|
10
vendor/cmder_prompt_config.lua.default
vendored
10
vendor/cmder_prompt_config.lua.default
vendored
@ -45,7 +45,9 @@ prompt_overrideSvnStatusOptIn = false
|
||||
|
||||
-- Prompt Attributes
|
||||
--
|
||||
-- Colors
|
||||
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
|
||||
-- Effects: https://github.com/cmderdev/cmder/wiki/Customization#list-of-effects
|
||||
--
|
||||
-- Green: "\x1b[1;33;49m"
|
||||
-- Yellow: "\x1b[1;32;49m"
|
||||
-- Light Grey: "\x1b[1;30;49m"
|
||||
@ -54,7 +56,7 @@ prompt_overrideSvnStatusOptIn = false
|
||||
uah_color = "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
|
||||
cwd_color = "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
|
||||
lamb_color = "\x1b[1;30;49m" -- Light Grey = Lambda Color
|
||||
clean_color = "\x1b[1;37;49m"
|
||||
dirty_color = "\x1b[33;3m"
|
||||
conflict_color = "\x1b[31;1m"
|
||||
clean_color = "\x1b[37;1m"
|
||||
dirty_color = "\x1b[33;3m" -- Yellow, Italic
|
||||
conflict_color = "\x1b[31;1m" -- Red, Bold
|
||||
unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color
|
||||
|
284
vendor/init.bat
vendored
284
vendor/init.bat
vendored
@ -2,7 +2,7 @@
|
||||
|
||||
set CMDER_INIT_START=%time%
|
||||
|
||||
:: Init Script for cmd.exe
|
||||
:: Init Script for cmd.exe shell
|
||||
:: Created as part of cmder project
|
||||
|
||||
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||
@ -23,7 +23,7 @@ if not defined fast_init set fast_init=0
|
||||
:: Use /max_depth 1-5 to set max recurse depth for calls to `enhance_path_recursive`
|
||||
if not defined max_depth set max_depth=1
|
||||
|
||||
:: Add *nix tools to end of path. 0 turns off *nix tools, 2 adds *nix tools to the front of thr path.
|
||||
:: Add *nix tools to end of path. 0 turns off *nix tools, 2 adds *nix tools to the front of the path.
|
||||
if not defined nix_tools set nix_tools=1
|
||||
|
||||
set "CMDER_USER_FLAGS= "
|
||||
@ -44,10 +44,11 @@ if not defined CMDER_ROOT (
|
||||
:: Remove trailing '\' from %CMDER_ROOT%
|
||||
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
||||
|
||||
:: Include Cmder libraries
|
||||
call "%cmder_root%\vendor\bin\cexec.cmd" /setpath
|
||||
call "%cmder_root%\vendor\lib\lib_console"
|
||||
call "%cmder_root%\vendor\lib\lib_base"
|
||||
call "%cmder_root%\vendor\lib\lib_path"
|
||||
call "%cmder_root%\vendor\lib\lib_console"
|
||||
call "%cmder_root%\vendor\lib\lib_git"
|
||||
call "%cmder_root%\vendor\lib\lib_profile"
|
||||
|
||||
@ -58,9 +59,9 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
||||
set fast_init=1
|
||||
) else if /i "%1" == "/t" (
|
||||
set time_init=1
|
||||
) else if /i "%1"=="/v" (
|
||||
) else if /i "%1" == "/v" (
|
||||
set verbose_output=1
|
||||
) else if /i "%1"=="/d" (
|
||||
) else if /i "%1" == "/d" (
|
||||
set debug_output=1
|
||||
) else if /i "%1" == "/max_depth" (
|
||||
if "%~2" geq "1" if "%~2" leq "5" (
|
||||
@ -88,10 +89,10 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
||||
set "GIT_INSTALL_ROOT=%~2"
|
||||
shift
|
||||
) else (
|
||||
%print_error% "The Git install root folder "%~2", you specified does not exist!"
|
||||
%print_error% "The Git install root folder "%~2" that you specified does not exist!"
|
||||
exit /b
|
||||
)
|
||||
) else if /i "%1"=="/nix_tools" (
|
||||
) else if /i "%1" == "/nix_tools" (
|
||||
if "%2" equ "0" (
|
||||
REM Do not add *nix tools to path
|
||||
set nix_tools=0
|
||||
@ -110,141 +111,162 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
||||
set "HOME=%~2"
|
||||
shift
|
||||
) else (
|
||||
%print_error% The home folder "%2", you specified does not exist!
|
||||
%print_error% The home folder "%2" that you specified does not exist!
|
||||
exit /b
|
||||
)
|
||||
) else if /i "%1" == "/svn_ssh" (
|
||||
set SVN_SSH=%2
|
||||
shift
|
||||
) else (
|
||||
set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%"
|
||||
set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%"
|
||||
)
|
||||
shift
|
||||
goto var_loop
|
||||
goto :var_loop
|
||||
|
||||
:start
|
||||
:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES
|
||||
:: Enable console related methods if verbose/debug is turned on
|
||||
if %debug_output% gtr 0 (set print_debug=%lib_console% debug_output)
|
||||
if %verbose_output% gtr 0 (
|
||||
set print_verbose=%lib_console% verbose_output
|
||||
set print_warning=%lib_console% show_warning
|
||||
)
|
||||
|
||||
:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES variables
|
||||
%lib_base% cmder_shell
|
||||
%print_debug% init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%"
|
||||
%print_debug% init.bat "Env Var - debug_output=%debug_output%"
|
||||
|
||||
:: Set the Cmder directory paths
|
||||
set CMDER_CONFIG_DIR=%CMDER_ROOT%\config
|
||||
|
||||
:: Check if we're using Cmder individual user profile
|
||||
if defined CMDER_USER_CONFIG (
|
||||
%print_debug% init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!"
|
||||
|
||||
if not exist "%CMDER_USER_CONFIG%\..\opt" md "%CMDER_USER_CONFIG%\..\opt"
|
||||
set CMDER_CONFIG_DIR=%CMDER_USER_CONFIG%
|
||||
)
|
||||
|
||||
:: Pick right version of clink
|
||||
if not "%CMDER_SHELL%" == "cmd" (
|
||||
%print_warning% "Incompatible 'ComSpec/Shell' Detetected: %CMDER_SHELL%"
|
||||
set CMDER_CLINK=0
|
||||
set CMDER_ALIASES=0
|
||||
)
|
||||
|
||||
:: Pick right version of Clink
|
||||
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||
set clink_architecture=x86
|
||||
set architecture_bits=32
|
||||
) else (
|
||||
) else if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
|
||||
set clink_architecture=x64
|
||||
set architecture_bits=64
|
||||
) else (
|
||||
%print_warning% "Incompatible Processor Detetected: %PROCESSOR_ARCHITECTURE%"
|
||||
set CMDER_CLINK=0
|
||||
)
|
||||
|
||||
if "%CMDER_CLINK%" == "1" (
|
||||
%print_verbose% "Injecting Clink!"
|
||||
%print_verbose% "Injecting Clink!"
|
||||
|
||||
:: Run clink
|
||||
if defined CMDER_USER_CONFIG (
|
||||
if not exist "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\clink_settings" (
|
||||
echo Generating clink initial settings in "%CMDER_USER_CONFIG%\clink_settings"
|
||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_USER_CONFIG%\clink_settings"
|
||||
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.
|
||||
:: Check if Clink is not present
|
||||
if not exist "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" (
|
||||
%print_error% "Clink executable is not present in 'vendor\clink\clink_%clink_architecture%.exe'"
|
||||
)
|
||||
|
||||
if not exist "%CMDER_USER_CONFIG%\cmder_prompt_config.lua" (
|
||||
echo Creating Cmder prompt config file: "%CMDER_USER_CONFIG%\cmder_prompt_config.lua"
|
||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_USER_CONFIG%\cmder_prompt_config.lua"
|
||||
:: Run Clink
|
||||
if not exist "%CMDER_CONFIG_DIR%\settings" if not exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||
echo Generating Clink initial settings in "%CMDER_CONFIG_DIR%\clink_settings"
|
||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_CONFIG_DIR%\clink_settings"
|
||||
echo Additional *.lua files in "%CMDER_CONFIG_DIR%" are loaded on startup.
|
||||
)
|
||||
|
||||
REM Cleanup lagacy Clink Settings file
|
||||
if exist "%CMDER_USER_CONFIG%\settings" if exist "%CMDER_USER_CONFIG%\clink_settings" (
|
||||
del "%CMDER_USER_CONFIG%\settings"
|
||||
if not exist "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" (
|
||||
echo Creating Cmder prompt config file: "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||
)
|
||||
|
||||
REM Cleanup legacy CLink history file
|
||||
if exist "%CMDER_USER_CONFIG%\.history" if exist "%CMDER_USER_CONFIG%\clink_history" (
|
||||
del "%CMDER_USER_CONFIG%\.history"
|
||||
)
|
||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
||||
) else (
|
||||
if not exist "%CMDER_ROOT%\config\settings" if not exist "%CMDER_ROOT%\config\clink_settings" (
|
||||
echo Generating clink initial settings in "%CMDER_ROOT%\config\clink_settings"
|
||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_ROOT%\config\clink_settings"
|
||||
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
||||
:: Cleanup lagacy Clink Settings file
|
||||
if exist "%CMDER_CONFIG_DIR%\settings" if exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||
del "%CMDER_CONFIG_DIR%\settings"
|
||||
)
|
||||
|
||||
if not exist "%CMDER_ROOT%\config\cmder_prompt_config.lua" (
|
||||
echo Creating Cmder prompt config file: "%CMDER_ROOT%\config\cmder_prompt_config.lua"
|
||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_ROOT%\config\cmder_prompt_config.lua"
|
||||
:: Cleanup legacy Clink history file
|
||||
if exist "%CMDER_CONFIG_DIR%\.history" if exist "%CMDER_CONFIG_DIR%\clink_history" (
|
||||
del "%CMDER_CONFIG_DIR%\.history"
|
||||
)
|
||||
|
||||
REM Cleanup lagacy Clink Settings file
|
||||
if exist "%CMDER_ROOT%\config\settings" if exist "%CMDER_ROOT%\config\clink_settings" (
|
||||
del "%CMDER_ROOT%\config\settings"
|
||||
)
|
||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
||||
|
||||
REM Cleanup legacy Clink history file
|
||||
if exist "%CMDER_ROOT%\config\.history" if exist "%CMDER_ROOT%\config\clink_history" (
|
||||
del "%CMDER_ROOT%\config\.history"
|
||||
if errorlevel 1 (
|
||||
%print_error% "Clink initilization has failed with error code: %errorlevel%"
|
||||
)
|
||||
|
||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||
)
|
||||
) else (
|
||||
%print_verbose% "WARNING: Incompatible 'ComSpec/Shell' Detetected Skipping Clink Injection!"
|
||||
%print_warning% "Skipping Clink Injection!"
|
||||
|
||||
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
|
||||
chcp 65001>nul
|
||||
|
||||
:: Revert back to plain cmd.exe prompt without clink
|
||||
prompt $E[1;32;49m$P$S$_$E[1;30;49mλ$S$E[0m
|
||||
|
||||
chcp %cp%>nul
|
||||
)
|
||||
|
||||
if "%CMDER_CONFIGURED%" GTR "1" (
|
||||
%print_verbose% "Cmder is already configured, skipping Cmder Init!"
|
||||
%print_verbose% "Cmder is already configured, skipping Cmder Init!"
|
||||
|
||||
goto USER_ALIASES
|
||||
goto :USER_ALIASES
|
||||
) else if "%CMDER_CONFIGURED%" == "1" (
|
||||
%print_verbose% "Cmder is already configured, skipping to Cmder User Init!"
|
||||
%print_verbose% "Cmder is already configured, skipping to Cmder User Init!"
|
||||
|
||||
goto USER_CONFIG_START
|
||||
goto :USER_CONFIG_START
|
||||
)
|
||||
|
||||
:: Prepare for git-for-windows
|
||||
|
||||
:: I do not even know, copypasted from their .bat
|
||||
set PLINK_PROTOCOL=ssh
|
||||
|
||||
:: The idea:
|
||||
:: Detect which git.exe version to use
|
||||
:: * if the users points as to a specific git, use that
|
||||
:: * test if a git is in path and if yes, use that
|
||||
:: * last, use our vendored git
|
||||
:: also check that we have a recent enough version of git by examining the version string
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
|
||||
set GIT_INSTALL_ROOT=
|
||||
) else if "%fast_init%" == "1" (
|
||||
if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" (
|
||||
%print_debug% init.bat "Skipping Git Auto-Detect!"
|
||||
goto :VENDORED_GIT
|
||||
%print_debug% init.bat "Skipping Git Auto-Detect!"
|
||||
goto :VENDORED_GIT
|
||||
)
|
||||
)
|
||||
|
||||
%print_debug% init.bat "Looking for Git install root..."
|
||||
|
||||
:: get the version information for vendored git binary
|
||||
:: Get the version information for vendored git binary
|
||||
%lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" 2>nul
|
||||
%lib_git% validate_version VENDORED %GIT_VERSION_VENDORED%
|
||||
|
||||
:: check if git is in path...
|
||||
for /F "delims=" %%F in ('where git.exe 2^>nul ^| find "\cmd\git.exe"') do (
|
||||
:: get the absolute path to the user provided git binary
|
||||
%lib_git% is_git_shim "%%~dpF"
|
||||
%lib_git% get_user_git_version
|
||||
%lib_git% compare_git_versions
|
||||
:: Check if git is in path
|
||||
for /F "delims=" %%F in ('where git.exe 2^>nul') do call :check_git "%%~fF"
|
||||
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
goto :FOUND_GIT
|
||||
)
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
goto :FOUND_GIT
|
||||
) else (
|
||||
goto :VENDORED_GIT
|
||||
)
|
||||
|
||||
:: our last hope: our own git...
|
||||
:check_git
|
||||
set full_path="%~f1"
|
||||
if not defined GIT_INSTALL_ROOT (
|
||||
if not [\%full_path:\cmd\git.exe=:%]==[\%full_path%] (
|
||||
:: Get the absolute path to the user provided git binary
|
||||
%lib_git% is_git_shim "%~dp1"
|
||||
%lib_git% get_user_git_version
|
||||
%lib_git% compare_git_versions
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
|
||||
:: Our last hope: use vendored git
|
||||
:VENDORED_GIT
|
||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
||||
@ -267,7 +289,7 @@ goto :CONFIGURE_GIT
|
||||
:: Add git to the path
|
||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" ""
|
||||
|
||||
:: Add the unix commands at the end to not shadow windows commands like more
|
||||
:: Add the unix commands at the end to not shadow windows commands like `more` and `find`
|
||||
if %nix_tools% equ 1 (
|
||||
%print_verbose% "Preferring Windows commands"
|
||||
set "path_position=append"
|
||||
@ -287,24 +309,26 @@ if %nix_tools% geq 1 (
|
||||
)
|
||||
)
|
||||
|
||||
:: define SVN_SSH so we can use git svn with ssh svn repositories
|
||||
:: Plink (PuTTY Link) is a command-line connection tool similar to ssh, setting its protocol to ssh
|
||||
set PLINK_PROTOCOL=ssh
|
||||
|
||||
:: Define SVN_SSH so we can use git svn with ssh svn repositories
|
||||
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
||||
|
||||
:: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path.
|
||||
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\locale.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\locale.exe"
|
||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where locale.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" )
|
||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where locale.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" )
|
||||
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\env.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\env.exe" /usr/bin/locale
|
||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where env.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" /usr/bin/locale )
|
||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where env.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" /usr/bin/locale )
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
if defined git_locale (
|
||||
|
||||
REM %print_debug% init.bat "Env Var - git_locale=!git_locale!"
|
||||
if not defined LANG (
|
||||
for /F "delims=" %%F in ('!git_locale! -uU 2') do (
|
||||
set "LANG=%%F"
|
||||
)
|
||||
)
|
||||
REM %print_debug% init.bat "Env Var - git_locale=!git_locale!"
|
||||
if not defined LANG (
|
||||
for /F "delims=" %%F in ('!git_locale! -uU 2') do (
|
||||
set "LANG=%%F"
|
||||
)
|
||||
)
|
||||
)
|
||||
endlocal && set LANG=%LANG%
|
||||
|
||||
@ -322,7 +346,7 @@ endlocal
|
||||
:USER_CONFIG_START
|
||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||
if defined CMDER_USER_BIN (
|
||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||
)
|
||||
%lib_path% enhance_path "%CMDER_ROOT%" append
|
||||
|
||||
@ -330,7 +354,7 @@ if defined CMDER_USER_BIN (
|
||||
:: to run them at startup.
|
||||
%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d"
|
||||
if defined CMDER_USER_CONFIG (
|
||||
%lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
||||
%lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
||||
)
|
||||
|
||||
:USER_ALIASES
|
||||
@ -341,51 +365,47 @@ if defined CMDER_USER_CONFIG (
|
||||
:: must also be self executing, see '.\user_aliases.cmd.default',
|
||||
:: and be in profile.d folder.
|
||||
if not defined user_aliases (
|
||||
if defined CMDER_USER_CONFIG (
|
||||
set "user_aliases=%CMDER_USER_CONFIG%\user_aliases.cmd"
|
||||
) else (
|
||||
set "user_aliases=%CMDER_ROOT%\config\user_aliases.cmd"
|
||||
)
|
||||
set "user_aliases=%CMDER_CONFIG_DIR%\user_aliases.cmd"
|
||||
)
|
||||
|
||||
if "%CMDER_ALIASES%" == "1" (
|
||||
REM The aliases environment variable is used by alias.bat to id
|
||||
REM the default file to store new aliases in.
|
||||
if not defined aliases (
|
||||
set "aliases=%user_aliases%"
|
||||
)
|
||||
REM The aliases environment variable is used by alias.bat to id
|
||||
REM the default file to store new aliases in.
|
||||
if not defined aliases (
|
||||
set "aliases=%user_aliases%"
|
||||
)
|
||||
|
||||
REM Make sure we have a self-extracting user_aliases.cmd file
|
||||
if not exist "%user_aliases%" (
|
||||
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||
) else (
|
||||
%lib_base% update_legacy_aliases
|
||||
)
|
||||
REM Make sure we have a self-extracting user_aliases.cmd file
|
||||
if not exist "%user_aliases%" (
|
||||
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||
) else (
|
||||
%lib_base% update_legacy_aliases
|
||||
)
|
||||
|
||||
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd'
|
||||
if exist "%CMDER_ROOT%\config\aliases" (
|
||||
echo Updating old "%CMDER_ROOT%\config\aliases" to new format...
|
||||
type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%"
|
||||
del "%CMDER_ROOT%\config\aliases"
|
||||
) else if exist "%user_aliases%.old_format" (
|
||||
echo Updating old "%user_aliases%" to new format...
|
||||
type "%user_aliases%.old_format" >> "%user_aliases%"
|
||||
del "%user_aliases%.old_format"
|
||||
)
|
||||
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd'
|
||||
if exist "%CMDER_ROOT%\config\aliases" (
|
||||
echo Updating old "%CMDER_ROOT%\config\aliases" to new format...
|
||||
type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%"
|
||||
del "%CMDER_ROOT%\config\aliases"
|
||||
) else if exist "%user_aliases%.old_format" (
|
||||
echo Updating old "%user_aliases%" to new format...
|
||||
type "%user_aliases%.old_format" >> "%user_aliases%"
|
||||
del "%user_aliases%.old_format"
|
||||
)
|
||||
)
|
||||
|
||||
:: Add aliases to the environment
|
||||
type "%user_aliases%" | findstr /b /l /i "history=cat " >nul
|
||||
if "%ERRORLEVEL%" == "0" (
|
||||
echo Migrating alias 'history' to new Clink 1.x.x...
|
||||
call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history
|
||||
echo Restart the session to activate changes!
|
||||
echo Migrating alias 'history' to new Clink 1.x.x...
|
||||
call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history
|
||||
echo Restart the session to activate changes!
|
||||
)
|
||||
|
||||
call "%user_aliases%"
|
||||
|
||||
if "%CMDER_CONFIGURED%" gtr "1" goto CMDER_CONFIGURED
|
||||
if "%CMDER_CONFIGURED%" gtr "1" goto :CMDER_CONFIGURED
|
||||
|
||||
:: See vendor\git-for-windows\README.portable for why we do this
|
||||
:: Basically we need to execute this post-install.bat because we are
|
||||
@ -409,12 +429,12 @@ if exist "%CMDER_ROOT%\config\user_profile.cmd" (
|
||||
)
|
||||
|
||||
if defined CMDER_USER_CONFIG (
|
||||
set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||
if exist "%CMDER_USER_CONFIG%\user_profile.cmd" (
|
||||
REM Create this file and place your own command in there
|
||||
%print_debug% init.bat "Calling - %CMDER_USER_CONFIG%\user_profile.cmd"
|
||||
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||
)
|
||||
set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||
if exist "%CMDER_USER_CONFIG%\user_profile.cmd" (
|
||||
REM Create this file and place your own command in there
|
||||
%print_debug% init.bat "Calling - %CMDER_USER_CONFIG%\user_profile.cmd"
|
||||
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||
)
|
||||
)
|
||||
|
||||
if not exist "%initialConfig%" (
|
||||
@ -423,16 +443,16 @@ if not exist "%initialConfig%" (
|
||||
)
|
||||
|
||||
if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" (
|
||||
echo Cmder's 'alias' command has been moved into "%CMDER_ROOT%\vendor\bin\alias.cmd"
|
||||
echo to get rid of this message either:
|
||||
echo.
|
||||
echo Delete the file "%CMDER_ROOT%\bin\alias.bat"
|
||||
echo.
|
||||
echo or
|
||||
echo.
|
||||
echo If you have customized it and want to continue using it instead of the included version
|
||||
echo * Rename "%CMDER_ROOT%\bin\alias.bat" to "%CMDER_ROOT%\bin\alias.cmd".
|
||||
echo * Search for 'user-aliases' and replace it with 'user_aliases'.
|
||||
echo Cmder's 'alias' command has been moved into "%CMDER_ROOT%\vendor\bin\alias.cmd"
|
||||
echo to get rid of this message either:
|
||||
echo.
|
||||
echo Delete the file "%CMDER_ROOT%\bin\alias.bat"
|
||||
echo.
|
||||
echo or
|
||||
echo.
|
||||
echo If you have customized it and want to continue using it instead of the included version
|
||||
echo * Rename "%CMDER_ROOT%\bin\alias.bat" to "%CMDER_ROOT%\bin\alias.cmd".
|
||||
echo * Search for 'user-aliases' and replace it with 'user_aliases'.
|
||||
)
|
||||
|
||||
set initialConfig=
|
||||
@ -443,6 +463,6 @@ if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
||||
set CMDER_INIT_END=%time%
|
||||
|
||||
if %time_init% gtr 0 (
|
||||
"%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||
"%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||
)
|
||||
exit /b
|
||||
|
4
vendor/lib/lib_base.cmd
vendored
4
vendor/lib/lib_base.cmd
vendored
@ -68,13 +68,9 @@ exit /b
|
||||
set CMDER_SHELL=%~n1
|
||||
if not defined CMDER_CLINK (
|
||||
set CMDER_CLINK=1
|
||||
if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0
|
||||
if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0
|
||||
)
|
||||
if not defined CMDER_ALIASES (
|
||||
set CMDER_ALIASES=1
|
||||
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
|
||||
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
|
||||
)
|
||||
exit /b
|
||||
|
||||
|
27
vendor/lib/lib_console.cmd
vendored
27
vendor/lib/lib_console.cmd
vendored
@ -2,13 +2,15 @@
|
||||
|
||||
call "%~dp0lib_base.cmd"
|
||||
set lib_console=call "%~dp0lib_console.cmd"
|
||||
set ESC=
|
||||
|
||||
:: Much faster than using "%lib_console% debug_output ..." etc.
|
||||
set print_debug=if %debug_output% gtr 0 %lib_console% debug_output
|
||||
set print_verbose=if %verbose_output% gtr 0 %lib_console% verbose_output
|
||||
set print_warning=if %verbose_output% gtr 0 %lib_console% show_warning
|
||||
set print_error=%lib_console% show_error
|
||||
|
||||
if "%fast_init%" == "1" exit /b
|
||||
if %fast_init% gtr %verbose_output% if %fast_init% gtr %debug_output% exit /b
|
||||
|
||||
if "%~1" == "/h" (
|
||||
%lib_base% help "%~0"
|
||||
@ -80,5 +82,26 @@ exit /b
|
||||
:::.
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
echo ERROR: %~1
|
||||
echo %ESC%[91;1mERROR:%ESC%[0m %~1
|
||||
exit /b
|
||||
|
||||
:show_warning
|
||||
:::===============================================================================
|
||||
:::show_warning - Output a warning message to the console.
|
||||
:::.
|
||||
:::include:
|
||||
:::.
|
||||
::: call "$0"
|
||||
:::.
|
||||
:::usage:
|
||||
:::.
|
||||
::: %lib_console% show_warning "[message]"
|
||||
:::.
|
||||
:::required:
|
||||
:::.
|
||||
::: [message] <in> Message text to display.
|
||||
:::.
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
echo %ESC%[93;1mWARNING:%ESC%[0m %~1
|
||||
exit /b
|
||||
|
8
vendor/lib/lib_git.cmd
vendored
8
vendor/lib/lib_git.cmd
vendored
@ -101,9 +101,9 @@ exit /b
|
||||
|
||||
REM endlocal & set "%~1_MAJOR=!%~1_MAJOR!" & set "%~1_MINOR=!%~1_MINOR!" & set "%~1_PATCH=!%~1_PATCH!" & set "%~1_BUILD=!%~1_BUILD!"
|
||||
if "%~1" == "VENDORED" (
|
||||
endlocal & set "%~1_MAJOR=%VENDORED_MAJOR%" & set "%~1_MINOR=%VENDORED_MINOR%" & set "%~1_PATCH=%VENDORED_PATCH%" & set "%~1_BUILD=%VENDORED_BUILD%"
|
||||
endlocal & set "%~1_MAJOR=%VENDORED_MAJOR%" & set "%~1_MINOR=%VENDORED_MINOR%" & set "%~1_PATCH=%VENDORED_PATCH%" & set "%~1_BUILD=%VENDORED_BUILD%"
|
||||
) else (
|
||||
endlocal & set "%~1_MAJOR=%USER_MAJOR%" & set "%~1_MINOR=%USER_MINOR%" & set "%~1_PATCH=%USER_PATCH%" & set "%~1_BUILD=%USER_BUILD%"
|
||||
endlocal & set "%~1_MAJOR=%USER_MAJOR%" & set "%~1_MINOR=%USER_MINOR%" & set "%~1_PATCH=%USER_PATCH%" & set "%~1_BUILD=%USER_BUILD%"
|
||||
)
|
||||
|
||||
exit /b
|
||||
@ -136,9 +136,9 @@ exit /b
|
||||
:: ... and maybe display it, for debugging purposes.
|
||||
REM %print_debug% :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!"
|
||||
if "%~1" == "VENDORED" (
|
||||
%print_debug% :validate_version "Found Git Version for %~1: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%"
|
||||
%print_debug% :validate_version "Found Git Version for %~1: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%"
|
||||
) else (
|
||||
%print_debug% :validate_version "Found Git Version for %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%"
|
||||
%print_debug% :validate_version "Found Git Version for %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%"
|
||||
)
|
||||
exit /b
|
||||
|
||||
|
60
vendor/lib/lib_path.cmd
vendored
60
vendor/lib/lib_path.cmd
vendored
@ -60,14 +60,14 @@ exit /b
|
||||
)
|
||||
|
||||
if "%fast_init%" == "1" (
|
||||
if "%position%" == "append" (
|
||||
set "PATH=%PATH%;%add_to_path%"
|
||||
) else (
|
||||
set "PATH=%add_to_path%;%PATH%"
|
||||
)
|
||||
goto :end_enhance_path
|
||||
if "%position%" == "append" (
|
||||
set "PATH=%PATH%;%add_to_path%"
|
||||
) else (
|
||||
set "PATH=%add_to_path%;%PATH%"
|
||||
)
|
||||
goto :end_enhance_path
|
||||
) else if "add_to_path" equ "" (
|
||||
goto :end_enhance_path
|
||||
goto :end_enhance_path
|
||||
)
|
||||
|
||||
set found=0
|
||||
@ -78,23 +78,23 @@ exit /b
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
if "!found!" == "0" (
|
||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!;"
|
||||
call :set_found
|
||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!;"
|
||||
call :set_found
|
||||
)
|
||||
%print_debug% :enhance_path "Env Var INSIDE PATH !find_query! - found=!found!"
|
||||
|
||||
if /i "!position!" == "append" (
|
||||
if "!found!" == "0" (
|
||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!\"$"
|
||||
call :set_found
|
||||
)
|
||||
%print_debug% :enhance_path "Env Var END PATH !find_query! - found=!found!"
|
||||
if "!found!" == "0" (
|
||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!\"$"
|
||||
call :set_found
|
||||
)
|
||||
%print_debug% :enhance_path "Env Var END PATH !find_query! - found=!found!"
|
||||
) else (
|
||||
if "!found!" == "0" (
|
||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:"^\"!find_query!;"
|
||||
call :set_found
|
||||
)
|
||||
%print_debug% :enhance_path "Env Var BEGIN PATH !find_query! - found=!found!"
|
||||
if "!found!" == "0" (
|
||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:"^\"!find_query!;"
|
||||
call :set_found
|
||||
)
|
||||
%print_debug% :enhance_path "Env Var BEGIN PATH !find_query! - found=!found!"
|
||||
)
|
||||
endlocal & set found=%found%
|
||||
|
||||
@ -121,24 +121,24 @@ exit /b
|
||||
exit /b
|
||||
|
||||
:toolong
|
||||
echo "%OLD_PATH%">"%temp%\cmder_lib_pathA"
|
||||
echo "%PATH%">"%temp%\cmder_lib_pathB"
|
||||
fc /b "%temp%\cmder_lib_pathA" "%temp%\cmder_lib_pathB" 2>nul 1>nul
|
||||
if errorlevel 1 ( del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB" & goto :changed )
|
||||
del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB"
|
||||
exit /b
|
||||
echo "%OLD_PATH%">"%temp%\cmder_lib_pathA"
|
||||
echo "%PATH%">"%temp%\cmder_lib_pathB"
|
||||
fc /b "%temp%\cmder_lib_pathA" "%temp%\cmder_lib_pathB" 2>nul 1>nul
|
||||
if errorlevel 1 ( del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB" & goto :changed )
|
||||
del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB"
|
||||
exit /b
|
||||
|
||||
:changed
|
||||
%print_debug% :enhance_path "END Env Var - PATH=%path%"
|
||||
%print_debug% :enhance_path "Env Var %find_query% - found=%found%"
|
||||
exit /b
|
||||
%print_debug% :enhance_path "END Env Var - PATH=%path%"
|
||||
%print_debug% :enhance_path "Env Var %find_query% - found=%found%"
|
||||
exit /b
|
||||
|
||||
exit /b
|
||||
|
||||
|
||||
:set_found
|
||||
if "%ERRORLEVEL%" == "0" (
|
||||
set found=1
|
||||
set found=1
|
||||
)
|
||||
|
||||
exit /b
|
||||
@ -202,7 +202,7 @@ exit /b
|
||||
|
||||
set "PATH=%PATH:;;=;%"
|
||||
if "%fast_init%" == "1" (
|
||||
exit /b
|
||||
exit /b
|
||||
)
|
||||
|
||||
%print_debug% :enhance_path_recursive "Env Var - add_path=%add_to_path%"
|
||||
|
20
vendor/lib/lib_profile.cmd
vendored
20
vendor/lib/lib_profile.cmd
vendored
@ -32,15 +32,15 @@ exit /b
|
||||
::: path <out> Sets the path env variable if required.
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
if not exist "%~1" (
|
||||
mkdir "%~1"
|
||||
)
|
||||
if not exist "%~1" (
|
||||
mkdir "%~1"
|
||||
)
|
||||
|
||||
pushd "%~1"
|
||||
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
||||
%print_verbose% "Calling '%~1\%%x'..."
|
||||
call "%~1\%%x"
|
||||
)
|
||||
popd
|
||||
exit /b
|
||||
pushd "%~1"
|
||||
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
||||
%print_verbose% "Calling '%~1\%%x'..."
|
||||
call "%~1\%%x"
|
||||
)
|
||||
popd
|
||||
exit /b
|
||||
|
||||
|
81
vendor/profile.ps1
vendored
81
vendor/profile.ps1
vendored
@ -1,5 +1,6 @@
|
||||
# Init Script for PowerShell
|
||||
# Created as part of cmder project
|
||||
# Init Script for PowerShell
|
||||
# Created as part of Cmder project
|
||||
# NOTE: This file must be saved using UTF-8 with BOM encoding for prompt symbol to work correctly.
|
||||
|
||||
# !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||
# !!! Use "%CMDER_ROOT%\config\user_profile.ps1" to add your own startup commands
|
||||
@ -12,12 +13,12 @@ if (!$PSScriptRoot) {
|
||||
}
|
||||
|
||||
if ($ENV:CMDER_USER_CONFIG) {
|
||||
# Write-Host "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||
}
|
||||
|
||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
||||
if ($null -eq $ENV:CMDER_ROOT) {
|
||||
if (-Not($null -eq $ENV:ConEmuDir)) {
|
||||
if (!$ENV:CMDER_ROOT) {
|
||||
if ($ENV:ConEmuDir) {
|
||||
$ENV:CMDER_ROOT = Resolve-Path($ENV:ConEmuDir + "\..\..")
|
||||
} else {
|
||||
$ENV:CMDER_ROOT = Resolve-Path($PSScriptRoot + "\..")
|
||||
@ -25,7 +26,7 @@ if ($null -eq $ENV:CMDER_ROOT) {
|
||||
}
|
||||
|
||||
# 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
|
||||
@ -42,18 +43,18 @@ if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderMod
|
||||
}
|
||||
|
||||
$gitVersionVendor = (readVersion -gitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd")
|
||||
# Write-Host "GIT VENDOR: ${gitVersionVendor}"
|
||||
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
||||
|
||||
# Get user installed Git Version[s] and Compare with vendored if found.
|
||||
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
||||
# Write-Host "GIT PATH: " + $git.Path
|
||||
Write-Debug "GIT PATH: {$git.Path}"
|
||||
$gitDir = Split-Path -Path $git.Path
|
||||
$gitDir = isGitShim -gitPath $gitDir
|
||||
$gitVersionUser = (readVersion -gitPath $gitDir)
|
||||
# Write-Host "GIT USER: ${gitVersionUser}"
|
||||
Write-Debug "GIT USER: ${gitVersionUser}"
|
||||
|
||||
$useGitVersion = compare_git_versions -userVersion $gitVersionUser -vendorVersion $gitVersionVendor
|
||||
# Write-Host "Using GIT Version: ${useGitVersion}"
|
||||
Write-Debug "Using Git Version: ${useGitVersion}"
|
||||
|
||||
# Use user installed Git
|
||||
if ($null -eq $gitPathUser) {
|
||||
@ -65,7 +66,7 @@ foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
||||
}
|
||||
|
||||
if ($useGitVersion -eq $gitVersionUser) {
|
||||
# Write-Host "Using GIT Dir: ${gitDir}"
|
||||
Write-Debug "Using Git Dir: ${gitDir}"
|
||||
$ENV:GIT_INSTALL_ROOT = $gitPathUser
|
||||
$ENV:GIT_INSTALL_TYPE = 'USER'
|
||||
break
|
||||
@ -78,14 +79,14 @@ if ($null -eq $ENV:GIT_INSTALL_ROOT -and $null -ne $gitVersionVendor) {
|
||||
$ENV:GIT_INSTALL_TYPE = 'VENDOR'
|
||||
}
|
||||
|
||||
# Write-Host "GIT_INSTALL_ROOT: ${ENV:GIT_INSTALL_ROOT}"
|
||||
# Write-Host "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
||||
Write-Debug "GIT_INSTALL_ROOT: ${ENV:GIT_INSTALL_ROOT}"
|
||||
Write-Debug "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
||||
|
||||
if (-Not ($null -eq $ENV:GIT_INSTALL_ROOT)) {
|
||||
if ($null -ne $ENV:GIT_INSTALL_ROOT) {
|
||||
$env:Path = Configure-Git -gitRoot "$ENV:GIT_INSTALL_ROOT" -gitType $ENV:GIT_INSTALL_TYPE -gitPathUser $gitPathUser
|
||||
}
|
||||
|
||||
if (Get-Command -Name "vim" -ErrorAction silentlycontinue) {
|
||||
if (Get-Command -Name "vim" -ErrorAction SilentlyContinue) {
|
||||
New-Alias -name "vi" -value vim
|
||||
}
|
||||
|
||||
@ -94,16 +95,20 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||
}
|
||||
|
||||
# Pre-assign default prompt hooks so the first run of cmder gets a working prompt.
|
||||
$env:gitLoaded = $false
|
||||
$env:gitLoaded = $null
|
||||
[ScriptBlock]$PrePrompt = {}
|
||||
[ScriptBlock]$PostPrompt = {}
|
||||
[ScriptBlock]$CmderPrompt = {
|
||||
# Check if we're currently running under Admin privileges.
|
||||
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||
$principal = [Security.Principal.WindowsPrincipal] $identity
|
||||
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
|
||||
$color = "White"
|
||||
if ($principal.IsInRole($adminRole)) { $color = "Red" }
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
Write-Host -NoNewline "PS "
|
||||
Microsoft.PowerShell.Utility\Write-Host "PS " -NoNewline -ForegroundColor $color
|
||||
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
||||
if (Get-Command git -erroraction silentlycontinue) {
|
||||
checkGit($pwd.ProviderPath)
|
||||
}
|
||||
checkGit($pwd.ProviderPath)
|
||||
Microsoft.PowerShell.Utility\Write-Host "`nλ" -NoNewLine -ForegroundColor "DarkGray"
|
||||
}
|
||||
|
||||
@ -112,33 +117,31 @@ $env:Path = "$Env:CMDER_ROOT\bin;$Env:CMDER_ROOT\vendor\bin;$env:Path;$Env:CMDER
|
||||
|
||||
# Drop *.ps1 files into "$ENV:CMDER_ROOT\config\profile.d"
|
||||
# to source them at startup.
|
||||
if (-Not (Test-Path -PathType container "$ENV:CMDER_ROOT\config\profile.d")) {
|
||||
if (-not (Test-Path -PathType container "$ENV:CMDER_ROOT\config\profile.d")) {
|
||||
New-Item -ItemType Directory -Path "$ENV:CMDER_ROOT\config\profile.d"
|
||||
}
|
||||
|
||||
Push-Location $ENV:CMDER_ROOT\config\profile.d
|
||||
foreach ($x in Get-ChildItem *.psm1) {
|
||||
# Write-Host Write-Host Sourcing $x
|
||||
Write-Verbose Write-Host Sourcing $x
|
||||
Import-Module $x
|
||||
}
|
||||
|
||||
foreach ($x in Get-ChildItem *.ps1) {
|
||||
# Write-Host Write-Host Sourcing $x
|
||||
Write-Verbose Write-Host Sourcing $x
|
||||
. $x
|
||||
}
|
||||
Pop-Location
|
||||
|
||||
# Drop *.ps1 files into "$ENV:CMDER_USER_CONFIG\config\profile.d"
|
||||
# to source them at startup. Requires using cmder.exe /C [cmder_user_root_path] argument
|
||||
if ($ENV:CMDER_USER_CONFIG -ne "" -And (Test-Path "$ENV:CMDER_USER_CONFIG\profile.d")) {
|
||||
if ($ENV:CMDER_USER_CONFIG -ne "" -and (Test-Path "$ENV:CMDER_USER_CONFIG\profile.d")) {
|
||||
Push-Location $ENV:CMDER_USER_CONFIG\profile.d
|
||||
foreach ($x in Get-ChildItem *.psm1) {
|
||||
# Write-Host Write-Host Sourcing $x
|
||||
Write-Verbose Write-Host Sourcing $x
|
||||
Import-Module $x
|
||||
}
|
||||
|
||||
foreach ($x in Get-ChildItem *.ps1) {
|
||||
# Write-Host Write-Host Sourcing $x
|
||||
Write-Verbose Write-Host Sourcing $x
|
||||
. $x
|
||||
}
|
||||
Pop-Location
|
||||
@ -169,8 +172,10 @@ if ($ENV:CMDER_USER_CONFIG) {
|
||||
}
|
||||
}
|
||||
|
||||
if (-Not (Test-Path $CmderUserProfilePath)) {
|
||||
Write-Host -BackgroundColor Darkgreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath"
|
||||
if (-not (Test-Path $CmderUserProfilePath)) {
|
||||
$CmderUserProfilePath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($CmderUserProfilePath)
|
||||
Write-Host -NoNewline "`r"
|
||||
Write-Host -BackgroundColor Green -ForegroundColor Black "First Run: Creating user startup file: $CmderUserProfilePath"
|
||||
Copy-Item "$env:CMDER_ROOT\vendor\user_profile.ps1.default" -Destination $CmderUserProfilePath
|
||||
}
|
||||
|
||||
@ -190,20 +195,24 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
||||
Custom prompt functions are loaded in as constants to get the same behaviour
|
||||
#>
|
||||
[ScriptBlock]$Prompt = {
|
||||
$realLASTEXITCODE = $LASTEXITCODE
|
||||
$lastSUCCESS = $?
|
||||
$realLastExitCode = $LastExitCode
|
||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
||||
if ($lastSUCCESS -or ($LastExitCode -ne 0)) {
|
||||
Microsoft.PowerShell.Utility\Write-Host
|
||||
}
|
||||
PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||
CmderPrompt
|
||||
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||
$global:LASTEXITCODE = $realLASTEXITCODE
|
||||
$global:LastExitCode = $realLastExitCode
|
||||
return " "
|
||||
}
|
||||
|
||||
|
||||
# Once Created these code blocks cannot be overwritten
|
||||
# if (-not $(Get-Command PrePrompt).Options -match 'Constant') {Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant}
|
||||
# if (-not $(Get-Command PrePrompt).Options -match 'Constant') {Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant}
|
||||
# if (-not $(Get-Command CmderPrompt).Options -match 'Constant') {Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant}
|
||||
# if (-not $(Get-Command PostPrompt).Options -match 'Constant') {Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant}
|
||||
# if (-not $(Get-Command PostPrompt).Options -match 'Constant') {Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant}
|
||||
|
||||
Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant
|
||||
Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant
|
||||
@ -216,4 +225,4 @@ if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
||||
}
|
||||
|
||||
$CMDER_INIT_END = $(Get-Date -UFormat %s)
|
||||
# Write-Host "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)"
|
||||
Write-Verbose "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)"
|
||||
|
123
vendor/psmodules/Cmder.ps1
vendored
123
vendor/psmodules/Cmder.ps1
vendored
@ -1,7 +1,7 @@
|
||||
function readVersion($gitPath) {
|
||||
$gitExecutable = "${gitPath}\git.exe"
|
||||
|
||||
if (!(test-path "$gitExecutable")) {
|
||||
if (-not (Test-Path "$gitExecutable")) {
|
||||
return $null
|
||||
}
|
||||
|
||||
@ -20,44 +20,44 @@ function readVersion($gitPath) {
|
||||
function isGitShim($gitPath) {
|
||||
# check if there's shim - and if yes follow the path
|
||||
|
||||
if (test-path "${gitPath}\git.shim") {
|
||||
$shim = (get-content "${gitPath}\git.shim")
|
||||
($trash, $gitPath) = $shim.replace(' ','').split('=')
|
||||
if (Test-Path "${gitPath}\git.shim") {
|
||||
$shim = (get-content "${gitPath}\git.shim")
|
||||
($trash, $gitPath) = $shim.replace(' ', '').split('=')
|
||||
|
||||
$gitPath=$gitPath.replace('\git.exe','')
|
||||
$gitPath = $gitPath.replace('\git.exe', '')
|
||||
}
|
||||
|
||||
return $gitPath.toString()
|
||||
}
|
||||
|
||||
function compareVersions($userVersion, $vendorVersion) {
|
||||
if (-not($userVersion -eq $null)) {
|
||||
if ($null -ne $userVersion) {
|
||||
($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4)
|
||||
} else {
|
||||
return -1
|
||||
}
|
||||
|
||||
if (-not($vendorVersion -eq $null)) {
|
||||
if ($null -ne $vendorVersion) {
|
||||
($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4)
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
|
||||
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
|
||||
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
|
||||
return 1
|
||||
}
|
||||
|
||||
if ($userMajor -gt $vendorMajor) {return 1}
|
||||
if ($userMajor -lt $vendorMajor) {return -1}
|
||||
if ($userMajor -gt $vendorMajor) { return 1 }
|
||||
if ($userMajor -lt $vendorMajor) { return -1 }
|
||||
|
||||
if ($userMinor -gt $vendorMinor) {return 1}
|
||||
if ($userMinor -lt $vendorMinor) {return -1}
|
||||
if ($userMinor -gt $vendorMinor) { return 1 }
|
||||
if ($userMinor -lt $vendorMinor) { return -1 }
|
||||
|
||||
if ($userPatch -gt $vendorPatch) {return 1}
|
||||
if ($userPatch -lt $vendorPatch) {return -1}
|
||||
if ($userPatch -gt $vendorPatch) { return 1 }
|
||||
if ($userPatch -lt $vendorPatch) { return -1 }
|
||||
|
||||
if ($userBuild -gt $vendorBuild) {return 1}
|
||||
if ($userBuild -lt $vendorBuild) {return -1}
|
||||
if ($userBuild -gt $vendorBuild) { return 1 }
|
||||
if ($userBuild -lt $vendorBuild) { return -1 }
|
||||
|
||||
return 0
|
||||
}
|
||||
@ -65,45 +65,48 @@ function compareVersions($userVersion, $vendorVersion) {
|
||||
function compare_git_versions($userVersion, $vendorVersion) {
|
||||
$result = compareVersions -userVersion $userVersion -vendorVersion $vendorVersion
|
||||
|
||||
# write-host "Compare Versions Result: ${result}"
|
||||
Write-Debug "Compare Versions Result: ${result}"
|
||||
if ($result -ge 0) {
|
||||
return $userVersion
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
return $vendorVersion
|
||||
}
|
||||
}
|
||||
|
||||
function Configure-Git($gitRoot, $gitType, $gitPathUser){
|
||||
function Configure-Git($gitRoot, $gitType, $gitPathUser) {
|
||||
# Proposed Behavior
|
||||
|
||||
# Modify the path if we are using VENDORED Git do nothing if using USER Git.
|
||||
# If User Git is installed but older match its path config adding paths
|
||||
# Modify the path if we are using VENDORED Git, do nothing if using USER Git.
|
||||
# If User Git is installed but is older, match its path config adding paths
|
||||
# in the same path positions allowing a user to configure Cmder Git path
|
||||
# using locally installed Git Path Config.
|
||||
if ($gitType -eq 'VENDOR') {
|
||||
# If User Git is installed replace its path config with Newer Vendored Git Path
|
||||
if ($gitPathUser -ne '' -and $gitPathUser -ne $null) {
|
||||
# write-host "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..."
|
||||
if (($null -ne $gitPathUser) -and ($gitPathUser -ne '')) {
|
||||
Write-Verbose "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..."
|
||||
|
||||
$newPath = ($env:path -ireplace [regex]::Escape($gitPathUser), $gitRoot)
|
||||
} else {
|
||||
if (!($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
|
||||
# write-host "Adding $gitRoot\cmd to the path"
|
||||
}
|
||||
else {
|
||||
if (-not ($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
|
||||
Write-Debug "Adding $gitRoot\cmd to the path"
|
||||
$newPath = $($gitRoot + "\cmd" + ";" + $env:Path)
|
||||
}
|
||||
|
||||
# Add "$gitRoot\mingw[32|64]\bin" to the path if exists and not done already
|
||||
if ((test-path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) {
|
||||
# write-host "Adding $gitRoot\mingw32\bin to the path"
|
||||
if ((Test-Path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) {
|
||||
Write-Debug "Adding $gitRoot\mingw32\bin to the path"
|
||||
$newPath = "$newPath;$gitRoot\mingw32\bin"
|
||||
} elseif ((test-path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
|
||||
# write-host "Adding $gitRoot\mingw64\bin to the path"
|
||||
}
|
||||
elseif ((Test-Path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
|
||||
Write-Debug "Adding $gitRoot\mingw64\bin to the path"
|
||||
$newPath = "$newPath;$gitRoot\mingw64\bin"
|
||||
}
|
||||
|
||||
# Add "$gitRoot\usr\bin" to the path if exists and not done already
|
||||
if ((test-path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) {
|
||||
# write-host "Adding $gitRoot\usr\bin to the path"
|
||||
if ((Test-Path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) {
|
||||
Write-Debug "Adding $gitRoot\usr\bin to the path"
|
||||
$newPath = "$newPath;$gitRoot\usr\bin"
|
||||
}
|
||||
}
|
||||
@ -114,53 +117,59 @@ function Configure-Git($gitRoot, $gitType, $gitPathUser){
|
||||
return $env:path
|
||||
}
|
||||
|
||||
function Import-Git(){
|
||||
function Import-Git() {
|
||||
$GitModule = Get-Module -Name Posh-Git -ListAvailable
|
||||
if($GitModule | select version | where version -le ([version]"0.6.1.20160330")){
|
||||
if ($GitModule | Select-Object version | Where-Object version -le ([version]"0.6.1.20160330")) {
|
||||
Import-Module Posh-Git > $null
|
||||
}
|
||||
if($GitModule | select version | where version -ge ([version]"1.0.0")){
|
||||
if ($GitModule | Select-Object version | Where-Object version -ge ([version]"1.0.0")) {
|
||||
Import-Module Posh-Git > $null
|
||||
$GitPromptSettings.AnsiConsole = $false
|
||||
}
|
||||
if(-not ($GitModule) ) {
|
||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
||||
if (-not $GitModule) {
|
||||
Write-Host -NoNewline "`r`n"
|
||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart Cmder."
|
||||
Write-Host -NoNewline "`r$([char]0x1B)[A"
|
||||
return $false
|
||||
}
|
||||
# Make sure we only run once by alawys returning true
|
||||
# Make sure we only run once by always returning true
|
||||
return $true
|
||||
}
|
||||
|
||||
function checkGit($Path) {
|
||||
if (Test-Path -Path (Join-Path $Path '.git') ) {
|
||||
if($env:gitLoaded -eq 'false') {
|
||||
$env:gitLoaded = Import-Git
|
||||
}
|
||||
|
||||
if (getGitStatusSetting -eq $true) {
|
||||
Write-VcsStatus
|
||||
} else {
|
||||
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
|
||||
return
|
||||
}
|
||||
if (-not (Test-Path -Path (Join-Path $Path '.git'))) {
|
||||
$SplitPath = Split-Path $path
|
||||
if ($SplitPath) { checkGit($SplitPath) }
|
||||
return
|
||||
}
|
||||
if (getGitStatusSetting -eq $true) {
|
||||
if ($null -eq $env:gitLoaded) {
|
||||
$env:gitLoaded = Import-Git
|
||||
}
|
||||
if ($env:gitLoaded -eq $true) {
|
||||
Write-VcsStatus
|
||||
}
|
||||
}
|
||||
else {
|
||||
$headContent = Get-Content (Join-Path $Path '.git/HEAD')
|
||||
if ($headContent -like "ref: refs/heads/*") {
|
||||
$branchName = $headContent.Substring(16)
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
$branchName = "HEAD detached at $($headContent.Substring(0, 7))"
|
||||
}
|
||||
Write-Host " [$branchName]" -NoNewline -ForegroundColor White
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
$SplitPath = split-path $path
|
||||
if ($SplitPath) {
|
||||
checkGit($SplitPath)
|
||||
}
|
||||
}
|
||||
|
||||
function getGitStatusSetting() {
|
||||
$gitStatus = (git --no-pager config -l) | out-string
|
||||
$gitStatus = (git --no-pager config -l) | Out-String
|
||||
|
||||
ForEach ($line in $($gitStatus -split "`r`n")) {
|
||||
if ($line -match 'cmder.status=false' -or $line -match 'cmder.psstatus=false') {
|
||||
foreach ($line in $($gitStatus -split "`r`n")) {
|
||||
if (($line -match 'cmder.status=false') -or ($line -match 'cmder.psstatus=false')) {
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
2
vendor/psmodules/PsGet/PsGet.psm1
vendored
2
vendor/psmodules/PsGet/PsGet.psm1
vendored
@ -1818,7 +1818,7 @@ function Expand-ZipModule {
|
||||
|
||||
# Check if powershell v3+ and .net v4.5 is available
|
||||
$netFailed = $true
|
||||
if ( $PSVersionTable.PSVersion.Major -ge 3 -and (Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4' -Recurse | Get-ItemProperty -Name Version | Where-Object { $_.Version -like '4.5*' -Or $_.Version -ge '4.5' }) ) {
|
||||
if ( $PSVersionTable.PSVersion.Major -ge 3 -and (Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4' -Recurse | Get-ItemProperty -Name Version | Where-Object { $_.Version -like '4.5*' -or $_.Version -ge '4.5' }) ) {
|
||||
Write-Debug 'Attempting unzip using the .NET Framework...'
|
||||
|
||||
try {
|
||||
|
16
vendor/sources.json
vendored
16
vendor/sources.json
vendored
@ -1,22 +1,22 @@
|
||||
[
|
||||
{
|
||||
"name": "git-for-windows",
|
||||
"version": "2.38.0.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.38.0.windows.1/PortableGit-2.38.0-64-bit.7z.exe"
|
||||
"version": "2.39.0.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.39.0.windows.1/PortableGit-2.39.0-64-bit.7z.exe"
|
||||
},
|
||||
{
|
||||
"name": "clink",
|
||||
"version": "1.3.47",
|
||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.3.47/clink.1.3.47.d5796b.zip"
|
||||
"version": "1.4.4",
|
||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.4.4/clink.1.4.4.7fe1ca.zip"
|
||||
},
|
||||
{
|
||||
"name": "conemu-maximus5",
|
||||
"version": "22.08.07",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v22.08.07/ConEmuPack.220807.7z"
|
||||
"version": "22.12.18",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v22.12.18/ConEmuPack.221218.7z"
|
||||
},
|
||||
{
|
||||
"name": "clink-completions",
|
||||
"version": "0.4.1",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.4.1.zip"
|
||||
"version": "0.4.2",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.4.2.zip"
|
||||
}
|
||||
]
|
||||
|
1
vendor/user_aliases.cmd.default
vendored
1
vendor/user_aliases.cmd.default
vendored
@ -6,6 +6,7 @@
|
||||
;= Add aliases below here
|
||||
e.=explorer .
|
||||
gl=git log --oneline --all --graph --decorate $*
|
||||
l=ls --show-control-chars -CFGNhp --color --ignore={"NTUSER.DAT*","ntuser.dat*"} $*
|
||||
ls=ls --show-control-chars -F --color $*
|
||||
pwd=cd
|
||||
clear=cls
|
||||
|
Reference in New Issue
Block a user