mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-17 04:59:09 +08:00
Compare commits
110 Commits
Author | SHA1 | Date | |
---|---|---|---|
a226019d5a | |||
d04cc1f04e | |||
2e77513674 | |||
1640e9c01d | |||
ddbfd1da18 | |||
bc7c6e97b3 | |||
45f05ed8fa | |||
72b676b939 | |||
637b0fd3ac | |||
ce62db6d33 | |||
f3ed7b6d1b | |||
57e5ae1719 | |||
a5bdecca77 | |||
5be25f29f8 | |||
cb78f0486a | |||
f5ac81daa0 | |||
da0aea96f8 | |||
3a11d45552 | |||
c5a6afbf5b | |||
a607f0f2d5 | |||
66da1716bc | |||
bfaa194468 | |||
c3956e307a | |||
3344268c24 | |||
8ff459b309 | |||
103d0a6cea | |||
8dc9bc9ae1 | |||
bb4ed4af51 | |||
ae2fda72fd | |||
bda09bc274 | |||
749ce17dbe | |||
8cf59d1cbf | |||
1d36ba4ed4 | |||
564ef5220e | |||
f84da84e15 | |||
86544c9188 | |||
4aec21ce19 | |||
0be94725bd | |||
9dce9d0f62 | |||
669e997602 | |||
0730c6e32b | |||
0d2e16c653 | |||
35eab7a51a | |||
2cfa7c45fc | |||
ab0de6d157 | |||
bd9cff2691 | |||
7b191d3caf | |||
277972a7f2 | |||
b1aa687d4f | |||
ec4c815264 | |||
12b9af99c5 | |||
d58c6c2070 | |||
06c7cc969c | |||
44b4b7a195 | |||
9869f9a372 | |||
85c4a5b4af | |||
3f96336610 | |||
a8cae77395 | |||
823eeaf082 | |||
823e6fee6e | |||
34f8c43d98 | |||
352a16f84d | |||
541fc16daf | |||
75e6644d2a | |||
7d40ea4609 | |||
451fb46ce1 | |||
70788dc1e5 | |||
c25ff75187 | |||
059a31618b | |||
e69e7f9b82 | |||
e93231114f | |||
08550751da | |||
49da3745bc | |||
e4fb0d694b | |||
798da058cc | |||
d91438de47 | |||
08e1244fe5 | |||
02f4a9dfe5 | |||
e80ad2356f | |||
21b1f00981 | |||
34bb62409a | |||
b901a4a569 | |||
39f47870a3 | |||
f4ee915678 | |||
192056e19b | |||
f6c2d9c31e | |||
b3200efa7e | |||
b57e146e7a | |||
0f99f66b42 | |||
4655888690 | |||
431c6300e5 | |||
e3cdf43afc | |||
6c016788d4 | |||
0b2d7bd655 | |||
27f51f48a4 | |||
34554d6b08 | |||
4df1d744d3 | |||
40b9ca4e28 | |||
861f99d64b | |||
6af44441fe | |||
0ce1db97d0 | |||
0c39d0a799 | |||
add82a247b | |||
bf6dae4a24 | |||
daa94c5462 | |||
9a3a8f23d0 | |||
99f51b0fc0 | |||
a06d4e93ec | |||
9462315789 | |||
864f778099 |
13
.gitignore
vendored
13
.gitignore
vendored
@ -1,21 +1,24 @@
|
|||||||
|
|
||||||
## Those files should be taken from their repositary
|
## Those files should be taken from their repositary
|
||||||
|
|
||||||
|
bin/*
|
||||||
|
!bin/Readme.md
|
||||||
|
|
||||||
vendor/*/*
|
vendor/*/*
|
||||||
|
!vendor/bin/*
|
||||||
!vendor/lib/*
|
!vendor/lib/*
|
||||||
!vendor/*
|
!vendor/*
|
||||||
!vendor/psmodules/PsGet
|
!vendor/psmodules/PsGet
|
||||||
|
|
||||||
config/.history
|
config/*
|
||||||
|
!config/Readme.md
|
||||||
|
|
||||||
Thumbs.db
|
Thumbs.db
|
||||||
*.exe
|
*.exe
|
||||||
*.dll
|
*.dll
|
||||||
build/
|
build/
|
||||||
Version v*
|
Version v*
|
||||||
*.bak
|
*.bak
|
||||||
config/user-*
|
|
||||||
config/settings
|
|
||||||
config/aliases
|
|
||||||
config/profile.d
|
|
||||||
.github_changelog_generator
|
.github_changelog_generator
|
||||||
launcher/.vs
|
launcher/.vs
|
||||||
|
launcher/src/version.rc2
|
||||||
|
11
CHANGELOG.md
11
CHANGELOG.md
@ -1,5 +1,16 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## [1.3.6](https://github.com/cmderdev/cmder/tree/v1.3.6) (2018-05-30)
|
||||||
|
**Updated components:**
|
||||||
|
|
||||||
|
* Git updated to v2.17.1.windows.2
|
||||||
|
* ConEmu updated to 180528
|
||||||
|
|
||||||
|
**Updates:**
|
||||||
|
|
||||||
|
* Cmder now opens in the in the current working dir
|
||||||
|
* TBD
|
||||||
|
|
||||||
## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01)
|
## [1.3.6-pre2](https://github.com/cmderdev/cmder/tree/v1.3.6-pre2) (2018-03-01)
|
||||||
|
|
||||||
**Updated components:**
|
**Updated components:**
|
||||||
|
@ -11,7 +11,7 @@ If you follow them your contribution will likely be pulled in quicker.
|
|||||||
|
|
||||||
## Making Changes
|
## Making Changes
|
||||||
|
|
||||||
* Make changes in your seperate branch.
|
* Make changes in your separate branch.
|
||||||
* Check for unnecessary whitespace with `git diff --check` before committing.
|
* Check for unnecessary whitespace with `git diff --check` before committing.
|
||||||
* Make sure your commit messages are easy to understand
|
* Make sure your commit messages are easy to understand
|
||||||
* Squash your 'Correcting mistakes' commits if you have a lot of them. (See the 'Squashing Commits' link below)
|
* Squash your 'Correcting mistakes' commits if you have a lot of them. (See the 'Squashing Commits' link below)
|
||||||
@ -35,4 +35,4 @@ If you follow them your contribution will likely be pulled in quicker.
|
|||||||
|
|
||||||
* [Squashing Commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)
|
* [Squashing Commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)
|
||||||
* [General GitHub documentation](http://help.github.com/)
|
* [General GitHub documentation](http://help.github.com/)
|
||||||
* [GitHub pull request documentation](http://help.github.com/send-pull-requests/)
|
* [GitHub pull request documentation](http://help.github.com/articles/creating-a-pull-request/)
|
||||||
|
189
README.md
189
README.md
@ -18,7 +18,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
|||||||
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||||
2. Extract the archive. *Note: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files*
|
2. Extract the archive. *Note: This path should not be `C:\Program Files` or anywhere else that would require Administrator access for modifying configuration files*
|
||||||
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
||||||
4. Run Cmder.exe
|
4. Run `Cmder.exe`
|
||||||
|
|
||||||
### Shared Cmder install with Non-Portable Individual User Config
|
### Shared Cmder install with Non-Portable Individual User Config
|
||||||
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||||
@ -26,7 +26,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
|||||||
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
3. (optional) Place your own executable files into the `%cmder_root%\bin` folder to be injected into your PATH.
|
||||||
4. (optional) Create `%userprofile%\cmder_config\bin` folder to be injected into individual users PATH. Default is to auto create this on first run.
|
4. (optional) Create `%userprofile%\cmder_config\bin` folder to be injected into individual users PATH. Default is to auto create this on first run.
|
||||||
5. (optional) Place your own executable files into the `%userprofile%\cmder_config\bin` folder to be injected into your PATH.
|
5. (optional) Place your own executable files into the `%userprofile%\cmder_config\bin` folder to be injected into your PATH.
|
||||||
6. Run Cmder.exe with "/C" command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
6. Run `Cmder.exe` with `/C` command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
||||||
* This will create the following directory structure if it is missing.
|
* This will create the following directory structure if it is missing.
|
||||||
|
|
||||||
```
|
```
|
||||||
@ -41,12 +41,12 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
|||||||
## Cmder.exe Command Line Arguments
|
## Cmder.exe Command Line Arguments
|
||||||
|
|
||||||
|
|
||||||
| Argument | Description |
|
| Argument | Description |
|
||||||
| ------------------- | ----------------------------------------------------------------------- |
|
| ------------------- | ----------------------------------------------------------------------- |
|
||||||
| /C [user_root_path] | Individual user Cmder root folder. Example: %userprofile%\cmder_config |
|
| `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` |
|
||||||
| /SINGLE | Start Cmder is single mode. |
|
| `/SINGLE` | Start Cmder in single mode. |
|
||||||
| /START [start_path] | Folder path to start in. |
|
| `/START [start_path]` | Folder path to start in. |
|
||||||
| /TASK [task_name] | Task to start after launch. |
|
| `/TASK [task_name]` | Task to start after launch. |
|
||||||
|
|
||||||
## Context Menu Integration
|
## Context Menu Integration
|
||||||
|
|
||||||
@ -90,24 +90,24 @@ You can open multiple tabs each containing one of the following shells:
|
|||||||
|
|
||||||
| Task | Shell | Description |
|
| Task | Shell | Description |
|
||||||
| ---- | ----- | ----------- |
|
| ---- | ----- | ----------- |
|
||||||
| Cmder | cmd.exe | Windows 'cmd.exe' shell enhanced with Git, Git aware prompt, Clink (GNU Readline), and Aliases. |
|
| Cmder | `cmd.exe` | Windows `cmd.exe` shell enhanced with Git, Git aware prompt, Clink (GNU Readline), and Aliases. |
|
||||||
| Cmder as Admin | cmd.exe | Administrative Windows 'cmd.exe' Cmder shell. |
|
| Cmder as Admin | `cmd.exe` | Administrative Windows `cmd.exe` Cmder shell. |
|
||||||
| PowerShell | powershell.exe | Windows PowerShell enhanced with Git and Git aware prompt . |
|
| PowerShell | `powershell.exe` | Windows PowerShell enhanced with Git and Git aware prompt . |
|
||||||
| PowerShell as Admin | powershell.exe | Administrative Windows 'powershell.exe' Cmder shell. |
|
| PowerShell as Admin | `powershell.exe` | Administrative Windows `powershell.exe` Cmder shell. |
|
||||||
| Bash | bash.exe | Unix/Linux like bash shell running on Windows. |
|
| Bash | `bash.exe` | Unix/Linux like bash shell running on Windows. |
|
||||||
| Bash as Admin | bash.exe | Administrative Unix/Linux like bash shell running on Windows. |
|
| Bash as Admin | `bash.exe` | Administrative Unix/Linux like bash shell running on Windows. |
|
||||||
| Mintty | bash.exe | Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
| Mintty | `bash.exe` | Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
||||||
| Mintty as Admin | bash.exe | Administrative Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
| Mintty as Admin | `bash.exe` | Administrative Unix/Linux like bash shell running on Windows. See below for Mintty configuration differences |
|
||||||
|
|
||||||
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.
|
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 eidition 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.
|
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).
|
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).
|
||||||
|
|
||||||
An example of setting Cmder portable terminal colors for mintty:
|
An example of setting Cmder portable terminal colors for mintty:
|
||||||
|
|
||||||
@ -117,18 +117,18 @@ From a bash/mintty shell:
|
|||||||
cd $CMDER_ROOT/vendor
|
cd $CMDER_ROOT/vendor
|
||||||
git clone https://github.com/karlin/mintty-colors-solarized.git
|
git clone https://github.com/karlin/mintty-colors-solarized.git
|
||||||
cd mintty-colors-solarized/
|
cd mintty-colors-solarized/
|
||||||
echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user-profile.sh
|
echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh>>$CMDER_ROOT/config/user_profile.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
You may find some Monokai color schemes for mintty to match Cmder [here](https://github.com/PhilipDaniels/mintty/blob/master/themes/Monokai) or [here](https://github.com/oumu/mintty-color-schemes/blob/master/base16-monokai-mod.minttyrc).
|
You may find some Monokai color schemes for mintty to match Cmder [here](https://github.com/PhilipDaniels/mintty/blob/master/themes/Monokai) or [here](https://github.com/oumu/mintty-color-schemes/blob/master/base16-monokai-mod.minttyrc).
|
||||||
|
|
||||||
### Changing Cmder Default 'cmd.exe' Shell Startup Behaviour Using Task Arguments
|
### Changing Cmder Default `cmd.exe` Shell Startup Behaviour Using Task Arguments
|
||||||
|
|
||||||
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
||||||
1. Click either:
|
1. Click either:
|
||||||
* `1. {cmd::Cmder as Admin}`
|
* `1. {cmd::Cmder as Admin}`
|
||||||
* `2. {cmd::Cmder}`
|
* `2. {cmd::Cmder}`
|
||||||
1. Add command line argumentswhere specified below:
|
1. Add command line arguments where specified below:
|
||||||
|
|
||||||
*Note: Pay attention to the quotes!*
|
*Note: Pay attention to the quotes!*
|
||||||
|
|
||||||
@ -138,80 +138,82 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/
|
|||||||
|
|
||||||
##### Command Line Arguments for `init.bat`
|
##### Command Line Arguments for `init.bat`
|
||||||
|
|
||||||
| Argument | Description | Default |
|
| Argument | Description | Default |
|
||||||
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
|
| ----------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------- |
|
||||||
| /c [user cmder root] | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
| `/c [user cmder root]` | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
||||||
| /d | Enables debug output. | not set |
|
| `/d` | Enables debug output. | not set |
|
||||||
| /git_install_root [file path] | User specified Git installation root path. | '%CMDER_ROOT%\vendor\Git-for-Windows' |
|
| `/f` | Enables Cmder Fast Init Mode. This disables some features, see pull request [#1492](https://github.com/cmderdev/cmder/pull/1942) for more details. | not set |
|
||||||
| /home [home folder] | User specified folder path to set `%HOME%` environment variable. | '%userprofile%' |
|
| `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` |
|
||||||
| /max_depth [1-5] | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
| `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` |
|
||||||
| /svn_ssh [path to ssh.exe] | Define %SVN_SSH% so we can use git svn with ssh svn repositories. | '%GIT_INSTALL_ROOT%\bin\ssh.exe' |
|
| `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||||
| /user_aliases [file path] | File path pointing to user aliases. | '%CMDER_ROOT%\config\user-liases.cmd' |
|
| `/svn_ssh [path to ssh.exe]` | Define `%SVN_SSH%` so we can use git svn with ssh svn repositories. | `%GIT_INSTALL_ROOT%\bin\ssh.exe` |
|
||||||
| /v | Enables verbose output. | not set |
|
| `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user-aliases.cmd` |
|
||||||
|
| `/v` | Enables verbose output. | not set |
|
||||||
|
| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more useage. | not set |
|
||||||
|
|
||||||
### Cmder Shell User Config
|
### 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 |
|
| Shell | Cmder Portable User Config |
|
||||||
| ------------- | ----------------------------------------- |
|
| ------------- | ----------------------------------------- |
|
||||||
| Cmder | %CMDER_ROOT%\\config\\user-profile.cmd |
|
| Cmder | `%CMDER_ROOT%\config\user_profile.cmd` |
|
||||||
| PowerShell | $ENV:CMDER_ROOT\\config\\user-profile.ps1 |
|
| PowerShell | `$ENV:CMDER_ROOT\config\user_profile.ps1` |
|
||||||
| Bash/Mintty | $CMDER_ROOT/config/user-profile.sh |
|
| 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.
|
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.
|
||||||
|
|
||||||
| Shell | Cmder 'Profile.d' Scripts |
|
| Shell | Cmder `Profile.d` Scripts |
|
||||||
| ------------- | --------------------------------------------------|
|
| ------------- | --------------------------------------------------|
|
||||||
| Cmder | %CMDER_ROOT%\\config\\profile.d\\\*.bat and *.cmd |
|
| Cmder | `%CMDER_ROOT%\config\profile.d\*.bat and *.cmd` |
|
||||||
| PowerShell | $ENV:CMDER_ROOT\\config\\profile.d\\\*.ps1 |
|
| PowerShell | `$ENV:CMDER_ROOT\config\profile.d\*.ps1` |
|
||||||
| Bash/Mintty | $CMDER_ROOT/config/profile.d/*.sh |
|
| Bash/Mintty | `$CMDER_ROOT/config/profile.d/*.sh` |
|
||||||
|
|
||||||
### Aliases
|
### Aliases
|
||||||
#### Cmder(Cmd.exe) Aliases
|
#### Cmder(`Cmd.exe`) Aliases
|
||||||
You can define simple aliases for `cmd.exe` sessions with a command like `alias name=command`. Cmd.exe aliases support optional parameters through the `$1-9` or the `$*` special characters so the alias `vi=vim.exe $*` typed as `vi [filename]` will open `[filename]` in `vim.exe`.
|
You can define simple aliases for `cmd.exe` sessions with a command like `alias name=command`. Cmd.exe aliases support optional parameters through the `$1-9` or the `$*` special characters so the alias `vi=vim.exe $*` typed as `vi [filename]` will open `[filename]` in `vim.exe`.
|
||||||
|
|
||||||
Cmd.exe aliases can also be more complex. See: [DOSKEY.EXE documentation](http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/doskey.mspx?mfr=true) for additional details on complex aliases/macros for 'cmd.exe'
|
Cmd.exe aliases can also be more complex. See: [DOSKEY.EXE documentation](http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/doskey.mspx?mfr=true) for additional details on complex aliases/macros for `cmd.exe`
|
||||||
|
|
||||||
Aliases defined using the `alias.bat` command will automatically be saved in the `%CMDER_ROOT%\config\user-aliases.cmd` file
|
Aliases defined using the `alias.bat` command will automatically be saved in the `%CMDER_ROOT%\config\user-aliases.cmd` file
|
||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
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'. Anyhing 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\profile.d\*.cmd` and `\*.bat`
|
||||||
* '%CMDER_ROOT%\\config\\user-aliases.cmd'
|
* `%CMDER_ROOT%\config\user-aliases.cmd`
|
||||||
* '%CMDER_ROOT%\\config\\user-profile.cmd'
|
* `%CMDER_ROOT%\config\user_profile.cmd`
|
||||||
|
|
||||||
#### Bash.exe|Mintty.exe Aliases
|
#### Bash.exe|Mintty.exe Aliases
|
||||||
Bash shells support simple and complex aliases with optional parameters natively so they work a little different. Typing `alias name=command` will create an alias only for the current running session.
|
Bash shells support simple and complex aliases with optional parameters natively so they work a little different. Typing `alias name=command` will create an alias only for the current running session.
|
||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
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'. Anyhing 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/profile.d/*.sh`
|
||||||
* '$CMDER_ROOT/config/user-profile.sh'
|
* `$CMDER_ROOT/config/user_profile.sh`
|
||||||
* '$HOME/.bashrc'
|
* `$HOME/.bashrc`
|
||||||
|
|
||||||
If you add bash aliases to `$CMDER_ROOT/config/user-profile.sh` they will be portable and follow your Cmder folder if you copy it to another machine. `$HOME/.bashrc` defined aliases are not portable.
|
If you add bash aliases to `$CMDER_ROOT/config/user_profile.sh` they will be portable and follow your Cmder folder if you copy it to another machine. `$HOME/.bashrc` defined aliases are not portable.
|
||||||
|
|
||||||
#### PowerShell.exe Aliases
|
#### PowerShell.exe Aliases
|
||||||
PowerShell has native simple alias support, for example `[new-alias | set-alias] alias command`, so complex aliases with optional parameters are not supported in PowerShell sessions. Type `get-help [new-alias|set-alias] -full` for help on PowerShell aliases.
|
PowerShell has native simple alias support, for example `[new-alias | set-alias] alias command`, so complex aliases with optional parameters are not supported in PowerShell sessions. Type `get-help [new-alias|set-alias] -full` for help on PowerShell aliases.
|
||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
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'. Anyhing 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\profile.d\*.ps1`
|
||||||
* '$ENV:CMDER_ROOT\\config\\user-profile.ps1'
|
* `$ENV:CMDER_ROOT\config\user_profile.ps1`
|
||||||
|
|
||||||
### SSH Agent
|
### SSH Agent
|
||||||
|
|
||||||
To start the vendored SSH agent simply call `start-ssh-agent`, which is in the `vendor/git-for-windows/cmd` folder.
|
To start the vendored SSH agent simply call `start-ssh-agent`, which is in the `vendor/git-for-windows/cmd` folder.
|
||||||
|
|
||||||
If you want to run SSH agent on startup, include the line `@call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"` in `%CMDER_ROOT%/config/user-profile.cmd` (usually just uncomment it).
|
If you want to run SSH agent on startup, include the line `@call "%GIT_INSTALL_ROOT%/cmd/start-ssh-agent.cmd"` in `%CMDER_ROOT%/config/user_profile.cmd` (usually just uncomment it).
|
||||||
|
|
||||||
### Vendored Git
|
### Vendored Git
|
||||||
|
|
||||||
@ -223,22 +225,22 @@ You may use your favorite version of Git by including its path in the `%PATH%` e
|
|||||||
|
|
||||||
You may run bash (the default shell used on Linux, macOS and GNU/Hurd) externally on Cmder, using the following instructions:
|
You may run bash (the default shell used on Linux, macOS and GNU/Hurd) externally on Cmder, using the following instructions:
|
||||||
|
|
||||||
1. Setup a new task by pressing '<kbd>Win</kbd> +<kbd>Alt</kbd> + <kbd>T</kbd>'.
|
1. Setup a new task by pressing <kbd>Win</kbd> +<kbd>Alt</kbd> + <kbd>T</kbd>.
|
||||||
1. Click the '+' button to add a task.
|
1. Click the `+` button to add a task.
|
||||||
1. Name the new task in the top text box.
|
1. Name the new task in the top text box.
|
||||||
1. Provide task parameters, this is optional.
|
1. Provide task parameters, this is optional.
|
||||||
1. Add ```cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console``` to the `Commands` text box.
|
1. Add `cmd /c "[path_to_external_env]\bin\bash --login -i" -new_console` to the `Commands` text box.
|
||||||
|
|
||||||
**Recommended Optional Steps:**
|
**Recommended Optional Steps:**
|
||||||
|
|
||||||
Copy the 'vendor/cmder_exinit' file to the Cygwin/Babun, MSys2, or Git for Windows SDK environments ```/etc/profile.d/``` folder to use portable settings in the $CMDER_ROOT/config folder.
|
Copy the `vendor/cmder_exinit` file to the Cygwin/Babun, MSys2, or Git for Windows SDK environments `/etc/profile.d/` folder to use portable settings in the `$CMDER_ROOT/config` folder.
|
||||||
|
|
||||||
Note: MinGW could work if the init scripts include profile.d but this has not been tested.
|
Note: MinGW could work if the init scripts include `profile.d` but this has not been tested.
|
||||||
|
|
||||||
The destination file extension depends on the shell you use in that environment. For example:
|
The destination file extension depends on the shell you use in that environment. For example:
|
||||||
|
|
||||||
* bash - Copy to /etc/profile.d/cmder_exinit.sh
|
* bash - Copy to `/etc/profile.d/cmder_exinit.sh`
|
||||||
* zsh - Copy to /etc/profile.d/cmder_exinit.zsh
|
* 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 below line in the script to use Cmder config even when launched from outside Cmder.
|
||||||
|
|
||||||
@ -246,7 +248,56 @@ Uncomment and edit the below line in the script to use Cmder config even when la
|
|||||||
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
||||||
```
|
```
|
||||||
|
|
||||||
### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs
|
### Customizing user sessions using `init.bat` custom arguments.
|
||||||
|
|
||||||
|
You can pass custom arguments to `init.bat` and use `cexec.cmd` in your `user_profile.cmd` to evaluate these
|
||||||
|
arguments then execute commands based on a particular flag being detected or not.
|
||||||
|
|
||||||
|
`init.bat` creates two shortcuts for using `cexec.cmd` in your profile scripts.
|
||||||
|
|
||||||
|
#### `%ccall%` - Evaluates flags, runs commands if found, and returns to the calling script and continues.
|
||||||
|
|
||||||
|
```
|
||||||
|
ccall=call C:\Users\user\cmderdev\vendor\bin\cexec.cmd
|
||||||
|
```
|
||||||
|
|
||||||
|
Example: `%ccall% /startnotepad start notepad.exe`
|
||||||
|
|
||||||
|
#### `%cexec%` - Evaluates flags, runs commands if found, and does not return to the calling script.
|
||||||
|
|
||||||
|
```
|
||||||
|
cexec=C:\Users\user\cmderdev\vendor\bin\cexec.cmd
|
||||||
|
```
|
||||||
|
|
||||||
|
Example: `%cexec% /startnotepad start notepad.exe`
|
||||||
|
|
||||||
|
It is useful when you have multiple tasks to execute `cmder` and need it to initialize
|
||||||
|
the session differently depending on the task chosen.
|
||||||
|
|
||||||
|
To conditionally start `notepad.exe` when you start a specific `cmder` task:
|
||||||
|
|
||||||
|
* Press <kbd>win</kbd>+<kbd>alt</kbd>+<kbd>t</kbd>
|
||||||
|
* Click `+` to add a new task.
|
||||||
|
* Add the below to the `Commands` block:
|
||||||
|
|
||||||
|
```batch
|
||||||
|
|
||||||
|
cmd.exe /k ""%ConEmuDir%\..\init.bat" /startnotepad"
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
* Add the below to your `%cmder_root%\config\user_profile.cmd`
|
||||||
|
|
||||||
|
```batch
|
||||||
|
|
||||||
|
%ccall% "/startNotepad" "start" "notepad.exe"`
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html).
|
Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html).
|
||||||
|
|
||||||
However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator.
|
However, Cmder can in fact run in a variety of other terminal emulators, and even integrated IDEs. Assuming you have the latest version of Cmder, follow the following instructions to get Cmder working with your own terminal emulator.
|
||||||
@ -257,26 +308,26 @@ For instructions on how to integrate Cmder with your IDE, please read our [Wiki
|
|||||||
|
|
||||||
The process of upgrading Cmder depends on the version/build you are currently running.
|
The process of upgrading Cmder depends on the version/build you are currently running.
|
||||||
|
|
||||||
If you have a `[cmder_root]/config/user-conemu.xml`, you are running a newer version of Cmder, follow the below process:
|
If you have a `[cmder_root]/config/user-conemu.xml`, you are running a newer version of Cmder, follow the below process:
|
||||||
|
|
||||||
1. Exit all Cmder sessions and relaunch `[cmder_root]/cmder.exe`, this backs up your existing `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user-conemu.xml`.
|
1. Exit all Cmder sessions and relaunch `[cmder_root]/cmder.exe`, this backs up your existing `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user-conemu.xml`.
|
||||||
|
|
||||||
* The `[cmder_root]/config/user-conemu.xml` contains any custom settings you have made using the 'Setup Tasks' settings dialog.
|
* The `[cmder_root]/config/user-conemu.xml` contains any custom settings you have made using the 'Setup Tasks' settings dialog.
|
||||||
|
|
||||||
2. Exit all Cmder sessions and backup any files you have manually edited under `[cmder_root]/vendor`.
|
2. Exit all Cmder sessions and backup any files you have manually edited under `[cmder_root]/vendor`.
|
||||||
|
|
||||||
* Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in '[cmder_root]/config' folder.
|
* Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in `[cmder_root]/config` folder.
|
||||||
|
|
||||||
3. Delete the `[cmder_root]/vendor` folder.
|
3. Delete the `[cmder_root]/vendor` folder.
|
||||||
4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted.
|
4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted.
|
||||||
|
|
||||||
If you do not have a `[cmder_root]/config/user-conemu.xml`, you are running an older version of cmder, follow the below process:
|
If you do not have a `[cmder_root]/config/user-conemu.xml`, you are running an older version of cmder, follow the below process:
|
||||||
|
|
||||||
1. Exit all Cmder sessions and backup `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user-conemu.xml`.
|
1. Exit all Cmder sessions and backup `[cmder_root]/vendor/conemu-maximus5/conemu.xml` to `[cmder_root]/config/user-conemu.xml`.
|
||||||
|
|
||||||
2. Backup any files you have manually edited under `[cmder_root]/vendor`.
|
2. Backup any files you have manually edited under `[cmder_root]/vendor`.
|
||||||
|
|
||||||
* Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in '[cmder_root]/config' folder.
|
* Editing files under `[cmder_root]/vendor` is not recommended since you will need to re-apply these changes after any upgrade. All user customizations should go in `[cmder_root]/config` folder.
|
||||||
|
|
||||||
3. Delete the `[cmder_root]/vendor` folder.
|
3. Delete the `[cmder_root]/vendor` folder.
|
||||||
4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted.
|
4. Extract the new `cmder.zip` or `cmder_mini.zip` into `[cmder_root]/` overwriting all files when prompted.
|
||||||
|
@ -9,6 +9,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#pragma comment(lib, "Shlwapi.lib")
|
#pragma comment(lib, "Shlwapi.lib")
|
||||||
|
#pragma warning( disable : 4091 )
|
||||||
|
|
||||||
#ifndef UNICODE
|
#ifndef UNICODE
|
||||||
#error "Must be compiled with unicode support."
|
#error "Must be compiled with unicode support."
|
||||||
@ -85,6 +86,10 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
wchar_t userConfigDirPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
wchar_t userBinDirPath[MAX_PATH] = { 0 };
|
||||||
wchar_t userProfiledDirPath[MAX_PATH] = { 0 };
|
wchar_t userProfiledDirPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t userProfilePath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t legacyUserProfilePath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t userAliasesPath[MAX_PATH] = { 0 };
|
||||||
|
wchar_t legacyUserAliasesPath[MAX_PATH] = { 0 };
|
||||||
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
wchar_t args[MAX_PATH * 2 + 256] = { 0 };
|
||||||
|
|
||||||
std::wstring cmderStart = path;
|
std::wstring cmderStart = path;
|
||||||
@ -104,12 +109,54 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
||||||
|
|
||||||
PathCombine(configDirPath, exeDir, L"config");
|
PathCombine(configDirPath, exeDir, L"config");
|
||||||
|
|
||||||
|
/*
|
||||||
|
Convert legacy user-profile.cmd to new name user_profile.cmd
|
||||||
|
*/
|
||||||
|
PathCombine(legacyUserProfilePath, configDirPath, L"user-profile.cmd");
|
||||||
|
if (PathFileExists(legacyUserProfilePath))
|
||||||
|
{
|
||||||
|
PathCombine(userProfilePath, configDirPath, L"user_profile.cmd");
|
||||||
|
|
||||||
|
char *lPr = (char *)malloc(MAX_PATH);
|
||||||
|
char *pR = (char *)malloc(MAX_PATH);
|
||||||
|
size_t i;
|
||||||
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
|
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||||
|
wcstombs_s(&i, pR, (size_t)MAX_PATH,
|
||||||
|
userProfilePath, (size_t)MAX_PATH);
|
||||||
|
rename(lPr, pR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Convert legacy user-aliases.cmd to new name user_aliases.cmd
|
||||||
|
*/
|
||||||
|
PathCombine(legacyUserAliasesPath, configDirPath, L"user-aliases.cmd");
|
||||||
|
if (PathFileExists(legacyUserAliasesPath))
|
||||||
|
{
|
||||||
|
PathCombine(userAliasesPath, configDirPath, L"user_aliases.cmd");
|
||||||
|
|
||||||
|
char *lPr = (char *)malloc(MAX_PATH);
|
||||||
|
char *pR = (char *)malloc(MAX_PATH);
|
||||||
|
size_t i;
|
||||||
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
|
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||||
|
wcstombs_s(&i, pR, (size_t)MAX_PATH,
|
||||||
|
userAliasesPath, (size_t)MAX_PATH);
|
||||||
|
rename(lPr, pR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Was -c [path] specified?
|
||||||
|
*/
|
||||||
if (wcscmp(userConfigDirPath, L"") == 0)
|
if (wcscmp(userConfigDirPath, L"") == 0)
|
||||||
{
|
{
|
||||||
|
// No - It wasn't.
|
||||||
PathCombine(userConfigDirPath, exeDir, L"config");
|
PathCombine(userConfigDirPath, exeDir, L"config");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
// Yes - It was.
|
||||||
PathCombine(userBinDirPath, userConfigDirPath, L"bin");
|
PathCombine(userBinDirPath, userConfigDirPath, L"bin");
|
||||||
SHCreateDirectoryEx(0, userBinDirPath, 0);
|
SHCreateDirectoryEx(0, userBinDirPath, 0);
|
||||||
|
|
||||||
@ -118,111 +165,161 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
|
|
||||||
PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d");
|
PathCombine(userProfiledDirPath, userConfigDirPath, L"profile.d");
|
||||||
SHCreateDirectoryEx(0, userProfiledDirPath, 0);
|
SHCreateDirectoryEx(0, userProfiledDirPath, 0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
Convert legacy user-profile.cmd to new name user_profile.cmd
|
||||||
|
*/
|
||||||
|
PathCombine(legacyUserProfilePath, userConfigDirPath, L"user-profile.cmd");
|
||||||
|
if (PathFileExists(legacyUserProfilePath))
|
||||||
|
{
|
||||||
|
PathCombine(userProfilePath, userConfigDirPath, L"user_profile.cmd");
|
||||||
|
|
||||||
|
char *lPr = (char *)malloc(MAX_PATH);
|
||||||
|
char *pR = (char *)malloc(MAX_PATH);
|
||||||
|
size_t i;
|
||||||
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
|
legacyUserProfilePath, (size_t)MAX_PATH);
|
||||||
|
wcstombs_s(&i, pR, (size_t)MAX_PATH,
|
||||||
|
userProfilePath, (size_t)MAX_PATH);
|
||||||
|
rename(lPr, pR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Convert legacy user-aliases.cmd to new name user_aliases.cmd
|
||||||
|
*/
|
||||||
|
PathCombine(legacyUserAliasesPath, userConfigDirPath, L"user-aliases.cmd");
|
||||||
|
if (PathFileExists(legacyUserAliasesPath))
|
||||||
|
{
|
||||||
|
PathCombine(userAliasesPath, userConfigDirPath, L"user_aliases.cmd");
|
||||||
|
|
||||||
|
char *lPr = (char *)malloc(MAX_PATH);
|
||||||
|
char *pR = (char *)malloc(MAX_PATH);
|
||||||
|
size_t i;
|
||||||
|
wcstombs_s(&i, lPr, (size_t)MAX_PATH,
|
||||||
|
legacyUserAliasesPath, (size_t)MAX_PATH);
|
||||||
|
wcstombs_s(&i, pR, (size_t)MAX_PATH,
|
||||||
|
userAliasesPath, (size_t)MAX_PATH);
|
||||||
|
rename(lPr, pR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set path to vendored ConEmu config file
|
// Set path to vendored ConEmu config file
|
||||||
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
PathCombine(cfgPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.xml");
|
||||||
|
|
||||||
// Set path to Cmder default ConEmu config file
|
// Set path to Cmder default ConEmu config file
|
||||||
PathCombine(defaultCfgPath, exeDir, L"config\\ConEmu.xml");
|
PathCombine(defaultCfgPath, exeDir, L"vendor\\ConEmu.xml.default");
|
||||||
|
|
||||||
// Check for machine-specific then user config source file.
|
// Check for machine-specific then user config source file.
|
||||||
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
PathCombine(cpuCfgPath, userConfigDirPath, L"ConEmu-%COMPUTERNAME%.xml");
|
||||||
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
ExpandEnvironmentStrings(cpuCfgPath, cpuCfgPath, sizeof(cpuCfgPath) / sizeof(cpuCfgPath[0]));
|
||||||
|
|
||||||
|
// Set path to Cmder user ConEmu config file
|
||||||
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(userCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
|
|
||||||
if (PathFileExists(cpuCfgPath)) {
|
if (PathFileExists(cpuCfgPath)) // config/ConEmu-%COMPUTERNAME%.xml file exists, use it.
|
||||||
if (PathFileExists(cfgPath)) {
|
{
|
||||||
|
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml file exists, copy vendor/conemu-maximus5/ConEmu.xml to config/ConEmu-%COMPUTERNAME%.xml.
|
||||||
|
{
|
||||||
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
if (!CopyFile(cfgPath, cpuCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy ConEmu.xml file to ConEmu-%COMPUTERNAME%.xml backup location! Restart Cmder as Administrator."
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml! Access Denied."
|
||||||
: L"Failed to copy ConEmu.xml file to ConEmu-%COMPUTERNAME%.xml backup location!", MB_TITLE, MB_ICONSTOP);
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/ConEmu-%COMPUTERNAME%.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else // vendor/conemu-maximus5/ConEmu.xml config file does not exist, copy config/ConEmu-%COMPUTERNAME%.xml to vendor/conemu-maximus5/ConEmu.xml file
|
||||||
{
|
{
|
||||||
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
if (!CopyFile(cpuCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy ConEmu-%COMPUTERNAME%.xml file to vendored ConEmu.xml location! Restart Cmder as Administrator."
|
? L"Failed to copy conig/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
: L"Failed to copy ConEmu-%COMPUTERNAME%.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
: L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (PathFileExists(userCfgPath)) {
|
else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it.
|
||||||
if (PathFileExists(cfgPath)) {
|
{
|
||||||
|
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml.
|
||||||
|
{
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy ConEmu.xml file to backup location! Restart Cmder as Administrator."
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
||||||
: L"Failed to copy ConEmu.xml file to backup location!", MB_TITLE, MB_ICONSTOP);
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else // vendor/conemu-maximus5/ConEmu.xml does not exist, copy config/user-conemu.xml to vendor/conemu-maximus5/ConEmu.xml
|
||||||
{
|
{
|
||||||
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
if (!CopyFile(userCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy ConEmu.xml file to vendored ConEmu.xml location! Restart Cmder as Administrator."
|
? L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
: L"Failed to copy ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
: L"Failed to copy config/user-conemu.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (PathFileExists(cfgPath)) {
|
else if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
|
||||||
|
{
|
||||||
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
if (!CopyFile(cfgPath, userCfgPath, FALSE))
|
||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy ConEmu.xml file to user-conemu.xml backup location! Restart Cmder as Administrator."
|
? L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml! Access Denied."
|
||||||
: L"Failed to copy ConEmu.xml file to user-conemu.xml backup location!", MB_TITLE, MB_ICONSTOP);
|
: L"Failed to copy vendor/conemu-maximus5/ConEmu.xml file to config/user-conemu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else // vendor/ConEmu.xml config exists, copy Cmder vendor/ConEmu.xml file to vendor/conemu-maximus5/ConEmu.xml.
|
||||||
if (!CopyFile(defaultCfgPath, cfgPath, FALSE))
|
{
|
||||||
|
if ( ! CopyFile(defaultCfgPath, cfgPath, FALSE))
|
||||||
{
|
{
|
||||||
|
ShowErrorAndExit(GetLastError(), __WFUNCTION__, __LINE__);
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||||
? L"Failed to copy Cmder default ConEmu.xml file to vendored ConEmu.xml location! Restart Cmder as Administrator."
|
? L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||||
: L"Failed to copy Cmder default ConEmu.xml file to vendored ConEmu.xml location!", MB_TITLE, MB_ICONSTOP);
|
: L"Failed to copy vendor/ConEmu.xml.default file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
SYSTEM_INFO sysInfo;
|
SYSTEM_INFO sysInfo;
|
||||||
GetNativeSystemInfo(&sysInfo);
|
GetNativeSystemInfo(&sysInfo);
|
||||||
if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) {
|
if (sysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64)
|
||||||
|
{
|
||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu64.exe");
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (is_single_mode)
|
if (is_single_mode)
|
||||||
{
|
{
|
||||||
if (!streqi(cmderTask.c_str(), L"")) {
|
if (!streqi(cmderTask.c_str(), L""))
|
||||||
|
{
|
||||||
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", args, icoPath, cmderStart.c_str(), cmderTask.c_str());
|
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", args, icoPath, cmderStart.c_str(), cmderTask.c_str());
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
swprintf_s(args, L"%s /single /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!streqi(cmderTask.c_str(), L"")) {
|
if (!streqi(cmderTask.c_str(), L""))
|
||||||
|
{
|
||||||
swprintf_s(args, L"/Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", icoPath, cmderStart.c_str(), cmderTask.c_str());
|
swprintf_s(args, L"/Icon \"%s\" /Title Cmder /dir \"%s\" /run {%s}", icoPath, cmderStart.c_str(), cmderTask.c_str());
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder /dir \"%s\"", args, icoPath, cmderStart.c_str());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -361,8 +458,8 @@ cmderOptions GetOption()
|
|||||||
|
|
||||||
for (int i = 1; i < argCount; i++)
|
for (int i = 1; i < argCount; i++)
|
||||||
{
|
{
|
||||||
// MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK);
|
|
||||||
|
|
||||||
|
// MessageBox(NULL, szArgList[i], L"Arglist contents", MB_OK);
|
||||||
if (_wcsicmp(L"/c", szArgList[i]) == 0)
|
if (_wcsicmp(L"/c", szArgList[i]) == 0)
|
||||||
{
|
{
|
||||||
TCHAR userProfile[MAX_PATH];
|
TCHAR userProfile[MAX_PATH];
|
||||||
@ -373,20 +470,28 @@ cmderOptions GetOption()
|
|||||||
|
|
||||||
cmderOptions.cmderCfgRoot = cmderCfgRoot;
|
cmderOptions.cmderCfgRoot = cmderCfgRoot;
|
||||||
|
|
||||||
if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/') {
|
if (szArgList[i + 1] != NULL && szArgList[i + 1][0] != '/')
|
||||||
|
{
|
||||||
cmderOptions.cmderCfgRoot = szArgList[i + 1];
|
cmderOptions.cmderCfgRoot = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"/start", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/start", szArgList[i]) == 0)
|
||||||
{
|
{
|
||||||
|
int len = wcslen(szArgList[i + 1]);
|
||||||
|
if (wcscmp(&szArgList[i + 1][len - 1], L"\"") == 0)
|
||||||
|
{
|
||||||
|
szArgList[i + 1][len - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
if (PathFileExists(szArgList[i + 1]))
|
if (PathFileExists(szArgList[i + 1]))
|
||||||
{
|
{
|
||||||
cmderOptions.cmderStart = szArgList[i + 1];
|
cmderOptions.cmderStart = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
MessageBox(NULL, szArgList[i + 1], L"/START - Folder doses not exist!", MB_OK);
|
{
|
||||||
|
MessageBox(NULL, szArgList[i + 1], L"/START - Folder does not exist!", MB_OK);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (_wcsicmp(L"/task", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/task", szArgList[i]) == 0)
|
||||||
@ -415,7 +520,7 @@ cmderOptions GetOption()
|
|||||||
{
|
{
|
||||||
cmderOptions.unRegisterApp = true;
|
cmderOptions.unRegisterApp = true;
|
||||||
cmderOptions.registerApp = false;
|
cmderOptions.registerApp = false;
|
||||||
if (szArgList[i + 1] != NULL)
|
if (szArgList[i + 1] != NULL)
|
||||||
{
|
{
|
||||||
if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0)
|
if (_wcsicmp(L"all", szArgList[i + 1]) == 0 || _wcsicmp(L"user", szArgList[i + 1]) == 0)
|
||||||
{
|
{
|
||||||
@ -424,11 +529,26 @@ cmderOptions GetOption()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cmderOptions.cmderStart == L"" && PathFileExists(szArgList[i]))
|
else if (cmderOptions.cmderStart == L"")
|
||||||
{
|
{
|
||||||
cmderOptions.cmderStart = szArgList[i];
|
int len = wcslen(szArgList[i]);
|
||||||
|
if (wcscmp(&szArgList[i][len - 1], L"\"") == 0)
|
||||||
|
{
|
||||||
|
szArgList[i][len - 1] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (PathFileExists(szArgList[i]))
|
||||||
|
{
|
||||||
|
cmderOptions.cmderStart = szArgList[i];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
MessageBox(NULL, szArgList[i], L"Folder does not exist!", MB_OK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n /c [CMDER User Root Path]\n\n /task [ConEmu Task Name]\n\n [/start [Start in Path] | [Start in Path]]\n\n /single\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
|
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n /c [CMDER User Root Path]\n\n /task [ConEmu Task Name]\n\n [/start [Start in Path] | [Start in Path]]\n\n /single\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
|
||||||
cmderOptions.error = true;
|
cmderOptions.error = true;
|
||||||
}
|
}
|
||||||
@ -450,7 +570,8 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
|
|
||||||
cmderOptions cmderOptions = GetOption();
|
cmderOptions cmderOptions = GetOption();
|
||||||
|
|
||||||
if (cmderOptions.registerApp == true) {
|
if (cmderOptions.registerApp == true)
|
||||||
|
{
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_BACKGROUND);
|
||||||
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
RegisterShellMenu(cmderOptions.cmderRegScope, SHELL_MENU_REGISTRY_PATH_LISTITEM);
|
||||||
}
|
}
|
||||||
|
@ -508,7 +508,7 @@
|
|||||||
<value name="Name" type="string" data="{PowerShell::PowerShell as Admin}"/>
|
<value name="Name" type="string" data="{PowerShell::PowerShell as Admin}"/>
|
||||||
<value name="Hotkey" 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="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||||
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''""/>
|
<value name="Cmd1" type="string" data="*PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''""/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
@ -517,7 +517,7 @@
|
|||||||
<value name="Name" type="string" data="{PowerShell::PowerShell}"/>
|
<value name="Name" type="string" data="{PowerShell::PowerShell}"/>
|
||||||
<value name="Hotkey" 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="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||||
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%ConEmuDir%\..\profile.ps1'''""/>
|
<value name="Cmd1" type="string" data="PowerShell -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression 'Import-Module ''%ConEmuDir%\..\profile.ps1'''""/>
|
||||||
<value name="Cmd2" type="string" data=""%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe""/>
|
<value name="Cmd2" type="string" data=""%CMDER_ROOT%\vendor\git-for-windows\git-bash.exe""/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
8
bin/alias.bat → vendor/bin/alias.cmd
vendored
8
bin/alias.bat → vendor/bin/alias.cmd
vendored
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
|
|
||||||
if "%ALIASES%" == "" (
|
if "%ALIASES%" == "" (
|
||||||
set ALIASES="%CMDER_ROOT%\config\user-aliases.cmd"
|
set ALIASES="%CMDER_ROOT%\config\user_aliases.cmd"
|
||||||
)
|
)
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
@ -50,7 +50,7 @@ goto parseargument
|
|||||||
)
|
)
|
||||||
rem #endregion parseargument
|
rem #endregion parseargument
|
||||||
|
|
||||||
if "%ALIASES%" neq "%CMDER_ROOT%\config\user-aliases.cmd" (
|
if "%ALIASES%" neq "%CMDER_ROOT%\config\user_aliases.cmd" (
|
||||||
set _x=!_x:/f "%ALIASES%" =!
|
set _x=!_x:/f "%ALIASES%" =!
|
||||||
|
|
||||||
if not exist "%ALIASES%" (
|
if not exist "%ALIASES%" (
|
||||||
@ -117,9 +117,9 @@ echo.Options:
|
|||||||
echo.
|
echo.
|
||||||
echo. /d [alias] Delete an [alias].
|
echo. /d [alias] Delete an [alias].
|
||||||
echo. /f [macrofile] Path to the [macrofile] you want to store the new alias in.
|
echo. /f [macrofile] Path to the [macrofile] you want to store the new alias in.
|
||||||
echo. Default: %cmder_root%\config\user-aliases.cmd
|
echo. Default: %cmder_root%\config\user_aliases.cmd
|
||||||
echo. /reload Reload the aliases file. Can be used with /f argument.
|
echo. /reload Reload the aliases file. Can be used with /f argument.
|
||||||
echo. Default: %cmder_root%\config\user-aliases.cmd
|
echo. Default: %cmder_root%\config\user_aliases.cmd
|
||||||
echo.
|
echo.
|
||||||
echo. If alias is called with no parameters, it will display the list of existing aliases.
|
echo. If alias is called with no parameters, it will display the list of existing aliases.
|
||||||
echo.
|
echo.
|
135
vendor/bin/cexec.cmd
vendored
Normal file
135
vendor/bin/cexec.cmd
vendored
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
@echo off
|
||||||
|
setlocal
|
||||||
|
|
||||||
|
if "%~1" equ "" goto :wrongSyntax
|
||||||
|
|
||||||
|
if not defined CMDER_USER_FLAGS (
|
||||||
|
:: in case nothing was passed to %CMDER_USER_FLAGS%
|
||||||
|
set "CMDER_USER_FLAGS= "
|
||||||
|
)
|
||||||
|
|
||||||
|
set "feNot=false"
|
||||||
|
goto :parseArgument
|
||||||
|
|
||||||
|
:doShift
|
||||||
|
shift
|
||||||
|
|
||||||
|
:parseArgument
|
||||||
|
set "currenArgu=%~1"
|
||||||
|
if /i "%currenArgu%" equ "/setPath" (
|
||||||
|
:: set %flag_exists% shortcut
|
||||||
|
endlocal
|
||||||
|
set "ccall=call %~dp0cexec.cmd"
|
||||||
|
set "cexec=%~dp0cexec.cmd"
|
||||||
|
) else if /i "%currenArgu%" == "/?" (
|
||||||
|
goto :help
|
||||||
|
) else if /i "%currenArgu%" equ "/help" (
|
||||||
|
goto :help
|
||||||
|
) else if /i "%currenArgu%" equ "/h" (
|
||||||
|
goto :help
|
||||||
|
) else if /i "%currenArgu%" equ "NOT" (
|
||||||
|
set "feNot=true"
|
||||||
|
goto :doShift
|
||||||
|
) else (
|
||||||
|
if "%~1" equ "" goto :wrongSyntax
|
||||||
|
if "%~2" equ "" goto :wrongSyntax
|
||||||
|
set "feFlagName=%~1"
|
||||||
|
set "feCommand=%~2"
|
||||||
|
if not "%~3" equ "" (
|
||||||
|
set "feParam=%~3"
|
||||||
|
)
|
||||||
|
goto :detect
|
||||||
|
)
|
||||||
|
|
||||||
|
:detect
|
||||||
|
:: to avoid erroneous deteciton like "/do" "/doNOT", which both have a "/do"
|
||||||
|
:: we added a space after the flag name, like "/do ", which won't match "/doN"
|
||||||
|
set "feFlagName=%feFlagName% "
|
||||||
|
:: echo.
|
||||||
|
:: echo %CMDER_USER_FLAGS%
|
||||||
|
:: echo %feNOT%
|
||||||
|
:: echo %feFlagName%
|
||||||
|
:: echo %feCommand%
|
||||||
|
:: echo %feParam%
|
||||||
|
:: echo.
|
||||||
|
echo %CMDER_USER_FLAGS% | find /i "%feFlagName%">nul
|
||||||
|
if "%ERRORLEVEL%" == "0" (
|
||||||
|
if "%feNOT%" == "false" (
|
||||||
|
endlocal && call %feCommand% %feParam%
|
||||||
|
exit /b 0
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
if "%feNOT%" == "true" (
|
||||||
|
endlocal && call %feCommand% %feParam%
|
||||||
|
exit /b 0
|
||||||
|
)
|
||||||
|
)
|
||||||
|
endlocal
|
||||||
|
exit /b 1
|
||||||
|
|
||||||
|
:wrongSyntax
|
||||||
|
echo The syntax of the command is incorrect.
|
||||||
|
echo.
|
||||||
|
echo use /? for help
|
||||||
|
echo.
|
||||||
|
endlocal
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:help
|
||||||
|
echo.
|
||||||
|
echo CExec - Conditional Exec
|
||||||
|
echo.
|
||||||
|
echo Handles with custom arguments for cmder's init.bat.
|
||||||
|
echo written by xiazeyu, inspired DRSDavidSoft.
|
||||||
|
echo.
|
||||||
|
echo Usage:
|
||||||
|
echo.
|
||||||
|
echo cexec /setPath [NOT] flagName command/program [parameters]
|
||||||
|
echo.
|
||||||
|
echo /setPath Generate a global varibles %%ccall%% and %%cexec%% for
|
||||||
|
echo quicker use. Following arguments will be ignored.
|
||||||
|
echo.
|
||||||
|
echo NOT Specifies that cexec should carry out
|
||||||
|
echo the command only if the flag is missing.
|
||||||
|
echo.
|
||||||
|
echo /[flagName] Specifies which flag name is to detect. It's recommand
|
||||||
|
echo to use a pair of double quotation marks to wrap
|
||||||
|
echo your flag name to avoid exceed expectation.
|
||||||
|
echo.
|
||||||
|
echo command/program Specifies the command to carry out if the
|
||||||
|
echo argument name is detected. It's recommand to
|
||||||
|
echo use a pair of double quotation marks to
|
||||||
|
echo wrap your command to avoid exceed expectation.
|
||||||
|
echo.
|
||||||
|
echo parameters These are the parameters passed to the command/program.
|
||||||
|
echo It's recommand to use a pair of double quotation marks
|
||||||
|
echo to wrap your flag name to avoid exceed expectation.
|
||||||
|
echo.
|
||||||
|
echo Examples:
|
||||||
|
echo.
|
||||||
|
echo These examples are expected to be written in %cmder_root%/config/user-profile.cmd
|
||||||
|
echo CExec evaluates the environment varible "CMDER_USER_FLAGS" and conditionally
|
||||||
|
echo caries out actions based on flags that are passed.
|
||||||
|
echo.
|
||||||
|
echo Case 1:
|
||||||
|
echo.
|
||||||
|
echo The following command in `user_profile.cmd` would execute "notepad.exe" and continue running the `user_profile.cmd`
|
||||||
|
echo.
|
||||||
|
echo "%ccall%" "/startNotepad" "start" "notepad.exe"
|
||||||
|
echo.
|
||||||
|
echo If you pass parameter to init.bat like:
|
||||||
|
echo.
|
||||||
|
echo init.bat /startNotepad
|
||||||
|
echo.
|
||||||
|
echo Case 2:
|
||||||
|
echo.
|
||||||
|
echo The following command in `user_profile.cmd` would execute "notepad.exe" and stop running the `user_profile.cmd`
|
||||||
|
echo.
|
||||||
|
echo "%cexec%" NOT "/dontStartNotepad" "start" "notepad.exe"
|
||||||
|
echo.
|
||||||
|
echo UNLESS you pass parameter to init.bat like:
|
||||||
|
echo.
|
||||||
|
echo init.bat /dontStartNotepad
|
||||||
|
echo.
|
||||||
|
endlocal
|
||||||
|
exit /b
|
41
vendor/bin/cmder_diag.cmd
vendored
Normal file
41
vendor/bin/cmder_diag.cmd
vendored
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
echo ------------------------------------
|
||||||
|
echo dir "%cmder_root%"
|
||||||
|
echo ------------------------------------
|
||||||
|
dir "%cmder_root%"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ------------------------------------
|
||||||
|
echo dir "%cmder_root%\vendor"
|
||||||
|
echo ------------------------------------
|
||||||
|
dir "%cmder_root%\vendor"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ------------------------------------
|
||||||
|
echo dir /s "%cmder_root%\bin"
|
||||||
|
echo ------------------------------------
|
||||||
|
dir /s "%cmder_root%\bin"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ------------------------------------
|
||||||
|
echo dir /s "%cmder_root%\config"
|
||||||
|
echo ------------------------------------
|
||||||
|
dir /s "%cmder_root%\config"
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ------------------------------------
|
||||||
|
echo set
|
||||||
|
echo ------------------------------------
|
||||||
|
set
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ------------------------------------
|
||||||
|
echo where git
|
||||||
|
echo ------------------------------------
|
||||||
|
where git
|
||||||
|
|
||||||
|
echo.
|
||||||
|
echo ------------------------------------
|
||||||
|
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
||||||
|
echo ------------------------------------
|
39
vendor/bin/cmder_diag.ps1
vendored
Normal file
39
vendor/bin/cmder_diag.ps1
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
write-host ------------------------------------
|
||||||
|
write-host get-childitem "$env:CMDER_ROOT"
|
||||||
|
write-host ------------------------------------
|
||||||
|
get-childitem "$env:CMDER_ROOT"
|
||||||
|
|
||||||
|
write-host ''
|
||||||
|
write-host ------------------------------------
|
||||||
|
write-host get-childitem "$env:CMDER_ROOT/vendor"
|
||||||
|
write-host ------------------------------------
|
||||||
|
get-childitem "$env:CMDER_ROOT/vendor"
|
||||||
|
|
||||||
|
write-host ''
|
||||||
|
write-host ------------------------------------
|
||||||
|
write-host get-childitem -s "$env:CMDER_ROOT/bin"
|
||||||
|
write-host ------------------------------------
|
||||||
|
get-childitem -s "$env:CMDER_ROOT/bin"
|
||||||
|
|
||||||
|
write-host ''
|
||||||
|
write-host ------------------------------------
|
||||||
|
write-host get-childitem -s "$env:CMDER_ROOT/config"
|
||||||
|
write-host ------------------------------------
|
||||||
|
get-childitem -s "$env:CMDER_ROOT/config"
|
||||||
|
|
||||||
|
write-host ''
|
||||||
|
write-host ------------------------------------
|
||||||
|
write-host get-childitem env:
|
||||||
|
write-host ------------------------------------
|
||||||
|
get-childitem env: |ft -autosize -wrap
|
||||||
|
|
||||||
|
write-host ''
|
||||||
|
write-host ------------------------------------
|
||||||
|
write-host get-command git
|
||||||
|
write-host ------------------------------------
|
||||||
|
get-command git
|
||||||
|
|
||||||
|
write-host ''
|
||||||
|
write-host ------------------------------------
|
||||||
|
write-host Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
||||||
|
write-host ------------------------------------
|
39
vendor/bin/cmder_diag.sh
vendored
Normal file
39
vendor/bin/cmder_diag.sh
vendored
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
echo ------------------------------------
|
||||||
|
echo ls -la "$CMDER_ROOT"
|
||||||
|
echo ------------------------------------
|
||||||
|
ls -la "$CMDER_ROOT"
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo ------------------------------------
|
||||||
|
echo ls -la "$CMDER_ROOT/vendor"
|
||||||
|
echo ------------------------------------
|
||||||
|
ls -la "$CMDER_ROOT/vendor"
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo ------------------------------------
|
||||||
|
echo ls -la /s "$CMDER_ROOT/bin"
|
||||||
|
echo ------------------------------------
|
||||||
|
ls -laR /s "$CMDER_ROOT/bin"
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo ------------------------------------
|
||||||
|
echo ls -la /s "$CMDER_ROOT/config"
|
||||||
|
echo ------------------------------------
|
||||||
|
ls -laR /s "$CMDER_ROOT/config"
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo ------------------------------------
|
||||||
|
echo env
|
||||||
|
echo ------------------------------------
|
||||||
|
env
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo ------------------------------------
|
||||||
|
echo which git
|
||||||
|
echo ------------------------------------
|
||||||
|
which git
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo ------------------------------------
|
||||||
|
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
||||||
|
echo ------------------------------------
|
22
vendor/bin/timer.cmd
vendored
Normal file
22
vendor/bin/timer.cmd
vendored
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
set start=%~1
|
||||||
|
set end=%~2
|
||||||
|
|
||||||
|
set options="tokens=1-4 delims=:.,"
|
||||||
|
for /f %options% %%a in ("%start%") do set start_h=%%a&set /a start_m=100%%b %% 100&set /a start_s=100%%c %% 100&set /a start_ms=100%%d %% 100
|
||||||
|
for /f %options% %%a in ("%end%") do set end_h=%%a&set /a end_m=100%%b %% 100&set /a end_s=100%%c %% 100&set /a end_ms=100%%d %% 100
|
||||||
|
|
||||||
|
set /a hours=%end_h%-%start_h%
|
||||||
|
set /a mins=%end_m%-%start_m%
|
||||||
|
set /a secs=%end_s%-%start_s%
|
||||||
|
set /a ms=%end_ms%-%start_ms%
|
||||||
|
if %ms% lss 0 set /a secs = %secs% - 1 & set /a ms = 100%ms%
|
||||||
|
if %secs% lss 0 set /a mins = %mins% - 1 & set /a secs = 60%secs%
|
||||||
|
if %mins% lss 0 set /a hours = %hours% - 1 & set /a mins = 60%mins%
|
||||||
|
if %hours% lss 0 set /a hours = 24%hours%
|
||||||
|
if 1%ms% lss 100 set ms=0%ms%
|
||||||
|
|
||||||
|
:: Mission accomplished
|
||||||
|
set /a totalsecs = %hours%*3600 + %mins%*60 + %secs%
|
||||||
|
echo Elapsed Time: %hours%:%mins%:%secs%.%ms% (%totalsecs%.%ms%s total)
|
98
vendor/clink.lua
vendored
98
vendor/clink.lua
vendored
@ -41,13 +41,19 @@ local function set_prompt_filter()
|
|||||||
-- color codes: "\x1b[1;37;40m"
|
-- color codes: "\x1b[1;37;40m"
|
||||||
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m"
|
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m"
|
||||||
local lambda = "λ"
|
local lambda = "λ"
|
||||||
|
cwd = string.gsub(cwd, "%%", "{percent}")
|
||||||
cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd)
|
cmder_prompt = string.gsub(cmder_prompt, "{cwd}", cwd)
|
||||||
|
|
||||||
if env ~= nil then
|
if env ~= nil then
|
||||||
lambda = "("..env..") "..lambda
|
lambda = "("..env..") "..lambda
|
||||||
end
|
end
|
||||||
clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda)
|
clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", lambda)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function percent_prompt_filter()
|
||||||
|
clink.prompt.value = string.gsub(clink.prompt.value, "{percent}", "%%")
|
||||||
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Resolves closest directory location for specified directory.
|
-- Resolves closest directory location for specified directory.
|
||||||
-- Navigates subsequently up one level and tries to find specified directory
|
-- Navigates subsequently up one level and tries to find specified directory
|
||||||
@ -216,6 +222,21 @@ local function get_git_status()
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---
|
||||||
|
-- Gets the conflict status
|
||||||
|
-- @return {bool} indicating true for conflict, false for no conflicts
|
||||||
|
---
|
||||||
|
function get_git_conflict()
|
||||||
|
local file = io.popen("git diff --name-only --diff-filter=U 2>nul")
|
||||||
|
for line in file:lines() do
|
||||||
|
file:close()
|
||||||
|
return true;
|
||||||
|
end
|
||||||
|
file:close()
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Get the status of working dir
|
-- Get the status of working dir
|
||||||
-- @return {bool}
|
-- @return {bool}
|
||||||
@ -235,7 +256,7 @@ end
|
|||||||
-- Get the status of working dir
|
-- Get the status of working dir
|
||||||
-- @return {bool}
|
-- @return {bool}
|
||||||
---
|
---
|
||||||
function get_svn_status()
|
local function get_svn_status()
|
||||||
local file = io.popen("svn status -q")
|
local file = io.popen("svn status -q")
|
||||||
for line in file:lines() do
|
for line in file:lines() do
|
||||||
file:close()
|
file:close()
|
||||||
@ -251,7 +272,8 @@ local function git_prompt_filter()
|
|||||||
-- Colors for git status
|
-- Colors for git status
|
||||||
local colors = {
|
local colors = {
|
||||||
clean = "\x1b[1;37;40m",
|
clean = "\x1b[1;37;40m",
|
||||||
dirty = "\x1b[31;1m",
|
dirty = "\x1b[33;3m",
|
||||||
|
conflict = "\x1b[31;1m"
|
||||||
}
|
}
|
||||||
|
|
||||||
local git_dir = get_git_dir()
|
local git_dir = get_git_dir()
|
||||||
@ -261,12 +283,18 @@ local function git_prompt_filter()
|
|||||||
local color
|
local color
|
||||||
if branch then
|
if branch then
|
||||||
-- Has branch => therefore it is a git folder, now figure out status
|
-- Has branch => therefore it is a git folder, now figure out status
|
||||||
if get_git_status() then
|
local gitStatus = get_git_status()
|
||||||
|
local gitConflict = get_git_conflict()
|
||||||
|
|
||||||
|
color = colors.dirty
|
||||||
|
if gitStatus then
|
||||||
color = colors.clean
|
color = colors.clean
|
||||||
else
|
|
||||||
color = colors.dirty
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
if gitConflict then
|
||||||
|
color = colors.conflict
|
||||||
|
end
|
||||||
|
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..branch..")")
|
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..branch..")")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@ -279,31 +307,40 @@ end
|
|||||||
|
|
||||||
local function hg_prompt_filter()
|
local function hg_prompt_filter()
|
||||||
|
|
||||||
-- Colors for mercurial status
|
local result = ""
|
||||||
local colors = {
|
|
||||||
clean = "\x1b[1;37;40m",
|
|
||||||
dirty = "\x1b[31;1m",
|
|
||||||
}
|
|
||||||
|
|
||||||
if get_hg_dir() then
|
local hg_dir = get_hg_dir()
|
||||||
-- if we're inside of mercurial repo then try to detect current branch
|
if hg_dir then
|
||||||
local branch = get_hg_branch()
|
-- Colors for mercurial status
|
||||||
local color
|
local colors = {
|
||||||
if branch then
|
clean = "\x1b[1;37;40m",
|
||||||
-- Has branch => therefore it is a mercurial folder, now figure out status
|
dirty = "\x1b[31;1m",
|
||||||
if get_hg_status() then
|
}
|
||||||
color = colors.clean
|
|
||||||
else
|
-- 'hg id' gives us BOTH the branch name AND an indicator that there
|
||||||
color = colors.dirty
|
-- are uncommitted changes, in one fast(er) call
|
||||||
|
local pipe = io.popen("hg id 2>&1")
|
||||||
|
local output = pipe:read('*all')
|
||||||
|
local rc = { pipe:close() }
|
||||||
|
|
||||||
|
if output ~= nil and
|
||||||
|
string.sub(output,1,7) ~= "abort: " and -- not an HG working copy
|
||||||
|
string.sub(output,1,12) ~= "000000000000" and -- empty wc (needs update)
|
||||||
|
(not string.find(output, "is not recognized")) then -- 'hg' not in path
|
||||||
|
local color = colors.clean
|
||||||
|
-- split elements on space delimiter
|
||||||
|
local items = {}
|
||||||
|
for i in string.gmatch(output, "%S+") do
|
||||||
|
table.insert(items, i)
|
||||||
end
|
end
|
||||||
|
-- if the repo hash ends with '+', the wc has uncommitted changes
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", color.."("..branch..")")
|
if string.sub(items[1], -1, -1) == "+" then color = colors.dirty end
|
||||||
return false
|
-- substitute the branch in directly -- already WITH parentheses. :)
|
||||||
|
result = color .. items[2] -- string.sub(items[2], 1, string.len(items[2]) - 1)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- No mercurial present or not in mercurial file
|
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", result)
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", "")
|
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -340,6 +377,7 @@ clink.prompt.register_filter(set_prompt_filter, 1)
|
|||||||
clink.prompt.register_filter(hg_prompt_filter, 50)
|
clink.prompt.register_filter(hg_prompt_filter, 50)
|
||||||
clink.prompt.register_filter(git_prompt_filter, 50)
|
clink.prompt.register_filter(git_prompt_filter, 50)
|
||||||
clink.prompt.register_filter(svn_prompt_filter, 50)
|
clink.prompt.register_filter(svn_prompt_filter, 50)
|
||||||
|
clink.prompt.register_filter(percent_prompt_filter, 51)
|
||||||
|
|
||||||
local completions_dir = clink.get_env('CMDER_ROOT')..'/vendor/clink-completions/'
|
local completions_dir = clink.get_env('CMDER_ROOT')..'/vendor/clink-completions/'
|
||||||
for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
||||||
@ -351,3 +389,13 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
|||||||
dofile(filename)
|
dofile(filename)
|
||||||
end
|
end
|
||||||
end
|
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
|
||||||
|
end
|
||||||
|
35
vendor/cmder.sh
vendored
35
vendor/cmder.sh
vendored
@ -1,6 +1,6 @@
|
|||||||
# DO NOT EDIT THIS FILE IT WILL BE OVERWRITTEN ON UPDATE
|
# DO NOT EDIT THIS FILE IT WILL BE OVERWRITTEN ON UPDATE
|
||||||
#
|
#
|
||||||
# Add portable user customizations ${CMDER_ROOT}/config/user-profile.sh,
|
# Add portable user customizations ${CMDER_ROOT}/config/user_profile.sh,
|
||||||
# these customizations will follow Cmder if $CMDER_ROOT is copied
|
# these customizations will follow Cmder if $CMDER_ROOT is copied
|
||||||
# to another machine.
|
# to another machine.
|
||||||
#
|
#
|
||||||
@ -45,7 +45,7 @@ if [[ ! "$PATH" =~ "${GIT_INSTALL_ROOT}/bin:" ]] ; then
|
|||||||
PATH=${GIT_INSTALL_ROOT}/bin:$PATH
|
PATH=${GIT_INSTALL_ROOT}/bin:$PATH
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PATH=${CMDER_ROOT}/bin:$PATH:${CMDER_ROOT}
|
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}
|
||||||
|
|
||||||
export PATH
|
export PATH
|
||||||
|
|
||||||
@ -63,21 +63,34 @@ if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
|
|||||||
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
initialConfig="${CMDER_ROOT}/config/user-profile.sh"
|
|
||||||
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency.
|
||||||
. "${CMDER_ROOT}/config/user-profile.sh"
|
if [ -f "$CMDER_ROOT/config/user-profile.sh" ] ; then
|
||||||
|
mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
CmderUserProfilePath="${CMDER_ROOT}/config/user_profile.sh"
|
||||||
|
if [ -f "${CMDER_ROOT}/config/user_profile.sh" ] ; then
|
||||||
|
. "${CMDER_ROOT}/config/user_profile.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
||||||
initialConfig="${CMDER_USER_CONFIG}/user-profile.sh"
|
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency.
|
||||||
if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then
|
if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ] ; then
|
||||||
. "${CMDER_USER_CONFIG}/user-profile.sh"
|
mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
|
||||||
|
fi
|
||||||
|
|
||||||
|
export PATH=${CMDER_USER_CONFIG}/bin:$PATH
|
||||||
|
|
||||||
|
CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh"
|
||||||
|
if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then
|
||||||
|
. "${CMDER_USER_CONFIG}/user_profile.sh"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ ! -f "${initialConfig}" ] ; then
|
if [ ! -f "${CmderUserProfilePath}" ] ; then
|
||||||
echo Creating user startup file: "${initialConfig}"
|
echo Creating user startup file: "${CmderUserProfilePath}"
|
||||||
cat <<-eof >"${initialConfig}"
|
cat <<-eof >"${CmderUserProfilePath}"
|
||||||
# use this file to run your own startup commands for msys2 bash'
|
# use this file to run your own startup commands for msys2 bash'
|
||||||
|
|
||||||
# To add a new vendor to the path, do something like:
|
# To add a new vendor to the path, do something like:
|
||||||
|
62
vendor/cmder_exinit
vendored
62
vendor/cmder_exinit
vendored
@ -1,4 +1,4 @@
|
|||||||
# Copy this file to your non integrated *nix-like environment,
|
# Copy this file to your non integrated *nix-like environment,
|
||||||
# Cygwin/MSys2/Git for Windows SDK, installs '/etc/profile.d/'
|
# Cygwin/MSys2/Git for Windows SDK, installs '/etc/profile.d/'
|
||||||
# folder to integrate the externally installed Unix like environment
|
# folder to integrate the externally installed Unix like environment
|
||||||
# into Cmder so it has access to settings stored in Cmder/config
|
# into Cmder so it has access to settings stored in Cmder/config
|
||||||
@ -15,7 +15,7 @@
|
|||||||
# These customizations will follow Cmder if $CMDER_ROOT is copied
|
# These customizations will follow Cmder if $CMDER_ROOT is copied
|
||||||
# to another machine.
|
# to another machine.
|
||||||
#
|
#
|
||||||
# Add system specific users customizations to $HOME/.bashrc, these
|
# Add system specific users customizations to $HOME/.bashrc, these
|
||||||
# customizations will not follow Cmder to another machine.
|
# customizations will not follow Cmder to another machine.
|
||||||
|
|
||||||
# # Uncomment and edit the CMDER_ROOT line to use Cmder/config even when launched
|
# # Uncomment and edit the CMDER_ROOT line to use Cmder/config even when launched
|
||||||
@ -58,45 +58,57 @@ fi
|
|||||||
if [ ! "$CMDER_ROOT" = "" ] ; then
|
if [ ! "$CMDER_ROOT" = "" ] ; then
|
||||||
# Remove any trailing '/'
|
# Remove any trailing '/'
|
||||||
CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')
|
CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')
|
||||||
|
|
||||||
echo "Using \"CMDER_ROOT\" at \"${CMDER_ROOT}\"."
|
echo "Using \"CMDER_ROOT\" at \"${CMDER_ROOT}\"."
|
||||||
|
|
||||||
export CMDER_ROOT
|
export CMDER_ROOT
|
||||||
|
|
||||||
PATH=${CMDER_ROOT}/bin:$PATH:${CMDER_ROOT}
|
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}
|
||||||
|
|
||||||
export PATH
|
export PATH
|
||||||
|
|
||||||
# Drop *.sh or *.zsh files into "${CMDER_ROOT}\config\profile.d"
|
# Drop *.sh or *.zsh files into "${CMDER_ROOT}\config\profile.d"
|
||||||
# to source them at startup.
|
# to source them at startup.
|
||||||
if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
if [ ! -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||||
mkdir -p "${CMDER_ROOT}/config/profile.d"
|
mkdir -p "${CMDER_ROOT}/config/profile.d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
if [ -d "${CMDER_ROOT}/config/profile.d" ] ; then
|
||||||
runProfiled "${CMDER_ROOT}/config/profile.d"
|
runProfiled "${CMDER_ROOT}/config/profile.d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
|
if [ -d "${CMDER_USER_CONFIG}/profile.d" ] ; then
|
||||||
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
runProfiled "${CMDER_USER_CONFIG}/profile.d"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
||||||
if [ -f "${CMDER_ROOT}/config/user-profile.sh" ] ; then
|
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency.
|
||||||
. "${CMDER_ROOT}/config/user-profile.sh"
|
if [ -f "$CMDER_ROOT/config/user-profile.sh" ] ; then
|
||||||
|
mv "$CMDER_ROOT/config/user-profile.sh" "$CMDER_ROOT/config/user_profile.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [ -f "${CMDER_USER_CONFIG}/user-profile.sh" ] ; then
|
CmderUserProfilePath="${CMDER_ROOT}/config/user_profile.sh"
|
||||||
. "${CMDER_USER_CONFIG}/user-profile.sh"
|
if [ -f "${CMDER_ROOT}/config/user_profile.sh" ] ; then
|
||||||
else
|
. "${CMDER_ROOT}/config/user_profile.sh"
|
||||||
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
fi
|
||||||
initialProfile="${CMDER_USER_CONFIG}/user-profile.sh"
|
|
||||||
else
|
if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
||||||
initialProfile="${CMDER_ROOT}/config/user-profile.sh"
|
# Renaming to "config\user_profile.sh" to "user_profile.sh" for consistency.
|
||||||
fi
|
if [ -f "$CMDER_USER_CONFIG/user-profile.sh" ] ; then
|
||||||
|
mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
|
||||||
echo Creating user startup file: "${initialProfile}"
|
fi
|
||||||
cat <<-eof >"${initialProfile}"
|
|
||||||
|
export PATH=${CMDER_USER_CONFIG}/bin:$PATH
|
||||||
|
|
||||||
|
CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh"
|
||||||
|
if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then
|
||||||
|
. "${CMDER_USER_CONFIG}/user_profile.sh"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ ! -f "${CmderUserProfilePath}" ] ; then
|
||||||
|
echo Creating user startup file: "${CmderUserProfilePath}"
|
||||||
|
cat <<-eof >"${CmderUserProfilePath}"
|
||||||
# use this file to run your own startup commands for msys2 bash'
|
# use this file to run your own startup commands for msys2 bash'
|
||||||
|
|
||||||
# To add a new vendor to the path, do something like:
|
# To add a new vendor to the path, do something like:
|
||||||
|
234
vendor/init.bat
vendored
234
vendor/init.bat
vendored
@ -1,15 +1,20 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
set cmder_init_start=%time%
|
||||||
|
|
||||||
:: Init Script for cmd.exe
|
:: Init Script for cmd.exe
|
||||||
:: Created as part of cmder project
|
:: Created as part of cmder project
|
||||||
|
|
||||||
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||||
:: !!! Use "%CMDER_ROOT%\config\user-profile.cmd" to add your own startup commands
|
:: !!! Use "%CMDER_ROOT%\config\user_profile.cmd" to add your own startup commands
|
||||||
|
|
||||||
:: Use /v command line arg or set to > 0 for verbose output to aid in debugging.
|
:: Use /v command line arg or set to > 0 for verbose output to aid in debugging.
|
||||||
set verbose-output=0
|
set verbose_output=0
|
||||||
set debug-output=0
|
set debug_output=0
|
||||||
|
set time_init=0
|
||||||
|
set fast_init=0
|
||||||
set max_depth=1
|
set max_depth=1
|
||||||
|
set "CMDER_USER_FLAGS= "
|
||||||
|
|
||||||
:: Find root dir
|
:: Find root dir
|
||||||
if not defined CMDER_ROOT (
|
if not defined CMDER_ROOT (
|
||||||
@ -27,6 +32,7 @@ if not defined CMDER_ROOT (
|
|||||||
:: Remove trailing '\' from %CMDER_ROOT%
|
:: Remove trailing '\' from %CMDER_ROOT%
|
||||||
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
||||||
|
|
||||||
|
call "%cmder_root%\vendor\bin\cexec.cmd" /setpath
|
||||||
call "%cmder_root%\vendor\lib\lib_base"
|
call "%cmder_root%\vendor\lib\lib_base"
|
||||||
call "%cmder_root%\vendor\lib\lib_path"
|
call "%cmder_root%\vendor\lib\lib_path"
|
||||||
call "%cmder_root%\vendor\lib\lib_console"
|
call "%cmder_root%\vendor\lib\lib_console"
|
||||||
@ -36,10 +42,14 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
|||||||
:var_loop
|
:var_loop
|
||||||
if "%~1" == "" (
|
if "%~1" == "" (
|
||||||
goto :start
|
goto :start
|
||||||
|
) else if /i "%1" == "/f" (
|
||||||
|
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
|
set verbose_output=1
|
||||||
) else if /i "%1"=="/d" (
|
) else if /i "%1"=="/d" (
|
||||||
set debug-output=1
|
set debug_output=1
|
||||||
) else if /i "%1" == "/max_depth" (
|
) else if /i "%1" == "/max_depth" (
|
||||||
if "%~2" geq "1" if "%~2" leq "5" (
|
if "%~2" geq "1" if "%~2" leq "5" (
|
||||||
set "max_depth=%~2"
|
set "max_depth=%~2"
|
||||||
@ -58,7 +68,7 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
|||||||
)
|
)
|
||||||
) else if /i "%1" == "/user_aliases" (
|
) else if /i "%1" == "/user_aliases" (
|
||||||
if exist "%~2" (
|
if exist "%~2" (
|
||||||
set "user-aliases=%~2"
|
set "user_aliases=%~2"
|
||||||
shift
|
shift
|
||||||
)
|
)
|
||||||
) else if /i "%1" == "/git_install_root" (
|
) else if /i "%1" == "/git_install_root" (
|
||||||
@ -80,16 +90,20 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
|||||||
) else if /i "%1" == "/svn_ssh" (
|
) else if /i "%1" == "/svn_ssh" (
|
||||||
set SVN_SSH=%2
|
set SVN_SSH=%2
|
||||||
shift
|
shift
|
||||||
|
) else (
|
||||||
|
set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%"
|
||||||
)
|
)
|
||||||
shift
|
shift
|
||||||
goto var_loop
|
goto var_loop
|
||||||
|
|
||||||
:start
|
:start
|
||||||
%lib_console% debug-output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%"
|
:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES
|
||||||
%lib_console% debug-output init.bat "Env Var - debug-output=%debug-output%"
|
%lib_base% cmder_shell
|
||||||
|
%lib_console% debug_output init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%"
|
||||||
|
%lib_console% debug_output init.bat "Env Var - debug_output=%debug_output%"
|
||||||
|
|
||||||
if defined CMDER_USER_CONFIG (
|
if defined CMDER_USER_CONFIG (
|
||||||
%lib_console% debug-output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!"
|
%lib_console% debug_output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!"
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Pick right version of clink
|
:: Pick right version of clink
|
||||||
@ -101,21 +115,25 @@ if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
|||||||
set architecture_bits=64
|
set architecture_bits=64
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Tell the user about the clink config files...
|
if "%CMDER_CLINK%" == "1" (
|
||||||
if defined "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\settings" (
|
%lib_console% verbose_output "Injecting Clink!"
|
||||||
echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings"
|
|
||||||
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.\
|
|
||||||
|
|
||||||
} else if not exist "%CMDER_ROOT%\config\settings" (
|
:: Run clink
|
||||||
echo Generating clink initial settings in "%CMDER_ROOT%\config\settings"
|
if defined CMDER_USER_CONFIG (
|
||||||
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
if not exist "%CMDER_USER_CONFIG%\settings" (
|
||||||
)
|
echo Generating clink initial settings in "%CMDER_USER_CONFIG%\settings"
|
||||||
|
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.\
|
||||||
:: Run clink
|
)
|
||||||
if defined CMDER_USER_CONFIG (
|
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
||||||
) else (
|
) else (
|
||||||
|
if not exist "%CMDER_ROOT%\config\settings" (
|
||||||
|
echo Generating clink initial settings in "%CMDER_ROOT%\config\settings"
|
||||||
|
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
||||||
|
)
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
%lib_console% verbose_output "WARNING: Incompatible 'ComSpec/Shell' Detetected Skipping Clink Injection!"
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Prepare for git-for-windows
|
:: Prepare for git-for-windows
|
||||||
@ -131,20 +149,34 @@ if not defined TERM set TERM=cygwin
|
|||||||
:: also check that we have a recent enough version of git by examining the version string
|
:: also check that we have a recent enough version of git by examining the version string
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if defined GIT_INSTALL_ROOT (
|
if defined GIT_INSTALL_ROOT (
|
||||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :FOUND_GIT)
|
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
|
||||||
|
) else if "%fast_init%" == "1" (
|
||||||
|
if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" (
|
||||||
|
%lib_console% debug_output "Skipping Git Auto-Detect!"
|
||||||
|
goto :VENDORED_GIT
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
%lib_console% debug-output init.bat "Looking for Git install root..."
|
%lib_console% debug_output 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"
|
%lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd"
|
||||||
%lib_git% validate_version VENDORED !GIT_VERSION_VENDORED!
|
%lib_git% validate_version VENDORED %GIT_VERSION_VENDORED%
|
||||||
|
|
||||||
:: check if git is in path...
|
:: check if git is in path...
|
||||||
for /F "delims=" %%F in ('where git.exe 2^>nul') do (
|
for /F "delims=" %%F in ('where git.exe 2^>nul') do (
|
||||||
:: get the absolute path to the user provided git binary
|
:: get the absolute path to the user provided git binary
|
||||||
pushd %%~dpF
|
pushd %%~dpF
|
||||||
set "test_dir=!CD!"
|
:: check if there's shim - and if yes follow the path
|
||||||
|
if exist git.shim (
|
||||||
|
for /F "tokens=2 delims== " %%I in (git.shim) do (
|
||||||
|
pushd %%~dpI
|
||||||
|
set "test_dir=!CD!"
|
||||||
|
popd
|
||||||
|
)
|
||||||
|
) else (
|
||||||
|
set "test_dir=!CD!"
|
||||||
|
)
|
||||||
popd
|
popd
|
||||||
|
|
||||||
:: get the version information for the user provided git binary
|
:: get the version information for the user provided git binary
|
||||||
@ -165,49 +197,61 @@ for /F "delims=" %%F in ('where git.exe 2^>nul') do (
|
|||||||
set test_dir=
|
set test_dir=
|
||||||
goto :FOUND_GIT
|
goto :FOUND_GIT
|
||||||
) else (
|
) else (
|
||||||
call :verbose-output Found old !GIT_VERSION_USER! in "!test_dir!", but not using...
|
call :verbose_output Found old !GIT_VERSION_USER! in "!test_dir!", but not using...
|
||||||
set test_dir=
|
set test_dir=
|
||||||
)
|
)
|
||||||
) else (
|
) else (
|
||||||
|
|
||||||
:: if the user provided git executable is not found
|
:: if the user provided git executable is not found
|
||||||
if !errorlevel! equ -255 (
|
if !errorlevel! equ -255 (
|
||||||
call :verbose-output No git at "!git_executable!" found.
|
call :verbose_output No git at "!git_executable!" found.
|
||||||
set test_dir=
|
set test_dir=
|
||||||
)
|
)
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
)
|
)
|
||||||
|
|
||||||
:: our last hope: our own git...
|
:: our last hope: our own git...
|
||||||
:VENDORED_GIT
|
:VENDORED_GIT
|
||||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||||
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
||||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd"
|
%lib_console% debug_output "Using vendored Git from '!GIT_INSTALL_ROOT!..."
|
||||||
|
goto :CONFIGURE_GIT
|
||||||
) else (
|
) else (
|
||||||
goto :NO_GIT
|
goto :NO_GIT
|
||||||
)
|
)
|
||||||
|
|
||||||
|
:SPECIFIED_GIT
|
||||||
|
%lib_console% debug_output "Using /GIT_INSTALL_ROOT from '%GIT_INSTALL_ROOT%..."
|
||||||
|
goto :CONFIGURE_GIT
|
||||||
|
|
||||||
:FOUND_GIT
|
:FOUND_GIT
|
||||||
|
%lib_console% debug_output "Using found Git from '%GIT_INSTALL_ROOT%..."
|
||||||
|
goto :CONFIGURE_GIT
|
||||||
|
|
||||||
|
:CONFIGURE_GIT
|
||||||
:: Add git to the path
|
:: Add git to the path
|
||||||
if defined GIT_INSTALL_ROOT (
|
if defined GIT_INSTALL_ROOT (
|
||||||
rem add the unix commands at the end to not shadow windows commands like more
|
rem add the unix commands at the end to not shadow windows commands like more
|
||||||
if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" append
|
if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" append
|
||||||
if exist "!GIT_INSTALL_ROOT!\mingw32" (
|
if exist "!GIT_INSTALL_ROOT!\mingw32" (
|
||||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32" append
|
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" append
|
||||||
) else if exist "!GIT_INSTALL_ROOT!\mingw64" (
|
) else if exist "!GIT_INSTALL_ROOT!\mingw64" (
|
||||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64" append
|
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" append
|
||||||
)
|
)
|
||||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" append
|
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" append
|
||||||
|
|
||||||
:: define SVN_SSH so we can use git svn with ssh svn repositories
|
:: 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"
|
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
||||||
|
|
||||||
|
for /F "delims=" %%F in ('env /usr/bin/locale -uU 2') do (
|
||||||
|
set "LANG=%%F"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
endlocal & set "PATH=%PATH%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
endlocal & set "PATH=%PATH%" & set "LANG=%LANG%" & set "SVN_SSH=%SVN_SSH%" & set "GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
||||||
%lib_console% debug-output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
%lib_console% debug_output init.bat "Env Var - GIT_INSTALL_ROOT=%GIT_INSTALL_ROOT%"
|
||||||
%lib_console% debug-output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'"
|
%lib_console% debug_output init.bat "Found Git in: '%GIT_INSTALL_ROOT%'"
|
||||||
goto :PATH_ENHANCE
|
goto :PATH_ENHANCE
|
||||||
|
|
||||||
:NO_GIT
|
:NO_GIT
|
||||||
@ -215,6 +259,7 @@ goto :PATH_ENHANCE
|
|||||||
endlocal
|
endlocal
|
||||||
|
|
||||||
:PATH_ENHANCE
|
:PATH_ENHANCE
|
||||||
|
%lib_path% enhance_path "%CMDER_ROOT%\vendor\bin"
|
||||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth%
|
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth%
|
||||||
if defined CMDER_USER_BIN (
|
if defined CMDER_USER_BIN (
|
||||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth%
|
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth%
|
||||||
@ -232,59 +277,63 @@ if defined CMDER_USER_CONFIG (
|
|||||||
:: scripts run above by setting the 'aliases' env variable.
|
:: scripts run above by setting the 'aliases' env variable.
|
||||||
::
|
::
|
||||||
:: Note: If overriding default aliases store file the aliases
|
:: Note: If overriding default aliases store file the aliases
|
||||||
:: must also be self executing, see '.\user-aliases.cmd.example',
|
:: must also be self executing, see '.\user_aliases.cmd.example',
|
||||||
:: and be in profile.d folder.
|
:: and be in profile.d folder.
|
||||||
if not defined user-aliases (
|
if not defined user_aliases (
|
||||||
if defined CMDER_USER_CONFIG (
|
if defined CMDER_USER_CONFIG (
|
||||||
set "user-aliases=%CMDER_USER_CONFIG%\user-aliases.cmd"
|
set "user_aliases=%CMDER_USER_CONFIG%\user_aliases.cmd"
|
||||||
) else (
|
) else (
|
||||||
set "user-aliases=%CMDER_ROOT%\config\user-aliases.cmd"
|
set "user_aliases=%CMDER_ROOT%\config\user_aliases.cmd"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: The aliases environment variable is used by alias.bat to id
|
if "%CMDER_ALIASES%" == "1" (
|
||||||
:: the default file to store new aliases in.
|
REM The aliases environment variable is used by alias.bat to id
|
||||||
if not defined aliases (
|
REM the default file to store new aliases in.
|
||||||
set "aliases=%user-aliases%"
|
if not defined aliases (
|
||||||
)
|
set "aliases=%user_aliases%"
|
||||||
|
)
|
||||||
|
|
||||||
:: Make sure we have a self-extracting user-aliases.cmd file
|
REM Make sure we have a self-extracting user_aliases.cmd file
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if not exist "%user-aliases%" (
|
if not exist "%user_aliases%" (
|
||||||
echo Creating initial user-aliases store in "%user-aliases%"...
|
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.example" "%user_aliases%"
|
||||||
) else (
|
) else (
|
||||||
type "%user-aliases%" | findstr /i ";= Add aliases below here" >nul
|
type "%user_aliases%" | findstr /i ";= Add aliases below here" >nul
|
||||||
if "!errorlevel!" == "1" (
|
if "!errorlevel!" == "1" (
|
||||||
echo Creating initial user-aliases store in "%user-aliases%"...
|
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||||
if defined CMDER_USER_CONFIG (
|
if defined CMDER_USER_CONFIG (
|
||||||
copy "%user-aliases%" "%user-aliases%.old_format"
|
copy "%user_aliases%" "%user_aliases%.old_format"
|
||||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.example" "%user_aliases%"
|
||||||
) else (
|
) else (
|
||||||
copy "%user-aliases%" "%user-aliases%.old_format"
|
copy "%user_aliases%" "%user_aliases%.old_format"
|
||||||
copy "%CMDER_ROOT%\vendor\user-aliases.cmd.example" "%user-aliases%"
|
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.example" "%user_aliases%"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Update old 'user-aliases' to new self executing 'user-aliases.cmd'
|
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd'
|
||||||
if exist "%CMDER_ROOT%\config\aliases" (
|
if exist "%CMDER_ROOT%\config\aliases" (
|
||||||
echo Updating old "%CMDER_ROOT%\config\aliases" to new format...
|
echo Updating old "%CMDER_ROOT%\config\aliases" to new format...
|
||||||
type "%CMDER_ROOT%\config\aliases" >> "%user-aliases%" && del "%CMDER_ROOT%\config\aliases"
|
type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%"
|
||||||
) else if exist "%user-aliases%.old_format" (
|
del "%CMDER_ROOT%\config\aliases"
|
||||||
echo Updating old "%user-aliases%" to new format...
|
) else if exist "%user_aliases%.old_format" (
|
||||||
type "%user-aliases%.old_format" >> "%user-aliases%" && del "%user-aliases%.old_format"
|
echo Updating old "%user_aliases%" to new format...
|
||||||
|
type "%user_aliases%.old_format" >> "%user_aliases%"
|
||||||
|
del "%user_aliases%.old_format"
|
||||||
|
)
|
||||||
|
endlocal
|
||||||
)
|
)
|
||||||
endlocal
|
|
||||||
|
|
||||||
:: Add aliases to the environment
|
:: Add aliases to the environment
|
||||||
call "%user-aliases%"
|
call "%user_aliases%"
|
||||||
|
|
||||||
:: See vendor\git-for-windows\README.portable for why we do this
|
:: See vendor\git-for-windows\README.portable for why we do this
|
||||||
:: Basically we need to execute this post-install.bat because we are
|
:: Basically we need to execute this post-install.bat because we are
|
||||||
:: manually extracting the archive rather than executing the 7z sfx
|
:: manually extracting the archive rather than executing the 7z sfx
|
||||||
if exist "%GIT_INSTALL_ROOT%\post-install.bat" (
|
if exist "%GIT_INSTALL_ROOT%\post-install.bat" (
|
||||||
%lib_console% verbose-output "Running Git for Windows one time Post Install...."
|
%lib_console% verbose_output "Running Git for Windows one time Post Install...."
|
||||||
pushd "%GIT_INSTALL_ROOT%\"
|
pushd "%GIT_INSTALL_ROOT%\"
|
||||||
"%GIT_INSTALL_ROOT%\git-bash.exe" --no-needs-console --hide --no-cd --command=post-install.bat
|
"%GIT_INSTALL_ROOT%\git-bash.exe" --no-needs-console --hide --no-cd --command=post-install.bat
|
||||||
popd
|
popd
|
||||||
@ -292,19 +341,19 @@ if exist "%GIT_INSTALL_ROOT%\post-install.bat" (
|
|||||||
|
|
||||||
:: Set home path
|
:: Set home path
|
||||||
if not defined HOME set "HOME=%USERPROFILE%"
|
if not defined HOME set "HOME=%USERPROFILE%"
|
||||||
%lib_console% debug-output init.bat "Env Var - HOME=%HOME%"
|
%lib_console% debug_output init.bat "Env Var - HOME=%HOME%"
|
||||||
|
|
||||||
set "initialConfig=%CMDER_ROOT%\config\user-profile.cmd"
|
set "initialConfig=%CMDER_ROOT%\config\user_profile.cmd"
|
||||||
if exist "%CMDER_ROOT%\config\user-profile.cmd" (
|
if exist "%CMDER_ROOT%\config\user_profile.cmd" (
|
||||||
REM Create this file and place your own command in there
|
REM Create this file and place your own command in there
|
||||||
call "%CMDER_ROOT%\config\user-profile.cmd"
|
call "%CMDER_ROOT%\config\user_profile.cmd"
|
||||||
)
|
)
|
||||||
|
|
||||||
if defined CMDER_USER_CONFIG (
|
if defined CMDER_USER_CONFIG (
|
||||||
set "initialConfig=%CMDER_USER_CONFIG%\user-profile.cmd"
|
set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||||
if exist "%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
|
REM Create this file and place your own command in there
|
||||||
call "%CMDER_USER_CONFIG%\user-profile.cmd"
|
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -312,21 +361,46 @@ if not exist "%initialConfig%" (
|
|||||||
echo Creating user startup file: "%initialConfig%"
|
echo Creating user startup file: "%initialConfig%"
|
||||||
(
|
(
|
||||||
echo :: use this file to run your own startup commands
|
echo :: use this file to run your own startup commands
|
||||||
echo :: use in front of the command to prevent printing the command
|
echo :: use in front of the command to prevent printing the command
|
||||||
echo.
|
echo.
|
||||||
echo :: uncomment this to have the ssh agent load when cmder starts
|
echo :: uncomment this to have the ssh agent load when cmder starts
|
||||||
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd"
|
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-agent.cmd"
|
||||||
echo.
|
echo.
|
||||||
echo :: uncomment this next two lines to use pageant as the ssh authentication agent
|
echo :: uncomment the next two lines to use pageant as the ssh authentication agent
|
||||||
echo :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock
|
echo :: SET SSH_AUTH_SOCK=/tmp/.ssh-pageant-auth-sock
|
||||||
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-pageant.cmd"
|
echo :: call "%%GIT_INSTALL_ROOT%%/cmd/start-ssh-pageant.cmd"
|
||||||
echo.
|
echo.
|
||||||
echo :: you can add your plugins to the cmder path like so
|
echo :: you can add your plugins to the cmder path like so
|
||||||
echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%"
|
echo :: set "PATH=%%CMDER_ROOT%%\vendor\whatever;%%PATH%%"
|
||||||
echo.
|
echo.
|
||||||
|
echo :: arguments in this batch are passed from init.bat, you can quickly parse them like so:
|
||||||
|
echo :: more useage can be seen by typing "cexec /?"
|
||||||
|
echo.
|
||||||
|
echo :: %%ccall%% "/customOption" "command/program"
|
||||||
|
echo.
|
||||||
echo @echo off
|
echo @echo off
|
||||||
) >"%initialConfig%"
|
) >"%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'.
|
||||||
|
)
|
||||||
|
|
||||||
set initialConfig=
|
set initialConfig=
|
||||||
|
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%
|
||||||
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
38
vendor/lib/lib_base.cmd
vendored
38
vendor/lib/lib_base.cmd
vendored
@ -3,7 +3,7 @@
|
|||||||
set lib_base=call "%~dp0lib_base.cmd"
|
set lib_base=call "%~dp0lib_base.cmd"
|
||||||
|
|
||||||
if "%~1" == "/h" (
|
if "%~1" == "/h" (
|
||||||
%lib_base% help "%0"
|
%lib_base% help "%~0"
|
||||||
) else if "%1" neq "" (
|
) else if "%1" neq "" (
|
||||||
call :%*
|
call :%*
|
||||||
)
|
)
|
||||||
@ -16,7 +16,7 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
:::include:
|
:::include:
|
||||||
:::.
|
:::.
|
||||||
::: call "$0"
|
::: call "lib_base.cmd"
|
||||||
:::.
|
:::.
|
||||||
:::usage:
|
:::usage:
|
||||||
:::.
|
:::.
|
||||||
@ -27,12 +27,9 @@ exit /b
|
|||||||
::: file <in> full path to file containing lib_routines to display
|
::: file <in> full path to file containing lib_routines to display
|
||||||
:::.
|
:::.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
for /f "tokens=* delims=:" %%a in ('type "%~1" ^| findstr /i /r "^:::"') do (
|
for /f "tokens=* delims=:" %%a in ('type "%~1" ^| findstr /i /r "^:::"') do (
|
||||||
rem echo a="%%a"
|
rem echo a="%%a"
|
||||||
|
|
||||||
if "%%a"==" " (
|
|
||||||
echo.
|
|
||||||
if "%%a"=="." (
|
if "%%a"=="." (
|
||||||
echo.
|
echo.
|
||||||
) else if /i "%%a" == "usage" (
|
) else if /i "%%a" == "usage" (
|
||||||
@ -46,3 +43,34 @@ exit /b
|
|||||||
|
|
||||||
pause
|
pause
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
:cmder_shell
|
||||||
|
:::===============================================================================
|
||||||
|
:::show_subs - shows all sub routines in a .bat/.cmd file with documentation
|
||||||
|
:::.
|
||||||
|
:::include:
|
||||||
|
:::.
|
||||||
|
::: call "lib_base.cmd"
|
||||||
|
:::.
|
||||||
|
:::usage:
|
||||||
|
:::.
|
||||||
|
::: %lib_base% cmder_shell
|
||||||
|
:::.
|
||||||
|
:::options:
|
||||||
|
:::.
|
||||||
|
::: file <in> full path to file containing lib_routines to display
|
||||||
|
:::.
|
||||||
|
:::-------------------------------------------------------------------------------
|
||||||
|
echo %comspec% | find /i "\cmd.exe" > nul && set "CMDER_SHELL=cmd"
|
||||||
|
echo %comspec% | find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc"
|
||||||
|
echo %comspec% | find /i "\tccle" > nul && set "CMDER_SHELL=tccle"
|
||||||
|
|
||||||
|
set CMDER_CLINK=1
|
||||||
|
if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0
|
||||||
|
if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0
|
||||||
|
|
||||||
|
set CMDER_ALIASES=1
|
||||||
|
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
|
||||||
|
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
|
||||||
|
|
||||||
|
exit /b
|
||||||
|
24
vendor/lib/lib_console.cmd
vendored
24
vendor/lib/lib_console.cmd
vendored
@ -1,44 +1,44 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
rem set args=%*
|
if "%fast_init%" == "1" exit /b
|
||||||
|
|
||||||
call "%~dp0lib_base.cmd"
|
call "%~dp0lib_base.cmd"
|
||||||
set lib_console=call "%~dp0lib_console.cmd"
|
set lib_console=call "%~dp0lib_console.cmd"
|
||||||
|
|
||||||
if "%~1" == "/h" (
|
if "%~1" == "/h" (
|
||||||
%lib_base% help "%0"
|
%lib_base% help "%~0"
|
||||||
) else if "%1" neq "" (
|
) else if "%1" neq "" (
|
||||||
call :%*
|
call :%*
|
||||||
)
|
)
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:debug-output
|
:debug_output
|
||||||
:::===============================================================================
|
:::===============================================================================
|
||||||
:::debug-output - Output a debug message to the console.
|
:::debug_output - Output a debug message to the console.
|
||||||
:::.
|
:::.
|
||||||
:::include:
|
:::include:
|
||||||
:::.
|
:::.
|
||||||
::: call "$0"
|
::: call "lib_console.cmd"
|
||||||
:::.
|
:::.
|
||||||
:::usage:
|
:::usage:
|
||||||
:::.
|
:::.
|
||||||
::: %lib_console% debug-output [caller] [message]
|
::: %lib_console% debug_output [caller] [message]
|
||||||
:::.
|
:::.
|
||||||
:::required:
|
:::required:
|
||||||
:::.
|
:::.
|
||||||
::: [caller] <in> Script/sub routine name calling debug-output
|
::: [caller] <in> Script/sub routine name calling debug_output
|
||||||
:::.
|
:::.
|
||||||
::: [message] <in> Message text to display.
|
::: [message] <in> Message text to display.
|
||||||
:::.
|
:::.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
if %debug-output% gtr 0 echo DEBUG(%~1): %~2 & echo.
|
if %debug_output% gtr 0 echo DEBUG(%~1): %~2 & echo.
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:verbose-output
|
:verbose_output
|
||||||
:::===============================================================================
|
:::===============================================================================
|
||||||
:::verbose-output - Output a debug message to the console.
|
:::verbose_output - Output a debug message to the console.
|
||||||
:::.
|
:::.
|
||||||
:::include:
|
:::include:
|
||||||
:::.
|
:::.
|
||||||
@ -46,7 +46,7 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
:::usage:
|
:::usage:
|
||||||
:::.
|
:::.
|
||||||
::: %lib_console% verbose-output "[message]"
|
::: %lib_console% verbose_output "[message]"
|
||||||
:::.
|
:::.
|
||||||
:::required:
|
:::required:
|
||||||
:::.
|
:::.
|
||||||
@ -54,7 +54,7 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
if %verbose-output% gtr 0 echo %~1
|
if %verbose_output% gtr 0 echo %~1
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:show_error
|
:show_error
|
||||||
|
26
vendor/lib/lib_git.cmd
vendored
26
vendor/lib/lib_git.cmd
vendored
@ -1,13 +1,11 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
call "%~dp0lib_base.cmd"
|
call "%~dp0lib_base.cmd"
|
||||||
call "%%~dp0lib_console.cmd"
|
call "%%~dp0lib_console.cmd"
|
||||||
set lib_git=call "%~dp0lib_git.cmd"
|
set lib_git=call "%~dp0lib_git.cmd"
|
||||||
|
|
||||||
|
|
||||||
if "%~1" == "/h" (
|
if "%~1" == "/h" (
|
||||||
%lib_base% help "%0"
|
%lib_base% help "%~0"
|
||||||
) else if "%1" neq "" (
|
) else if "%1" neq "" (
|
||||||
call :%*
|
call :%*
|
||||||
)
|
)
|
||||||
@ -20,7 +18,7 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
:::include:
|
:::include:
|
||||||
:::.
|
:::.
|
||||||
::: call "$0"
|
::: call "lib_git.cmd"
|
||||||
:::.
|
:::.
|
||||||
:::usage:
|
:::usage:
|
||||||
:::.
|
:::.
|
||||||
@ -42,19 +40,19 @@ exit /b
|
|||||||
|
|
||||||
:: set the executable path
|
:: set the executable path
|
||||||
set "git_executable=%~2\git.exe"
|
set "git_executable=%~2\git.exe"
|
||||||
%lib_console% debug-output :read_version "Env Var - git_executable=%git_executable%"
|
%lib_console% debug_output :read_version "Env Var - git_executable=%git_executable%"
|
||||||
|
|
||||||
:: check if the executable actually exists
|
:: check if the executable actually exists
|
||||||
if not exist "%git_executable%" (
|
if not exist "%git_executable%" (
|
||||||
%lib_console% debug-output :read_version "%git_executable% does not exist."
|
%lib_console% debug_output :read_version "%git_executable% does not exist."
|
||||||
exit /b -255
|
exit /b -255
|
||||||
)
|
)
|
||||||
|
|
||||||
:: get the git version in the provided directory
|
:: get the git version in the provided directory
|
||||||
for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do (
|
for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do (
|
||||||
if /i "%%A %%B" == "git version" (
|
if /i "%%A %%B" == "git version" (
|
||||||
set "GIT_VERSION_%~1=%%C"
|
set "GIT_VERSION=%%C"
|
||||||
%lib_console% debug-output :read_version "Env Var - GIT_VERSION_%~1=%%C"
|
%lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=!GIT_VERSION!"
|
||||||
) else (
|
) else (
|
||||||
%lib_console% show_error "git --version" returned an inproper version string!
|
%lib_console% show_error "git --version" returned an inproper version string!
|
||||||
pause
|
pause
|
||||||
@ -62,7 +60,7 @@ exit /b
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
endlocal & set GIT_VERSION%~1=!GIT_VERSION%~1!
|
endlocal & set "GIT_VERSION_%~1=%GIT_VERSION%"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:parse_version
|
:parse_version
|
||||||
@ -92,6 +90,7 @@ exit /b
|
|||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
:: process a `x.x.x.xxxx.x` formatted string
|
:: process a `x.x.x.xxxx.x` formatted string
|
||||||
|
%lib_console% debug_output :parse_version "ARGV[1]=%~1, ARGV[2]=%~2"
|
||||||
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
|
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
|
||||||
set "%~1_MAJOR=%%A"
|
set "%~1_MAJOR=%%A"
|
||||||
set "%~1_MINOR=%%B"
|
set "%~1_MINOR=%%B"
|
||||||
@ -121,10 +120,11 @@ exit /b
|
|||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
:: now parse the version information into the corresponding variables
|
:: now parse the version information into the corresponding variables
|
||||||
|
%lib_console% debug_output :validate_version "ARGV[1]=%~1, ARGV[2]=%~2"
|
||||||
call :parse_version %~1 %~2
|
call :parse_version %~1 %~2
|
||||||
|
|
||||||
:: ... and maybe display it, for debugging purposes.
|
:: ... and maybe display it, for debugging purposes.
|
||||||
%lib_console% debug-output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!"
|
%lib_console% debug_output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:compare_versions
|
:compare_versions
|
||||||
@ -148,9 +148,9 @@ exit /b
|
|||||||
:: checks all major, minor, patch and build variables for the given arguments.
|
:: checks all major, minor, patch and build variables for the given arguments.
|
||||||
:: whichever binary that has the most recent version will be used based on the return code.
|
:: whichever binary that has the most recent version will be used based on the return code.
|
||||||
|
|
||||||
:: %lib_console% debug-output Comparing:
|
%lib_console% debug_output Comparing:
|
||||||
:: %lib_console% debug-output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
%lib_console% debug_output %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!
|
||||||
:: %lib_console% debug-output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD!
|
%lib_console% debug_output %~2: !%~2_MAJOR!.!%~2_MINOR!.!%~2_PATCH!.!%~2_BUILD!
|
||||||
|
|
||||||
if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1)
|
if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1)
|
||||||
if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1)
|
if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1)
|
||||||
|
63
vendor/lib/lib_path.cmd
vendored
63
vendor/lib/lib_path.cmd
vendored
@ -6,7 +6,7 @@ call "%%~dp0lib_console"
|
|||||||
set lib_path=call "%~dp0lib_path.cmd"
|
set lib_path=call "%~dp0lib_path.cmd"
|
||||||
|
|
||||||
if "%~1" == "/h" (
|
if "%~1" == "/h" (
|
||||||
%lib_base% help "%0"
|
%lib_base% help "%~0"
|
||||||
) else if "%1" neq "" (
|
) else if "%1" neq "" (
|
||||||
call :%*
|
call :%*
|
||||||
)
|
)
|
||||||
@ -19,7 +19,7 @@ exit /b
|
|||||||
:::
|
:::
|
||||||
:::include:
|
:::include:
|
||||||
:::
|
:::
|
||||||
::: call "$0"
|
::: call "lib_path.cmd"
|
||||||
:::
|
:::
|
||||||
:::usage:
|
:::usage:
|
||||||
:::
|
:::
|
||||||
@ -52,35 +52,49 @@ exit /b
|
|||||||
set "position="
|
set "position="
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if "%fast_init%" == "1" (
|
||||||
|
if "%position%" == "append" (
|
||||||
|
set "PATH=%PATH%;%add_path%"
|
||||||
|
) else (
|
||||||
|
set "PATH=%add_path%;%PATH%"
|
||||||
|
)
|
||||||
|
goto :end_enhance_path
|
||||||
|
)
|
||||||
|
|
||||||
|
set found=0
|
||||||
set "find_query=%add_path%"
|
set "find_query=%add_path%"
|
||||||
set "find_query=%find_query:\=\\%"
|
set "find_query=%find_query:\=\\%"
|
||||||
set "find_query=%find_query: =\ %"
|
set "find_query=%find_query: =\ %"
|
||||||
set found=0
|
|
||||||
|
|
||||||
%lib_console% debug-output :enhance_path "Env Var - find_query=%find_query%"
|
if "%CMDER_CONFIGURED%" == "1" (
|
||||||
echo "%PATH%"|findstr >nul /I /R ";%find_query%\"$"
|
%lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%"
|
||||||
if "!ERRORLEVEL!" == "0" set found=1
|
echo "%path%"|findstr >nul /I /R ";%find_query%\"$"
|
||||||
|
if "!ERRORLEVEL!" == "0" set found=1
|
||||||
|
)
|
||||||
|
%lib_console% debug_output :enhance_path "Env Var 1 - found=!found!"
|
||||||
|
|
||||||
%lib_console% debug-output :enhance_path "Env Var 1 - found=!found!"
|
|
||||||
if "!found!" == "0" (
|
if "!found!" == "0" (
|
||||||
echo "%PATH%"|findstr >nul /i /r ";%find_query%;"
|
if "%CMDER_CONFIGURED%" == "1" (
|
||||||
if "!ERRORLEVEL!" == "0" set found=1
|
echo "%path%"|findstr >nul /i /r ";%find_query%;"
|
||||||
%lib_console% debug-output :enhance_path "Env Var 2 - found=!found!"
|
if "!ERRORLEVEL!" == "0" set found=1
|
||||||
|
)
|
||||||
|
%lib_console% debug_output :enhance_path "Env Var 2 - found=!found!"
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%found%" == "0" (
|
if "%found%" == "0" (
|
||||||
%lib_console% debug-output :enhance_path "BEFORE Env Var - PATH=!path!"
|
%lib_console% debug_output :enhance_path "BEFORE Env Var - PATH=!path!"
|
||||||
if /i "%position%" == "append" (
|
if /i "%position%" == "append" (
|
||||||
%lib_console% debug-output :enhance_path "Appending '%add_path%'"
|
%lib_console% debug_output :enhance_path "Appending '%add_path%'"
|
||||||
set "PATH=%PATH%;%add_path%"
|
set "PATH=%PATH%;%add_path%"
|
||||||
) else (
|
) else (
|
||||||
%lib_console% debug-output :enhance_path "Prepending '%add_path%'"
|
%lib_console% debug_output :enhance_path "Prepending '%add_path%'"
|
||||||
set "PATH=%add_path%;%PATH%"
|
set "PATH=%add_path%;%PATH%"
|
||||||
)
|
)
|
||||||
|
|
||||||
%lib_console% debug-output :enhance_path "AFTER Env Var - PATH=!path!"
|
%lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
:end_enhance_path
|
||||||
endlocal & set "PATH=%PATH:;;=;%"
|
endlocal & set "PATH=%PATH:;;=;%"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
@ -111,7 +125,6 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
::: path <out> Sets the path env variable if required.
|
::: path <out> Sets the path env variable if required.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if "%~1" neq "" (
|
if "%~1" neq "" (
|
||||||
set "add_path=%~1"
|
set "add_path=%~1"
|
||||||
@ -132,24 +145,30 @@ exit /b
|
|||||||
set "position="
|
set "position="
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if "%fast_init%" == "1" (
|
||||||
|
call :enhance_path "%add_path%" %position%
|
||||||
|
goto :end_enhance_path_recursive
|
||||||
|
)
|
||||||
|
|
||||||
if "%depth%" == "" set depth=0
|
if "%depth%" == "" set depth=0
|
||||||
|
|
||||||
%lib_console% debug-output :enhance_path_recursive "Env Var - add_path=%add_path%"
|
%lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_path%"
|
||||||
%lib_console% debug-output :enhance_path_recursive "Env Var - position=%position%"
|
%lib_console% debug_output :enhance_path_recursive "Env Var - position=%position%"
|
||||||
%lib_console% debug-output :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
%lib_console% debug_output :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
||||||
|
|
||||||
if %max_depth% gtr !depth! (
|
if %max_depth% gtr !depth! (
|
||||||
%lib_console% debug-output :enhance_path_recursive "Adding parent directory - '%add_path%'"
|
%lib_console% debug_output :enhance_path_recursive "Adding parent directory - '%add_path%'"
|
||||||
call :enhance_path "%add_path%" %position%
|
call :enhance_path "%add_path%" %position%
|
||||||
set /a "depth=!depth!+1"
|
set /a "depth=!depth!+1"
|
||||||
|
|
||||||
for /d %%i in ("%add_path%\*") do (
|
for /d %%i in ("%add_path%\*") do (
|
||||||
%lib_console% debug-output :enhance_path_recursive "Env Var BEFORE - depth=!depth!"
|
%lib_console% debug_output :enhance_path_recursive "Env Var BEFORE - depth=!depth!"
|
||||||
%lib_console% debug-output :enhance_path_recursive "Found Subdirectory - '%%~fi'"
|
%lib_console% debug_output :enhance_path_recursive "Found Subdirectory - '%%~fi'"
|
||||||
call :enhance_path_recursive "%%~fi" %max_depth% %position%
|
call :enhance_path_recursive "%%~fi" %max_depth% %position%
|
||||||
%lib_console% debug-output :enhance_path_recursive "Env Var AFTER- depth=!depth!"
|
%lib_console% debug_output :enhance_path_recursive "Env Var AFTER- depth=!depth!"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
:end_enhance_path_recursive
|
||||||
endlocal & set "PATH=%PATH%"
|
endlocal & set "PATH=%PATH%"
|
||||||
exit /b
|
exit /b
|
||||||
|
8
vendor/lib/lib_profile.cmd
vendored
8
vendor/lib/lib_profile.cmd
vendored
@ -1,12 +1,11 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
|
|
||||||
call "%~dp0lib_base.cmd"
|
call "%~dp0lib_base.cmd"
|
||||||
call "%%~dp0lib_console"
|
call "%%~dp0lib_console"
|
||||||
set lib_profile=call "%~dp0lib_profile.cmd"
|
set lib_profile=call "%~dp0lib_profile.cmd"
|
||||||
|
|
||||||
if "%~1" == "/h" (
|
if "%~1" == "/h" (
|
||||||
%lib_base% help "%0"
|
%lib_base% help "%~0"
|
||||||
) else if "%1" neq "" (
|
) else if "%1" neq "" (
|
||||||
call :%*
|
call :%*
|
||||||
)
|
)
|
||||||
@ -19,7 +18,7 @@ exit /b
|
|||||||
:::
|
:::
|
||||||
:::include:
|
:::include:
|
||||||
:::
|
:::
|
||||||
::: call "$0"
|
::: call "lib_profile.cmd"
|
||||||
:::
|
:::
|
||||||
:::usage:
|
:::usage:
|
||||||
:::
|
:::
|
||||||
@ -39,8 +38,9 @@ exit /b
|
|||||||
|
|
||||||
pushd "%~1"
|
pushd "%~1"
|
||||||
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
||||||
%lib_console% verbose-output "Calling '%~1\%%x'..."
|
%lib_console% verbose_output "Calling '%~1\%%x'..."
|
||||||
call "%~1\%%x"
|
call "%~1\%%x"
|
||||||
)
|
)
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
40
vendor/profile.ps1
vendored
40
vendor/profile.ps1
vendored
@ -2,7 +2,7 @@
|
|||||||
# Created as part of cmder project
|
# Created as part of cmder project
|
||||||
|
|
||||||
# !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
# !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||||
# !!! Use "%CMDER_ROOT%\config\user-profile.ps1" to add your own startup commands
|
# !!! Use "%CMDER_ROOT%\config\user_profile.ps1" to add your own startup commands
|
||||||
|
|
||||||
# Compatibility with PS major versions <= 2
|
# Compatibility with PS major versions <= 2
|
||||||
if(!$PSScriptRoot) {
|
if(!$PSScriptRoot) {
|
||||||
@ -29,10 +29,6 @@ $ENV:CMDER_ROOT = (($ENV:CMDER_ROOT).trimend("\"))
|
|||||||
# -> recent PowerShell versions include PowerShellGet out of the box
|
# -> recent PowerShell versions include PowerShellGet out of the box
|
||||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue | Out-Null)
|
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue | Out-Null)
|
||||||
|
|
||||||
# do not load bundled psget if a module installer is already available
|
|
||||||
# -> recent PowerShell versions include PowerShellGet out of the box
|
|
||||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue | Out-Null)
|
|
||||||
|
|
||||||
# Add Cmder modules directory to the autoload path.
|
# Add Cmder modules directory to the autoload path.
|
||||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||||
|
|
||||||
@ -93,11 +89,11 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Enhance Path
|
# Enhance Path
|
||||||
$env:Path = "$Env:CMDER_ROOT\bin;$env:Path;$Env:CMDER_ROOT"
|
$env:Path = "$Env:CMDER_ROOT\bin;$Env:CMDER_ROOT\vendor\bin;$env:Path;$Env:CMDER_ROOT"
|
||||||
|
|
||||||
#
|
#
|
||||||
# Prompt Section
|
# Prompt Section
|
||||||
# Users should modify their user-profile.ps1 as it will be safe from updates.
|
# Users should modify their user_profile.ps1 as it will be safe from updates.
|
||||||
#
|
#
|
||||||
|
|
||||||
# Pre assign the hooks so the first run of cmder gets a working prompt.
|
# Pre assign the hooks so the first run of cmder gets a working prompt.
|
||||||
@ -134,7 +130,7 @@ if (-not (test-path "$ENV:CMDER_ROOT\config\profile.d")) {
|
|||||||
pushd $ENV:CMDER_ROOT\config\profile.d
|
pushd $ENV:CMDER_ROOT\config\profile.d
|
||||||
foreach ($x in Get-ChildItem *.ps1) {
|
foreach ($x in Get-ChildItem *.ps1) {
|
||||||
# write-host write-host Sourcing $x
|
# write-host write-host Sourcing $x
|
||||||
. $x
|
Import-Module $x
|
||||||
}
|
}
|
||||||
popd
|
popd
|
||||||
|
|
||||||
@ -144,27 +140,37 @@ if ($ENV:CMDER_USER_CONFIG -ne "" -and (test-path "$ENV:CMDER_USER_CONFIG\profil
|
|||||||
pushd $ENV:CMDER_USER_CONFIG\profile.d
|
pushd $ENV:CMDER_USER_CONFIG\profile.d
|
||||||
foreach ($x in Get-ChildItem *.ps1) {
|
foreach ($x in Get-ChildItem *.ps1) {
|
||||||
# write-host write-host Sourcing $x
|
# write-host write-host Sourcing $x
|
||||||
. $x
|
Import-Module $x
|
||||||
}
|
}
|
||||||
popd
|
popd
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Renaming to "config\user_profile.ps1" to "user_profile.ps1" for consistency.
|
||||||
|
if (test-path "$env:CMDER_ROOT\config\user-profile.ps1") {
|
||||||
|
rename-item "$env:CMDER_ROOT\config\user-profile.ps1" user_profile.ps1
|
||||||
|
}
|
||||||
|
|
||||||
|
$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user_profile.ps1"
|
||||||
$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user-profile.ps1"
|
|
||||||
if (Test-Path $CmderUserProfilePath) {
|
if (Test-Path $CmderUserProfilePath) {
|
||||||
# Create this file and place your own command in there.
|
# Create this file and place your own command in there.
|
||||||
. "$CmderUserProfilePath"
|
Import-Module "$CmderUserProfilePath"
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ENV:CMDER_USER_CONFIG) {
|
if ($ENV:CMDER_USER_CONFIG) {
|
||||||
$CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user-profile.ps1"
|
# Renaming to "$env:CMDER_USER_CONFIG\user-profile.ps1" to "user_profile.ps1" for consistency.
|
||||||
|
if (test-path "$env:CMDER_USER_CONFIG\user-profile.ps1") {
|
||||||
|
rename-item "$env:CMDER_USER_CONFIG\user-profile.ps1" user_profile.ps1
|
||||||
|
}
|
||||||
|
|
||||||
|
$env:Path = "$Env:CMDER_USER_CONFIG\bin;$env:Path"
|
||||||
|
|
||||||
|
$CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user_profile.ps1"
|
||||||
|
if (Test-Path $CmderUserProfilePath) {
|
||||||
|
Import-Module "$CmderUserProfilePath"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Test-Path $CmderUserProfilePath) {
|
if (! (Test-Path $CmderUserProfilePath) ) {
|
||||||
. "$CmderUserProfilePath"
|
|
||||||
} else {
|
|
||||||
# This multiline string cannot be indented, for this reason I've not indented the whole block
|
# This multiline string cannot be indented, for this reason I've not indented the whole block
|
||||||
|
|
||||||
Write-Host -BackgroundColor Darkgreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath"
|
Write-Host -BackgroundColor Darkgreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath"
|
||||||
|
8
vendor/sources.json
vendored
8
vendor/sources.json
vendored
@ -1,8 +1,8 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "git-for-windows",
|
"name": "git-for-windows",
|
||||||
"version": "v2.17.1.windows.2",
|
"version": "v2.19.0.windows.1",
|
||||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.17.1.windows.2/PortableGit-2.17.1.2-64-bit.7z.exe"
|
"url": "https://github.com/git-for-windows/git/releases/download/v2.19.0.windows.1/PortableGit-2.19.0-64-bit.7z.exe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink",
|
"name": "clink",
|
||||||
@ -11,8 +11,8 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "conemu-maximus5",
|
"name": "conemu-maximus5",
|
||||||
"version": "180528",
|
"version": "180626",
|
||||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v18.05.28/ConEmuPack.180528.7z"
|
"url": "https://github.com/Maximus5/ConEmu/releases/download/v18.06.26/ConEmuPack.180626.7z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink-completions",
|
"name": "clink-completions",
|
||||||
|
Reference in New Issue
Block a user