mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-17 04:59:09 +08:00
Compare commits
92 Commits
Author | SHA1 | Date | |
---|---|---|---|
711fe2895e | |||
7cc1c77225 | |||
f0c4e85ac8 | |||
ea0145448c | |||
0281ee7dda | |||
f997da60e3 | |||
34df88aa76 | |||
c51c3c55a8 | |||
0e8c556e7d | |||
357e51acd1 | |||
66f9d582ec | |||
83a95d1412 | |||
a1417f6cf9 | |||
8ea4bbb11c | |||
f39aade500 | |||
004535e0bc | |||
6ae2f97f52 | |||
0326f2e3a8 | |||
9f065a63e8 | |||
b6316eb447 | |||
59dfa9c46f | |||
a4cb56b083 | |||
ad6979d25f | |||
addcefdd47 | |||
0637d6b3e9 | |||
f72c285d8b | |||
f24266014f | |||
c27cedc9b3 | |||
4c85e8b2f1 | |||
c75c02c9ce | |||
9de284123c | |||
93715461e6 | |||
fc6cf025be | |||
f809af1eec | |||
5b071d8d59 | |||
6d1e2d6e8b | |||
2ef8c967d2 | |||
b885b4e235 | |||
f717f5031b | |||
710cc3ecc3 | |||
0fc6b6571e | |||
48f50568b0 | |||
b8760e4d04 | |||
ae7209f254 | |||
9d4da63184 | |||
62a6311b6d | |||
b40510f3a0 | |||
e7a6e64473 | |||
f6c2657b23 | |||
91aabe75af | |||
946f929eaf | |||
8a870c093a | |||
bfe526604d | |||
79e505acf8 | |||
9a2e22cb6d | |||
b2add2b966 | |||
74202a8719 | |||
5305ebd4a6 | |||
4e22ad93f4 | |||
6730f864b1 | |||
56b04fc9ce | |||
55ff611095 | |||
aebe37bd28 | |||
413fb2f1ac | |||
73ad62eaa2 | |||
4fab4cc6e4 | |||
a41fad80d5 | |||
c9acb13d0b | |||
03d0f913ea | |||
a5c98d4fe9 | |||
9df8f1a92a | |||
c262934822 | |||
f1665ddd7d | |||
36f4ce0e3c | |||
59941f5dfa | |||
6d79ed5eb2 | |||
99a7445fcb | |||
d6b5fe8e1d | |||
11fb1b3a50 | |||
810a3da955 | |||
e8df3ef247 | |||
8d6ce3e4ac | |||
9793ca1ed9 | |||
d9b2c729f9 | |||
8fa351810a | |||
3752b95218 | |||
e0cb86d738 | |||
0ef76ee2d3 | |||
8a2ace9fc2 | |||
37c7b1dc02 | |||
ad755dc7f9 | |||
6027ac31c4 |
2
.gitignore
vendored
2
.gitignore
vendored
@ -11,9 +11,11 @@ vendor/*/*
|
||||
!vendor/lib/*
|
||||
!vendor/*
|
||||
!vendor/psmodules/*
|
||||
vendor/git-for-windows
|
||||
|
||||
config/*
|
||||
!config/Readme.md
|
||||
!config/profile.d/README.md
|
||||
|
||||
config_user/*
|
||||
|
||||
|
35
CHANGELOG.md
35
CHANGELOG.md
@ -1,5 +1,40 @@
|
||||
# Change Log
|
||||
|
||||
## [1.3.19](https://github.com/cmderdev/cmder/tree/v1.3.19) (2022-01-15)
|
||||
|
||||
### Changes
|
||||
|
||||
- Update Git for Windows to 2.34.0
|
||||
- Update to Clink 1.2.46
|
||||
- Update to stable Conemu 210912
|
||||
- Do not rely on having a `%cmder_root%\config\cmder_prompt_config.lua`
|
||||
|
||||
### Adds
|
||||
|
||||
- Powershell Git version Discovery - See #2373 for the full proposal.
|
||||
- Find user installed Git on Path
|
||||
- If found
|
||||
- if newer than Cmder embedded Git
|
||||
- Use it's existing Path config and completely ignore embedded Git.
|
||||
- Else if Cmder embedded Git exists and is newer
|
||||
- Match User installed Git path config using Cmder embedded Git folders.
|
||||
- Else if Cmder embedded Git exists
|
||||
- Add Cmder embedded Git folders to the path.
|
||||
- `$env:cmder_root\vendor\git-for-windows\cmd;$env:path`
|
||||
- `$env:path;$env:cmder_root\vendor\git-for-windows\usr\bin`
|
||||
- `$env:path;$env:cmder_root\vendor\git-for-windows\mingw64\bin`
|
||||
- Configurable prompt for `cmd.exe` sessions. See `%cmder_root%\config\cmder_prompt_config.lua`
|
||||
- Configurable colors
|
||||
- Option to change `λ` to another character.
|
||||
- Option to add `[user]@[host]` to the prompt
|
||||
- Option to use of `~` to represent `$HOME` folder.
|
||||
- Option to use folder name vs. full working directory path in prompt.
|
||||
- Option to use single line prompt.
|
||||
|
||||
### Fixes
|
||||
|
||||
- Git prompt opt-out works better with additional changes to `clink-completions`
|
||||
|
||||
## [1.3.18](https://github.com/cmderdev/cmder/tree/v1.3.18) (2021-3-26)
|
||||
|
||||
### Changes
|
||||
|
26
README.md
26
README.md
@ -60,7 +60,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
||||
| `/SINGLE` | Start Cmder in single mode. |
|
||||
| `/START [start_path]` | Folder path to start in. |
|
||||
| `/TASK [task_name]` | Task to start after launch. |
|
||||
| `/X [ConEmu extras pars]` | Forwads parameters to ConEmu |
|
||||
| `/X [ConEmu extras pars]` | Forwards parameters to ConEmu |
|
||||
|
||||
## Context Menu Integration
|
||||
|
||||
@ -136,6 +136,26 @@ echo source \$CMDER_ROOT/vendor/mintty-colors-solarized/mintty-solarized-dark.sh
|
||||
|
||||
You may find some Monokai color schemes for mintty to match Cmder [here](https://github.com/oumu/mintty-color-schemes/blob/master/base16-monokai-mod.minttyrc).
|
||||
|
||||
### Changing Cmder Default `cmd.exe` Prompt Config File
|
||||
|
||||
The default Cmder shell `cmd::Cmder` prompt is customized using `Clink` and is configured by editing a config file that exists in one of two locations:
|
||||
|
||||
- Single User Portable Config `%CMDER_ROOT%\config\cmder_prompt_config.lua`
|
||||
- Shared Cmder install with Non-Portable Individual User Config `%CMDER_USER_CONFIG%\cmder_prompt_config.lua`
|
||||
|
||||
If your Cmder setup does not have this file create it from `%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default`
|
||||
|
||||
Customizations include:
|
||||
|
||||
- Colors.
|
||||
- Single/Multi-line.
|
||||
- Full path/Folder only.
|
||||
- `[user]@[host]` to the beginning of the prompt.
|
||||
- `~` for home directory.
|
||||
- `λ` symbol
|
||||
|
||||
Documentation is in the file for each setting.
|
||||
|
||||
### Changing Cmder Default `cmd.exe` Shell Startup Behaviour Using Task Arguments
|
||||
|
||||
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
||||
@ -165,7 +185,7 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/
|
||||
| `/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` |
|
||||
| `/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 |
|
||||
| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more usage. | not set |
|
||||
|
||||
### Cmder Shell User Config
|
||||
Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
||||
@ -249,7 +269,7 @@ If you want to run SSH agent on startup, include the line `@call "%GIT_INSTALL_R
|
||||
|
||||
Cmder is by default shipped with a vendored Git installation. On each instance of launching Cmder, an attempt is made to locate any other user provided Git binaries. Upon finding a `git.exe` binary, Cmder further compares its version against the vendored one _by executing_ it. The vendored `git.exe` binary is _only_ used when it is more recent than the user-installed one.
|
||||
|
||||
You may use your favorite version of Git by including its path in the `%PATH%` enviroment variable. Moreover, the **Mini** edition of Cmder (found on the [downloads page](https://github.com/cmderdev/cmder/releases)) excludes any vendored Git binaries.
|
||||
You may use your favorite version of Git by including its path in the `%PATH%` environment variable. Moreover, the **Mini** edition of Cmder (found on the [downloads page](https://github.com/cmderdev/cmder/releases)) excludes any vendored Git binaries.
|
||||
|
||||
### Using external Cygwin/Babun, MSys2, WSL, or Git for Windows SDK with Cmder.
|
||||
|
||||
|
3
config/profile.d/README.md
Normal file
3
config/profile.d/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
## Profile.d Folder
|
||||
|
||||
* Files in this folder named `*.{sh|cmd|ps1}`: Will be executed by the appropriate shell when starting the shell.
|
@ -250,7 +250,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
||||
{
|
||||
MessageBox(NULL,
|
||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
||||
? L"Failed to copy conig/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||
? L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml! Access Denied."
|
||||
: L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||
exit(1);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ function Extract-Archive($source, $target) {
|
||||
Write-Verbose $("Extracting Archive '$cmder_root\vendor\" + $source.replace('/','\') + " to '$cmder_root\vendor\$target'")
|
||||
Invoke-Expression "7z x -y -o`"$($target)`" `"$source`" > `$null"
|
||||
if ($lastexitcode -ne 0) {
|
||||
Write-Error "Extracting of $source failied"
|
||||
Write-Error "Extracting of $source failed"
|
||||
}
|
||||
Remove-Item $source
|
||||
}
|
||||
@ -41,7 +41,7 @@ function Create-Archive($source, $target, $params) {
|
||||
Write-Verbose "Running: $command"
|
||||
Invoke-Expression $command
|
||||
if ($lastexitcode -ne 0) {
|
||||
Write-Error "Compressing $source failied"
|
||||
Write-Error "Compressing $source failed"
|
||||
}
|
||||
}
|
||||
|
||||
|
4
vendor/bin/alias.cmd
vendored
4
vendor/bin/alias.cmd
vendored
@ -140,9 +140,9 @@ echo. in he alias is desired. Variables in aliases surrounded by double
|
||||
echo. quotes only require '^^%%' vs '^^^^^^^^%%'
|
||||
echo. $* - allows the alias to assume all the parameters of the supplied
|
||||
echo. command.
|
||||
echo. $1-$9 - Allows you to seperate parameter by number, much like %%1 in
|
||||
echo. $1-$9 - Allows you to separate parameter by number, much like %%1 in
|
||||
echo. batch.
|
||||
echo. $T - Command seperator, allowing you to string several commands
|
||||
echo. $T - Command separator, allowing you to string several commands
|
||||
echo. together into one alias.
|
||||
echo.
|
||||
echo. For more information, read DOSKEY /?
|
||||
|
10
vendor/bin/cexec.cmd
vendored
10
vendor/bin/cexec.cmd
vendored
@ -84,29 +84,29 @@ echo Usage:
|
||||
echo.
|
||||
echo cexec /setPath [NOT] flagName command/program [parameters]
|
||||
echo.
|
||||
echo /setPath Generate a global varibles %%ccall%% and %%cexec%% for
|
||||
echo /setPath Generate a global variables %%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 /[flagName] Specifies which flag name is to detect. It's recommended
|
||||
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 argument name is detected. It's recommended 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 It's recommended 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 CExec evaluates the environment variable "CMDER_USER_FLAGS" and conditionally
|
||||
echo caries out actions based on flags that are passed.
|
||||
echo.
|
||||
echo Case 1:
|
||||
|
50
vendor/bin/cmder_diag.cmd
vendored
50
vendor/bin/cmder_diag.cmd
vendored
@ -1,5 +1,29 @@
|
||||
@echo off
|
||||
|
||||
(echo.
|
||||
echo ------------------------------------
|
||||
echo set
|
||||
echo ------------------------------------
|
||||
set
|
||||
|
||||
echo.
|
||||
echo ------------------------------------
|
||||
echo where git
|
||||
echo ------------------------------------
|
||||
where git
|
||||
|
||||
echo.
|
||||
echo ------------------------------------
|
||||
echo where clink
|
||||
echo ------------------------------------
|
||||
where clink
|
||||
|
||||
echo.
|
||||
echo ------------------------------------
|
||||
echo systeminfo
|
||||
echo ------------------------------------
|
||||
systeminfo
|
||||
|
||||
echo ------------------------------------
|
||||
echo dir "%cmder_root%"
|
||||
echo ------------------------------------
|
||||
@ -23,25 +47,15 @@ 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 systeminfo
|
||||
echo ------------------------------------
|
||||
systeminfo
|
||||
|
||||
echo.
|
||||
echo ------------------------------------
|
||||
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
||||
echo ------------------------------------
|
||||
) > "%temp%\cmder_diag_cmd.log"
|
||||
|
||||
type "%temp%\cmder_diag_cmd.log"
|
||||
|
||||
echo.
|
||||
echo Above output was saved in "%temp%\cmder_diag_cmd.log"
|
||||
|
||||
|
||||
|
95
vendor/bin/cmder_diag.ps1
vendored
95
vendor/bin/cmder_diag.ps1
vendored
@ -1,45 +1,64 @@
|
||||
write-host ------------------------------------
|
||||
write-host get-childitem "$env:CMDER_ROOT"
|
||||
write-host ------------------------------------
|
||||
get-childitem "$env:CMDER_ROOT"
|
||||
if (test-path $env:temp\cmder_diag_ps.log) {
|
||||
remove-item $env:temp\cmder_diag_ps.log
|
||||
}
|
||||
|
||||
write-host ''
|
||||
write-host ------------------------------------
|
||||
write-host get-childitem "$env:CMDER_ROOT/vendor"
|
||||
write-host ------------------------------------
|
||||
get-childitem "$env:CMDER_ROOT/vendor"
|
||||
$cmder_diag = {
|
||||
""
|
||||
"------------------------------------"
|
||||
"get-childitem env:"
|
||||
"------------------------------------"
|
||||
get-childitem env: | ft -autosize -wrap 2>&1
|
||||
|
||||
write-host ''
|
||||
write-host ------------------------------------
|
||||
write-host get-childitem -s "$env:CMDER_ROOT/bin"
|
||||
write-host ------------------------------------
|
||||
get-childitem -s "$env:CMDER_ROOT/bin"
|
||||
""
|
||||
"------------------------------------"
|
||||
"get-command git -all -ErrorAction SilentlyContinue"
|
||||
"------------------------------------"
|
||||
get-command git -all -ErrorAction SilentlyContinue
|
||||
|
||||
write-host ''
|
||||
write-host ------------------------------------
|
||||
write-host get-childitem -s "$env:CMDER_ROOT/config"
|
||||
write-host ------------------------------------
|
||||
get-childitem -s "$env:CMDER_ROOT/config"
|
||||
""
|
||||
"------------------------------------"
|
||||
"get-command clink -all -ErrorAction SilentlyContinue"
|
||||
"------------------------------------"
|
||||
get-command clink -all -ErrorAction SilentlyContinue
|
||||
|
||||
write-host ''
|
||||
write-host ------------------------------------
|
||||
write-host get-childitem env:
|
||||
write-host ------------------------------------
|
||||
get-childitem env: |ft -autosize -wrap
|
||||
""
|
||||
"------------------------------------"
|
||||
"systeminfo"
|
||||
"------------------------------------"
|
||||
systeminfo 2>&1
|
||||
|
||||
write-host ''
|
||||
write-host ------------------------------------
|
||||
write-host get-command git
|
||||
write-host ------------------------------------
|
||||
get-command git
|
||||
"------------------------------------"
|
||||
"get-childitem '$env:CMDER_ROOT'"
|
||||
"------------------------------------"
|
||||
get-childitem "$env:CMDER_ROOT" |ft LastWriteTime,mode,length,FullName
|
||||
|
||||
write-host ''
|
||||
write-host ------------------------------------
|
||||
write-host systeminfo
|
||||
write-host ------------------------------------
|
||||
systeminfo
|
||||
""
|
||||
"------------------------------------"
|
||||
"get-childitem '$env:CMDER_ROOT/vendor'"
|
||||
"------------------------------------"
|
||||
get-childitem "$env:CMDER_ROOT/vendor" |ft LastWriteTime,mode,length,FullName
|
||||
|
||||
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 ------------------------------------
|
||||
""
|
||||
"------------------------------------"
|
||||
"get-childitem -s '$env:CMDER_ROOT/bin'"
|
||||
"------------------------------------"
|
||||
get-childitem -s "$env:CMDER_ROOT/bin" |ft LastWriteTime,mode,length,FullName
|
||||
|
||||
""
|
||||
"------------------------------------"
|
||||
"get-childitem -s '$env:CMDER_ROOT/config'"
|
||||
"------------------------------------"
|
||||
get-childitem -s "$env:CMDER_ROOT/config" |ft LastWriteTime,mode,length,FullName
|
||||
|
||||
""
|
||||
"------------------------------------"
|
||||
"Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!"
|
||||
"------------------------------------"
|
||||
}
|
||||
|
||||
& $cmder_diag | out-file -filePath $env:temp\cmder_diag_ps.log
|
||||
|
||||
get-content "$env:temp\cmder_diag_ps.log"
|
||||
|
||||
write-host ""
|
||||
write-host Above output was saved in "$env:temp\cmder_diag_ps.log"
|
||||
|
66
vendor/bin/cmder_diag.sh
vendored
66
vendor/bin/cmder_diag.sh
vendored
@ -1,45 +1,61 @@
|
||||
echo ------------------------------------
|
||||
echo ls -la "$CMDER_ROOT"
|
||||
echo ------------------------------------
|
||||
ls -la "$CMDER_ROOT"
|
||||
#!/usr/bin/env bash
|
||||
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo ls -la "$CMDER_ROOT/vendor"
|
||||
echo ------------------------------------
|
||||
ls -la "$CMDER_ROOT/vendor"
|
||||
[[ -f "$TEMP/cmder_diag_sh.log" ]] && rm -f "$TEMP/cmder_diag_sh.log"
|
||||
|
||||
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 ------------------------------------
|
||||
echo env
|
||||
echo ------------------------------------
|
||||
env
|
||||
env 2>&1
|
||||
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo which git
|
||||
echo ------------------------------------
|
||||
which git 2>&1
|
||||
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo which clink
|
||||
echo ------------------------------------
|
||||
which clink 2>&1
|
||||
|
||||
which git
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo systeminfo
|
||||
echo ------------------------------------
|
||||
systeminfo
|
||||
systeminfo 2>&1
|
||||
|
||||
echo ------------------------------------
|
||||
echo ls -la "$CMDER_ROOT"
|
||||
echo ------------------------------------
|
||||
ls -la "$CMDER_ROOT" 2>&1
|
||||
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo ls -la "$CMDER_ROOT/vendor"
|
||||
echo ------------------------------------
|
||||
ls -la "$CMDER_ROOT/vendor" 2>&1
|
||||
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo ls -la /s "$CMDER_ROOT/bin"
|
||||
echo ------------------------------------
|
||||
ls -laR /s "$CMDER_ROOT/bin" 2>&1
|
||||
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo ls -la /s "$CMDER_ROOT/config"
|
||||
echo ------------------------------------
|
||||
ls -laR /s "$CMDER_ROOT/config" 2>&1
|
||||
|
||||
echo ''
|
||||
echo ------------------------------------
|
||||
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
||||
echo ------------------------------------
|
||||
) > "$TEMP/cmder_diag_sh.log"
|
||||
|
||||
cat "$TEMP/cmder_diag_sh.log"
|
||||
|
||||
echo ''
|
||||
echo Above output was saved in "$TEMP/cmder_diag_sh.log"
|
||||
|
2
vendor/bin/vscode_init.cmd
vendored
2
vendor/bin/vscode_init.cmd
vendored
@ -1,6 +1,6 @@
|
||||
@echo off
|
||||
|
||||
:: Find root dir
|
||||
rem Find root dir
|
||||
|
||||
if not defined CMDER_ROOT (
|
||||
for /f "delims=" %%i in ("%~dp0\..\..") do (
|
||||
|
92
vendor/bin/vscode_init_args.cmd.default
vendored
92
vendor/bin/vscode_init_args.cmd.default
vendored
@ -1,58 +1,58 @@
|
||||
@echo off
|
||||
|
||||
:: Below are the default Cmder session settings:
|
||||
::
|
||||
:: See "%CMDER_ROOT%\README.md" for details on these settings.
|
||||
::
|
||||
:: `Cmder.exe` Arguments:
|
||||
:: ----------------------
|
||||
::
|
||||
:: `/c [cmder_user_cfg_root]
|
||||
:: set cmder_user_bin=[cmder_user_cfg_root]\bin
|
||||
:: set cmder_user_config=[cmder_user_cfg_root]\config
|
||||
::
|
||||
:: `init.bat` Arguments
|
||||
:: --------------------
|
||||
::
|
||||
:: `/d`
|
||||
:: debug_output=0
|
||||
::
|
||||
:: `/v`
|
||||
:: verbose_output=0
|
||||
::
|
||||
:: `/f`
|
||||
:: fast_init=0
|
||||
::
|
||||
:: `/nix_tools`
|
||||
:: nix_tools=1
|
||||
::
|
||||
:: `/t`
|
||||
:: time_init=0
|
||||
::
|
||||
:: `/max_depth`
|
||||
:: max_depth=1
|
||||
::
|
||||
:: `/user_aliases`
|
||||
:: user_aliases=
|
||||
::
|
||||
:: `/git_install_root`
|
||||
:: GIT_INSTALL_ROOT=
|
||||
::
|
||||
:: `/home`
|
||||
:: HOME=
|
||||
::
|
||||
:: `/svn_ssh`
|
||||
:: SVN_SSH=
|
||||
rem Below are the default Cmder session settings:
|
||||
rem
|
||||
rem See "%CMDER_ROOT%\README.md" for details on these settings.
|
||||
rem
|
||||
rem `Cmder.exe` Arguments:
|
||||
rem ----------------------
|
||||
rem
|
||||
rem `/c [cmder_user_cfg_root]
|
||||
rem set cmder_user_bin=[cmder_user_cfg_root]\bin
|
||||
rem set cmder_user_config=[cmder_user_cfg_root]\config
|
||||
rem
|
||||
rem `init.bat` Arguments
|
||||
rem --------------------
|
||||
rem
|
||||
rem `/d`
|
||||
rem debug_output=0
|
||||
rem
|
||||
rem `/v`
|
||||
rem verbose_output=0
|
||||
rem
|
||||
rem `/f`
|
||||
rem fast_init=0
|
||||
rem
|
||||
rem `/nix_tools`
|
||||
rem nix_tools=1
|
||||
rem
|
||||
rem `/t`
|
||||
rem time_init=0
|
||||
rem
|
||||
rem `/max_depth`
|
||||
rem max_depth=1
|
||||
rem
|
||||
rem `/user_aliases`
|
||||
rem user_aliases=
|
||||
rem
|
||||
rem `/git_install_root`
|
||||
rem GIT_INSTALL_ROOT=
|
||||
rem
|
||||
rem `/home`
|
||||
rem HOME=
|
||||
rem
|
||||
rem `/svn_ssh`
|
||||
rem SVN_SSH=
|
||||
|
||||
echo Applying Cmder VSCode settings from '%~0'...
|
||||
|
||||
if defined CMDER_CONFIGURED (
|
||||
:: Set Cmder settings here for when VSCode is launched inside Cmder.
|
||||
rem Set Cmder settings here for when VSCode is launched inside Cmder.
|
||||
set verbose_output=1
|
||||
) else (
|
||||
:: Set Cmder settings here for when VSCode is launched from outside Cmder.
|
||||
rem Set Cmder settings here for when VSCode is launched from outside Cmder.
|
||||
set verbose_output=1
|
||||
)
|
||||
|
||||
:: Set all required Cmder VSCode terminal environment settings above this line.
|
||||
rem Set all required Cmder VSCode terminal environment settings above this line.
|
||||
echo Applying Cmder VSCode settings is complete!
|
||||
|
286
vendor/clink.lua
vendored
286
vendor/clink.lua
vendored
@ -13,6 +13,38 @@ dofile(clink_lua_file)
|
||||
|
||||
-- now add our own things...
|
||||
|
||||
|
||||
local function get_uah_color()
|
||||
return uah_color or "\x1b[1;33;40m" -- Green = uah = [user]@[hostname]
|
||||
end
|
||||
|
||||
local function get_cwd_color()
|
||||
return cwd_color or "\x1b[1;32;40m" -- Yellow cwd = Current Working Directory
|
||||
end
|
||||
|
||||
local function get_lamb_color()
|
||||
return lamb_color or "\x1b[1;30;40m" -- Light Grey = Lambda Color
|
||||
end
|
||||
|
||||
|
||||
local function get_clean_color()
|
||||
return clean_color or "\x1b[1;37;40m"
|
||||
end
|
||||
|
||||
|
||||
local function get_dirty_color()
|
||||
return dirty_color or "\x1b[33;3m"
|
||||
end
|
||||
|
||||
|
||||
local function get_conflict_color()
|
||||
return conflict_color or "\x1b[31;1m"
|
||||
end
|
||||
|
||||
local function get_unknown_color()
|
||||
return unknown_color or "\x1b[37;1m"
|
||||
end
|
||||
|
||||
---
|
||||
-- Makes a string safe to use as the replacement in string.gsub
|
||||
---
|
||||
@ -21,6 +53,42 @@ local function verbatim(s)
|
||||
return s
|
||||
end
|
||||
|
||||
-- Extracts only the folder name from the input Path
|
||||
-- Ex: Input C:\Windows\System32 returns System32
|
||||
---
|
||||
local function get_folder_name(path)
|
||||
local reversePath = string.reverse(path)
|
||||
local slashIndex = string.find(reversePath, "\\")
|
||||
return string.sub(path, string.len(path) - slashIndex + 2)
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Forward/backward compatibility for Clink asynchronous prompt filtering.
|
||||
-- With Clink v1.2.10 and higher this lets git status run in the background and
|
||||
-- refresh the prompt when it finishes, to eliminate waits in large git repos.
|
||||
---
|
||||
local io_popenyield
|
||||
local clink_promptcoroutine
|
||||
local cached_info = {}
|
||||
if clink.promptcoroutine and io.popenyield then
|
||||
io_popenyield = io.popenyield
|
||||
clink_promptcoroutine = clink.promptcoroutine
|
||||
else
|
||||
io_popenyield = io.popen
|
||||
clink_promptcoroutine = function (func)
|
||||
return func(false)
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
---
|
||||
-- Global variable so other Lua scripts can detect whether they're in a Cmder
|
||||
-- shell session.
|
||||
---
|
||||
CMDER_SESSION = true
|
||||
|
||||
|
||||
---
|
||||
-- Setting the prompt in clink means that commands which rewrite the prompt do
|
||||
-- not destroy our own prompt. It also means that started cmds (or batch files
|
||||
@ -44,17 +112,67 @@ local function set_prompt_filter()
|
||||
-- also check for square brackets
|
||||
if env == nil then env = old_prompt:match('.*%[([^%]]+)%].+:') end
|
||||
|
||||
-- build our own prompt
|
||||
-- orig: $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m
|
||||
-- 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 lambda = "λ"
|
||||
cmder_prompt = string.gsub(cmder_prompt, "{cwd}", verbatim(cwd))
|
||||
|
||||
if env ~= nil then
|
||||
lambda = "("..env..") "..lambda
|
||||
-- Much of the below was 'borrowed' from https://github.com/AmrEldib/cmder-powerline-prompt
|
||||
-- Symbol displayed for the home dir in the prompt.
|
||||
if not prompt_homeSymbol then
|
||||
prompt_homeSymbol = "~"
|
||||
end
|
||||
clink.prompt.value = string.gsub(cmder_prompt, "{lamb}", verbatim(lambda))
|
||||
|
||||
-- Symbol displayed in the new line below the prompt.
|
||||
if not prompt_lambSymbol then
|
||||
prompt_lambSymbol = "λ"
|
||||
end
|
||||
|
||||
if not prompt_type then
|
||||
prompt_type = "full"
|
||||
end
|
||||
|
||||
if prompt_useHomeSymbol == nil then
|
||||
prompt_useHomeSymbol = false
|
||||
end
|
||||
|
||||
if prompt_useUserAtHost == nil then
|
||||
prompt_useUserAtHost = false
|
||||
end
|
||||
|
||||
if prompt_singleLine == nil then
|
||||
prompt_singleLine = false
|
||||
end
|
||||
|
||||
if prompt_includeVersionControl == nil then
|
||||
prompt_includeVersionControl = true
|
||||
end
|
||||
|
||||
if prompt_type == 'folder' then
|
||||
cwd = get_folder_name(cwd)
|
||||
end
|
||||
|
||||
if prompt_useHomeSymbol and string.find(cwd, clink.get_env("HOME")) then
|
||||
cwd = string.gsub(cwd, clink.get_env("HOME"), prompt_homeSymbol)
|
||||
end
|
||||
|
||||
uah = ''
|
||||
if prompt_useUserAtHost then
|
||||
uah = clink.get_env("USERNAME") .. "@" .. clink.get_env("COMPUTERNAME") .. ' '
|
||||
end
|
||||
|
||||
cr = "\n"
|
||||
if prompt_singleLine then
|
||||
cr = ' '
|
||||
end
|
||||
|
||||
if env ~= nil then env = "("..env..") " else env = "" end
|
||||
|
||||
if uah ~= '' then uah = get_uah_color() .. uah end
|
||||
if cwd ~= '' then cwd = get_cwd_color() .. cwd end
|
||||
|
||||
local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or ""
|
||||
|
||||
prompt = "{uah}{cwd}" .. version_control .. get_lamb_color() .. cr .. "{env}{lamb} \x1b[0m"
|
||||
prompt = string.gsub(prompt, "{uah}", uah)
|
||||
prompt = string.gsub(prompt, "{cwd}", cwd)
|
||||
prompt = string.gsub(prompt, "{env}", env)
|
||||
clink.prompt.value = string.gsub(prompt, "{lamb}", prompt_lambSymbol)
|
||||
end
|
||||
|
||||
local function percent_prompt_filter()
|
||||
@ -221,32 +339,27 @@ local function get_svn_branch(svn_dir)
|
||||
end
|
||||
|
||||
---
|
||||
-- Get the status of working dir
|
||||
-- @return {bool}
|
||||
-- Get the status and conflict status of working dir
|
||||
-- @return {bool <status>, bool <is_conflict>}
|
||||
---
|
||||
local function get_git_status()
|
||||
local file = io.popen("git --no-optional-locks status --porcelain 2>nul")
|
||||
local file = io_popenyield("git --no-optional-locks status --porcelain 2>nul")
|
||||
local conflict_found = false
|
||||
local is_status = true
|
||||
for line in file:lines() do
|
||||
file:close()
|
||||
return false
|
||||
local code = line:sub(1, 2)
|
||||
-- print (string.format("code: %s, line: %s", code, line))
|
||||
if code == "DD" or code == "AU" or code == "UD" or code == "UA" or code == "DU" or code == "AA" or code == "UU" then
|
||||
is_status = false
|
||||
conflict_found = true
|
||||
break
|
||||
-- unversioned files are ignored, comment out 'code ~= "!!"' to unignore them
|
||||
elseif code ~= "!!" and code ~= "??" then
|
||||
is_status = false
|
||||
end
|
||||
end
|
||||
file:close()
|
||||
|
||||
return true
|
||||
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
|
||||
return { status = is_status, conflict = conflict_found }
|
||||
end
|
||||
|
||||
|
||||
@ -280,59 +393,111 @@ local function get_svn_status()
|
||||
return true
|
||||
end
|
||||
|
||||
---
|
||||
-- Use a prompt coroutine to get git status in the background.
|
||||
-- Cache the info so we can reuse it next time to reduce flicker.
|
||||
---
|
||||
local function get_git_info_table()
|
||||
local info = clink_promptcoroutine(function ()
|
||||
return get_git_status()
|
||||
end)
|
||||
if not info then
|
||||
info = cached_info.git_info or {}
|
||||
else
|
||||
cached_info.git_info = info
|
||||
end
|
||||
return info
|
||||
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")
|
||||
-- When async prompt filtering is available, check the
|
||||
-- prompt_overrideGitStatusOptIn config setting for whether to ignore the
|
||||
-- cmder.status and cmder.cmdstatus git config opt-in settings.
|
||||
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") then
|
||||
if prompt_overrideGitStatusOptIn then
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
for line in gitStatusSetting:lines() do
|
||||
if string.match(line, 'cmder.status=false') or string.match(line, 'cmder.cmdstatus=false') then
|
||||
gitStatusSetting:close()
|
||||
local gitStatusConfig = io.popen("git --no-pager config cmder.status 2>nul")
|
||||
|
||||
for line in gitStatusConfig:lines() do
|
||||
if string.match(line, 'false') then
|
||||
gitStatusConfig:close()
|
||||
return false
|
||||
end
|
||||
end
|
||||
gitStatusSetting:close()
|
||||
|
||||
local gitCmdStatusConfig = io.popen("git --no-pager config cmder.cmdstatus 2>nul")
|
||||
for line in gitCmdStatusConfig:lines() do
|
||||
if string.match(line, 'false') then
|
||||
gitCmdStatusConfig:close()
|
||||
return false
|
||||
end
|
||||
end
|
||||
gitStatusConfig:close()
|
||||
gitCmdStatusConfig:close()
|
||||
|
||||
return true
|
||||
end
|
||||
|
||||
local function git_prompt_filter()
|
||||
|
||||
-- Don't do any git processing if the prompt doesn't want to show git info.
|
||||
if not clink.prompt.value:find("{git}") then
|
||||
return false
|
||||
end
|
||||
|
||||
-- Colors for git status
|
||||
local colors = {
|
||||
clean = "\x1b[1;37;40m",
|
||||
dirty = "\x1b[33;3m",
|
||||
conflict = "\x1b[31;1m"
|
||||
clean = get_clean_color(),
|
||||
dirty = get_dirty_color(),
|
||||
conflict = get_conflict_color(),
|
||||
nostatus = get_unknown_color()
|
||||
}
|
||||
|
||||
local git_dir = get_git_dir()
|
||||
|
||||
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
|
||||
cmderGitStatusOptIn = get_git_status_setting()
|
||||
if git_dir then
|
||||
local branch = get_git_branch(git_dir)
|
||||
if branch then
|
||||
-- If in a different repo or branch than last time, discard cached info.
|
||||
if cached_info.git_dir ~= git_dir or cached_info.git_branch ~= branch then
|
||||
cached_info.git_info = nil
|
||||
cached_info.git_dir = git_dir
|
||||
cached_info.git_branch = branch
|
||||
end
|
||||
-- Use git status if allowed.
|
||||
if cmderGitStatusOptIn then
|
||||
-- if we're inside of git repo then try to detect current branch
|
||||
-- Has branch => therefore it is a git folder, now figure out status
|
||||
local gitStatus = get_git_status()
|
||||
local gitConflict = get_git_conflict()
|
||||
local gitInfo = get_git_info_table()
|
||||
local gitStatus = gitInfo.status
|
||||
local gitConflict = gitInfo.conflict
|
||||
|
||||
color = colors.dirty
|
||||
if gitStatus then
|
||||
if gitStatus == nil then
|
||||
color = colors.nostatus
|
||||
elseif gitStatus then
|
||||
color = colors.clean
|
||||
else
|
||||
color = colors.dirty
|
||||
end
|
||||
|
||||
if gitConflict then
|
||||
color = colors.conflict
|
||||
end
|
||||
|
||||
else
|
||||
color = colors.nostatus
|
||||
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
|
||||
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", "")
|
||||
@ -341,14 +506,20 @@ end
|
||||
|
||||
local function hg_prompt_filter()
|
||||
|
||||
-- Don't do any hg processing if the prompt doesn't want to show hg info.
|
||||
if not clink.prompt.value:find("{hg}") then
|
||||
return false
|
||||
end
|
||||
|
||||
local result = ""
|
||||
|
||||
local hg_dir = get_hg_dir()
|
||||
if hg_dir then
|
||||
-- Colors for mercurial status
|
||||
local colors = {
|
||||
clean = "\x1b[1;37;40m",
|
||||
dirty = "\x1b[31;1m",
|
||||
clean = get_clean_color(),
|
||||
dirty = get_dirty_color(),
|
||||
nostatus = get_unknown_color()
|
||||
}
|
||||
|
||||
local pipe = io.popen("hg branch 2>&1")
|
||||
@ -379,10 +550,17 @@ local function hg_prompt_filter()
|
||||
end
|
||||
|
||||
local function svn_prompt_filter()
|
||||
|
||||
-- Don't do any svn processing if the prompt doesn't want to show svn info.
|
||||
if not clink.prompt.value:find("{svn}") then
|
||||
return false
|
||||
end
|
||||
|
||||
-- Colors for svn status
|
||||
local colors = {
|
||||
clean = "\x1b[1;37;40m",
|
||||
dirty = "\x1b[31;1m",
|
||||
clean = get_clean_color(),
|
||||
dirty = get_dirty_color(),
|
||||
nostatus = get_unknown_color()
|
||||
}
|
||||
|
||||
if get_svn_dir() then
|
||||
|
6
vendor/cmder.sh
vendored
6
vendor/cmder.sh
vendored
@ -42,10 +42,10 @@ elif [ -d "${CMDER_ROOT}/vendor/git-for-windows" ] ; then
|
||||
fi
|
||||
|
||||
if [[ ! "$PATH" =~ "${GIT_INSTALL_ROOT}/bin:" ]] ; then
|
||||
PATH=${GIT_INSTALL_ROOT}/bin:$PATH
|
||||
PATH="${GIT_INSTALL_ROOT}/bin:$PATH"
|
||||
fi
|
||||
|
||||
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}
|
||||
PATH="${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}"
|
||||
|
||||
export PATH
|
||||
|
||||
@ -80,7 +80,7 @@ if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
||||
mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
|
||||
fi
|
||||
|
||||
export PATH=${CMDER_USER_CONFIG}/bin:$PATH
|
||||
export PATH="${CMDER_USER_CONFIG}/bin:$PATH"
|
||||
|
||||
CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh"
|
||||
if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then
|
||||
|
2
vendor/cmder_exinit
vendored
2
vendor/cmder_exinit
vendored
@ -10,7 +10,7 @@
|
||||
# zsh - Copy to /etc/profile.d/cmder_exinit.zsh
|
||||
# Add portable user customizations ${CMDER_ROOT}/config/user-profile.sh or
|
||||
# add whole config scripts to ${CMDER_ROOT}/config/profile.d both will be sourced
|
||||
# from mthis file and be appied to the environment at startup.
|
||||
# from this file and be applied to the environment at startup.
|
||||
#
|
||||
# These customizations will follow Cmder if $CMDER_ROOT is copied
|
||||
# to another machine.
|
||||
|
55
vendor/cmder_prompt_config.lua.default
vendored
Normal file
55
vendor/cmder_prompt_config.lua.default
vendored
Normal file
@ -0,0 +1,55 @@
|
||||
-- All of the below was 'borrowed' from https://github.com/AmrEldib/cmder-powerline-prompt
|
||||
|
||||
--- REQUIRED. config_prompt_type is whether the displayed prompt is the full path or only the folder name
|
||||
-- Use:
|
||||
-- "full" for full path like C:\Windows\System32
|
||||
-- "folder" for folder name only like System32
|
||||
-- default is full
|
||||
prompt_type = "full"
|
||||
|
||||
--- REQUIRED. config_prompt_useHomeSymbol is whether to show ~ instead of the full path to the user's home folder
|
||||
-- Use true or false
|
||||
-- default is false
|
||||
prompt_useHomeSymbol = false
|
||||
|
||||
-- Symbols
|
||||
-- REQUIRED. Prompt displayed instead of user's home folder e.g. C:\Users\username
|
||||
-- default is '~'
|
||||
prompt_homeSymbol = "~"
|
||||
|
||||
-- REQUIRED. Symbol displayed in the new line below the prompt.
|
||||
-- default is 'λ'
|
||||
prompt_lambSymbol = "λ"
|
||||
|
||||
-- REQUIRED. Adds [user]@[host] to the beginning of the prompt like bash
|
||||
-- default is false
|
||||
prompt_useUserAtHost = false
|
||||
|
||||
-- REQUIRED. If true prompt is a single line instead of default two line prompt.
|
||||
-- default is false
|
||||
prompt_singleLine = false
|
||||
|
||||
-- OPTIONAL. If true then always ignore the cmder.status and cmder.cmdstatus git config settings and run the git prompt commands in the background.
|
||||
-- default is false
|
||||
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
||||
prompt_overrideGitStatusOptIn = false
|
||||
|
||||
-- OPTIONAL. If true then Cmder includes git, mercurial, and subversion status in the prompt.
|
||||
-- default is true
|
||||
prompt_includeVersionControl = true
|
||||
|
||||
-- Prompt Attributes
|
||||
--
|
||||
-- Colors
|
||||
-- Green: "\x1b[1;33;40m"
|
||||
-- Yellow: "\x1b[1;32;40m"
|
||||
-- Light Grey: "\x1b[1;30;40m"
|
||||
|
||||
-- Prompt Element Colors
|
||||
uah_color = "\x1b[1;33;40m" -- Green = uah = [user]@[hostname]
|
||||
cwd_color = "\x1b[1;32;40m" -- Yellow cwd = Current Working Directory
|
||||
lamb_color = "\x1b[1;30;40m" -- Light Grey = Lambda Color
|
||||
clean_color = "\x1b[1;37;40m"
|
||||
dirty_color = "\x1b[33;3m"
|
||||
conflict_color = "\x1b[31;1m"
|
||||
unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color
|
1
vendor/git-for-windows_1.29.1
vendored
Symbolic link
1
vendor/git-for-windows_1.29.1
vendored
Symbolic link
@ -0,0 +1 @@
|
||||
../../../dtgam/bin/git-2.29.0
|
18
vendor/git-prompt.sh
vendored
18
vendor/git-prompt.sh
vendored
@ -9,6 +9,21 @@ function getGitStatusSetting() {
|
||||
fi
|
||||
}
|
||||
|
||||
function getSimpleGitBranch() {
|
||||
gitDir=$(git rev-parse --git-dir 2>/dev/null)
|
||||
if [ -z "$gitDir" ]; then
|
||||
return 0
|
||||
fi
|
||||
|
||||
headContent=$(< "$gitDir/HEAD")
|
||||
if [[ "$headContent" == "ref: refs/heads/"* ]]
|
||||
then
|
||||
echo " (${headContent:16})"
|
||||
else
|
||||
echo " (HEAD detached at ${headContent:0:7})"
|
||||
fi
|
||||
}
|
||||
|
||||
if test -f /etc/profile.d/git-sdk.sh
|
||||
then
|
||||
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
|
||||
@ -45,6 +60,9 @@ else
|
||||
. "$COMPLETION_PATH/git-prompt.sh"
|
||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||
PS1="$PS1"'`__git_ps1`' # bash function
|
||||
else
|
||||
PS1="$PS1"'\[\033[37;1m\]' # change color to white
|
||||
PS1="$PS1"'`getSimpleGitBranch`'
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
12
vendor/init.bat
vendored
12
vendor/init.bat
vendored
@ -131,7 +131,7 @@ goto var_loop
|
||||
if defined CMDER_USER_CONFIG (
|
||||
%print_debug% init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%CMDER_USER_CONFIG%'!"
|
||||
|
||||
if not exist "%CMDER_USER_CONFIG%\opt" md "%CMDER_USER_CONFIG%\opt"
|
||||
if not exist "%CMDER_USER_CONFIG%\..\opt" md "%CMDER_USER_CONFIG%\..\opt"
|
||||
)
|
||||
|
||||
:: Pick right version of clink
|
||||
@ -154,6 +154,11 @@ if "%CMDER_CLINK%" == "1" (
|
||||
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.
|
||||
)
|
||||
|
||||
if not exist "%CMDER_USER_CONFIG%\cmder_prompt_config.lua" (
|
||||
echo Creating Cmder prompt config file: "%CMDER_USER_CONFIG%\cmder_prompt_config.lua"
|
||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_USER_CONFIG%\cmder_prompt_config.lua"
|
||||
)
|
||||
|
||||
REM Cleanup lagacy Clink Settings file
|
||||
if exist "%CMDER_USER_CONFIG%\settings" if exist "%CMDER_USER_CONFIG%\clink_settings" (
|
||||
del "%CMDER_USER_CONFIG%\settings"
|
||||
@ -171,6 +176,11 @@ if "%CMDER_CLINK%" == "1" (
|
||||
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
||||
)
|
||||
|
||||
if not exist "%CMDER_ROOT%\config\cmder_prompt_config.lua" (
|
||||
echo Creating Cmder prompt config file: "%CMDER_ROOT%\config\cmder_prompt_config.lua"
|
||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_ROOT%\config\cmder_prompt_config.lua"
|
||||
)
|
||||
|
||||
REM Cleanup lagacy Clink Settings file
|
||||
if exist "%CMDER_ROOT%\config\settings" if exist "%CMDER_ROOT%\config\clink_settings" (
|
||||
del "%CMDER_ROOT%\config\settings"
|
||||
|
4
vendor/lib/lib_git.cmd
vendored
4
vendor/lib/lib_git.cmd
vendored
@ -14,7 +14,7 @@ exit /b
|
||||
|
||||
:read_version
|
||||
:::===============================================================================
|
||||
:::read_version - Get the git.exe verion
|
||||
:::read_version - Get the git.exe version
|
||||
:::.
|
||||
:::include:
|
||||
:::.
|
||||
@ -54,7 +54,7 @@ exit /b
|
||||
if /i "%%A %%B" == "git version" (
|
||||
set "GIT_VERSION=%%C"
|
||||
) else (
|
||||
echo "'git --version' returned an inproper version string!"
|
||||
echo "'git --version' returned an improper version string!"
|
||||
pause
|
||||
exit /b
|
||||
)
|
||||
|
8
vendor/lib/lib_path.cmd
vendored
8
vendor/lib/lib_path.cmd
vendored
@ -74,7 +74,7 @@ exit /b
|
||||
set "find_query=%add_to_path%"
|
||||
set "find_query=%find_query:\=\\%"
|
||||
set "find_query=%find_query: =\ %"
|
||||
set OLD_PATH=%PATH%
|
||||
set "OLD_PATH=%PATH%"
|
||||
|
||||
setlocal enabledelayedexpansion
|
||||
if "!found!" == "0" (
|
||||
@ -121,8 +121,8 @@ exit /b
|
||||
exit /b
|
||||
|
||||
:toolong
|
||||
echo %OLD_PATH%>tempfileA
|
||||
echo %PATH%>tempfileB
|
||||
echo "%OLD_PATH%">tempfileA
|
||||
echo "%PATH%">tempfileB
|
||||
fc /b tempfileA tempfileB 2>nul 1>nul
|
||||
if errorlevel 1 ( del tempfileA & del tempfileB & goto :changed )
|
||||
del tempfileA & del tempfileB
|
||||
@ -162,7 +162,7 @@ exit /b
|
||||
:::.
|
||||
:::options:
|
||||
:::.
|
||||
::: [max_depth] <in> Max recuse depth. Default: 1
|
||||
::: [max_depth] <in> Max recursion depth. Default: 1
|
||||
:::.
|
||||
::: append <in> Append instead to path env variable rather than pre-pend.
|
||||
:::.
|
||||
|
53
vendor/profile.ps1
vendored
53
vendor/profile.ps1
vendored
@ -3,6 +3,7 @@
|
||||
|
||||
# !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||
# !!! Use "%CMDER_ROOT%\config\user_profile.ps1" to add your own startup commands
|
||||
$CMDER_INIT_START=$(Get-Date -UFormat %s)
|
||||
|
||||
# Compatibility with PS major versions <= 2
|
||||
if(!$PSScriptRoot) {
|
||||
@ -13,7 +14,7 @@ if ($ENV:CMDER_USER_CONFIG) {
|
||||
# write-host "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||
}
|
||||
|
||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not beng set.
|
||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
||||
if (! $ENV:CMDER_ROOT ) {
|
||||
if ( $ENV:ConEmuDir ) {
|
||||
$ENV:CMDER_ROOT = resolve-path( $ENV:ConEmuDir + "\..\.." )
|
||||
@ -39,15 +40,50 @@ if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderMod
|
||||
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
||||
}
|
||||
|
||||
try {
|
||||
# Check if git is on PATH, i.e. Git already installed on system
|
||||
Get-command -Name "git" -ErrorAction Stop >$null
|
||||
} catch {
|
||||
if (test-path "$env:CMDER_ROOT\vendor\git-for-windows") {
|
||||
Configure-Git "$env:CMDER_ROOT\vendor\git-for-windows"
|
||||
$gitVersionVendor = (readVersion -gitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd")
|
||||
# write-host "GIT VENDOR: ${gitVersionVendor}"
|
||||
|
||||
# Get user installed Git Version[s] and Compare with vendored if found.
|
||||
foreach ($git in (get-command -ErrorAction SilentlyContinue 'git')) {
|
||||
# write-host "GIT Path: " + $git.Path
|
||||
$gitDir = Split-Path -Path $git.Path
|
||||
$gitDir = isGitShim -gitPath $gitDir
|
||||
$gitVersionUser = (readVersion -gitPath $gitDir)
|
||||
# write-host "GIT USER: ${gitVersionUser}"
|
||||
|
||||
$useGitVersion = compare_git_versions -userVersion $gitVersionUser -vendorVersion $gitVersionVendor
|
||||
# write-host "Using GIT Version: ${useGitVersion}"
|
||||
|
||||
# Use user installed Git
|
||||
if ($gitPathUser -eq $null) {
|
||||
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 12))
|
||||
} else {
|
||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 4))
|
||||
}
|
||||
}
|
||||
|
||||
if ($useGitVersion -eq $gitVersionUser) {
|
||||
# write-host "Using GIT Dir: ${gitDir}"
|
||||
$ENV:GIT_INSTALL_ROOT = $gitPathUser
|
||||
$ENV:GIT_INSTALL_TYPE = 'USER'
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
# User vendored Git.
|
||||
if ($ENV:GIT_INSTALL_ROOT -eq $null -and $gitVersionVendor -ne $null) {
|
||||
$ENV:GIT_INSTALL_ROOT = "$ENV:CMDER_ROOT\vendor\git-for-windows"
|
||||
$ENV:GIT_INSTALL_TYPE = 'VENDOR'
|
||||
}
|
||||
|
||||
# write-host "GIT_INSTALL_ROOT: ${ENV:GIT_INSTALL_ROOT}"
|
||||
# write-host "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
||||
|
||||
if (-not($ENV:GIT_INSTALL_ROOT -eq $null)) {
|
||||
$env:Path = Configure-Git -gitRoot "$ENV:GIT_INSTALL_ROOT" -gitType $ENV:GIT_INSTALL_TYPE -gitPathUser $gitPathUser
|
||||
}
|
||||
|
||||
if ( Get-command -Name "vim" -ErrorAction silentlycontinue) {
|
||||
new-alias -name "vi" -value vim
|
||||
}
|
||||
@ -177,3 +213,6 @@ if ( $(get-command prompt).Definition -match 'PS \$\(\$executionContext.SessionS
|
||||
# if (!$(get-command Prompt).Options -match 'ReadOnly') {Set-Item -Path function:\prompt -Value $Prompt -Options ReadOnly}
|
||||
Set-Item -Path function:\prompt -Value $Prompt -Options ReadOnly
|
||||
}
|
||||
|
||||
$CMDER_INIT_END=$(Get-Date -UFormat %s)
|
||||
# write-host "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)"
|
||||
|
134
vendor/psmodules/Cmder.ps1
vendored
134
vendor/psmodules/Cmder.ps1
vendored
@ -1,26 +1,128 @@
|
||||
function Configure-Git($GIT_INSTALL_ROOT){
|
||||
$env:Path += $(";" + $GIT_INSTALL_ROOT + "\cmd")
|
||||
function readVersion($gitPath) {
|
||||
$gitExecutable = "${gitPath}\git.exe"
|
||||
|
||||
# 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"
|
||||
if (!(test-path "$gitExecutable")) {
|
||||
return $null
|
||||
}
|
||||
|
||||
# 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"
|
||||
$gitVersion = (cmd /c "${gitExecutable}" --version)
|
||||
|
||||
if ($gitVersion -match 'git version') {
|
||||
($trash1, $trash2, $gitVersion) = $gitVersion.split(' ', 3)
|
||||
} else {
|
||||
pause
|
||||
return $null
|
||||
}
|
||||
|
||||
return $gitVersion.toString()
|
||||
}
|
||||
|
||||
function isGitShim($gitPath) {
|
||||
# check if there's shim - and if yes follow the path
|
||||
|
||||
if (test-path "${gitPath}\git.shim") {
|
||||
$shim = (get-content "${gitPath}\git.shim")
|
||||
($trash, $gitPath) = $shim.replace(' ','').split('=')
|
||||
|
||||
$gitPath=$gitPath.replace('\git.exe','')
|
||||
}
|
||||
|
||||
return $gitPath.toString()
|
||||
}
|
||||
|
||||
function compareVersions($userVersion, $vendorVersion) {
|
||||
if (-not($userVersion -eq $null)) {
|
||||
($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4)
|
||||
} else {
|
||||
return -1
|
||||
}
|
||||
|
||||
if (-not($vendorVersion -eq $null)) {
|
||||
($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4)
|
||||
} else {
|
||||
return 1
|
||||
}
|
||||
|
||||
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
|
||||
return 1
|
||||
}
|
||||
|
||||
if ($userMajor -gt $vendorMajor) {return 1}
|
||||
if ($userMajor -lt $vendorMajor) {return -1}
|
||||
|
||||
if ($userMinor -gt $vendorMinor) {return 1}
|
||||
if ($userMinor -lt $vendorMinor) {return -1}
|
||||
|
||||
if ($userPatch -gt $vendorPatch) {return 1}
|
||||
if ($userPatch -lt $vendorPatch) {return -1}
|
||||
|
||||
if ($userBuild -gt $vendorBuild) {return 1}
|
||||
if ($userBuild -lt $vendorBuild) {return -1}
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
function compare_git_versions($userVersion, $vendorVersion) {
|
||||
$result = compareVersions -userVersion $userVersion -vendorVersion $vendorVersion
|
||||
|
||||
# write-host "Compare Versions Result: ${result}"
|
||||
if ($result -ge 0) {
|
||||
return $userVersion
|
||||
} else {
|
||||
return $vendorVersion
|
||||
}
|
||||
}
|
||||
|
||||
function Configure-Git($gitRoot, $gitType, $gitPathUser){
|
||||
# Proposed Behavior
|
||||
|
||||
# Modify the path if we are using VENDORED Git do nothing if using USER Git.
|
||||
# If User Git is installed but older match its path config adding paths
|
||||
# in the same path positions allowing a user to configure Cmder Git path
|
||||
# using locally installed Git Path Config.
|
||||
if ($gitType -eq 'VENDOR') {
|
||||
# If User Git is installed replace its path config with Newer Vendored Git Path
|
||||
if ($gitPathUser -ne '' -and $gitPathUser -ne $null) {
|
||||
# write-host "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..."
|
||||
|
||||
$newPath = ($env:path -ireplace [regex]::Escape($gitPathUser), $gitRoot)
|
||||
} else {
|
||||
if (!($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
|
||||
# write-host "Adding $gitRoot\cmd to the path"
|
||||
$newPath = $($gitRoot + "\cmd" + ";" + $env:Path)
|
||||
}
|
||||
|
||||
# Add "$gitRoot\mingw[32|64]\bin" to the path if exists and not done already
|
||||
if ((test-path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) {
|
||||
# write-host "Adding $gitRoot\mingw32\bin to the path"
|
||||
$newPath = "$newPath;$gitRoot\mingw32\bin"
|
||||
} elseif ((test-path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
|
||||
# write-host "Adding $gitRoot\mingw64\bin to the path"
|
||||
$newPath = "$newPath;$gitRoot\mingw64\bin"
|
||||
}
|
||||
|
||||
# Add "$gitRoot\usr\bin" to the path if exists and not done already
|
||||
if ((test-path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) {
|
||||
# write-host "Adding $gitRoot\usr\bin to the path"
|
||||
$newPath = "$newPath;$gitRoot\usr\bin"
|
||||
}
|
||||
}
|
||||
|
||||
return $newPath
|
||||
}
|
||||
|
||||
return $env:path
|
||||
}
|
||||
|
||||
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($GitModule | select version | where version -ge ([version]"1.0.0")){
|
||||
Import-Module Posh-Git > $null
|
||||
$GitPromptSettings.AnsiConsole = $false
|
||||
}
|
||||
if(-not ($GitModule) ) {
|
||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
||||
}
|
||||
@ -36,6 +138,14 @@ function checkGit($Path) {
|
||||
|
||||
if (getGitStatusSetting -eq $true) {
|
||||
Write-VcsStatus
|
||||
} else {
|
||||
$headContent = Get-Content (Join-Path $Path '.git/HEAD')
|
||||
if ($headContent -like "ref: refs/heads/*") {
|
||||
$branchName = $headContent.Substring(16)
|
||||
} else {
|
||||
$branchName = "HEAD detached at $($headContent.Substring(0, 7))"
|
||||
}
|
||||
Write-Host " [$branchName]" -NoNewline -ForegroundColor White
|
||||
}
|
||||
|
||||
return
|
||||
|
14
vendor/psmodules/PsGet/PsGet.psm1
vendored
14
vendor/psmodules/PsGet/PsGet.psm1
vendored
@ -124,7 +124,7 @@ Set-Variable -Name PSGET_PSD1 -Value 'PSD1' -Option Constant -Scope Script
|
||||
|
||||
Description
|
||||
-----------
|
||||
Installs the module witout importing it to the current session
|
||||
Installs the module without importing it to the current session
|
||||
|
||||
.EXAMPLE
|
||||
# Install-Module PoshHg -AddToProfile
|
||||
@ -448,7 +448,7 @@ function Update-Module {
|
||||
|
||||
Description
|
||||
-----------
|
||||
Retrieves information about all registerd modules that starts with PoshCo.
|
||||
Retrieves information about all registered modules that start with PoshCo.
|
||||
#>
|
||||
function Get-PsGetModuleInfo {
|
||||
[CmdletBinding()]
|
||||
@ -694,7 +694,7 @@ function Install-ModuleFromDirectory {
|
||||
throw "Module $Module was not found in central repository"
|
||||
}
|
||||
|
||||
# $Module and $moduleData.Id are not equally by garantee, so we have to test again.
|
||||
# $Module and $moduleData.Id are not equally by guarantee, so we have to test again.
|
||||
if (Test-ModuleInstalledAndImport -ModuleName:$moduleData.ModuleName -Destination:$Destination -Update:$Update -DoNotImport:$DoNotImport -ModuleHash:$ModuleHash) {
|
||||
return
|
||||
}
|
||||
@ -1488,7 +1488,7 @@ function Invoke-DownloadModuleFromWeb {
|
||||
Install the module inside of the provided directory into the defined destination
|
||||
and perform the following steps:
|
||||
|
||||
* Rename module if requestes by provided InstallWithModuleName
|
||||
* Rename module if requested by provided InstallWithModuleName
|
||||
* If a ModuleHash is provided, check if it matches.
|
||||
* Add the destination path to the PSModulePath if necessary (depends on provided parameters)
|
||||
* Place the conventions-matching module folder in the destination folder
|
||||
@ -1796,9 +1796,9 @@ function Test-ModuleInstalledAndImport {
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Extract the content of the referenced zip file to the defind destination
|
||||
Extract the content of the referenced zip file to the defined destination
|
||||
|
||||
.PARAMATER Path
|
||||
.PARAMETER Path
|
||||
Path to a zip file with the file extension '.zip'
|
||||
|
||||
.Parameter Destination
|
||||
@ -1856,7 +1856,7 @@ function Expand-ZipModule {
|
||||
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Update '$env:PSModulePath' from 'User' and 'Machine' scope envrionment variables
|
||||
Update '$env:PSModulePath' from 'User' and 'Machine' scope environment variables
|
||||
#>
|
||||
function Update-PSModulePath {
|
||||
process {
|
||||
|
16
vendor/sources.json
vendored
16
vendor/sources.json
vendored
@ -1,22 +1,22 @@
|
||||
[
|
||||
{
|
||||
"name": "git-for-windows",
|
||||
"version": "v2.29.1.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.29.1.windows.1/PortableGit-2.29.1-64-bit.7z.exe"
|
||||
"version": "v2.34.0.windows.1",
|
||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.34.0.windows.1/PortableGit-2.34.0-64-bit.7z.exe"
|
||||
},
|
||||
{
|
||||
"name": "clink",
|
||||
"version": "1.1.45",
|
||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.1.45/clink.1.1.45.1c3985.zip"
|
||||
"version": "1.2.46",
|
||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.2.46/clink.1.2.46.69fc92.zip"
|
||||
},
|
||||
{
|
||||
"name": "conemu-maximus5",
|
||||
"version": "210304",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v21.03.04/ConEmuPack.210304.7z"
|
||||
"version": "210912",
|
||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v21.09.12/ConEmuPack.210912.7z"
|
||||
},
|
||||
{
|
||||
"name": "clink-completions",
|
||||
"version": "0.3.6",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.6.zip"
|
||||
"version": "0.3.7",
|
||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.7.zip"
|
||||
}
|
||||
]
|
||||
|
2
vendor/user_profile.cmd.default
vendored
2
vendor/user_profile.cmd.default
vendored
@ -12,7 +12,7 @@
|
||||
:: set "PATH=%CMDER_ROOT%\vendor\whatever;%PATH%"
|
||||
|
||||
:: arguments in this batch are passed from init.bat, you can quickly parse them like so:
|
||||
:: more useage can be seen by typing "cexec /?"
|
||||
:: more usage can be seen by typing "cexec /?"
|
||||
|
||||
:: %ccall% "/customOption" "command/program"
|
||||
|
||||
|
Reference in New Issue
Block a user