mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-17 04:59:09 +08:00
Compare commits
90 Commits
Author | SHA1 | Date | |
---|---|---|---|
bc7984769c | |||
130dc750be | |||
c6edbc0068 | |||
c0eeec6608 | |||
ee25dbaab6 | |||
e9f20aea91 | |||
29aa75e158 | |||
8781779636 | |||
31c019b7e4 | |||
4d86559841 | |||
a5dcf9c260 | |||
a999d17f71 | |||
04c784cb16 | |||
a2ce74f981 | |||
b91bb84f3d | |||
35ace106c8 | |||
1861983469 | |||
1f5ea5e596 | |||
2936abe2a5 | |||
c9bc1f6b83 | |||
be5ec648c4 | |||
ab3639540f | |||
2517f55f15 | |||
1af12666e4 | |||
93f8718489 | |||
1071221468 | |||
a92bb1947f | |||
251968b4c6 | |||
638d82e989 | |||
0e37a4c2f9 | |||
ca2550b70e | |||
492fc284f2 | |||
ec06f3e39b | |||
850e4ec045 | |||
fe3d2034ef | |||
180e72a6aa | |||
93cf865071 | |||
b41aac982c | |||
8df688bada | |||
84917159ec | |||
750560851f | |||
9b29668250 | |||
a857d8419c | |||
0cf1c5e2eb | |||
ddec3e8425 | |||
2428e8529f | |||
3eb82d4095 | |||
589b48d06e | |||
67f35bc05d | |||
9724151f06 | |||
c04cc6dc7f | |||
3ee244e4c1 | |||
44bc089ee4 | |||
6ab4599a4d | |||
dac4b27e28 | |||
661f59d0fb | |||
5a6f873d2b | |||
788d4e0caa | |||
f1fbd98093 | |||
74fcb5b62b | |||
60279fea04 | |||
7877d417f8 | |||
44a8bf5802 | |||
b70a03cde0 | |||
8cf51e454a | |||
f1b1ac0ec1 | |||
06b0c0d3c2 | |||
f1a9721256 | |||
46c8099317 | |||
f44c68273b | |||
7f69f15637 | |||
3736508b2c | |||
4575ac3209 | |||
035f209bc4 | |||
e4651cf7b4 | |||
19a2fd11e3 | |||
feee4eaed2 | |||
b310a2c47c | |||
22afc40a08 | |||
c499456f97 | |||
34468ef2fd | |||
5cb8021864 | |||
468dba474e | |||
db42252ef2 | |||
57b328b209 | |||
05836e761e | |||
e8b33aa45b | |||
377d97e56a | |||
3a44bc809d | |||
45e5600249 |
10
.github/issue_template.md
vendored
10
.github/issue_template.md
vendored
@ -84,7 +84,10 @@
|
||||
<!--
|
||||
Some tips on how to write a better report:
|
||||
- Put an `x` into all the boxes [ ] relevant to your issue (correct example: [x] -- not like this: [ x] or [x ]).
|
||||
- Any text that is between the the commment tags will get ignored, e.g.: <!-- this will NOT work -- >
|
||||
You need to write your text either outside the tags, or the line below it.
|
||||
- Use the *Preview* tab to see how your issue will actually look like, before sending it.
|
||||
⚠ If for some reason you can not see the text you just wrote, make sure you've read the instructions clearly
|
||||
- Make sure the description is worded well enough to be understood, and with as much context and examples as possible.
|
||||
- Post a screenshot or the command the triggered the problem, if applicable.
|
||||
- Avoid using ambiguous phrases like: doesn't work, there'a problem, etc.
|
||||
@ -93,6 +96,7 @@
|
||||
We can't process your issue if it's written in Russian or Chinese as we can't understand them.
|
||||
- You can find the version of Cmder.exe and ConEmu.exe binaries using Right Click → Properties → Details menu.
|
||||
- ⚠ Read the following page to avoid posting a bad issue: https://conemu.github.io/en/BadIssue.html
|
||||
- Failure to follow these guidelines may result in your issue getting closed. So please follow it carefully!
|
||||
-->
|
||||
|
||||
### Purpose of the issue
|
||||
@ -101,9 +105,9 @@
|
||||
- [ ] Question
|
||||
|
||||
### Version Information
|
||||
<!-- Please write your Cmder and ConEmu version here -->
|
||||
<!-- Please write your Cmder and ConEmu version below this line -->
|
||||
|
||||
<!-- If applicable, write down your Windows edition too (e.g. Windows 10 Pro 1809) -->
|
||||
<!-- If applicable, write down your Windows edition too below this line (e.g. Windows 10 Pro 1903) -->
|
||||
|
||||
### Description of the issue
|
||||
<!-- Provide a clear, simple description of your issue here -->
|
||||
<!-- Provide a clear, simple description of your issue below this line -->
|
||||
|
4
.gitignore
vendored
4
.gitignore
vendored
@ -3,12 +3,14 @@
|
||||
|
||||
bin/*
|
||||
!bin/Readme.md
|
||||
opt/*
|
||||
!opt/Readme.md
|
||||
|
||||
vendor/*/*
|
||||
!vendor/bin/*
|
||||
!vendor/lib/*
|
||||
!vendor/*
|
||||
!vendor/psmodules/PsGet
|
||||
!vendor/psmodules/*
|
||||
|
||||
config/*
|
||||
!config/Readme.md
|
||||
|
65
CHANGELOG.md
65
CHANGELOG.md
@ -1,6 +1,64 @@
|
||||
# Change Log
|
||||
|
||||
## [1.3.12](https://github.com/cmderdev/cmder/tree/v1.3.12) (2019-08-18)
|
||||
## [1.3.15](https://github.com/cmderdev/cmder/tree/v1.3.15) (2020-06-26)
|
||||
|
||||
* Fixes #2247, fixes #2254 [#2265](https://github.com/cmderdev/cmder/pull/2265)
|
||||
* Clink path get broken if clink-completions content is created in a different order #2278Clink path get broken if clink-completions content is created in a different order [#2278](https://github.com/cmderdev/cmder/pull/2278)
|
||||
* Move Git functions to `lib/git.bat` [#2293](https://github.com/cmderdev/cmder/pull/2293)
|
||||
* Fix Cmder issue #2290 [#2294](https://github.com/cmderdev/cmder/pull/2294)
|
||||
* Update git for windows to 2.26.2 [#2308](https://github.com/cmderdev/cmder/pull/2308)
|
||||
* Update README.md #2323Update README.md [#2323](https://github.com/cmderdev/cmder/pull/2323)
|
||||
* Added support for setting custom icons for Cmder window [#2335](https://github.com/cmderdev/cmder/pull/2335)
|
||||
* Fix and enhance enhance_path_recursive [#2311](https://github.com/cmderdev/cmder/pull/2311)
|
||||
|
||||
## [1.3.14](https://github.com/cmderdev/cmder/tree/v1.3.14) (2020-01-08)
|
||||
|
||||
### Fixes
|
||||
|
||||
* Pull Request: [#2222](https://github.com/cmderdev/cmder/pull/2222)
|
||||
* Cmder v1.3.13 init script fails. [#2218](https://github.com/cmderdev/cmder/issues/2218)
|
||||
* Git & env related error messages. [#2220](https://github.com/cmderdev/cmder/issues/2220)
|
||||
* Latest addition of "--nolog" clink breaks cmd prompts. [#2166](https://github.com/cmderdev/cmder/issues/2166)
|
||||
* `/nix_tools 0` should prevent adding `%GIT_INSTALL_ROOT%\mingw64\bin` to PATH. [#2214](https://github.com/cmderdev/cmder/issues/2214)
|
||||
|
||||
### Changes
|
||||
|
||||
* Update Git for Windows to 2.24.1.windows.2
|
||||
* Pull Request: [#2237](https://github.com/cmderdev/cmder/pull/2237)
|
||||
* Update clink-completions to 0.3.5
|
||||
* Pull Request: [#2223](https://github.com/cmderdev/cmder/pull/2223)
|
||||
|
||||
## [1.3.13](https://github.com/cmderdev/cmder/tree/v1.3.13) (2019-11-03)
|
||||
|
||||
### Changes
|
||||
|
||||
* Update to Conemu 19.10.12
|
||||
|
||||
### Adds
|
||||
|
||||
* #2197, #1364, #447 Add ability to disable git status either globally or for individual repos.
|
||||
* To disable git status globally add the following to `~/.gitconfig` or locally for a single repo `[repo]/.git/config`:
|
||||
|
||||
```
|
||||
[cmder]
|
||||
status = false
|
||||
```
|
||||
|
||||
* #2174 `--` Syntax to pass command line options to Conemu.
|
||||
* Disable Clink Logging
|
||||
* Add `~` tab completion.
|
||||
|
||||
|
||||
### Fixes
|
||||
|
||||
* Fix #2191: profile.ps1: CheckGit does not export $gitLoaded
|
||||
* Fix #2192: Set default prompt hooks before loading user profile
|
||||
* Fix #2097, #1899: powershell foreground color changing to green
|
||||
* Fix #1979: Update Clink Completions to 0.3.4
|
||||
* Fix #1678: Cmder corrupting path with `!` in Cmder folder path.
|
||||
|
||||
|
||||
## [1.3.12](https://github.com/cmderdev/cmder/tree/v1.3.12) (2019-08-19)
|
||||
|
||||
### Fixes
|
||||
|
||||
@ -33,6 +91,11 @@
|
||||
* Syntax: `/x [ConEmu extras arguments]`
|
||||
* e.g.: `Cmder.exe /x "-min -tsa"`
|
||||
|
||||
* Pull Request: [#2072](https://github.com/cmderdev/cmder/pull/2072)
|
||||
* New alias create [alias] [alias command] syntax
|
||||
* Based on [#1750](https://github.com/cmderdev/cmder/pull/1750)
|
||||
* Syntax: `alias create [alias] [alias command]`
|
||||
|
||||
## [1.3.11](https://github.com/cmderdev/cmder/tree/v1.3.11) (2018-12-22)
|
||||
|
||||
### Fixes
|
||||
|
54
README.md
54
README.md
@ -23,19 +23,29 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
||||
### Shared Cmder install with Non-Portable Individual User Config
|
||||
1. Download the [latest release](https://github.com/cmderdev/cmder/releases/)
|
||||
2. Extract the archive to a shared location.
|
||||
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.
|
||||
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`
|
||||
3. (optional) Place your own executable files and custom app folders into the `%cmder_root%\bin`. See: [opt/README.md](./bin/README)
|
||||
- This folder to be injected into your PATH by default.
|
||||
- See `/max_depth [1-5]` in 'Command Line Arguments for `init.bat`' table to add subdirectories recursively.
|
||||
4. (optional) Place your own custom app folders into the `%cmder_root%\opt`. See: [opt/README.md](./opt/README)
|
||||
- This folder will NOT be injected into your PATH so you have total control of what gets added.
|
||||
5. 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.
|
||||
|
||||
```
|
||||
c:\users\[username]\cmder_config
|
||||
├───bin
|
||||
└───config
|
||||
└───profile.d
|
||||
├───config
|
||||
│ └───profile.d
|
||||
└───opt
|
||||
```
|
||||
|
||||
- (optional) Place your own executable files and custom app folders into `%userprofile%\cmder_config\bin`.
|
||||
- This folder to be injected into your PATH by default.
|
||||
- See `/max_depth [1-5]` in 'Command Line Arguments for `init.bat`' table to add subdirectories recursively.
|
||||
- (optional) Place your own custom app folders into the `%user_profile%\cmder_config\opt`.
|
||||
- This folder will NOT be injected into your PATH so you have total control of what gets added.
|
||||
|
||||
|
||||
* Both the shared install and the individual user config locations can contain a full set of init and profile.d scripts enabling shared config with user overrides. See below.
|
||||
|
||||
## Cmder.exe Command Line Arguments
|
||||
@ -92,8 +102,8 @@ _(Some shortcuts are not yet documented, though they exist - please document the
|
||||
### Access to multiple shells in one window using tabs
|
||||
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 as Admin | `cmd.exe` | Administrative Windows `cmd.exe` Cmder shell. |
|
||||
| PowerShell | `powershell.exe` | Windows PowerShell enhanced with Git and Git aware prompt . |
|
||||
@ -164,23 +174,37 @@ Single user portable configuration is possible using the cmder specific shell co
|
||||
| ------------- | ----------------------------------------- |
|
||||
| Cmder | `%CMDER_ROOT%\config\user_profile.cmd` |
|
||||
| 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`.
|
||||
|
||||
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 |
|
||||
| ------------- | --------------------------------------------------|
|
||||
| Cmder | `%CMDER_ROOT%\config\profile.d\*.bat and *.cmd` |
|
||||
| PowerShell | `$ENV:CMDER_ROOT\config\profile.d\*.ps1` |
|
||||
| Bash/Mintty | `$CMDER_ROOT/config/profile.d/*.sh` |
|
||||
| Shell | Cmder `Profile.d` Scripts |
|
||||
| ------------- | -------------------------------------------------- |
|
||||
| Cmder | `%CMDER_ROOT%\config\profile.d\*.bat and *.cmd` |
|
||||
| PowerShell | `$ENV:CMDER_ROOT\config\profile.d\*.ps1` |
|
||||
| Bash/Mintty | `$CMDER_ROOT/config/profile.d/*.sh` |
|
||||
|
||||
#### Git Status Opt-Out
|
||||
|
||||
To disable Cmder prompt git status globally add the following to `~/.gitconfig` or locally for a single repo `[repo]/.git/config` and start a new session.
|
||||
|
||||
*Note: This configuration is not portable*
|
||||
|
||||
```
|
||||
[cmder]
|
||||
status = false # Opt out of Git status for 'ALL' Cmder supported shells.
|
||||
cmdstatus = false # Opt out of Git status for 'Cmd.exe' shells.
|
||||
psstatus = false # Opt out of Git status for 'Powershell.exe and 'Pwsh.exe' shells.
|
||||
shstatus = false # Opt out of Git status for 'bash.exe' shells.
|
||||
```
|
||||
|
||||
### 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`.
|
||||
|
||||
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](https://docs.microsoft.com/en-us/windows-server/administration/windows-commands/doskey) 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
|
||||
|
||||
|
@ -3,13 +3,14 @@
|
||||
All config files must be in this folder. If there is no option to set this folder
|
||||
directly, it has to be hardlinked.
|
||||
|
||||
* `user-aliases.cmd`: aliases in cmd; called from vendor\init.bat; autocreated from
|
||||
`vendor\user-aliases.cmd.default`.
|
||||
* `user_aliases.cmd`: aliases in cmd; called from vendor\init.bat; autocreated from
|
||||
`vendor\user_aliases.cmd.default`.
|
||||
* `*.lua`: clink completions and prompt filters; autoloaded after all
|
||||
prompt filter and clink completions are initialized; add your own.
|
||||
* `user-profile.{sh|cmd|ps1}`: startup files for bash|cmd|powershell tasks; called from their
|
||||
* `user_profile.{sh|cmd|ps1}`: startup files for bash|cmd|powershell tasks; called from their
|
||||
respective startup scripts in `vendor\`; autocreated from
|
||||
`vendor\user-profile.{sh|cmd|ps1}.default` on first start of such a task.
|
||||
`vendor\user_profile.{sh|cmd|ps1}.default` on first start of such a task.
|
||||
* `.history`: the current commandline history; autoupdated on close.
|
||||
* `settings`: settings for readline; overwritten on update.
|
||||
* `ConEmu.xml`: settings from ConEmu (=the UI of cmder -> Preferences); overwritten on update.
|
||||
* `user-ConEmu.xml`: settings from ConEmu the UI of Cmder. ;
|
||||
Do not edit this file directly it is overwritten on each cmder.exe launch.
|
||||
|
@ -9,12 +9,18 @@ Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Win32 = Debug|Win32
|
||||
Release|Win32 = Release|Win32
|
||||
Debug|x64 = Debug|x64
|
||||
Release|x64 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Debug|Win32.Build.0 = Debug|Win32
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Release|Win32.ActiveCfg = Release|Win32
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Release|Win32.Build.0 = Release|Win32
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Debug|x64.Build.0 = Debug|x64
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Release|x64.ActiveCfg = Release|x64
|
||||
{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}.Release|x64.Build.0 = Release|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
@ -9,6 +9,14 @@
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>Win32</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}</ProjectGuid>
|
||||
@ -30,6 +38,19 @@
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v141_xp</PlatformToolset>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>Application</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
<PlatformToolset>v141</PlatformToolset>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
@ -39,6 +60,12 @@
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
@ -48,6 +75,14 @@
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>Cmder</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
<TargetName>Cmder</TargetName>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
<TargetName>Cmder</TargetName>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
@ -94,6 +129,52 @@
|
||||
<Command>copy $(TargetPath) $(SolutionDir)..\$(TargetFileName)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
<ResourceCompile>
|
||||
<PreprocessorDefinitions>_USING_V110_SDK71_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
</ResourceCompile>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level3</WarningLevel>
|
||||
<PrecompiledHeader>
|
||||
</PrecompiledHeader>
|
||||
<Optimization>MinSpace</Optimization>
|
||||
<FunctionLevelLinking>true</FunctionLevelLinking>
|
||||
<IntrinsicFunctions>false</IntrinsicFunctions>
|
||||
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<SDLCheck>true</SDLCheck>
|
||||
<FavorSizeOrSpeed>Size</FavorSizeOrSpeed>
|
||||
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<SubSystem>Windows</SubSystem>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
</Link>
|
||||
<Manifest>
|
||||
<AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
||||
</Manifest>
|
||||
<PostBuildEvent>
|
||||
<Command>copy $(TargetPath) $(SolutionDir)..\$(TargetFileName)</Command>
|
||||
</PostBuildEvent>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="src\Resource.rc">
|
||||
<FileType>RC</FileType>
|
||||
|
@ -71,7 +71,7 @@ bool FileExists(const wchar_t * filePath)
|
||||
return false;
|
||||
}
|
||||
|
||||
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true, std::wstring conemu_args = L"")
|
||||
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring iconPath = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true, std::wstring conemu_args = L"")
|
||||
{
|
||||
#if USE_TASKBAR_API
|
||||
wchar_t appId[MAX_PATH] = { 0 };
|
||||
@ -111,7 +111,15 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
|
||||
PathRemoveFileSpec(exeDir);
|
||||
|
||||
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
||||
if (PathFileExists(iconPath.c_str()))
|
||||
{
|
||||
std::copy(iconPath.begin(), iconPath.end(), icoPath);
|
||||
icoPath[iconPath.length()] = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
PathCombine(icoPath, exeDir, L"icons\\cmder.ico");
|
||||
}
|
||||
|
||||
PathCombine(configDirPath, exeDir, L"config");
|
||||
|
||||
@ -532,6 +540,7 @@ struct cmderOptions
|
||||
std::wstring cmderCfgRoot = L"";
|
||||
std::wstring cmderStart = L"";
|
||||
std::wstring cmderTask = L"";
|
||||
std::wstring cmderIcon = L"";
|
||||
std::wstring cmderRegScope = L"USER";
|
||||
std::wstring cmderConEmuArgs = L"";
|
||||
bool cmderSingle = false;
|
||||
@ -593,6 +602,11 @@ cmderOptions GetOption()
|
||||
cmderOptions.cmderTask = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
else if (_wcsicmp(L"/icon", szArgList[i]) == 0)
|
||||
{
|
||||
cmderOptions.cmderIcon = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
else if (_wcsicmp(L"/single", szArgList[i]) == 0)
|
||||
{
|
||||
cmderOptions.cmderSingle = true;
|
||||
@ -633,6 +647,17 @@ cmderOptions GetOption()
|
||||
cmderOptions.cmderConEmuArgs = szArgList[i + 1];
|
||||
i++;
|
||||
}
|
||||
/* Bare double dash, remaining commandline is for conemu */
|
||||
else if (_wcsicmp(L"--", szArgList[i]) == 0)
|
||||
{
|
||||
std::wstring cmdline = std::wstring(GetCommandLineW());
|
||||
auto doubledash = cmdline.find(L" -- ");
|
||||
if (doubledash != std::string::npos)
|
||||
{
|
||||
cmderOptions.cmderConEmuArgs = cmdline.substr(doubledash + 4);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else if (cmderOptions.cmderStart == L"")
|
||||
{
|
||||
int len = wcslen(szArgList[i]);
|
||||
@ -648,13 +673,13 @@ cmderOptions GetOption()
|
||||
}
|
||||
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\n /m\n\n /x [ConEmu extra arguments]\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 /icon [CMDER Icon Path]\n\n [/start [Start in Path] | [Start in Path]]\n\n /single\n\n /m\n\n /x [ConEmu extra arguments]\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
|
||||
cmderOptions.error = true;
|
||||
}
|
||||
}
|
||||
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\n /m\n\n /x [ConEmu extra arguments]\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 /icon [CMDER Icon Path]\n\n [/start [Start in Path] | [Start in Path]]\n\n /single\n\n /m\n\n /x [ConEmu extra arguments]\n\nor\n\n /register [USER | ALL]\n\nor\n\n /unregister [USER | ALL]\n", MB_TITLE, MB_OK);
|
||||
cmderOptions.error = true;
|
||||
}
|
||||
}
|
||||
@ -696,7 +721,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
||||
}
|
||||
else
|
||||
{
|
||||
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderConEmuArgs);
|
||||
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderIcon, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderConEmuArgs);
|
||||
}
|
||||
|
||||
return 0;
|
||||
|
5
opt/Readme.md
Normal file
5
opt/Readme.md
Normal file
@ -0,0 +1,5 @@
|
||||
## Bin
|
||||
|
||||
This folder is for optional user packages and will not be automatically injected into the PATH.
|
||||
|
||||
Use `%lib_path% enhance_path "%cmder_root%\[path to folder]"` in `%cmder_root%\config\user_profile.cmd` or `%cmder_root%\config\profile.d\*.cmd` to add to the path.
|
4
vendor/bin/cexec.cmd
vendored
4
vendor/bin/cexec.cmd
vendored
@ -19,8 +19,8 @@ set "currenArgu=%~1"
|
||||
if /i "%currenArgu%" equ "/setPath" (
|
||||
:: set %flag_exists% shortcut
|
||||
endlocal
|
||||
set "ccall=call %~dp0cexec.cmd"
|
||||
set "cexec=%~dp0cexec.cmd"
|
||||
set "ccall=call ^"%~dp0cexec.cmd^""
|
||||
set "cexec=^"%~dp0cexec.cmd^""
|
||||
) else if /i "%currenArgu%" == "/?" (
|
||||
goto :help
|
||||
) else if /i "%currenArgu%" equ "/help" (
|
||||
|
76
vendor/clink.lua
vendored
76
vendor/clink.lua
vendored
@ -280,6 +280,24 @@ local function get_svn_status()
|
||||
return true
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
---
|
||||
local function get_git_status_setting()
|
||||
gitStatusSetting = io.popen("git --no-pager config -l 2>nul")
|
||||
|
||||
for line in gitStatusSetting:lines() do
|
||||
if string.match(line, 'cmder.status=false') or string.match(line, 'cmder.cmdstatus=false') then
|
||||
gitStatusSetting:close()
|
||||
return false
|
||||
end
|
||||
end
|
||||
gitStatusSetting:close()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function git_prompt_filter()
|
||||
|
||||
-- Colors for git status
|
||||
@ -290,27 +308,30 @@ local function git_prompt_filter()
|
||||
}
|
||||
|
||||
local git_dir = get_git_dir()
|
||||
if git_dir then
|
||||
-- if we're inside of git repo then try to detect current branch
|
||||
local branch = get_git_branch(git_dir)
|
||||
local color
|
||||
if branch then
|
||||
-- Has branch => therefore it is a git folder, now figure out status
|
||||
local gitStatus = get_git_status()
|
||||
local gitConflict = get_git_conflict()
|
||||
|
||||
color = colors.dirty
|
||||
if gitStatus then
|
||||
color = colors.clean
|
||||
end
|
||||
if get_git_status_setting() then
|
||||
if git_dir then
|
||||
-- if we're inside of git repo then try to detect current branch
|
||||
local branch = get_git_branch(git_dir)
|
||||
local color
|
||||
if branch then
|
||||
-- Has branch => therefore it is a git folder, now figure out status
|
||||
local gitStatus = get_git_status()
|
||||
local gitConflict = get_git_conflict()
|
||||
|
||||
if gitConflict then
|
||||
color = colors.conflict
|
||||
end
|
||||
color = colors.dirty
|
||||
if gitStatus then
|
||||
color = colors.clean
|
||||
end
|
||||
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..verbatim(branch)..")")
|
||||
return false
|
||||
end
|
||||
if gitConflict then
|
||||
color = colors.conflict
|
||||
end
|
||||
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..verbatim(branch)..")")
|
||||
return false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- No git present or not in git file
|
||||
@ -385,7 +406,24 @@ local function svn_prompt_filter()
|
||||
return false
|
||||
end
|
||||
|
||||
local function tilde_match (text, f, l)
|
||||
if text == '~' then
|
||||
clink.add_match(clink.get_env('userprofile'))
|
||||
clink.matches_are_files()
|
||||
return true
|
||||
end
|
||||
|
||||
if text:sub(1, 1) == '~' then
|
||||
clink.add_match(string.gsub(text, "~", clink.get_env('userprofile'), 1))
|
||||
-- second match prevents adding a space so we can look for more matches
|
||||
clink.add_match(string.gsub(text, "~", clink.get_env('userprofile'), 1) .. '+')
|
||||
clink.matches_are_files()
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
-- insert the set_prompt at the very beginning so that it runs first
|
||||
clink.register_match_generator(tilde_match, 1)
|
||||
clink.prompt.register_filter(set_prompt_filter, 1)
|
||||
clink.prompt.register_filter(hg_prompt_filter, 50)
|
||||
clink.prompt.register_filter(git_prompt_filter, 50)
|
||||
@ -393,6 +431,8 @@ 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/'
|
||||
-- Execute '.init.lua' first to ensure package.path is set properly
|
||||
dofile(completions_dir..'.init.lua')
|
||||
for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
||||
-- Skip files that starts with _. This could be useful if some files should be ignored
|
||||
if not string.match(lua_module, '^_.*') then
|
||||
|
25
vendor/git-prompt.sh
vendored
25
vendor/git-prompt.sh
vendored
@ -1,3 +1,14 @@
|
||||
function getGitStatusSetting() {
|
||||
gitStatusSetting=$(git --no-pager config -l 2>/dev/null)
|
||||
|
||||
if [[ -n ${gitStatusSetting} ]] && [[ ${gitStatusSetting} =~ cmder.status=false ]] || [[ ${gitStatusSetting} =~ cmder.shstatus=false ]]
|
||||
then
|
||||
echo false
|
||||
else
|
||||
echo true
|
||||
fi
|
||||
}
|
||||
|
||||
if test -f /etc/profile.d/git-sdk.sh
|
||||
then
|
||||
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
|
||||
@ -7,7 +18,10 @@ fi
|
||||
|
||||
if test -f ~/.config/git/git-prompt.sh
|
||||
then
|
||||
. ~/.config/git/git-prompt.sh
|
||||
if [[ $(getGitStatusSetting) == true ]]
|
||||
then
|
||||
. ~/.config/git/git-prompt.sh
|
||||
fi
|
||||
else
|
||||
PS1='\[\033]0;$MSYSTEM:${PWD//[^[:ascii:]]/?}\007\]' # set window title
|
||||
# PS1="$PS1"'\n' # new line
|
||||
@ -26,9 +40,12 @@ else
|
||||
if test -f "$COMPLETION_PATH/git-prompt.sh"
|
||||
then
|
||||
. "$COMPLETION_PATH/git-completion.bash"
|
||||
. "$COMPLETION_PATH/git-prompt.sh"
|
||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||
PS1="$PS1"'`__git_ps1`' # bash function
|
||||
if [[ $(getGitStatusSetting) == true ]]
|
||||
then
|
||||
. "$COMPLETION_PATH/git-prompt.sh"
|
||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||
PS1="$PS1"'`__git_ps1`' # bash function
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
PS1="$PS1"'\[\033[0m\]' # change color
|
||||
|
189
vendor/init.bat
vendored
189
vendor/init.bat
vendored
@ -9,13 +9,23 @@ set CMDER_INIT_START=%time%
|
||||
:: !!! 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.
|
||||
set verbose_output=0
|
||||
set debug_output=0
|
||||
set time_init=0
|
||||
set fast_init=0
|
||||
set max_depth=1
|
||||
:: Add *nix tools to end of path. 0 turns off *nix tools.
|
||||
set nix_tools=1
|
||||
if not defined verbose_output set verbose_output=0
|
||||
|
||||
:: Use /d command line arg or set to 1 for debug output to aid in debugging.
|
||||
if not defined debug_output set debug_output=0
|
||||
|
||||
:: Use /t command line arg or set to 1 to display init time.
|
||||
if not defined time_init set time_init=0
|
||||
|
||||
:: Use /f command line arg to speed up init at the expense of some functionality.
|
||||
if not defined fast_init set fast_init=0
|
||||
|
||||
:: Use /max_depth 1-5 to set max recurse depth for calls to `enhance_path_recursive`
|
||||
if not defined max_depth set max_depth=1
|
||||
|
||||
:: Add *nix tools to end of path. 0 turns off *nix tools, 2 adds *nix tools to the front of thr path.
|
||||
if not defined nix_tools set nix_tools=1
|
||||
|
||||
set "CMDER_USER_FLAGS= "
|
||||
|
||||
:: Find root dir
|
||||
@ -120,14 +130,16 @@ goto var_loop
|
||||
|
||||
if defined CMDER_USER_CONFIG (
|
||||
%lib_console% debug_output init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!"
|
||||
|
||||
if not exist "%CMDER_USER_CONFIG%\opt" md "%CMDER_USER_CONFIG%\opt"
|
||||
)
|
||||
|
||||
:: Pick right version of clink
|
||||
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||
set architecture=86
|
||||
set clink_architecture=x86
|
||||
set architecture_bits=32
|
||||
) else (
|
||||
set architecture=64
|
||||
set clink_architecture=x64
|
||||
set architecture_bits=64
|
||||
)
|
||||
|
||||
@ -141,19 +153,25 @@ if "%CMDER_CLINK%" == "1" (
|
||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_USER_CONFIG%\settings"
|
||||
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.\
|
||||
)
|
||||
"%CMDER_ROOT%\vendor\clink\clink_x%architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
||||
) else (
|
||||
if not exist "%CMDER_ROOT%\config\settings" (
|
||||
echo Generating clink initial settings in "%CMDER_ROOT%\config\settings"
|
||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%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_%clink_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!"
|
||||
)
|
||||
|
||||
if "%CMDER_CONFIGURED%" == "1" (
|
||||
echo Cmder is already configured, skipping Cmder Init!
|
||||
|
||||
goto CMDER_CONFIGURED
|
||||
)
|
||||
|
||||
:: Prepare for git-for-windows
|
||||
|
||||
:: I do not even know, copypasted from their .bat
|
||||
@ -165,7 +183,6 @@ if not defined TERM set TERM=cygwin
|
||||
:: * test if a git is in path and if yes, use that
|
||||
:: * last, use our vendored git
|
||||
:: also check that we have a recent enough version of git by examining the version string
|
||||
setlocal enabledelayedexpansion
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
|
||||
) else if "%fast_init%" == "1" (
|
||||
@ -184,108 +201,74 @@ if defined GIT_INSTALL_ROOT (
|
||||
:: check if git is in path...
|
||||
for /F "delims=" %%F in ('where git.exe 2^>nul') do (
|
||||
:: get the absolute path to the user provided git binary
|
||||
pushd %%~dpF
|
||||
:: 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
|
||||
%lib_git% is_git_shim "%%~dpF"
|
||||
%lib_git% get_user_git_version
|
||||
%lib_git% compare_git_versions
|
||||
)
|
||||
|
||||
:: get the version information for the user provided git binary
|
||||
%lib_git% read_version USER "!test_dir!"
|
||||
%lib_git% validate_version USER !GIT_VERSION_USER!
|
||||
|
||||
if !errorlevel! geq 0 (
|
||||
:: compare the user git version against the vendored version
|
||||
%lib_git% compare_versions USER VENDORED
|
||||
|
||||
:: use the user provided git if its version is greater than, or equal to the vendored git
|
||||
if !errorlevel! geq 0 if exist "!test_dir:~0,-4!\cmd\git.exe" (
|
||||
set "GIT_INSTALL_ROOT=!test_dir:~0,-4!"
|
||||
set test_dir=
|
||||
goto :FOUND_GIT
|
||||
) else if !errorlevel! geq 0 (
|
||||
set "GIT_INSTALL_ROOT=!test_dir!"
|
||||
set test_dir=
|
||||
goto :FOUND_GIT
|
||||
) else (
|
||||
call :verbose_output Found old !GIT_VERSION_USER! in "!test_dir!", but not using...
|
||||
set test_dir=
|
||||
)
|
||||
) else (
|
||||
|
||||
:: if the user provided git executable is not found
|
||||
if !errorlevel! equ -255 (
|
||||
call :verbose_output No git at "!git_executable!" found.
|
||||
set test_dir=
|
||||
)
|
||||
|
||||
)
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
goto :FOUND_GIT
|
||||
)
|
||||
|
||||
:: our last hope: our own git...
|
||||
:VENDORED_GIT
|
||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
||||
%lib_console% debug_output "Using vendored Git '!GIT_VERSION_VENDORED!' from '!GIT_INSTALL_ROOT!..."
|
||||
%lib_console% debug_output "Using vendored Git '%GIT_VERSION_VENDORED%'..."
|
||||
goto :CONFIGURE_GIT
|
||||
) else (
|
||||
goto :NO_GIT
|
||||
)
|
||||
|
||||
:SPECIFIED_GIT
|
||||
%lib_console% debug_output "Using /GIT_INSTALL_ROOT from '%GIT_INSTALL_ROOT%..."
|
||||
%lib_console% debug_output "Using /GIT_INSTALL_ROOT..."
|
||||
goto :CONFIGURE_GIT
|
||||
|
||||
:FOUND_GIT
|
||||
%lib_console% debug_output "Using found Git '!GIT_VERSION_USER!' from '%GIT_INSTALL_ROOT%..."
|
||||
%lib_console% debug_output "Using found Git '%GIT_VERSION_USER%' from '%GIT_INSTALL_ROOT%..."
|
||||
goto :CONFIGURE_GIT
|
||||
|
||||
:CONFIGURE_GIT
|
||||
%lib_console% debug_output "Using Git from '%GIT_INSTALL_ROOT%..."
|
||||
:: Add git to the path
|
||||
if defined GIT_INSTALL_ROOT (
|
||||
rem add the unix commands at the end to not shadow windows commands like more
|
||||
if %nix_tools% equ 1 (
|
||||
%lib_console% debug_output init.bat "Preferring Windows commands"
|
||||
set "path_position=append"
|
||||
) else (
|
||||
%lib_console% debug_output init.bat "Preferring *nix commands"
|
||||
set "path_position="
|
||||
)
|
||||
|
||||
if exist "!GIT_INSTALL_ROOT!\cmd\git.exe" %lib_path% enhance_path "!GIT_INSTALL_ROOT!\cmd" !path_position!
|
||||
if exist "!GIT_INSTALL_ROOT!\mingw32" (
|
||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw32\bin" !path_position!
|
||||
) else if exist "!GIT_INSTALL_ROOT!\mingw64" (
|
||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\mingw64\bin" !path_position!
|
||||
)
|
||||
|
||||
if %nix_tools% geq 1 (
|
||||
%lib_path% enhance_path "!GIT_INSTALL_ROOT!\usr\bin" !path_position!
|
||||
)
|
||||
|
||||
:: 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 LANG (
|
||||
:: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path.
|
||||
if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\locale.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\locale.exe"
|
||||
if not defined git_locale for /F "delims=" %%F in ('where locale.exe 2^>nul') do (if not defined git_locale set git_locale="%%F")
|
||||
if not defined git_locale if exist "!GIT_INSTALL_ROOT!\usr\bin\env.exe" set git_locale="!GIT_INSTALL_ROOT!\usr\bin\env.exe" /usr/bin/locale
|
||||
if not defined git_locale set git_locale=env /usr/bin/locale
|
||||
for /F "delims=" %%F in ('!git_locale! -uU 2') do (
|
||||
set "LANG=%%F"
|
||||
)
|
||||
)
|
||||
rem add the unix commands at the end to not shadow windows commands like more
|
||||
if %nix_tools% equ 1 (
|
||||
%lib_console% debug_output init.bat "Preferring Windows commands"
|
||||
set "path_position=append"
|
||||
) else (
|
||||
%lib_console% debug_output init.bat "Preferring *nix commands"
|
||||
set "path_position="
|
||||
)
|
||||
|
||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" %path_position%
|
||||
if %nix_tools% geq 1 (
|
||||
if exist "%GIT_INSTALL_ROOT%\mingw32" (
|
||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw32\bin" %path_position%
|
||||
) else if exist "%GIT_INSTALL_ROOT%\mingw64" (
|
||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\mingw64\bin" %path_position%
|
||||
)
|
||||
|
||||
%lib_path% enhance_path "%GIT_INSTALL_ROOT%\usr\bin" %path_position%
|
||||
)
|
||||
|
||||
:: define SVN_SSH so we can use git svn with ssh svn repositories
|
||||
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
||||
|
||||
:: Find locale.exe: From the git install root, from the path, using the git installed env, or fallback using the env from the path.
|
||||
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\locale.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\locale.exe"
|
||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where locale.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" )
|
||||
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\env.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\env.exe" /usr/bin/locale
|
||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where env.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" /usr/bin/locale )
|
||||
|
||||
if defined git_locale (
|
||||
%lib_console% debug_output init.bat "Env Var - git_locale=%git_locale%"
|
||||
if not defined LANG (
|
||||
for /F "delims=" %%F in ('%git_locale% -uU 2') do (
|
||||
set "LANG=%%F"
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
endlocal & set "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 "Found Git in: '%GIT_INSTALL_ROOT%'"
|
||||
goto :PATH_ENHANCE
|
||||
@ -296,9 +279,11 @@ endlocal
|
||||
|
||||
:PATH_ENHANCE
|
||||
%lib_path% enhance_path "%CMDER_ROOT%\vendor\bin"
|
||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" %max_depth%
|
||||
|
||||
:USER_CONFIG_START
|
||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||
if defined CMDER_USER_BIN (
|
||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" %max_depth%
|
||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||
)
|
||||
%lib_path% enhance_path "%CMDER_ROOT%" append
|
||||
|
||||
@ -331,22 +316,11 @@ if "%CMDER_ALIASES%" == "1" (
|
||||
)
|
||||
|
||||
REM Make sure we have a self-extracting user_aliases.cmd file
|
||||
setlocal enabledelayedexpansion
|
||||
if not exist "%user_aliases%" (
|
||||
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||
) else (
|
||||
type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul
|
||||
if "!errorlevel!" == "1" (
|
||||
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||
if defined CMDER_USER_CONFIG (
|
||||
copy "%user_aliases%" "%user_aliases%.old_format"
|
||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||
) else (
|
||||
copy "%user_aliases%" "%user_aliases%.old_format"
|
||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||
)
|
||||
)
|
||||
%lib_base% update_legacy_aliases
|
||||
)
|
||||
|
||||
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd'
|
||||
@ -359,7 +333,6 @@ if "%CMDER_ALIASES%" == "1" (
|
||||
type "%user_aliases%.old_format" >> "%user_aliases%"
|
||||
del "%user_aliases%.old_format"
|
||||
)
|
||||
endlocal
|
||||
)
|
||||
|
||||
:: Add aliases to the environment
|
||||
@ -414,6 +387,8 @@ if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMD
|
||||
)
|
||||
|
||||
set initialConfig=
|
||||
|
||||
:CMDER_CONFIGURED
|
||||
set CMDER_CONFIGURED=1
|
||||
|
||||
set CMDER_INIT_END=%time%
|
||||
|
27
vendor/lib/lib_base.cmd
vendored
27
vendor/lib/lib_base.cmd
vendored
@ -66,16 +66,29 @@ exit /b
|
||||
echo %comspec% | %WINDIR%\System32\find /i "\tccle" > nul && set "CMDER_SHELL=tccle"
|
||||
|
||||
if not defined CMDER_CLINK (
|
||||
set CMDER_CLINK=1
|
||||
if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0
|
||||
if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0
|
||||
set CMDER_CLINK=1
|
||||
if "%CMDER_SHELL%" equ "tcc" set CMDER_CLINK=0
|
||||
if "%CMDER_SHELL%" equ "tccle" set CMDER_CLINK=0
|
||||
)
|
||||
|
||||
|
||||
if not defined CMDER_ALIASES (
|
||||
set CMDER_ALIASES=1
|
||||
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
|
||||
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
|
||||
set CMDER_ALIASES=1
|
||||
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
|
||||
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
|
||||
)
|
||||
|
||||
exit /b
|
||||
|
||||
:update_legacy_aliases
|
||||
type "%user_aliases%" | %WINDIR%\System32\findstr /i ";= Add aliases below here" >nul
|
||||
if "%errorlevel%" == "1" (
|
||||
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||
if defined CMDER_USER_CONFIG (
|
||||
copy "%user_aliases%" "%user_aliases%.old_format"
|
||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||
) else (
|
||||
copy "%user_aliases%" "%user_aliases%.old_format"
|
||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
|
148
vendor/lib/lib_git.cmd
vendored
148
vendor/lib/lib_git.cmd
vendored
@ -34,7 +34,6 @@ exit /b
|
||||
::: GIT_VERSION_[GIT SCOPE] <out> Env variable containing Git semantic version string
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
:: clear the variables
|
||||
set GIT_VERSION_%~1=
|
||||
|
||||
@ -49,18 +48,20 @@ exit /b
|
||||
)
|
||||
|
||||
:: get the git version in the provided directory
|
||||
for /F "tokens=1,2,3 usebackq" %%A in (`"%git_executable%" --version 2^>nul`) do (
|
||||
|
||||
"%git_executable%" --version > "%temp%\git_version.txt"
|
||||
setlocal enabledelayedexpansion
|
||||
for /F "tokens=1,2,3 usebackq" %%A in (`type "%temp%\git_version.txt" 2^>nul`) do (
|
||||
if /i "%%A %%B" == "git version" (
|
||||
set "GIT_VERSION=%%C"
|
||||
%lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=!GIT_VERSION!"
|
||||
) else (
|
||||
%lib_console% show_error "git --version" returned an inproper version string!
|
||||
echo "'git --version' returned an inproper version string!"
|
||||
pause
|
||||
exit /b
|
||||
)
|
||||
)
|
||||
endlocal & set "GIT_VERSION_%~1=%GIT_VERSION%" & %lib_console% debug_output :read_version "Env Var - GIT_VERSION_%~1=%GIT_VERSION%"
|
||||
|
||||
endlocal & set "GIT_VERSION_%~1=%GIT_VERSION%"
|
||||
exit /b
|
||||
|
||||
:parse_version
|
||||
@ -89,11 +90,9 @@ exit /b
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
:: process a `x.x.x.xxxx.x` formatted string
|
||||
set "%~1_MAJOR="
|
||||
set "%~1_MINOR="
|
||||
set "%~1_PATCH="
|
||||
set "%~1_BUILD="
|
||||
%lib_console% debug_output :parse_version "ARGV[1]=%~1, ARGV[2]=%~2"
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
for /F "tokens=1-3* delims=.,-" %%A in ("%2") do (
|
||||
set "%~1_MAJOR=%%A"
|
||||
set "%~1_MINOR=%%B"
|
||||
@ -101,8 +100,17 @@ exit /b
|
||||
set "%~1_BUILD=%%D"
|
||||
)
|
||||
|
||||
REM endlocal & set "%~1_MAJOR=!%~1_MAJOR!" & set "%~1_MINOR=!%~1_MINOR!" & set "%~1_PATCH=!%~1_PATCH!" & set "%~1_BUILD=!%~1_BUILD!"
|
||||
if "%~1" == "VENDORED" (
|
||||
endlocal & set "%~1_MAJOR=%VENDORED_MAJOR%" & set "%~1_MINOR=%VENDORED_MINOR%" & set "%~1_PATCH=%VENDORED_PATCH%" & set "%~1_BUILD=%VENDORED_BUILD%"
|
||||
) else (
|
||||
endlocal & set "%~1_MAJOR=%USER_MAJOR%" & set "%~1_MINOR=%USER_MINOR%" & set "%~1_PATCH=%USER_PATCH%" & set "%~1_BUILD=%USER_BUILD%"
|
||||
)
|
||||
|
||||
exit /b
|
||||
|
||||
:endlocal_set_git_version
|
||||
|
||||
:validate_version
|
||||
:::===============================================================================
|
||||
:::validate_version - Validate semantic version string 'x.x.x.x'.
|
||||
@ -123,10 +131,16 @@ exit /b
|
||||
|
||||
:: 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
|
||||
|
||||
:: ... 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!"
|
||||
REM %lib_console% debug_output :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!"
|
||||
if "%~1" == "VENDORED" (
|
||||
%lib_console% debug_output :validate_version "Found Git Version for %~1: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%"
|
||||
) else (
|
||||
%lib_console% debug_output :validate_version "Found Git Version for %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%"
|
||||
)
|
||||
exit /b
|
||||
|
||||
:compare_versions
|
||||
@ -151,20 +165,112 @@ exit /b
|
||||
:: 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 %~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 %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%
|
||||
%lib_console% debug_output %~2: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%
|
||||
|
||||
if !%~1_MAJOR! GTR !%~2_MAJOR! (exit /b 1)
|
||||
if !%~1_MAJOR! LSS !%~2_MAJOR! (exit /b -1)
|
||||
setlocal enabledelayedexpansion
|
||||
if !%~1_MAJOR! GTR !%~2_MAJOR! (endlocal & exit /b 1)
|
||||
if !%~1_MAJOR! LSS !%~2_MAJOR! (endlocal & exit /b -1)
|
||||
|
||||
if !%~1_MINOR! GTR !%~2_MINOR! (exit /b 1)
|
||||
if !%~1_MINOR! LSS !%~2_MINOR! (exit /b -1)
|
||||
if !%~1_MINOR! GTR !%~2_MINOR! (endlocal & exit /b 1)
|
||||
if !%~1_MINOR! LSS !%~2_MINOR! (endlocal & exit /b -1)
|
||||
|
||||
if !%~1_PATCH! GTR !%~2_PATCH! (exit /b 1)
|
||||
if !%~1_PATCH! LSS !%~2_PATCH! (exit /b -1)
|
||||
if !%~1_PATCH! GTR !%~2_PATCH! (endlocal & exit /b 1)
|
||||
if !%~1_PATCH! LSS !%~2_PATCH! (endlocal & exit /b -1)
|
||||
|
||||
if !%~1_BUILD! GTR !%~2_BUILD! (exit /b 1)
|
||||
if !%~1_BUILD! LSS !%~2_BUILD! (exit /b -1)
|
||||
if !%~1_BUILD! GTR !%~2_BUILD! (endlocal & exit /b 1)
|
||||
if !%~1_BUILD! LSS !%~2_BUILD! (endlocal & exit /b -1)
|
||||
|
||||
:: looks like we have the same versions.
|
||||
exit /b 0
|
||||
endlocal & exit /b 0
|
||||
|
||||
:::===============================================================================
|
||||
:::is_git_shim
|
||||
:::.
|
||||
:::include:
|
||||
:::.
|
||||
::: call "$0"
|
||||
:::.
|
||||
:::usage:
|
||||
:::.
|
||||
::: %lib_git% is_git_shim [filepath]
|
||||
:::.
|
||||
:::required:
|
||||
:::.
|
||||
::: [filepath] <in>
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
:is_git_shim
|
||||
pushd "%~1"
|
||||
:: check if there's shim - and if yes follow the path
|
||||
setlocal enabledelayedexpansion
|
||||
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!"
|
||||
)
|
||||
endlocal & set "test_dir=%test_dir%"
|
||||
|
||||
popd
|
||||
exit /b
|
||||
|
||||
:::===============================================================================
|
||||
:::compare_git_versions
|
||||
:::.
|
||||
:::include:
|
||||
:::.
|
||||
::: call "$0"
|
||||
:::.
|
||||
:::usage:
|
||||
:::.
|
||||
::: %lib_git% compare_git_versions
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
:compare_git_versions
|
||||
if %errorlevel% geq 0 (
|
||||
:: compare the user git version against the vendored version
|
||||
%lib_git% compare_versions USER VENDORED
|
||||
|
||||
:: use the user provided git if its version is greater than, or equal to the vendored git
|
||||
if %errorlevel% geq 0 if exist "%test_dir:~0,-4%\cmd\git.exe" (
|
||||
set "GIT_INSTALL_ROOT=%test_dir:~0,-4%"
|
||||
set test_dir=
|
||||
) else if %errorlevel% geq 0 (
|
||||
set "GIT_INSTALL_ROOT=%test_dir%"
|
||||
set test_dir=
|
||||
) else (
|
||||
call :verbose_output Found old %GIT_VERSION_USER% in "%test_dir%", but not using...
|
||||
set test_dir=
|
||||
)
|
||||
) else (
|
||||
:: compare the user git version against the vendored version
|
||||
:: if the user provided git executable is not found
|
||||
if %errorlevel% equ -255 (
|
||||
call :verbose_output No git at "%git_executable%" found.
|
||||
set test_dir=
|
||||
)
|
||||
)
|
||||
exit /b
|
||||
|
||||
:::===============================================================================
|
||||
:::get_user_git_version - get the version information for the user provided git binary
|
||||
:::.
|
||||
:::include:
|
||||
:::.
|
||||
::: call "$0"
|
||||
:::.
|
||||
:::usage:
|
||||
:::.
|
||||
::: %lib_git% get_user_git_version
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
:get_user_git_version
|
||||
:: get the version information for the user provided git binary
|
||||
%lib_git% read_version USER "%test_dir%"
|
||||
%lib_git% validate_version USER %GIT_VERSION_USER%
|
||||
exit /b
|
||||
|
||||
|
151
vendor/lib/lib_path.cmd
vendored
151
vendor/lib/lib_path.cmd
vendored
@ -38,7 +38,6 @@ exit /b
|
||||
::: path <out> Sets the path env variable if required.
|
||||
:::-------------------------------------------------------------------------------
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
if "%~1" neq "" (
|
||||
set "add_path=%~1"
|
||||
) else (
|
||||
@ -52,50 +51,78 @@ exit /b
|
||||
set "position="
|
||||
)
|
||||
|
||||
dir "%add_path%" | findstr -i "\.COM \.EXE \.BAT \.CMD \.PS1 \.VBS" >NUL
|
||||
if "%ERRORLEVEL%" == "0" (
|
||||
set "add_to_path=%add_path%"
|
||||
) else (
|
||||
set "add_to_path="
|
||||
)
|
||||
|
||||
if "%fast_init%" == "1" (
|
||||
if "%position%" == "append" (
|
||||
set "PATH=%PATH%;%add_path%"
|
||||
set "PATH=%PATH%;%add_to_path%"
|
||||
) else (
|
||||
set "PATH=%add_path%;%PATH%"
|
||||
set "PATH=%add_to_path%;%PATH%"
|
||||
)
|
||||
goto :end_enhance_path
|
||||
) else if "add_to_path" equ "" (
|
||||
goto :end_enhance_path
|
||||
)
|
||||
|
||||
set found=0
|
||||
set "find_query=%add_path%"
|
||||
set "find_query=%add_to_path%"
|
||||
set "find_query=%find_query:\=\\%"
|
||||
set "find_query=%find_query: =\ %"
|
||||
set OLD_PATH=%PATH%
|
||||
|
||||
if "%CMDER_CONFIGURED%" == "1" (
|
||||
%lib_console% debug_output :enhance_path "Env Var - find_query=%find_query%"
|
||||
echo "%path%"|%WINDIR%\System32\findstr >nul /I /R ";%find_query%\"$"
|
||||
if "!ERRORLEVEL!" == "0" set found=1
|
||||
setlocal enabledelayedexpansion
|
||||
if "%found%" == "0" (
|
||||
echo "%path%"|%WINDIR%\System32\findstr >nul /I /R /C:";%find_query%;"
|
||||
call :set_found
|
||||
)
|
||||
%lib_console% debug_output :enhance_path "Env Var 1 - found=!found!"
|
||||
%lib_console% debug_output :enhance_path "Env Var INSIDE PATH %find_query% - found=%found%"
|
||||
|
||||
if "!found!" == "0" (
|
||||
if "%CMDER_CONFIGURED%" == "1" (
|
||||
echo "%path%"|%WINDIR%\System32\findstr >nul /i /r ";%find_query%;"
|
||||
if "!ERRORLEVEL!" == "0" set found=1
|
||||
)
|
||||
%lib_console% debug_output :enhance_path "Env Var 2 - found=!found!"
|
||||
if /i "%position%" == "append" (
|
||||
if "!found!" == "0" (
|
||||
echo "%path%"|%WINDIR%\System32\findstr >nul /I /R /C:";%find_query%\"$"
|
||||
call :set_found
|
||||
)
|
||||
%lib_console% debug_output :enhance_path "Env Var END PATH %find_query% - found=!found!"
|
||||
) else (
|
||||
if "!found!" == "0" (
|
||||
echo "%path%"|%WINDIR%\System32\findstr >nul /I /R /C:"^\"%find_query%;"
|
||||
call :set_found
|
||||
)
|
||||
%lib_console% debug_output :enhance_path "Env Var BEGIN PATH %find_query% - found=!found!"
|
||||
)
|
||||
endlocal & set found=%found%
|
||||
|
||||
if "%found%" == "0" (
|
||||
%lib_console% debug_output :enhance_path "BEFORE Env Var - PATH=!path!"
|
||||
if /i "%position%" == "append" (
|
||||
%lib_console% debug_output :enhance_path "Appending '%add_path%'"
|
||||
set "PATH=%PATH%;%add_path%"
|
||||
%lib_console% debug_output :enhance_path "Appending '%add_to_path%'"
|
||||
set "PATH=%PATH%;%add_to_path%"
|
||||
) else (
|
||||
%lib_console% debug_output :enhance_path "Prepending '%add_path%'"
|
||||
set "PATH=%add_path%;%PATH%"
|
||||
%lib_console% debug_output :enhance_path "Prepending '%add_to_path%'"
|
||||
set "PATH=%add_to_path%;%PATH%"
|
||||
)
|
||||
|
||||
%lib_console% debug_output :enhance_path "AFTER Env Var - PATH=!path!"
|
||||
set found=1
|
||||
)
|
||||
|
||||
:end_enhance_path
|
||||
endlocal & set "PATH=%PATH:;;=;%"
|
||||
set "PATH=%PATH:;;=;%"
|
||||
if NOT "%OLD_PATH%" == "%PATH%" (
|
||||
%lib_console% debug_output :enhance_path "END Env Var - PATH=%path%"
|
||||
%lib_console% debug_output :enhance_path "Env Var %find_query% - found=%found%"
|
||||
)
|
||||
set "position="
|
||||
exit /b
|
||||
|
||||
:set_found
|
||||
if "%ERRORLEVEL%" == "0" (
|
||||
set found=1
|
||||
)
|
||||
|
||||
exit /b
|
||||
|
||||
:enhance_path_recursive
|
||||
@ -125,7 +152,6 @@ exit /b
|
||||
:::.
|
||||
::: path <out> Sets the path env variable if required.
|
||||
:::-------------------------------------------------------------------------------
|
||||
setlocal enabledelayedexpansion
|
||||
if "%~1" neq "" (
|
||||
set "add_path=%~1"
|
||||
) else (
|
||||
@ -133,42 +159,65 @@ exit /b
|
||||
exit 1
|
||||
)
|
||||
|
||||
if "%~2" gtr "1" (
|
||||
set "max_depth=%~2"
|
||||
) else (
|
||||
set "max_depth=1"
|
||||
)
|
||||
set "depth=%~2"
|
||||
set "max_depth=%~3"
|
||||
|
||||
if "%~3" neq "" if /i "%~3" == "append" (
|
||||
set "position=%~3"
|
||||
if "%~4" neq "" if /i "%~4" == "append" (
|
||||
set "position=%~4"
|
||||
) else (
|
||||
set "position="
|
||||
)
|
||||
|
||||
if "%fast_init%" == "1" (
|
||||
call :enhance_path "%add_path%" %position%
|
||||
goto :end_enhance_path_recursive
|
||||
dir "%add_path%" | findstr -i "\.COM \.EXE \.BAT \.CMD \.PS1 \.VBS" >NUL
|
||||
if "%ERRORLEVEL%" == "0" (
|
||||
set "add_to_path=%add_path%"
|
||||
) else (
|
||||
set "add_to_path="
|
||||
)
|
||||
|
||||
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 - position=%position%"
|
||||
%lib_console% debug_output :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
||||
|
||||
if %max_depth% gtr !depth! (
|
||||
%lib_console% debug_output :enhance_path_recursive "Adding parent directory - '%add_path%'"
|
||||
call :enhance_path "%add_path%" %position%
|
||||
set /a "depth=!depth!+1"
|
||||
|
||||
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 "Found Subdirectory - '%%~fi'"
|
||||
call :enhance_path_recursive "%%~fi" %max_depth% %position%
|
||||
%lib_console% debug_output :enhance_path_recursive "Env Var AFTER- depth=!depth!"
|
||||
if "%fast_init%" == "1" (
|
||||
if "%add_to_path%" neq "" (
|
||||
call :enhance_path "%add_to_path%" %position%
|
||||
)
|
||||
)
|
||||
|
||||
:end_enhance_path_recursive
|
||||
endlocal & set "PATH=%PATH%"
|
||||
set "PATH=%PATH:;;=;%"
|
||||
if "%fast_init%" == "1" (
|
||||
exit /b
|
||||
)
|
||||
|
||||
%lib_console% debug_output :enhance_path_recursive "Env Var - add_path=%add_to_path%"
|
||||
%lib_console% debug_output :enhance_path_recursive "Env Var - position=%position%"
|
||||
%lib_console% debug_output :enhance_path_recursive "Env Var - depth=%depth%"
|
||||
%lib_console% debug_output :enhance_path_recursive "Env Var - max_depth=%max_depth%"
|
||||
|
||||
if %max_depth% gtr %depth% (
|
||||
if "%add_to_path%" neq "" (
|
||||
%lib_console% debug_output :enhance_path_recursive "Adding parent directory - '%add_to_path%'"
|
||||
call :enhance_path "%add_to_path%" %position%
|
||||
)
|
||||
call :set_depth
|
||||
call :loop_depth
|
||||
)
|
||||
|
||||
set "PATH=%PATH%"
|
||||
|
||||
exit /b
|
||||
|
||||
: set_depth
|
||||
set /a "depth=%depth%+1"
|
||||
exit /b
|
||||
|
||||
:loop_depth
|
||||
if %depth% == %max_depth% (
|
||||
exit /b
|
||||
)
|
||||
|
||||
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 "Found Subdirectory - '%%~fi'"
|
||||
call :enhance_path_recursive "%%~fi" %depth% %max_depth% %position%
|
||||
%lib_console% debug_output :enhance_path_recursive "Env Var AFTER- depth=%depth%"
|
||||
)
|
||||
exit /b
|
||||
|
||||
|
71
vendor/profile.ps1
vendored
71
vendor/profile.ps1
vendored
@ -32,53 +32,13 @@ $moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorActi
|
||||
# Add Cmder modules directory to the autoload path.
|
||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||
|
||||
$CmderFunctions = Join-Path $CmderModulePath "Cmder.ps1"
|
||||
. $CmderFunctions
|
||||
|
||||
if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderModulePath) ){
|
||||
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
||||
}
|
||||
|
||||
function Configure-Git($GIT_INSTALL_ROOT){
|
||||
$env:Path += $(";" + $GIT_INSTALL_ROOT + "\cmd")
|
||||
|
||||
# Add "$GIT_INSTALL_ROOT\usr\bin" to the path if exists and not done already
|
||||
$GIT_INSTALL_ROOT_ESC=$GIT_INSTALL_ROOT.replace('\','\\')
|
||||
if ((test-path "$GIT_INSTALL_ROOT\usr\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\usr\\bin")) {
|
||||
$env:path = "$env:path;$GIT_INSTALL_ROOT\usr\bin"
|
||||
}
|
||||
|
||||
# Add "$GIT_INSTALL_ROOT\mingw[32|64]\bin" to the path if exists and not done already
|
||||
if ((test-path "$GIT_INSTALL_ROOT\mingw32\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\mingw32\\bin")) {
|
||||
$env:path = "$env:path;$GIT_INSTALL_ROOT\mingw32\bin"
|
||||
} elseif ((test-path "$GIT_INSTALL_ROOT\mingw64\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\mingw64\\bin")) {
|
||||
$env:path = "$env:path;$GIT_INSTALL_ROOT\mingw64\bin"
|
||||
}
|
||||
}
|
||||
|
||||
$gitLoaded = $false
|
||||
function Import-Git($Loaded){
|
||||
if($Loaded) { return }
|
||||
$GitModule = Get-Module -Name Posh-Git -ListAvailable
|
||||
if($GitModule | select version | where version -le ([version]"0.6.1.20160330")){
|
||||
Import-Module Posh-Git > $null
|
||||
}
|
||||
if(-not ($GitModule) ) {
|
||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
||||
}
|
||||
# Make sure we only run once by alawys returning true
|
||||
return $true
|
||||
}
|
||||
|
||||
function checkGit($Path) {
|
||||
if (Test-Path -Path (Join-Path $Path '.git') ) {
|
||||
$gitLoaded = Import-Git $gitLoaded
|
||||
Write-VcsStatus
|
||||
return
|
||||
}
|
||||
$SplitPath = split-path $path
|
||||
if ($SplitPath) {
|
||||
checkGit($SplitPath)
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
# Check if git is on PATH, i.e. Git already installed on system
|
||||
Get-command -Name "git" -ErrorAction Stop >$null
|
||||
@ -96,6 +56,20 @@ if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||
Set-PSReadlineOption -ExtraPromptLineCount 1
|
||||
}
|
||||
|
||||
# Pre assign default prompt hooks so the first run of cmder gets a working prompt.
|
||||
$env:gitLoaded = $false
|
||||
[ScriptBlock]$PrePrompt = {}
|
||||
[ScriptBlock]$PostPrompt = {}
|
||||
[ScriptBlock]$CmderPrompt = {
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
Write-Host -NoNewline "$([char]0x200B)"
|
||||
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
||||
if (get-command git -erroraction silentlycontinue) {
|
||||
checkGit($pwd.ProviderPath)
|
||||
}
|
||||
Microsoft.PowerShell.Utility\Write-Host "`nλ " -NoNewLine -ForegroundColor "DarkGray"
|
||||
}
|
||||
|
||||
# Enhance Path
|
||||
$env:Path = "$Env:CMDER_ROOT\bin;$Env:CMDER_ROOT\vendor\bin;$env:Path;$Env:CMDER_ROOT"
|
||||
|
||||
@ -172,16 +146,6 @@ if (! (Test-Path $CmderUserProfilePath) ) {
|
||||
# This allows users to configure the prompt in their user_profile.ps1 or config\profile.d\*.ps1
|
||||
if ( $(get-command prompt).Definition -match 'PS \$\(\$executionContext.SessionState.Path.CurrentLocation\)\$\(' -and `
|
||||
$(get-command prompt).Definition -match '\(\$nestedPromptLevel \+ 1\)\) ";') {
|
||||
# Pre assign the hooks so the first run of cmder gets a working prompt.
|
||||
[ScriptBlock]$PrePrompt = {}
|
||||
[ScriptBlock]$PostPrompt = {}
|
||||
[ScriptBlock]$CmderPrompt = {
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
||||
if (get-command git -erroraction silentlycontinue) {
|
||||
checkGit($pwd.ProviderPath)
|
||||
}
|
||||
}
|
||||
|
||||
<#
|
||||
This scriptblock runs every time the prompt is returned.
|
||||
@ -193,7 +157,6 @@ if ( $(get-command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||
PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||
CmderPrompt
|
||||
Microsoft.PowerShell.Utility\Write-Host "`nλ " -NoNewLine -ForegroundColor "DarkGray"
|
||||
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||
$global:LASTEXITCODE = $realLASTEXITCODE
|
||||
return " "
|
||||
|
59
vendor/psmodules/Cmder.ps1
vendored
Normal file
59
vendor/psmodules/Cmder.ps1
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
function Configure-Git($GIT_INSTALL_ROOT){
|
||||
$env:Path += $(";" + $GIT_INSTALL_ROOT + "\cmd")
|
||||
|
||||
# Add "$GIT_INSTALL_ROOT\usr\bin" to the path if exists and not done already
|
||||
$GIT_INSTALL_ROOT_ESC=$GIT_INSTALL_ROOT.replace('\','\\')
|
||||
if ((test-path "$GIT_INSTALL_ROOT\usr\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\usr\\bin")) {
|
||||
$env:path = "$env:path;$GIT_INSTALL_ROOT\usr\bin"
|
||||
}
|
||||
|
||||
# Add "$GIT_INSTALL_ROOT\mingw[32|64]\bin" to the path if exists and not done already
|
||||
if ((test-path "$GIT_INSTALL_ROOT\mingw32\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\mingw32\\bin")) {
|
||||
$env:path = "$env:path;$GIT_INSTALL_ROOT\mingw32\bin"
|
||||
} elseif ((test-path "$GIT_INSTALL_ROOT\mingw64\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\mingw64\\bin")) {
|
||||
$env:path = "$env:path;$GIT_INSTALL_ROOT\mingw64\bin"
|
||||
}
|
||||
}
|
||||
|
||||
function Import-Git(){
|
||||
|
||||
$GitModule = Get-Module -Name Posh-Git -ListAvailable
|
||||
if($GitModule | select version | where version -le ([version]"0.6.1.20160330")){
|
||||
Import-Module Posh-Git > $null
|
||||
}
|
||||
if(-not ($GitModule) ) {
|
||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
||||
}
|
||||
# Make sure we only run once by alawys returning true
|
||||
return $true
|
||||
}
|
||||
|
||||
function checkGit($Path) {
|
||||
if (Test-Path -Path (Join-Path $Path '.git') ) {
|
||||
if($env:gitLoaded -eq 'false') {
|
||||
$env:gitLoaded = Import-Git
|
||||
}
|
||||
|
||||
if (getGitStatusSetting -eq $true) {
|
||||
Write-VcsStatus
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
$SplitPath = split-path $path
|
||||
if ($SplitPath) {
|
||||
checkGit($SplitPath)
|
||||
}
|
||||
}
|
||||
|
||||
function getGitStatusSetting() {
|
||||
$gitStatus = (git --no-pager config -l) | out-string
|
||||
|
||||
ForEach ($line in $($gitStatus -split "`r`n")) {
|
||||
if ($line -match 'cmder.status=false' -or $line -match 'cmder.psstatus=false') {
|
||||
return $false
|
||||
}
|
||||
}
|
||||
|
||||
return $true
|
||||
}
|
12
vendor/sources.json
vendored
12
vendor/sources.json
vendored
@ -1,8 +1,8 @@
|
||||
[
|
||||
{
|
||||
"name": "git-for-windows",
|
||||
"version": "v2.21.0.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.21.0.windows.1/PortableGit-2.21.0-64-bit.7z.exe"
|
||||
"version": "v2.26.2.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.26.2.windows.1/PortableGit-2.26.2-64-bit.7z.exe"
|
||||
},
|
||||
{
|
||||
"name": "clink",
|
||||
@ -11,12 +11,12 @@
|
||||
},
|
||||
{
|
||||
"name": "conemu-maximus5",
|
||||
"version": "180626",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v18.06.26/ConEmuPack.180626.7z"
|
||||
"version": "191012",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v19.10.12/ConEmuPack.191012.7z"
|
||||
},
|
||||
{
|
||||
"name": "clink-completions",
|
||||
"version": "0.3.3",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.3.zip"
|
||||
"version": "0.3.5",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.5.zip"
|
||||
}
|
||||
]
|
||||
|
Reference in New Issue
Block a user