mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-16 12:39:38 +08:00
Compare commits
335 Commits
Author | SHA1 | Date | |
---|---|---|---|
efa2e576d0 | |||
5eaf0d0396 | |||
0e34d925ce | |||
9d2ac373c5 | |||
835343f9d6 | |||
271fe4c822 | |||
24ba9c3fa5 | |||
0fdcda98cf | |||
42df6cd05b | |||
a4fa8d5333 | |||
1ba542e915 | |||
2c656a9c34 | |||
0adbc47c7e | |||
e0ade8f3f1 | |||
ba97011bbc | |||
cfcfe6f282 | |||
048692b5b5 | |||
7c74931af8 | |||
e3d9f81e25 | |||
7c309c6a7b | |||
0c1ab3fbb1 | |||
fc44def0ad | |||
fbe3e17eea | |||
47caafb800 | |||
efb3338f5c | |||
3859f6ffc0 | |||
4e1918dcf7 | |||
dcc06a9d70 | |||
d3026aef5d | |||
159937b2df | |||
3214a6d5ea | |||
02970841c3 | |||
04bbea7d24 | |||
c8d48b7f3e | |||
0f6ed93d0d | |||
2be652707b | |||
96ce96c53d | |||
ce23189427 | |||
a2a996147e | |||
6d46df634e | |||
fe08df3fdc | |||
39ac92d61c | |||
bdbd3aab2b | |||
18aea2b258 | |||
5cd05b056b | |||
c0fc10009a | |||
cc5e4a0e60 | |||
6e0e1729d8 | |||
cbb10de06d | |||
0b7e47cdc2 | |||
96ca7cea4a | |||
0ba0dea6a2 | |||
e320ba8aae | |||
23b80264b0 | |||
90cd1130ac | |||
7f71456a41 | |||
c606e5c8ee | |||
98d28846b3 | |||
27f28e6ed7 | |||
8b6d1d8a6f | |||
211fbd6428 | |||
2acb6808ed | |||
ee913e09ee | |||
ede79c2199 | |||
665df2a8c8 | |||
a0f234b9d0 | |||
5cdb98abb7 | |||
9399cbdcd7 | |||
c992215f94 | |||
55b90cc958 | |||
971483b2b7 | |||
c8d554220a | |||
8feae5d81d | |||
6d77c988db | |||
04b6ec2ac8 | |||
b5bddc929e | |||
04e4446c37 | |||
4b5e52014e | |||
8a71e7d51b | |||
668b9ad0fb | |||
11919ebc54 | |||
1754995aa0 | |||
c333fc0c67 | |||
f927fafb67 | |||
942d513a2a | |||
1bc35b6edd | |||
904d552801 | |||
1fa1919eaf | |||
2fa0130711 | |||
c068c219eb | |||
85051f0cb2 | |||
5eacfc90af | |||
2ebf68393f | |||
856d22e9f8 | |||
9151fb3469 | |||
d767c9b2e9 | |||
3943ba6cc8 | |||
cc9699c134 | |||
4264158ff2 | |||
0559060ceb | |||
ae391eb576 | |||
129c2971c7 | |||
3f88112d22 | |||
3fe76de9b5 | |||
e1a0d3850c | |||
1e34c885f3 | |||
1d330e7330 | |||
f468ddfe95 | |||
e7139bd474 | |||
6b72e84940 | |||
3901fef98b | |||
71536ddddf | |||
7995f34981 | |||
87f7ddf449 | |||
d94fe86b2a | |||
f58652fc28 | |||
e1caeb879a | |||
5b46f4fec7 | |||
b0f034a960 | |||
70632a2bb8 | |||
9d76f99dcf | |||
50bf15dd75 | |||
2de6f8232a | |||
8d4afb0570 | |||
67e2bf1a73 | |||
59269aa9f1 | |||
1c4a8b3ff5 | |||
a49921bb1b | |||
473e9566e7 | |||
f9cb2d6264 | |||
7856b3ab57 | |||
4dc3dc0dac | |||
abbab3f8b4 | |||
9aa26c46d0 | |||
7f682653e4 | |||
23edc8036f | |||
cb9d06f8a3 | |||
cc85a32e48 | |||
3b9e591ea0 | |||
adcef21034 | |||
2dc5463c31 | |||
4b8d669d01 | |||
a4c5b9d098 | |||
9c4e4d27c8 | |||
489078763d | |||
aa755278ec | |||
5c8e0f38fe | |||
5831fa4977 | |||
d7d0f1320b | |||
9f395805e1 | |||
e8d34e07a1 | |||
77df64b61b | |||
db44218d14 | |||
1b7d804701 | |||
c9ba643851 | |||
f301968ac3 | |||
f02bbfc5be | |||
50816c6bfc | |||
a0827fb4f5 | |||
28e42104ac | |||
2189fe9483 | |||
813fd6d82f | |||
1fbe2f7c2d | |||
e1c14f6c7e | |||
4992227614 | |||
7178b978ec | |||
ee01f26680 | |||
eede47bfad | |||
9d9519bdd4 | |||
f05c77e53c | |||
0b163d43ab | |||
d567229050 | |||
800a4a953f | |||
be5198c74b | |||
91d5a25fe9 | |||
760566acb9 | |||
a8bc932dbd | |||
6cd7817938 | |||
3d0e6b86e3 | |||
a027bdc5c2 | |||
0f490fdb61 | |||
795ab5746c | |||
771c53c7f1 | |||
805a5fc6e5 | |||
05c92f4cb0 | |||
d2d3d38782 | |||
15d66d394a | |||
280e40f077 | |||
8ee5e36fca | |||
dab1dd93f1 | |||
e2d817a497 | |||
d1b1012741 | |||
5c409dabc8 | |||
05db3658ad | |||
ef0de62d82 | |||
61e7028566 | |||
59bbdaddc7 | |||
7a9ad78e66 | |||
ec371bafff | |||
a617397aea | |||
74060922a4 | |||
e48dec15ac | |||
52389f21f0 | |||
d1e033c312 | |||
c89ef96347 | |||
4846eff298 | |||
5f25ea58a0 | |||
dceccffb72 | |||
0a4d3bcb77 | |||
913f93d24a | |||
70b5822fd5 | |||
f184714457 | |||
7beb490048 | |||
f2d8e31e2e | |||
6e05a9105f | |||
62bfbb4501 | |||
8bf40227e8 | |||
cf61b81f01 | |||
427937918e | |||
fe29497878 | |||
f3fcb8be4a | |||
36e13027f6 | |||
ef51ed2be2 | |||
6d313853f3 | |||
f46e8b81d8 | |||
864b85f254 | |||
ce02fb4a0e | |||
e345f187d8 | |||
fc00cc8be2 | |||
0dd2a665e2 | |||
6189f4f0e6 | |||
0616ff0a82 | |||
99452c8158 | |||
4098265a36 | |||
eab4454ac5 | |||
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 | |||
5d05034810 | |||
e3ad9c3953 | |||
31df5c3e5e | |||
9b121f1c0a | |||
cfe22c8ef0 | |||
3ef53f64d4 | |||
4a10e0b2eb | |||
4243c5c222 |
163
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
163
.github/ISSUE_TEMPLATE/bug-report.yml
vendored
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
name: "🐞 Bug report (encountered problems/errors)"
|
||||||
|
description: Something is not working as it should
|
||||||
|
title: "[Bug] "
|
||||||
|
labels: "🐛 Type: Bug"
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thank you for reporting a bug for the Cmder project!
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Please make sure you read and follow the following instructions carefully before reporting bugs, and/or requesting new features.
|
||||||
|
|
||||||
|
- You can find the version of Cmder.exe and ConEmu.exe binaries using Right Click → Properties → Details menu.
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: version
|
||||||
|
attributes:
|
||||||
|
label: Version Information
|
||||||
|
description: |
|
||||||
|
Please write your Cmder and ConEmu version below. If applicable, write down your Windows edition too.
|
||||||
|
**👉 See:** [How to find out which Cmder version I'm using](https://github.com/cmderdev/cmder/wiki/Cmder-troubleshooting)
|
||||||
|
placeholder: |
|
||||||
|
Cmder version:
|
||||||
|
Operating system:
|
||||||
|
value: |
|
||||||
|
Cmder version:
|
||||||
|
Operating system:
|
||||||
|
render: markdown
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: dropdown
|
||||||
|
id: edition
|
||||||
|
attributes:
|
||||||
|
label: Cmder Edition
|
||||||
|
description: What edition of Cmder are you running?
|
||||||
|
options:
|
||||||
|
- Cmder Full (with Git)
|
||||||
|
- Cmder Mini
|
||||||
|
- N/A
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Make sure that you have:
|
||||||
|
|
||||||
|
- Read both the README.md and the Wiki:
|
||||||
|
|
||||||
|
| **README.md** | **Wiki** |
|
||||||
|
| ------------- | -------- |
|
||||||
|
| 🌐 [Open Link](https://github.com/cmderdev/cmder/blob/master/README.md) | 🌐 [Open Link](https://github.com/cmderdev/cmder/wiki) |
|
||||||
|
|
||||||
|
(What you may be asking here could already be explained there!)
|
||||||
|
|
||||||
|
- Searched for existing issues (including the **closed** ones) for similar problems here:
|
||||||
|
|
||||||
|
🗃 https://github.com/cmderdev/cmder/issues?q=is:issue
|
||||||
|
|
||||||
|
- Please understand that Cmder uses ConEmu as the default underlying Terminal Emulator.
|
||||||
|
|
||||||
|
If your issue is regarding the **Terminal Emulator**, please visit the ConEmu issues page:
|
||||||
|
|
||||||
|
https://github.com/Maximus5/ConEmu/issues?q=is:issue
|
||||||
|
|
||||||
|
If there isn't an existing issue, you may open a new one there.
|
||||||
|
|
||||||
|
(We don't resolve issues regarding ConEmu here, so, please make sure you open the issue in the correct place.)
|
||||||
|
|
||||||
|
more info: https://conemu.github.io/en/ThirdPartyProblems.html
|
||||||
|
|
||||||
|
- If you are having an issue with any of the **upstream technologies** that are used by Cmder, please make sure that the issue is reproducible _only_ when used in combination with Cmder.
|
||||||
|
|
||||||
|
We may not directly address the issues related to the following tools:
|
||||||
|
- **[Clink](https://github.com/chrisant996/clink)**, the default shell in Cmder
|
||||||
|
- **[ConEmu](https://github.com/Maximus5/ConEmu)**, the terminal emulator
|
||||||
|
- **[Git/MinGW](https://github.com/git-for-windows/git)**, which also provide *NIX tools (such as `ls`, `mv`, `cp`, etc)
|
||||||
|
- **[clink-completions](https://github.com/vladimir-kotikov/clink-completions)**, which provides autocompletion for clink
|
||||||
|
|
||||||
|
We'll try our best to help you -- but we recommend creating an issue specifically at each of the corresponding repositories for the best result.
|
||||||
|
|
||||||
|
**👉 Note:** Try to reproduce the bug you're reporting, on a stand-alone edition of each tool, without using Cmder. If the bug applies when the mentioned tools are NOT used within Cmder, there's a good chance that you should open the bug at the corresponding repo instead.
|
||||||
|
|
||||||
|
- Lastly, have a look at the official documentation for Cmder over our website, and our wiki.
|
||||||
|
|
||||||
|
Read more about Cmder on ConEmu docs:
|
||||||
|
https://conemu.github.io/en/cmder.html
|
||||||
|
|
||||||
|
#### Prerequisites before submitting an issue
|
||||||
|
- We do not support any versions older than the current release series, if you are using an older Cmder please update to the latest version first.
|
||||||
|
- Verify that the issue is not already fixed and is reproducible in the **[latest official Cmder version](https://github.com/cmderdev/cmder/releases).**
|
||||||
|
- Check the **[current issues list](https://github.com/cmderdev/cmder/issues?q=is%3Aissue)** and perform a **search of the issue tracker (including closed ones)** to avoid posting a duplicate bug report.
|
||||||
|
- Make sure this is not a support request or question, both of which are better suited for either the **[discussions section](https://github.com/cmderdev/cmder/discussions)**, or the **[questions section](https://github.com/cmderdev/cmder/issues/new?template=question.yml)**.
|
||||||
|
- Verify that the **[wiki](https://github.com/cmderdev/cmder/wiki)** did not contain a suitable solution either.
|
||||||
|
|
||||||
|
Thank you for making sure you are opening a new valid issue! ♥
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Description of the issue
|
||||||
|
description: Provide a clear and concise description of the problem here. Explain the actual behavior vs the expected behavior.
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: reproduction
|
||||||
|
attributes:
|
||||||
|
label: How to reproduce
|
||||||
|
description: Please provide reliable steps to reproduce the problem.
|
||||||
|
placeholder: |
|
||||||
|
1. In this environment...
|
||||||
|
2. With this config...
|
||||||
|
3. Run '...'
|
||||||
|
4. See error...
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: notes
|
||||||
|
attributes:
|
||||||
|
label: Additional context
|
||||||
|
description: Add screenshots, etc. (Anything that will provide more context about the problem)
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Please check all boxes that apply
|
||||||
|
options:
|
||||||
|
- label: I have read the documentation.
|
||||||
|
required: true
|
||||||
|
- label: I have searched for similar issues and found none that describe my issue.
|
||||||
|
required: true
|
||||||
|
- label: I have reproduced the issue on the latest version of Cmder.
|
||||||
|
required: true
|
||||||
|
- label: I am certain my issues are not related to ConEmu, Clink, or other third-party tools that Cmder uses.
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
### Some tips on how to write a good bug report with the required information.
|
||||||
|
- 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 that triggered the problem, if applicable.
|
||||||
|
- 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
|
||||||
|
- Avoid using ambiguous phrases like: doesn't work, there's a problem, etc.
|
||||||
|
Help us reproduce the issue by explaining what went wrong, and what did you expect to happen.
|
||||||
|
- Please keep the ticket language to English only here.
|
||||||
|
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.
|
||||||
|
- 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 comment 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.
|
||||||
|
- ⚠ 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!
|
9
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
9
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
blank_issues_enabled: false
|
||||||
|
contact_links:
|
||||||
|
- name: 📄 Wiki
|
||||||
|
url: "https://github.com/cmderdev/cmder/wiki"
|
||||||
|
about: "Consult the wiki first, it might already contain the information you are looking for"
|
||||||
|
|
||||||
|
- name: 💬 Discussions
|
||||||
|
url: "https://github.com/cmderdev/cmder/discussions"
|
||||||
|
about: "Please ask questions related to usage/setup/support/non-issue development discussion in the Discussions section"
|
84
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
84
.github/ISSUE_TEMPLATE/feature-request.yml
vendored
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
name: "⭐ Feature request (request for new functionality)"
|
||||||
|
description: Help make Cmder even better
|
||||||
|
title: "[Feature request] "
|
||||||
|
labels: "🛠 Type: Feature Request"
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Thank you for helping to improve the Cmder project!
|
||||||
|
------------------------------------------------------------------
|
||||||
|
|
||||||
|
Please make sure you read and follow the following instructions carefully before reporting bugs, and/or requesting new features.
|
||||||
|
|
||||||
|
Make sure that you have:
|
||||||
|
|
||||||
|
- Searched for existing issues (including the **closed** ones) for similar feature requests here:
|
||||||
|
|
||||||
|
🗃 https://github.com/cmderdev/cmder/issues?q=is:issue
|
||||||
|
|
||||||
|
- If you are opening the feature request regarding any of the **upstream technologies** that are used by Cmder, please open the feature request at the corresponding upstream repos instead:
|
||||||
|
- **[Clink](https://github.com/chrisant996/clink)**, the default shell in Cmder
|
||||||
|
- **[ConEmu](https://github.com/Maximus5/ConEmu)**, the terminal emulator
|
||||||
|
- **[Git/MinGW](https://github.com/git-for-windows/git)**, which also provide *NIX tools (such as `ls`, `mv`, `cp`, etc)
|
||||||
|
- **[clink-completions](https://github.com/vladimir-kotikov/clink-completions)**, which provides autocompletion for clink
|
||||||
|
|
||||||
|
- If you would like to ask for guides on how to integrate Cmder with your favorite IDE of choice, or how to perform a specific task with Cmder, make sure you visit our label section first.
|
||||||
|
|
||||||
|
You may already have an answer under the Guides or Questions section.
|
||||||
|
|
||||||
|
For a list of labels, visit **[🌐 Labels](https://github.com/cmderdev/cmder/labels)**.
|
||||||
|
|
||||||
|
(Be sure to also check “Closed” issues in the labels section!)
|
||||||
|
|
||||||
|
- If you have a request to provide auto-complete support for a new tool, please post your request here instead:
|
||||||
|
|
||||||
|
https://github.com/vladimir-kotikov/clink-completions/issues
|
||||||
|
|
||||||
|
Thank you for making the Cmder project even better! ♥
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Suggestion
|
||||||
|
description: Describe the feature
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: usecase
|
||||||
|
attributes:
|
||||||
|
label: Use case
|
||||||
|
description: Include a usage example of the feature
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: notes
|
||||||
|
attributes:
|
||||||
|
label: Extra info/examples/attachments
|
||||||
|
description: Extra information, similar tools, etc. If the feature is currently possible with a workaround
|
||||||
|
validations:
|
||||||
|
required: false
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Please check all boxes that apply
|
||||||
|
options:
|
||||||
|
- label: I have read the documentation and made sure this feature doesn't already exist.
|
||||||
|
required: true
|
||||||
|
- label: I have searched for similar issues and found none that describe my feature request.
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
### Some tips on how to write a better feature request
|
||||||
|
- Make sure the description is worded well enough to be understood, and with as much context and examples as possible.
|
||||||
|
- 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
|
||||||
|
- Please keep the ticket language to English only here.
|
||||||
|
We can't process your issue if it's written in Russian or Chinese as we can't understand them.
|
45
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
45
.github/ISSUE_TEMPLATE/question.yml
vendored
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
name: "❓ Question"
|
||||||
|
description: Something is unclear or needs to be discussed
|
||||||
|
title: "Question: "
|
||||||
|
labels: "❔ Type: Question"
|
||||||
|
|
||||||
|
body:
|
||||||
|
- type: markdown
|
||||||
|
attributes:
|
||||||
|
value: |
|
||||||
|
Before you ask your question, please make sure you read and follow the following instructions carefully.
|
||||||
|
|
||||||
|
- Read both the README.md and the Wiki, as well as the existing issues:
|
||||||
|
|
||||||
|
| **README.md** | **Wiki** | **Issues** |
|
||||||
|
| ------------- | -------- | ---------- |
|
||||||
|
| 🌐 [Open Link](https://github.com/cmderdev/cmder/blob/master/README.md) | 🌐 [Open Link](https://github.com/cmderdev/cmder/wiki) | 🗃 [Open Link](https://github.com/cmderdev/cmder/issues?q=is:issue) |
|
||||||
|
|
||||||
|
(What you may be asking here could already be explained there!)
|
||||||
|
|
||||||
|
- If you would like to ask for guides on how to integrate Cmder with your favorite IDE of choice, or how to perform a specific task with Cmder, make sure you visit our label section first.
|
||||||
|
|
||||||
|
You may already have an answer under the [💬 Guides](https://github.com/cmderdev/cmder/issues?q=label%3A%22%F0%9F%92%AC+Type%3A+Guide%22), [📖 Documentation](https://github.com/cmderdev/cmder/issues?q=label%3A%22%F0%9F%93%96+Documentation%22) or [❔ Questions](https://github.com/cmderdev/cmder/issues?q=is%3Aissue+label%3A%22%E2%9D%94+Type%3A+Question%22) section.
|
||||||
|
|
||||||
|
For a list of labels, visit **[Labels](https://github.com/cmderdev/cmder/labels)**.
|
||||||
|
|
||||||
|
(Be sure to also check “Closed” issues in the labels section!)
|
||||||
|
|
||||||
|
- type: textarea
|
||||||
|
id: description
|
||||||
|
attributes:
|
||||||
|
label: Question
|
||||||
|
description: What would you to ask about Cmder?
|
||||||
|
validations:
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- type: checkboxes
|
||||||
|
id: checklist
|
||||||
|
attributes:
|
||||||
|
label: Checklist
|
||||||
|
description: Please check all boxes that apply
|
||||||
|
options:
|
||||||
|
- label: I have read the documentation and made sure what I'm looking for isn't present, or is unclear.
|
||||||
|
required: true
|
||||||
|
- label: I have searched for similar issues, and either this question wasn't asked before, or I didn't find any that describe my question.
|
||||||
|
required: true
|
113
.github/issue_template.md
vendored
113
.github/issue_template.md
vendored
@ -1,113 +0,0 @@
|
|||||||
<!--
|
|
||||||
|
|
||||||
Thank you for reporting a bug for the Cmder project!
|
|
||||||
------------------------------------------------------------------
|
|
||||||
|
|
||||||
Please make sure you read and follow the following instructions
|
|
||||||
carefully before reporting bugs, and/or requesting new features.
|
|
||||||
|
|
||||||
Make sure that you have:
|
|
||||||
|
|
||||||
• Searched for existing issues (including the **closed** ones)
|
|
||||||
for the similar problems here:
|
|
||||||
|
|
||||||
https://github.com/cmderdev/cmder/issues?q=is:issue
|
|
||||||
|
|
||||||
• Read both the README.md and the Wiki:
|
|
||||||
|
|
||||||
- https://github.com/cmderdev/cmder/blob/master/README.md
|
|
||||||
- https://github.com/cmderdev/cmder/wiki
|
|
||||||
|
|
||||||
(What you may be asking here could already be explained there!)
|
|
||||||
|
|
||||||
• Please understand that Cmder uses ConEmu as the default
|
|
||||||
underlying Terminal Emulator. If your issue is regarding
|
|
||||||
the **Terminal Emulator**, please visit the ConEmu issues page:
|
|
||||||
|
|
||||||
https://github.com/Maximus5/ConEmu/issues?q=is:issue
|
|
||||||
|
|
||||||
If there isn't an existing issue, you may open a new one there.
|
|
||||||
|
|
||||||
(We don't resolve issues regarding ConEmu here, so please
|
|
||||||
make sure you open the issue in the correct place.)
|
|
||||||
|
|
||||||
more info: https://conemu.github.io/en/ThirdPartyProblems.html
|
|
||||||
|
|
||||||
• If you would like to ask for guides on how to integrate Cmder with
|
|
||||||
your favorite IDE of choice, or how to perform a specific task
|
|
||||||
with Cmder, make sure you visit our label section first.
|
|
||||||
|
|
||||||
You may already have an answer under the Guides or Questions section.
|
|
||||||
|
|
||||||
For a list of labels, visit:
|
|
||||||
- https://github.com/cmderdev/cmder/labels
|
|
||||||
|
|
||||||
(Be sure to also check “Closed” issues in the labels section!)
|
|
||||||
|
|
||||||
• If you have a request to provide auto-complete support for a new tool,
|
|
||||||
please post your request here:
|
|
||||||
|
|
||||||
https://github.com/vladimir-kotikov/clink-completions/issues
|
|
||||||
|
|
||||||
• If you are having an issue with any of the **upstream technologies**
|
|
||||||
that are used by Cmder, please make sure that the issue is reproducible
|
|
||||||
_only_ when used in combination with Cmder.
|
|
||||||
|
|
||||||
We may not directly address the issues related to the following tools:
|
|
||||||
- Clink, the default shell in Cmder
|
|
||||||
- ConEmu, the terminal emulator
|
|
||||||
- Git/MinGW, which also provide *NIX tools
|
|
||||||
- clink-completions, which provide autocompletion
|
|
||||||
|
|
||||||
The issues related to upstream technologies are labeled as 👆 [name].
|
|
||||||
|
|
||||||
We'll try our best to help you -- but we recommend creating an issue
|
|
||||||
specifically at each of the corresponding repositories for the best
|
|
||||||
result.
|
|
||||||
|
|
||||||
► Try to reproduce the bug you're reporting, on a stand-alone edition
|
|
||||||
of each tool, without using Cmder. If the bug applies when the
|
|
||||||
mentioned tools are NOT used within Cmder, there's a good chance that
|
|
||||||
you should open the bug at the corresponding repo instead.
|
|
||||||
|
|
||||||
• Lastly, have a look at official documentation for Cmder over
|
|
||||||
our website, and our wiki.
|
|
||||||
|
|
||||||
Read more on about Cmder on ConEmu docs:
|
|
||||||
https://conemu.github.io/en/cmder.html
|
|
||||||
|
|
||||||
|
|
||||||
Thank you for making sure you are opening a new valid issue! ♥
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
<!--
|
|
||||||
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.
|
|
||||||
Help us reproduce the issue by explaining what went wrong, and what did you expect to happen.
|
|
||||||
- Please keep the ticket language to English only here.
|
|
||||||
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
|
|
||||||
- [ ] Bug report (encountered problems/errors)
|
|
||||||
- [ ] Feature request (request for new functionality)
|
|
||||||
- [ ] Question
|
|
||||||
|
|
||||||
### Version Information
|
|
||||||
<!-- Please write your Cmder and ConEmu version below this line -->
|
|
||||||
|
|
||||||
<!-- 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 below this line -->
|
|
74
.github/workflows/build.yml
vendored
Normal file
74
.github/workflows/build.yml
vendored
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#---------------------------------#
|
||||||
|
# general configuration #
|
||||||
|
#---------------------------------#
|
||||||
|
|
||||||
|
name: Build Cmder
|
||||||
|
|
||||||
|
# Controls when the action will run. Triggers the workflow on push or pull request events but only for the main branch
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [ "master" ]
|
||||||
|
pull_request:
|
||||||
|
branches: [ "master" ]
|
||||||
|
|
||||||
|
#---------------------------------#
|
||||||
|
# environment configuration #
|
||||||
|
#---------------------------------#
|
||||||
|
|
||||||
|
env:
|
||||||
|
# Path to the root of the Cmder project.
|
||||||
|
CMDER_ROOT: ${{ github.workspace }}
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
# A workflow run is made up of one or more jobs that can run sequentially or in parallel
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
build:
|
||||||
|
name: Build Project
|
||||||
|
runs-on: windows-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Check out repository code (Action from GitHub)
|
||||||
|
uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Add MSBuild to PATH
|
||||||
|
uses: microsoft/setup-msbuild@v1
|
||||||
|
|
||||||
|
- name: Build Cmder Launcher
|
||||||
|
shell: pwsh
|
||||||
|
working-directory: scripts
|
||||||
|
run: .\build.ps1 -Compile -verbose
|
||||||
|
|
||||||
|
- name: Pack the built files
|
||||||
|
shell: pwsh
|
||||||
|
working-directory: scripts
|
||||||
|
run: .\pack.ps1 -verbose
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder.zip)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
path: build/cmder.zip
|
||||||
|
name: cmder.zip
|
||||||
|
if-no-files-found: error
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder.7z)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
path: build/cmder.7z
|
||||||
|
name: cmder.7z
|
||||||
|
|
||||||
|
- name: Upload artifact (cmder_mini.zip)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
path: build/cmder_mini.zip
|
||||||
|
name: cmder_mini.zip
|
||||||
|
|
||||||
|
- name: Upload artifact (hashes.txt)
|
||||||
|
uses: actions/upload-artifact@v3
|
||||||
|
with:
|
||||||
|
path: build/hashes.txt
|
||||||
|
name: hashes.txt
|
42
.github/workflows/tests.yml
vendored
Normal file
42
.github/workflows/tests.yml
vendored
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
name: Run Tests
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
pull_request:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: cmd
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}'
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
|
||||||
|
tests:
|
||||||
|
runs-on: windows-latest
|
||||||
|
continue-on-error: false
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
- name: Initialize vendors
|
||||||
|
shell: pwsh
|
||||||
|
working-directory: scripts
|
||||||
|
run: .\build.ps1 -verbose
|
||||||
|
- name: Testing Clink Shell
|
||||||
|
run: |
|
||||||
|
cmd /c vendor\init.bat /v /d /t
|
||||||
|
- name: Testing PowerShell
|
||||||
|
run: |
|
||||||
|
PowerShell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -Command "Invoke-Expression '. ''vendor\profile.ps1'''"
|
||||||
|
- name: Testing Bash
|
||||||
|
run: |
|
||||||
|
bash vendor/cmder.sh
|
65
.github/workflows/vendor.yml
vendored
Normal file
65
.github/workflows/vendor.yml
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
name: Update Vendor
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
schedule:
|
||||||
|
# At 13:37 UTC every day.
|
||||||
|
- cron: '37 13 * * *'
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
shell: pwsh
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
vendor:
|
||||||
|
|
||||||
|
runs-on: windows-latest
|
||||||
|
continue-on-error: false
|
||||||
|
timeout-minutes: 15
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
pull-requests: write
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v3
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- id: make-changes
|
||||||
|
name: Checking for updates
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
run: |
|
||||||
|
$currentVersion = (Get-Content .\vendor\sources.json | ConvertFrom-Json)
|
||||||
|
. .\scripts\update.ps1 -verbose
|
||||||
|
Set-GHVariable -Name COUNT_UPDATED -Value $count
|
||||||
|
$newVersion = (Get-Content .\vendor\sources.json | ConvertFrom-Json)
|
||||||
|
$listUpdated = ""
|
||||||
|
$updateMessage = "| Name | Old Version | New Version |`n| :--- | ---- | ---- |`n"
|
||||||
|
foreach ($s in $newVersion) {
|
||||||
|
$oldVersion = ($currentVersion | Where-Object {$_.name -eq $s.name}).version
|
||||||
|
if ($s.version -ne $oldVersion) {
|
||||||
|
$repoUrl = ($repoUrl = $s.Url.Replace("/archive/", "/releases/")).Substring(0, $repoUrl.IndexOf("/releases/")) + "/releases"
|
||||||
|
$listUpdated += "$($s.name) v$($s.version), "
|
||||||
|
$updateMessage += "| **[$($s.name)]($repoUrl)** | $oldVersion | **$($s.version)** |`n"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($count -eq 0) { return }
|
||||||
|
Set-GHVariable -Name LIST_UPDATED -Value $listUpdated.Trim(', ')
|
||||||
|
echo "UPDATE_MESSAGE<<<EOF`n$updateMessage`n<EOF" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||||
|
|
||||||
|
- uses: peter-evans/create-pull-request@v4
|
||||||
|
if: env.COUNT_UPDATED > 0
|
||||||
|
with:
|
||||||
|
title: 'Updates to `${{ env.COUNT_UPDATED }}` vendored dependencies'
|
||||||
|
body: |
|
||||||
|
### Automatically updated `${{ env.COUNT_UPDATED }}` dependencies:
|
||||||
|
${{ env.UPDATE_MESSAGE }}
|
||||||
|
---
|
||||||
|
Please verify and then **Merge** the pull request to update.
|
||||||
|
commit-message: '⬆️ Update dependencies (${{ env.LIST_UPDATED }})'
|
||||||
|
branch: update-vendor
|
||||||
|
base: master
|
7
.gitignore
vendored
7
.gitignore
vendored
@ -11,9 +11,11 @@ vendor/*/*
|
|||||||
!vendor/lib/*
|
!vendor/lib/*
|
||||||
!vendor/*
|
!vendor/*
|
||||||
!vendor/psmodules/*
|
!vendor/psmodules/*
|
||||||
|
vendor/git-for-windows
|
||||||
|
|
||||||
config/*
|
config/*
|
||||||
!config/Readme.md
|
!config/Readme.md
|
||||||
|
!config/profile.d/README.md
|
||||||
|
|
||||||
config_user/*
|
config_user/*
|
||||||
|
|
||||||
@ -21,8 +23,11 @@ Thumbs.db
|
|||||||
*.exe
|
*.exe
|
||||||
*.dll
|
*.dll
|
||||||
build/
|
build/
|
||||||
Version v*
|
/Version *
|
||||||
*.bak
|
*.bak
|
||||||
.github_changelog_generator
|
.github_changelog_generator
|
||||||
launcher/.vs
|
launcher/.vs
|
||||||
launcher/src/version.rc2
|
launcher/src/version.rc2
|
||||||
|
.vs/*
|
||||||
|
.vscode
|
||||||
|
.idea
|
||||||
|
175
CHANGELOG.md
175
CHANGELOG.md
@ -1,5 +1,68 @@
|
|||||||
# Change Log
|
# Change Log
|
||||||
|
|
||||||
|
## [1.3.20](https://github.com/cmderdev/cmder/tree/v1.3.20) (2022-03-18)
|
||||||
|
|
||||||
|
### Changes
|
||||||
|
|
||||||
|
- Update Git for Windows to 2.38.0.windows.1
|
||||||
|
- Update Clink to 1.3.47
|
||||||
|
- Update ConEmu to 22.08.07
|
||||||
|
|
||||||
|
### Fixes
|
||||||
|
|
||||||
|
- Fix #2740
|
||||||
|
- Fix find and use latest Git install always using vendored Git.
|
||||||
|
- Fix using Git from vendored Git and other Git for Windows tools from other Git in path.
|
||||||
|
- Remove setting `term=cygwin` in `init.bat` to fix random `ABCD` characters when using arrow keys in `vim`.
|
||||||
|
- See: [Sometimes pressing on arrow keys prints symbols #1691](https://github.com/Maximus5/ConEmu/issues/169)
|
||||||
|
- Fix #2654: blank space added between {cwd} and version_control variable by @geekrumper in https://github.com/cmderdev/cmder/pull/2661
|
||||||
|
- Fix #2659: Use get_hg_branch() to get Mercurial branch information. by @vsajip in https://github.com/cmderdev/cmder/pull/2660
|
||||||
|
- Fix Git prompt branch when using Git worktree by @daxgames in https://github.com/cmderdev/cmder/pull/2680
|
||||||
|
- Add optional clink async prompt update for svn status by @Mikaz-fr in https://github.com/cmderdev/cmder/pull/2703
|
||||||
|
- Better bat by @daxgames in https://github.com/cmderdev/cmder/pull/2742
|
||||||
|
- Related to #2654: Move space from "{git}{hg}{svn}" to individual parts by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2738
|
||||||
|
- Use TaskDialog instead of MessageBox (Fixes Builds) by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2746
|
||||||
|
- Add bin\cmder_shell.cmd by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2747
|
||||||
|
- Fix build system scripts (closes #2723) by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2748
|
||||||
|
- Custom option for launcher title by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2752
|
||||||
|
- Use Github Actions to build and release by @MartiUK in https://github.com/cmderdev/cmder/pull/2725
|
||||||
|
- Re-factor the build script to distinguish each step by @DRSDavidSoft in https://github.com/cmderdev/cmder/pull/2758
|
||||||
|
|
||||||
|
## [1.3.19](https://github.com/cmderdev/cmder/tree/v1.3.19) (2022-01-15)
|
||||||
|
|
||||||
|
### 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 its 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)
|
## [1.3.18](https://github.com/cmderdev/cmder/tree/v1.3.18) (2021-3-26)
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
@ -27,13 +90,13 @@
|
|||||||
|
|
||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
* Merge pull request #2357 from FloSchwalm/fix-git-version-comparison [Dax T Games]
|
* Merge pull request #2357 from FloSchwalm/fix-git-version-comparison [Dax T Games]
|
||||||
* Merge pull request #2339 from daxgames/fix_global_vars_vscode_err [Dax T Games]
|
* Merge pull request #2339 from daxgames/fix_global_vars_vscode_err [Dax T Games]
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
* Merge pull request #2358 from FloSchwalm/update-to-git-2.28 [Dax T Games]
|
* Merge pull request #2358 from FloSchwalm/update-to-git-2.28 [Dax T Games]
|
||||||
|
|
||||||
## [1.3.15](https://github.com/cmderdev/cmder/tree/v1.3.15) (2020-06-26)
|
## [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)
|
* Fixes #2247, fixes #2254 [#2265](https://github.com/cmderdev/cmder/pull/2265)
|
||||||
@ -66,7 +129,7 @@
|
|||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
* Update to Conemu 19.10.12
|
* Update to ConEmu 19.10.12
|
||||||
|
|
||||||
### Adds
|
### Adds
|
||||||
|
|
||||||
@ -78,7 +141,7 @@
|
|||||||
status = false
|
status = false
|
||||||
```
|
```
|
||||||
|
|
||||||
* #2174 `--` Syntax to pass command line options to Conemu.
|
* #2174 `--` Syntax to pass command line options to ConEmu.
|
||||||
* Disable Clink Logging
|
* Disable Clink Logging
|
||||||
* Add `~` tab completion.
|
* Add `~` tab completion.
|
||||||
|
|
||||||
@ -87,7 +150,7 @@
|
|||||||
|
|
||||||
* Fix #2191: profile.ps1: CheckGit does not export $gitLoaded
|
* Fix #2191: profile.ps1: CheckGit does not export $gitLoaded
|
||||||
* Fix #2192: Set default prompt hooks before loading user profile
|
* Fix #2192: Set default prompt hooks before loading user profile
|
||||||
* Fix #2097, #1899: powershell foreground color changing to green
|
* Fix #2097, #1899: PowerShell foreground color changing to green
|
||||||
* Fix #1979: Update Clink Completions to 0.3.4
|
* Fix #1979: Update Clink Completions to 0.3.4
|
||||||
* Fix #1678: Cmder corrupting path with `!` in Cmder folder path.
|
* Fix #1678: Cmder corrupting path with `!` in Cmder folder path.
|
||||||
|
|
||||||
@ -102,7 +165,7 @@
|
|||||||
* Fixes [#1985](https://github.com/cmderdev/cmder/issues/1985)
|
* Fixes [#1985](https://github.com/cmderdev/cmder/issues/1985)
|
||||||
* Pull Request: [#2106](https://github.com/cmderdev/cmder/pull/2106)
|
* Pull Request: [#2106](https://github.com/cmderdev/cmder/pull/2106)
|
||||||
* Portable Git requires running `post-install.bat` which deletes itself when done. This was not happening.
|
* Portable Git requires running `post-install.bat` which deletes itself when done. This was not happening.
|
||||||
* Resolves [#2105](https://github.com/cmderdev/cmder/issues/2105)
|
* Resolves [#2105](https://github.com/cmderdev/cmder/issues/2105)
|
||||||
* Pull Request: [#2002](https://github.com/cmderdev/cmder/pull/2002)
|
* Pull Request: [#2002](https://github.com/cmderdev/cmder/pull/2002)
|
||||||
* Updated the HG prompt code to use the '-ib' option to 'hg id' so the branch name is always available, regardless of the state of the working copy
|
* Updated the HG prompt code to use the '-ib' option to 'hg id' so the branch name is always available, regardless of the state of the working copy
|
||||||
|
|
||||||
@ -137,7 +200,7 @@
|
|||||||
* Fix uncommenting `call ssh-agent` in `user_profile.cmd` breaks Cmder prompt. [#1990](https://github.com/cmderdev/cmder/issues/1990), [#1807](https://github.com/cmderdev/cmder/issues/1807), [#1785](https://github.com/cmderdev/cmder/issues/1785), [#1885](https://github.com/cmderdev/cmder/issues/1885)
|
* Fix uncommenting `call ssh-agent` in `user_profile.cmd` breaks Cmder prompt. [#1990](https://github.com/cmderdev/cmder/issues/1990), [#1807](https://github.com/cmderdev/cmder/issues/1807), [#1785](https://github.com/cmderdev/cmder/issues/1785), [#1885](https://github.com/cmderdev/cmder/issues/1885)
|
||||||
* Pull Request: [#1999](https://github.com/cmderdev/cmder/issues/1999) fix ssh-agent call in user_profile.cmd.default
|
* Pull Request: [#1999](https://github.com/cmderdev/cmder/issues/1999) fix ssh-agent call in user_profile.cmd.default
|
||||||
* Unable to use '%' character in git branch names [#1779](https://github.com/cmderdev/cmder/issues/1779)
|
* Unable to use '%' character in git branch names [#1779](https://github.com/cmderdev/cmder/issues/1779)
|
||||||
* Pull Request: [#1991](https://github.com/cmderdev/cmder/issues/1991) add percent escaping for string.gsub
|
* Pull Request: [#1991](https://github.com/cmderdev/cmder/issues/1991) add percent escaping for string.gsub
|
||||||
* sort command, unix vs windows (/usr/bin/sort vs sort.exe) [#1931](https://github.com/cmderdev/cmder/issues/1931)
|
* sort command, unix vs windows (/usr/bin/sort vs sort.exe) [#1931](https://github.com/cmderdev/cmder/issues/1931)
|
||||||
* Pull Request: [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option
|
* Pull Request: [#1988](https://github.com/cmderdev/cmder/issues/1988) Prefer /nix_tools option
|
||||||
|
|
||||||
@ -157,13 +220,13 @@
|
|||||||
### Fixes
|
### Fixes
|
||||||
|
|
||||||
* Replaces Cmder Release v1.3.9 which has been removed.
|
* Replaces Cmder Release v1.3.9 which has been removed.
|
||||||
* /c now completely separates user config including Conemu configuration. This enables true multi-user Cmder with no configuration collisions. See PR #1949.
|
* /c now completely separates user config including ConEmu configuration. This enables true multi-user Cmder with no configuration collisions. See PR #1949.
|
||||||
* Fix #1959 Start cmder "find" errors. See PR #1961.
|
* Fix #1959 Start cmder "find" errors. See PR #1961.
|
||||||
* Fix #1956 Git detection should use env from git install root. See PR #1969
|
* Fix #1956 Git detection should use env from git install root. See PR #1969
|
||||||
|
|
||||||
### Adds
|
### Adds
|
||||||
|
|
||||||
* /m initially creates %cmder_root%/config/conemu-%computername%.xml for users that want per computer Conemu configuration with shared init scripts. See PR #1949.
|
* /m initially creates %cmder_root%/config/ConEmu-%computername%.xml for users that want per computer ConEmu configuration with shared init scripts. See PR #1949.
|
||||||
* /register now recognizes /c [path] and creates an appropriate Cmder Here shell context menu. See PR #1949.
|
* /register now recognizes /c [path] and creates an appropriate Cmder Here shell context menu. See PR #1949.
|
||||||
|
|
||||||
## [1.3.8](https://github.com/cmderdev/cmder/tree/v1.3.8) (2018-11-10)
|
## [1.3.8](https://github.com/cmderdev/cmder/tree/v1.3.8) (2018-11-10)
|
||||||
@ -218,7 +281,7 @@
|
|||||||
* Profile.ps1 (#1796)
|
* Profile.ps1 (#1796)
|
||||||
* Fix lib base (#1794)
|
* Fix lib base (#1794)
|
||||||
* Little Changes
|
* Little Changes
|
||||||
* Fixed move of default conemu.xml to the vendor folder
|
* Fixed move of default ConEmu.xml to the vendor folder
|
||||||
* ignore all of config folder
|
* ignore all of config folder
|
||||||
* move default comemu.xml to vendor folder
|
* move default comemu.xml to vendor folder
|
||||||
* fixes
|
* fixes
|
||||||
@ -244,7 +307,7 @@
|
|||||||
|
|
||||||
### Dmitri S. Guskov (2):
|
### Dmitri S. Guskov (2):
|
||||||
|
|
||||||
* Powershell 5.1 compatibility
|
* PowerShell 5.1 compatibility
|
||||||
* Update profile.ps1
|
* Update profile.ps1
|
||||||
|
|
||||||
### Gregory Lucas (1):
|
### Gregory Lucas (1):
|
||||||
@ -279,8 +342,8 @@
|
|||||||
### xiazeyu (4):
|
### xiazeyu (4):
|
||||||
|
|
||||||
* chore: unite slash
|
* chore: unite slash
|
||||||
* docs: update to latest useage
|
* docs: update to latest usage
|
||||||
* refactor: reduce global varible useage, fixed quote issue, added parameters support
|
* refactor: reduce global variable usage, fixed quote issue, added parameters support
|
||||||
* doc: fix typo
|
* doc: fix typo
|
||||||
|
|
||||||
### xiazeyu_2011 (8):
|
### xiazeyu_2011 (8):
|
||||||
@ -348,23 +411,23 @@
|
|||||||
* To append and go 2 levels deep: `call :enhance_path "%cmder_root%" 2 append`
|
* To append and go 2 levels deep: `call :enhance_path "%cmder_root%" 2 append`
|
||||||
* Added ability to init.bat to accept command line args and documented them in README.md. Allows users to change the behaviour of init.bat without editing the file.
|
* Added ability to init.bat to accept command line args and documented them in README.md. Allows users to change the behaviour of init.bat without editing the file.
|
||||||
|
|
||||||
| Argument | Description | Default |
|
| Argument | Description | Default |
|
||||||
| ----------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------- |
|
| ----------------------------- | ------------------------------------------------------------------------------------------------ | -------------------------------------- |
|
||||||
| /c [user cmder root] | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
| /c [user cmder root] | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
||||||
| /d | Enables debug output. | not set |
|
| /d | Enables debug output. | not set |
|
||||||
| /git_install_root [file path] | User specified Git installation root path. | '%CMDER_ROOT%\vendor\Git-for-Windows' |
|
| /git_install_root [file path] | User specified Git installation root path. | '%CMDER_ROOT%\vendor\Git-for-Windows' |
|
||||||
| /home [home folder] | User specified folder path to set `%HOME%` environment variable. | '%userprofile%' |
|
| /home [home folder] | User specified folder path to set `%HOME%` environment variable. | '%userprofile%' |
|
||||||
| /max_depth [1-5] | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
| /max_depth [1-5] | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||||
| /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' |
|
| /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-liases.cmd' |
|
| /user_aliases [file path] | File path pointing to user aliases. | '%CMDER_ROOT%\config\user-aliases.cmd' |
|
||||||
| /v | Enables verbose output. | not set |
|
| /v | Enables verbose output. | not set |
|
||||||
|
|
||||||
* Added new `cmder.exe /C \<path\>` argument
|
* Added new `cmder.exe /C \<path\>` argument
|
||||||
|
|
||||||
* To use run Cmder.exe with "/C" command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
* To use run Cmder.exe with "/C" command line argument. Example: `cmder.exe /C %userprofile%\cmder_config`
|
||||||
* To use run with `Cmder as Admin` sessions you must specify "/c" command line argument to `init.bat` in tasks. See [README.md](./Readme.md) for details.
|
* To use run with `Cmder as Admin` sessions you must specify "/c" command line argument to `init.bat` in tasks. See [README.md](./Readme.md) for details.
|
||||||
* Enables shared Cmder install with Non-Portable Individual User Config
|
* Enables shared Cmder install with Non-Portable Individual User Config
|
||||||
* Supported by all supported shells (cmder, powershell, git bash, and external bash)
|
* Supported by all supported shells (cmder, PowerShell, git bash, and external bash)
|
||||||
* This will create the following directory structure if it is missing.
|
* This will create the following directory structure if it is missing.
|
||||||
|
|
||||||
```plain
|
```plain
|
||||||
@ -401,7 +464,7 @@ This is the first Cmder release that comes with Git for Windows in the 64bit ver
|
|||||||
|
|
||||||
## [1.3.4](https://github.com/cmderdev/cmder/releases/tag/v1.3.4) (2017-11-03)
|
## [1.3.4](https://github.com/cmderdev/cmder/releases/tag/v1.3.4) (2017-11-03)
|
||||||
|
|
||||||
We now use a forked version of clink since it's original author is missing and we needed Windows 10 compat.
|
We now use a forked version of clink since its original author is missing and we needed Windows 10 compatibility.
|
||||||
|
|
||||||
**Updated components:**
|
**Updated components:**
|
||||||
|
|
||||||
@ -409,13 +472,13 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
|
|
||||||
**Fixed bugs:**
|
**Fixed bugs:**
|
||||||
|
|
||||||
* Fix lamda color after a ConEmu change: [a8d3261](https://github.com/cmderdev/cmder/commit/a8d32611a9b93cfb58f0318ae4b8041bc8a86c68)
|
* Fix lambada color after a ConEmu change: [a8d3261](https://github.com/cmderdev/cmder/commit/a8d32611a9b93cfb58f0318ae4b8041bc8a86c68)
|
||||||
* Compatible with Visual Studio Code (PowerShell): [\#1417](https://github.com/cmderdev/cmder/pull/1417)
|
* Compatible with Visual Studio Code (PowerShell): [\#1417](https://github.com/cmderdev/cmder/pull/1417)
|
||||||
* Make default tasks respect "Startup directory for new process": [b58ff9b](https://github.com/cmderdev/cmder/commit/b58ff9bb539d7f908f427fa34f377e1513fcd825)
|
* Make default tasks respect "Startup directory for new process": [b58ff9b](https://github.com/cmderdev/cmder/commit/b58ff9bb539d7f908f427fa34f377e1513fcd825)
|
||||||
|
|
||||||
## [1.3.3](https://github.com/cmderdev/cmder/releases/tag/v1.3.3) (2017-10-28)
|
## [1.3.3](https://github.com/cmderdev/cmder/releases/tag/v1.3.3) (2017-10-28)
|
||||||
|
|
||||||
We now use a forked version of clink since it's original author is missing and we needed Windows 10 compat.
|
We now use a forked version of clink since its original author is missing and we needed Windows 10 compat.
|
||||||
|
|
||||||
**Updated components:**
|
**Updated components:**
|
||||||
|
|
||||||
@ -433,7 +496,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Make cmder auto start with windows and auto minimize to the status bar. [\#532](https://github.com/cmderdev/cmder/issues/532)
|
* Make cmder auto start with windows and auto minimize to the status bar. [\#532](https://github.com/cmderdev/cmder/issues/532)
|
||||||
* v1.2.0: Errors because of PowerShell execution policy [\#483](https://github.com/cmderdev/cmder/issues/483)
|
* v1.2.0: Errors because of PowerShell execution policy [\#483](https://github.com/cmderdev/cmder/issues/483)
|
||||||
* Updating Vendors with chocolatey [\#442](https://github.com/cmderdev/cmder/issues/442)
|
* Updating Vendors with chocolatey [\#442](https://github.com/cmderdev/cmder/issues/442)
|
||||||
* Alias without it's opposit [\#281](https://github.com/cmderdev/cmder/issues/281)
|
* Alias without its opposite [\#281](https://github.com/cmderdev/cmder/issues/281)
|
||||||
* Improve new UX [\#230](https://github.com/cmderdev/cmder/issues/230)
|
* Improve new UX [\#230](https://github.com/cmderdev/cmder/issues/230)
|
||||||
* Different Font for the Lambda [\#211](https://github.com/cmderdev/cmder/issues/211)
|
* Different Font for the Lambda [\#211](https://github.com/cmderdev/cmder/issues/211)
|
||||||
* Git Credential Cache [\#184](https://github.com/cmderdev/cmder/issues/184)
|
* Git Credential Cache [\#184](https://github.com/cmderdev/cmder/issues/184)
|
||||||
@ -441,7 +504,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Include Scoop as package manager [\#42](https://github.com/cmderdev/cmder/issues/42)
|
* Include Scoop as package manager [\#42](https://github.com/cmderdev/cmder/issues/42)
|
||||||
* Complete aliases on tab [\#38](https://github.com/cmderdev/cmder/issues/38)
|
* Complete aliases on tab [\#38](https://github.com/cmderdev/cmder/issues/38)
|
||||||
* Path ordering issue - wrong find.exe executes by default [\#37](https://github.com/cmderdev/cmder/issues/37)
|
* Path ordering issue - wrong find.exe executes by default [\#37](https://github.com/cmderdev/cmder/issues/37)
|
||||||
* User conemu cfg [\#1109](https://github.com/cmderdev/cmder/pull/1109) ([daxgames](https://github.com/daxgames))
|
* User ConEmu cfg [\#1109](https://github.com/cmderdev/cmder/pull/1109) ([daxgames](https://github.com/daxgames))
|
||||||
* Msys bash [\#702](https://github.com/cmderdev/cmder/pull/702) ([daxgames](https://github.com/daxgames))
|
* Msys bash [\#702](https://github.com/cmderdev/cmder/pull/702) ([daxgames](https://github.com/daxgames))
|
||||||
* Added code to check for the existence of a customized ini file.. [\#427](https://github.com/cmderdev/cmder/pull/427) ([kodybrown](https://github.com/kodybrown))
|
* Added code to check for the existence of a customized ini file.. [\#427](https://github.com/cmderdev/cmder/pull/427) ([kodybrown](https://github.com/kodybrown))
|
||||||
* New build and pack scripts [\#152](https://github.com/cmderdev/cmder/pull/152) ([samvasko](https://github.com/samvasko))
|
* New build and pack scripts [\#152](https://github.com/cmderdev/cmder/pull/152) ([samvasko](https://github.com/samvasko))
|
||||||
@ -473,7 +536,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* What is mintty in here? [\#1149](https://github.com/cmderdev/cmder/issues/1149)
|
* What is mintty in here? [\#1149](https://github.com/cmderdev/cmder/issues/1149)
|
||||||
* No make [\#1146](https://github.com/cmderdev/cmder/issues/1146)
|
* No make [\#1146](https://github.com/cmderdev/cmder/issues/1146)
|
||||||
* How can I set the path of cmder properly at the start ? [\#1136](https://github.com/cmderdev/cmder/issues/1136)
|
* How can I set the path of cmder properly at the start ? [\#1136](https://github.com/cmderdev/cmder/issues/1136)
|
||||||
* Powershell Slow Startup [\#1130](https://github.com/cmderdev/cmder/issues/1130)
|
* PowerShell Slow Startup [\#1130](https://github.com/cmderdev/cmder/issues/1130)
|
||||||
* python for cmder [\#1129](https://github.com/cmderdev/cmder/issues/1129)
|
* python for cmder [\#1129](https://github.com/cmderdev/cmder/issues/1129)
|
||||||
* Haskell repl \(ghci\) crashes only in cmder works elsewhere [\#1125](https://github.com/cmderdev/cmder/issues/1125)
|
* Haskell repl \(ghci\) crashes only in cmder works elsewhere [\#1125](https://github.com/cmderdev/cmder/issues/1125)
|
||||||
* Latest update causes `error: failed to push some refs to git@gitlab....` [\#1124](https://github.com/cmderdev/cmder/issues/1124)
|
* Latest update causes `error: failed to push some refs to git@gitlab....` [\#1124](https://github.com/cmderdev/cmder/issues/1124)
|
||||||
@ -565,14 +628,14 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Tab autocompetion for git is inconsistent \(doesn't work with git add\) [\#885](https://github.com/cmderdev/cmder/issues/885)
|
* Tab autocompetion for git is inconsistent \(doesn't work with git add\) [\#885](https://github.com/cmderdev/cmder/issues/885)
|
||||||
* Line-wrapping breaks when using backspace key in a git repo with Cmder mini and Git for Windows. [\#883](https://github.com/cmderdev/cmder/issues/883)
|
* Line-wrapping breaks when using backspace key in a git repo with Cmder mini and Git for Windows. [\#883](https://github.com/cmderdev/cmder/issues/883)
|
||||||
* Cmder opens off screen [\#881](https://github.com/cmderdev/cmder/issues/881)
|
* Cmder opens off screen [\#881](https://github.com/cmderdev/cmder/issues/881)
|
||||||
* ctrl+l with powershell in quake mode clears the first prompt line as well [\#879](https://github.com/cmderdev/cmder/issues/879)
|
* ctrl+l with PowerShell in quake mode clears the first prompt line as well [\#879](https://github.com/cmderdev/cmder/issues/879)
|
||||||
* Enconding ? [\#877](https://github.com/cmderdev/cmder/issues/877)
|
* Enconding ? [\#877](https://github.com/cmderdev/cmder/issues/877)
|
||||||
* the {cmd} task [\#876](https://github.com/cmderdev/cmder/issues/876)
|
* the {cmd} task [\#876](https://github.com/cmderdev/cmder/issues/876)
|
||||||
* Failed to start cmder, app crashed [\#871](https://github.com/cmderdev/cmder/issues/871)
|
* Failed to start cmder, app crashed [\#871](https://github.com/cmderdev/cmder/issues/871)
|
||||||
* Cmder Windows Pinning Issue \[weird\] [\#869](https://github.com/cmderdev/cmder/issues/869)
|
* Cmder Windows Pinning Issue \[weird\] [\#869](https://github.com/cmderdev/cmder/issues/869)
|
||||||
* Why not use @ECHO OFF? [\#868](https://github.com/cmderdev/cmder/issues/868)
|
* Why not use @ECHO OFF? [\#868](https://github.com/cmderdev/cmder/issues/868)
|
||||||
* alias with && doesn't work [\#859](https://github.com/cmderdev/cmder/issues/859)
|
* alias with && doesn't work [\#859](https://github.com/cmderdev/cmder/issues/859)
|
||||||
* Having trouble with packaged conemu install, how can I point to a different one? [\#858](https://github.com/cmderdev/cmder/issues/858)
|
* Having trouble with packaged ConEmu install, how can I point to a different one? [\#858](https://github.com/cmderdev/cmder/issues/858)
|
||||||
* path entry for \<git\>/cmd instead of \<git\>/bin? [\#853](https://github.com/cmderdev/cmder/issues/853)
|
* path entry for \<git\>/cmd instead of \<git\>/bin? [\#853](https://github.com/cmderdev/cmder/issues/853)
|
||||||
* Cmder lists path on window resize. [\#851](https://github.com/cmderdev/cmder/issues/851)
|
* Cmder lists path on window resize. [\#851](https://github.com/cmderdev/cmder/issues/851)
|
||||||
* Alias with multi-word git commit message not working [\#847](https://github.com/cmderdev/cmder/issues/847)
|
* Alias with multi-word git commit message not working [\#847](https://github.com/cmderdev/cmder/issues/847)
|
||||||
@ -592,7 +655,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* When will the next version be available? [\#811](https://github.com/cmderdev/cmder/issues/811)
|
* When will the next version be available? [\#811](https://github.com/cmderdev/cmder/issues/811)
|
||||||
* Netcat is missing [\#810](https://github.com/cmderdev/cmder/issues/810)
|
* Netcat is missing [\#810](https://github.com/cmderdev/cmder/issues/810)
|
||||||
* how to use /? to get the help doc in the `cmder` [\#808](https://github.com/cmderdev/cmder/issues/808)
|
* how to use /? to get the help doc in the `cmder` [\#808](https://github.com/cmderdev/cmder/issues/808)
|
||||||
* \[Enhancement\] Powershell and Babun \(cygwin + zsh\) [\#807](https://github.com/cmderdev/cmder/issues/807)
|
* \[Enhancement\] PowerShell and Babun \(cygwin + zsh\) [\#807](https://github.com/cmderdev/cmder/issues/807)
|
||||||
* Cmder - Warning: Missing git support [\#806](https://github.com/cmderdev/cmder/issues/806)
|
* Cmder - Warning: Missing git support [\#806](https://github.com/cmderdev/cmder/issues/806)
|
||||||
* iul [\#800](https://github.com/cmderdev/cmder/issues/800)
|
* iul [\#800](https://github.com/cmderdev/cmder/issues/800)
|
||||||
* Update clink settings [\#793](https://github.com/cmderdev/cmder/issues/793)
|
* Update clink settings [\#793](https://github.com/cmderdev/cmder/issues/793)
|
||||||
@ -615,7 +678,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* 'ls' is no longer recognized command [\#757](https://github.com/cmderdev/cmder/issues/757)
|
* 'ls' is no longer recognized command [\#757](https://github.com/cmderdev/cmder/issues/757)
|
||||||
* I can't run de Cmder.exe [\#755](https://github.com/cmderdev/cmder/issues/755)
|
* I can't run de Cmder.exe [\#755](https://github.com/cmderdev/cmder/issues/755)
|
||||||
* Multiple location references when maximizing [\#753](https://github.com/cmderdev/cmder/issues/753)
|
* Multiple location references when maximizing [\#753](https://github.com/cmderdev/cmder/issues/753)
|
||||||
* CLink completions for npm increase cmder startup time for one second [\#750](https://github.com/cmderdev/cmder/issues/750)
|
* Clink completions for npm increase cmder startup time for one second [\#750](https://github.com/cmderdev/cmder/issues/750)
|
||||||
* Prevent other apps from overwriting the prompt? [\#749](https://github.com/cmderdev/cmder/issues/749)
|
* Prevent other apps from overwriting the prompt? [\#749](https://github.com/cmderdev/cmder/issues/749)
|
||||||
* cmder.exe infected with Variant.Kazy.767238 [\#748](https://github.com/cmderdev/cmder/issues/748)
|
* cmder.exe infected with Variant.Kazy.767238 [\#748](https://github.com/cmderdev/cmder/issues/748)
|
||||||
* cmder.exe considered harmful by Bitdefender [\#744](https://github.com/cmderdev/cmder/issues/744)
|
* cmder.exe considered harmful by Bitdefender [\#744](https://github.com/cmderdev/cmder/issues/744)
|
||||||
@ -649,16 +712,16 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Cannot switch to mapped network drive [\#649](https://github.com/cmderdev/cmder/issues/649)
|
* Cannot switch to mapped network drive [\#649](https://github.com/cmderdev/cmder/issues/649)
|
||||||
* Ctrl + D? [\#648](https://github.com/cmderdev/cmder/issues/648)
|
* Ctrl + D? [\#648](https://github.com/cmderdev/cmder/issues/648)
|
||||||
* Is there any hotkey jump to "Search" box? [\#647](https://github.com/cmderdev/cmder/issues/647)
|
* Is there any hotkey jump to "Search" box? [\#647](https://github.com/cmderdev/cmder/issues/647)
|
||||||
* File /vendor/conemu-maximus5/ConEmu.exe not found. [\#646](https://github.com/cmderdev/cmder/issues/646)
|
* File /vendor/ConEmu-maximus5/ConEmu.exe not found. [\#646](https://github.com/cmderdev/cmder/issues/646)
|
||||||
* As admin CMDER_ROOT not set in Powershell [\#643](https://github.com/cmderdev/cmder/issues/643)
|
* As admin CMDER_ROOT not set in PowerShell [\#643](https://github.com/cmderdev/cmder/issues/643)
|
||||||
* Emoji support [\#642](https://github.com/cmderdev/cmder/issues/642)
|
* Emoji support [\#642](https://github.com/cmderdev/cmder/issues/642)
|
||||||
* Having ls, cat, etc [\#641](https://github.com/cmderdev/cmder/issues/641)
|
* Having ls, cat, etc [\#641](https://github.com/cmderdev/cmder/issues/641)
|
||||||
* Cmder having Permission Errors for Windows 10 [\#640](https://github.com/cmderdev/cmder/issues/640)
|
* Cmder having Permission Errors for Windows 10 [\#640](https://github.com/cmderdev/cmder/issues/640)
|
||||||
* Powershell - Msys Aliases [\#639](https://github.com/cmderdev/cmder/issues/639)
|
* PowerShell - Msys Aliases [\#639](https://github.com/cmderdev/cmder/issues/639)
|
||||||
* Problem with install on window 7? [\#637](https://github.com/cmderdev/cmder/issues/637)
|
* Problem with install on window 7? [\#637](https://github.com/cmderdev/cmder/issues/637)
|
||||||
* Invoke-Expression : The term 'Invoke-Expression' is not recognized [\#636](https://github.com/cmderdev/cmder/issues/636)
|
* Invoke-Expression : The term 'Invoke-Expression' is not recognized [\#636](https://github.com/cmderdev/cmder/issues/636)
|
||||||
* it doesn't like Docker [\#631](https://github.com/cmderdev/cmder/issues/631)
|
* it doesn't like Docker [\#631](https://github.com/cmderdev/cmder/issues/631)
|
||||||
* Latest release : Windows 7 : Windows cannot find ".../vendor/conemu-maximus5/CpmE,u.exe" [\#629](https://github.com/cmderdev/cmder/issues/629)
|
* Latest release : Windows 7 : Windows cannot find ".../vendor/ConEmu-maximus5/CpmE,u.exe" [\#629](https://github.com/cmderdev/cmder/issues/629)
|
||||||
* Strange Vim behaviour after Git for Windows upgrade [\#628](https://github.com/cmderdev/cmder/issues/628)
|
* Strange Vim behaviour after Git for Windows upgrade [\#628](https://github.com/cmderdev/cmder/issues/628)
|
||||||
* msysGit has been superseded ,consider to switch to Git for Windows 2.x? [\#627](https://github.com/cmderdev/cmder/issues/627)
|
* msysGit has been superseded ,consider to switch to Git for Windows 2.x? [\#627](https://github.com/cmderdev/cmder/issues/627)
|
||||||
* tail command not found [\#625](https://github.com/cmderdev/cmder/issues/625)
|
* tail command not found [\#625](https://github.com/cmderdev/cmder/issues/625)
|
||||||
@ -673,7 +736,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* api-ms-win-crt-runtime-l1-1-0.dll is missing error \(Windows 8.1\) [\#604](https://github.com/cmderdev/cmder/issues/604)
|
* api-ms-win-crt-runtime-l1-1-0.dll is missing error \(Windows 8.1\) [\#604](https://github.com/cmderdev/cmder/issues/604)
|
||||||
* Prevent inactive cmder windows to be dimmed [\#603](https://github.com/cmderdev/cmder/issues/603)
|
* Prevent inactive cmder windows to be dimmed [\#603](https://github.com/cmderdev/cmder/issues/603)
|
||||||
* Git for Windows 2.5 [\#602](https://github.com/cmderdev/cmder/issues/602)
|
* Git for Windows 2.5 [\#602](https://github.com/cmderdev/cmder/issues/602)
|
||||||
* Incompatibility with conemu 150716+ / double pinned icon on taskbar [\#599](https://github.com/cmderdev/cmder/issues/599)
|
* Incompatibility with ConEmu 150716+ / double pinned icon on taskbar [\#599](https://github.com/cmderdev/cmder/issues/599)
|
||||||
* Cant get it working on windows xp [\#598](https://github.com/cmderdev/cmder/issues/598)
|
* Cant get it working on windows xp [\#598](https://github.com/cmderdev/cmder/issues/598)
|
||||||
* ls parameters error in Windows 10 [\#597](https://github.com/cmderdev/cmder/issues/597)
|
* ls parameters error in Windows 10 [\#597](https://github.com/cmderdev/cmder/issues/597)
|
||||||
* Resizing split windows [\#596](https://github.com/cmderdev/cmder/issues/596)
|
* Resizing split windows [\#596](https://github.com/cmderdev/cmder/issues/596)
|
||||||
@ -711,7 +774,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Error on Windows 7 [\#534](https://github.com/cmderdev/cmder/issues/534)
|
* Error on Windows 7 [\#534](https://github.com/cmderdev/cmder/issues/534)
|
||||||
* api-ms-win-crt-runtime l1-109.dll is missing [\#531](https://github.com/cmderdev/cmder/issues/531)
|
* api-ms-win-crt-runtime l1-109.dll is missing [\#531](https://github.com/cmderdev/cmder/issues/531)
|
||||||
* Git checks for 'commits' every time a folder is changed? [\#529](https://github.com/cmderdev/cmder/issues/529)
|
* Git checks for 'commits' every time a folder is changed? [\#529](https://github.com/cmderdev/cmder/issues/529)
|
||||||
* Powershell tab title issue [\#528](https://github.com/cmderdev/cmder/issues/528)
|
* PowerShell tab title issue [\#528](https://github.com/cmderdev/cmder/issues/528)
|
||||||
* conhost.exe keeps on crashing. [\#527](https://github.com/cmderdev/cmder/issues/527)
|
* conhost.exe keeps on crashing. [\#527](https://github.com/cmderdev/cmder/issues/527)
|
||||||
* storage in userprofile \(instead of fixed config dir relative to the executable\) [\#526](https://github.com/cmderdev/cmder/issues/526)
|
* storage in userprofile \(instead of fixed config dir relative to the executable\) [\#526](https://github.com/cmderdev/cmder/issues/526)
|
||||||
* Cmder crashes when AVG falsely flags it as a virus. [\#522](https://github.com/cmderdev/cmder/issues/522)
|
* Cmder crashes when AVG falsely flags it as a virus. [\#522](https://github.com/cmderdev/cmder/issues/522)
|
||||||
@ -781,7 +844,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* feature request vim-airline [\#306](https://github.com/cmderdev/cmder/issues/306)
|
* feature request vim-airline [\#306](https://github.com/cmderdev/cmder/issues/306)
|
||||||
* Integrate PSReadLine [\#301](https://github.com/cmderdev/cmder/issues/301)
|
* Integrate PSReadLine [\#301](https://github.com/cmderdev/cmder/issues/301)
|
||||||
* Full Screen [\#295](https://github.com/cmderdev/cmder/issues/295)
|
* Full Screen [\#295](https://github.com/cmderdev/cmder/issues/295)
|
||||||
* Configure Powershell to match CMD [\#294](https://github.com/cmderdev/cmder/issues/294)
|
* Configure PowerShell to match CMD [\#294](https://github.com/cmderdev/cmder/issues/294)
|
||||||
* Tab Close on CTRL-W [\#293](https://github.com/cmderdev/cmder/issues/293)
|
* Tab Close on CTRL-W [\#293](https://github.com/cmderdev/cmder/issues/293)
|
||||||
* v1.1.4.1 /REGISTER ALL has broken icon [\#292](https://github.com/cmderdev/cmder/issues/292)
|
* v1.1.4.1 /REGISTER ALL has broken icon [\#292](https://github.com/cmderdev/cmder/issues/292)
|
||||||
* CD in root not working.. [\#289](https://github.com/cmderdev/cmder/issues/289)
|
* CD in root not working.. [\#289](https://github.com/cmderdev/cmder/issues/289)
|
||||||
@ -920,7 +983,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Pinning Cmder to taskbar doesn't work as expected [\#39](https://github.com/cmderdev/cmder/issues/39)
|
* Pinning Cmder to taskbar doesn't work as expected [\#39](https://github.com/cmderdev/cmder/issues/39)
|
||||||
* Prompt does not work with clink 0.4 [\#35](https://github.com/cmderdev/cmder/issues/35)
|
* Prompt does not work with clink 0.4 [\#35](https://github.com/cmderdev/cmder/issues/35)
|
||||||
* vendor/init.bat fails on paths with spaces [\#28](https://github.com/cmderdev/cmder/issues/28)
|
* vendor/init.bat fails on paths with spaces [\#28](https://github.com/cmderdev/cmder/issues/28)
|
||||||
* "windows cannot find ...\cmder\vendor/conemu-maximus5/ConEmu.exe" [\#27](https://github.com/cmderdev/cmder/issues/27)
|
* "windows cannot find ...\cmder\vendor/ConEmu-maximus5/ConEmu.exe" [\#27](https://github.com/cmderdev/cmder/issues/27)
|
||||||
* Issue with SSH and tmux [\#25](https://github.com/cmderdev/cmder/issues/25)
|
* Issue with SSH and tmux [\#25](https://github.com/cmderdev/cmder/issues/25)
|
||||||
* PWD, VI, VIM commands don't work on windows 7. [\#23](https://github.com/cmderdev/cmder/issues/23)
|
* PWD, VI, VIM commands don't work on windows 7. [\#23](https://github.com/cmderdev/cmder/issues/23)
|
||||||
* Include icon [\#21](https://github.com/cmderdev/cmder/issues/21)
|
* Include icon [\#21](https://github.com/cmderdev/cmder/issues/21)
|
||||||
@ -937,7 +1000,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Unable to `cd` to another drive [\#6](https://github.com/cmderdev/cmder/issues/6)
|
* Unable to `cd` to another drive [\#6](https://github.com/cmderdev/cmder/issues/6)
|
||||||
* cant change start directory [\#4](https://github.com/cmderdev/cmder/issues/4)
|
* cant change start directory [\#4](https://github.com/cmderdev/cmder/issues/4)
|
||||||
* lalt + arrow left/right not working as a macro hotkey [\#3](https://github.com/cmderdev/cmder/issues/3)
|
* lalt + arrow left/right not working as a macro hotkey [\#3](https://github.com/cmderdev/cmder/issues/3)
|
||||||
* alt gr + 2 opens new powershell [\#2](https://github.com/cmderdev/cmder/issues/2)
|
* alt gr + 2 opens new PowerShell [\#2](https://github.com/cmderdev/cmder/issues/2)
|
||||||
* Gvim preferences are not used in {cmd} [\#1](https://github.com/cmderdev/cmder/issues/1)
|
* Gvim preferences are not used in {cmd} [\#1](https://github.com/cmderdev/cmder/issues/1)
|
||||||
|
|
||||||
**Merged pull requests:**
|
**Merged pull requests:**
|
||||||
@ -961,7 +1024,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Bump clink-completions to 0.3.1 [\#992](https://github.com/cmderdev/cmder/pull/992) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
* Bump clink-completions to 0.3.1 [\#992](https://github.com/cmderdev/cmder/pull/992) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||||
* Fix git branch name never shown as dirty [\#974](https://github.com/cmderdev/cmder/pull/974) ([janschulz](https://github.com/janschulz))
|
* Fix git branch name never shown as dirty [\#974](https://github.com/cmderdev/cmder/pull/974) ([janschulz](https://github.com/janschulz))
|
||||||
* Disable history switching behavior of ctrl+tab. Sequential switching. [\#963](https://github.com/cmderdev/cmder/pull/963) ([Jackbennett](https://github.com/Jackbennett))
|
* Disable history switching behavior of ctrl+tab. Sequential switching. [\#963](https://github.com/cmderdev/cmder/pull/963) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* Register cmder in the context menu from powershell [\#962](https://github.com/cmderdev/cmder/pull/962) ([Jackbennett](https://github.com/Jackbennett))
|
* Register cmder in the context menu from PowerShell [\#962](https://github.com/cmderdev/cmder/pull/962) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* cmd: change the prompt in lua [\#961](https://github.com/cmderdev/cmder/pull/961) ([janschulz](https://github.com/janschulz))
|
* cmd: change the prompt in lua [\#961](https://github.com/cmderdev/cmder/pull/961) ([janschulz](https://github.com/janschulz))
|
||||||
* Custom prompt hooks protected from later overwriting [\#952](https://github.com/cmderdev/cmder/pull/952) ([Jackbennett](https://github.com/Jackbennett))
|
* Custom prompt hooks protected from later overwriting [\#952](https://github.com/cmderdev/cmder/pull/952) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* Update clink-completions to 0.3.0 [\#946](https://github.com/cmderdev/cmder/pull/946) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
* Update clink-completions to 0.3.0 [\#946](https://github.com/cmderdev/cmder/pull/946) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||||
@ -1005,10 +1068,10 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Do not overwrite aliases on update [\#735](https://github.com/cmderdev/cmder/pull/735) ([janschulz](https://github.com/janschulz))
|
* Do not overwrite aliases on update [\#735](https://github.com/cmderdev/cmder/pull/735) ([janschulz](https://github.com/janschulz))
|
||||||
* Added check for git install path in init.bat. [\#734](https://github.com/cmderdev/cmder/pull/734) ([chase-miller](https://github.com/chase-miller))
|
* Added check for git install path in init.bat. [\#734](https://github.com/cmderdev/cmder/pull/734) ([chase-miller](https://github.com/chase-miller))
|
||||||
* Fix icons [\#731](https://github.com/cmderdev/cmder/pull/731) ([daxgames](https://github.com/daxgames))
|
* Fix icons [\#731](https://github.com/cmderdev/cmder/pull/731) ([daxgames](https://github.com/daxgames))
|
||||||
* Fixed - Powershell vim/vim alias opening a new tab when editing a file [\#729](https://github.com/cmderdev/cmder/pull/729) ([daxgames](https://github.com/daxgames))
|
* Fixed - PowerShell vim/vim alias opening a new tab when editing a file [\#729](https://github.com/cmderdev/cmder/pull/729) ([daxgames](https://github.com/daxgames))
|
||||||
* Added vi/vim aliases and fixed powershell startup errors [\#726](https://github.com/cmderdev/cmder/pull/726) ([daxgames](https://github.com/daxgames))
|
* Added vi/vim aliases and fixed PowerShell startup errors [\#726](https://github.com/cmderdev/cmder/pull/726) ([daxgames](https://github.com/daxgames))
|
||||||
* Release 1.3 [\#723](https://github.com/cmderdev/cmder/pull/723) ([MartiUK](https://github.com/MartiUK))
|
* Release 1.3 [\#723](https://github.com/cmderdev/cmder/pull/723) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Update to conemu 151119 [\#722](https://github.com/cmderdev/cmder/pull/722) ([MartiUK](https://github.com/MartiUK))
|
* Update to ConEmu 151119 [\#722](https://github.com/cmderdev/cmder/pull/722) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Disable appveyor test search [\#720](https://github.com/cmderdev/cmder/pull/720) ([MartiUK](https://github.com/MartiUK))
|
* Disable appveyor test search [\#720](https://github.com/cmderdev/cmder/pull/720) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Fix gitter webhook [\#719](https://github.com/cmderdev/cmder/pull/719) ([MartiUK](https://github.com/MartiUK))
|
* Fix gitter webhook [\#719](https://github.com/cmderdev/cmder/pull/719) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Publish appveyor artefacts [\#718](https://github.com/cmderdev/cmder/pull/718) ([MartiUK](https://github.com/MartiUK))
|
* Publish appveyor artefacts [\#718](https://github.com/cmderdev/cmder/pull/718) ([MartiUK](https://github.com/MartiUK))
|
||||||
@ -1018,7 +1081,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Upgrade clink-completions to 0.2.1 [\#676](https://github.com/cmderdev/cmder/pull/676) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
* Upgrade clink-completions to 0.2.1 [\#676](https://github.com/cmderdev/cmder/pull/676) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||||
* Enable the '/single' switch \(\#577\) [\#673](https://github.com/cmderdev/cmder/pull/673) ([DoCode](https://github.com/DoCode))
|
* Enable the '/single' switch \(\#577\) [\#673](https://github.com/cmderdev/cmder/pull/673) ([DoCode](https://github.com/DoCode))
|
||||||
* Fixed problem with Invoke-Expression [\#667](https://github.com/cmderdev/cmder/pull/667) ([Pireax](https://github.com/Pireax))
|
* Fixed problem with Invoke-Expression [\#667](https://github.com/cmderdev/cmder/pull/667) ([Pireax](https://github.com/Pireax))
|
||||||
* Add user startup file for powershell [\#666](https://github.com/cmderdev/cmder/pull/666) ([Pireax](https://github.com/Pireax))
|
* Add user startup file for PowerShell [\#666](https://github.com/cmderdev/cmder/pull/666) ([Pireax](https://github.com/Pireax))
|
||||||
* Build from behind proxy & appveyor [\#665](https://github.com/cmderdev/cmder/pull/665) ([MartiUK](https://github.com/MartiUK))
|
* Build from behind proxy & appveyor [\#665](https://github.com/cmderdev/cmder/pull/665) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Fix init.bat generation [\#663](https://github.com/cmderdev/cmder/pull/663) ([janschulz](https://github.com/janschulz))
|
* Fix init.bat generation [\#663](https://github.com/cmderdev/cmder/pull/663) ([janschulz](https://github.com/janschulz))
|
||||||
* Upgrade clink-completions to 0.2.0 [\#653](https://github.com/cmderdev/cmder/pull/653) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
* Upgrade clink-completions to 0.2.0 [\#653](https://github.com/cmderdev/cmder/pull/653) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||||
@ -1036,13 +1099,13 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Enhance Path in profile.ps1 [\#575](https://github.com/cmderdev/cmder/pull/575) ([Bobo1239](https://github.com/Bobo1239))
|
* Enhance Path in profile.ps1 [\#575](https://github.com/cmderdev/cmder/pull/575) ([Bobo1239](https://github.com/Bobo1239))
|
||||||
* Fixed: 'Enable-GitColors is Obsolete...' warning [\#569](https://github.com/cmderdev/cmder/pull/569) ([eeree](https://github.com/eeree))
|
* Fixed: 'Enable-GitColors is Obsolete...' warning [\#569](https://github.com/cmderdev/cmder/pull/569) ([eeree](https://github.com/eeree))
|
||||||
* Update .gitignore [\#548](https://github.com/cmderdev/cmder/pull/548) ([thomgit](https://github.com/thomgit))
|
* Update .gitignore [\#548](https://github.com/cmderdev/cmder/pull/548) ([thomgit](https://github.com/thomgit))
|
||||||
* Add `-ExecutionPolicy Bypass` to powershell tasks [\#543](https://github.com/cmderdev/cmder/pull/543) ([malobre](https://github.com/malobre))
|
* Add `-ExecutionPolicy Bypass` to PowerShell tasks [\#543](https://github.com/cmderdev/cmder/pull/543) ([malobre](https://github.com/malobre))
|
||||||
* Remove depreciated Enable-GitColors in posh-git [\#517](https://github.com/cmderdev/cmder/pull/517) ([bondz](https://github.com/bondz))
|
* Remove depreciated Enable-GitColors in posh-git [\#517](https://github.com/cmderdev/cmder/pull/517) ([bondz](https://github.com/bondz))
|
||||||
* Fix cleanup script. [\#479](https://github.com/cmderdev/cmder/pull/479) ([MartiUK](https://github.com/MartiUK))
|
* Fix cleanup script. [\#479](https://github.com/cmderdev/cmder/pull/479) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Fix link to msysgit's site. Google's repo was moved or removed. [\#465](https://github.com/cmderdev/cmder/pull/465) ([TheMolkaPL](https://github.com/TheMolkaPL))
|
* Fix link to msysgit's site. Google's repo was moved or removed. [\#465](https://github.com/cmderdev/cmder/pull/465) ([TheMolkaPL](https://github.com/TheMolkaPL))
|
||||||
* Update sources.json [\#451](https://github.com/cmderdev/cmder/pull/451) ([MartiUK](https://github.com/MartiUK))
|
* Update sources.json [\#451](https://github.com/cmderdev/cmder/pull/451) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Merge development into master for 1.2 [\#450](https://github.com/cmderdev/cmder/pull/450) ([MartiUK](https://github.com/MartiUK))
|
* Merge development into master for 1.2 [\#450](https://github.com/cmderdev/cmder/pull/450) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Helper function using powershell to register the cmder context menu [\#441](https://github.com/cmderdev/cmder/pull/441) ([Jackbennett](https://github.com/Jackbennett))
|
* Helper function using PowerShell to register the cmder context menu [\#441](https://github.com/cmderdev/cmder/pull/441) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* git and Posh-git check [\#440](https://github.com/cmderdev/cmder/pull/440) ([Jackbennett](https://github.com/Jackbennett))
|
* git and Posh-git check [\#440](https://github.com/cmderdev/cmder/pull/440) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* Improves performance of prompt filtering [\#438](https://github.com/cmderdev/cmder/pull/438) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
* Improves performance of prompt filtering [\#438](https://github.com/cmderdev/cmder/pull/438) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||||
* Preview PR for including external completions into Cmder [\#434](https://github.com/cmderdev/cmder/pull/434) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
* Preview PR for including external completions into Cmder [\#434](https://github.com/cmderdev/cmder/pull/434) ([vladimir-kotikov](https://github.com/vladimir-kotikov))
|
||||||
@ -1054,7 +1117,7 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Added git shell task. [\#422](https://github.com/cmderdev/cmder/pull/422) ([ragekit](https://github.com/ragekit))
|
* Added git shell task. [\#422](https://github.com/cmderdev/cmder/pull/422) ([ragekit](https://github.com/ragekit))
|
||||||
* Public site docs update matching the repo readme [\#411](https://github.com/cmderdev/cmder/pull/411) ([Jackbennett](https://github.com/Jackbennett))
|
* Public site docs update matching the repo readme [\#411](https://github.com/cmderdev/cmder/pull/411) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* Install steps clarity [\#410](https://github.com/cmderdev/cmder/pull/410) ([Jackbennett](https://github.com/Jackbennett))
|
* Install steps clarity [\#410](https://github.com/cmderdev/cmder/pull/410) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* Update Conemu \<preview release\>, update clink 4.4 [\#407](https://github.com/cmderdev/cmder/pull/407) ([Jackbennett](https://github.com/Jackbennett))
|
* Update ConEmu \<preview release\>, update clink 4.4 [\#407](https://github.com/cmderdev/cmder/pull/407) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* Use a -Full parameter to download all sources rather than the minimum [\#406](https://github.com/cmderdev/cmder/pull/406) ([Jackbennett](https://github.com/Jackbennett))
|
* Use a -Full parameter to download all sources rather than the minimum [\#406](https://github.com/cmderdev/cmder/pull/406) ([Jackbennett](https://github.com/Jackbennett))
|
||||||
* Adding mercuial prompt [\#401](https://github.com/cmderdev/cmder/pull/401) ([utek](https://github.com/utek))
|
* Adding mercuial prompt [\#401](https://github.com/cmderdev/cmder/pull/401) ([utek](https://github.com/utek))
|
||||||
* Handle quoted paths [\#398](https://github.com/cmderdev/cmder/pull/398) ([mikesigs](https://github.com/mikesigs))
|
* Handle quoted paths [\#398](https://github.com/cmderdev/cmder/pull/398) ([mikesigs](https://github.com/mikesigs))
|
||||||
@ -1073,15 +1136,15 @@ We now use a forked version of clink since it's original author is missing and w
|
|||||||
* Add an unalias command [\#313](https://github.com/cmderdev/cmder/pull/313) ([glucas](https://github.com/glucas))
|
* Add an unalias command [\#313](https://github.com/cmderdev/cmder/pull/313) ([glucas](https://github.com/glucas))
|
||||||
* Revert "Add single mode support." [\#312](https://github.com/cmderdev/cmder/pull/312) ([MartiUK](https://github.com/MartiUK))
|
* Revert "Add single mode support." [\#312](https://github.com/cmderdev/cmder/pull/312) ([MartiUK](https://github.com/MartiUK))
|
||||||
* FIX CMDER_ROOT for admin launch [\#311](https://github.com/cmderdev/cmder/pull/311) ([sescandell](https://github.com/sescandell))
|
* FIX CMDER_ROOT for admin launch [\#311](https://github.com/cmderdev/cmder/pull/311) ([sescandell](https://github.com/sescandell))
|
||||||
* Lambda color in powershell was changed to DarkGray [\#308](https://github.com/cmderdev/cmder/pull/308) ([SheGe](https://github.com/SheGe))
|
* Lambda color in PowerShell was changed to DarkGray [\#308](https://github.com/cmderdev/cmder/pull/308) ([SheGe](https://github.com/SheGe))
|
||||||
* Add option to reload aliases from file [\#304](https://github.com/cmderdev/cmder/pull/304) ([glucas](https://github.com/glucas))
|
* Add option to reload aliases from file [\#304](https://github.com/cmderdev/cmder/pull/304) ([glucas](https://github.com/glucas))
|
||||||
* Clean aliases script [\#300](https://github.com/cmderdev/cmder/pull/300) ([melku](https://github.com/melku))
|
* Clean aliases script [\#300](https://github.com/cmderdev/cmder/pull/300) ([melku](https://github.com/melku))
|
||||||
* Adding history alias [\#299](https://github.com/cmderdev/cmder/pull/299) ([robgithub](https://github.com/robgithub))
|
* Adding history alias [\#299](https://github.com/cmderdev/cmder/pull/299) ([robgithub](https://github.com/robgithub))
|
||||||
* Fixes the ambiguity about notice and parameter [\#298](https://github.com/cmderdev/cmder/pull/298) ([LeoColomb](https://github.com/LeoColomb))
|
* Fixes the ambiguity about notice and parameter [\#298](https://github.com/cmderdev/cmder/pull/298) ([LeoColomb](https://github.com/LeoColomb))
|
||||||
* Fixed small issue in README [\#296](https://github.com/cmderdev/cmder/pull/296) ([brunowego](https://github.com/brunowego))
|
* Fixed small issue in README [\#296](https://github.com/cmderdev/cmder/pull/296) ([brunowego](https://github.com/brunowego))
|
||||||
* Fixes small Powershell' loader issues [\#273](https://github.com/cmderdev/cmder/pull/273) ([LeoColomb](https://github.com/LeoColomb))
|
* Fixes small PowerShell' loader issues [\#273](https://github.com/cmderdev/cmder/pull/273) ([LeoColomb](https://github.com/LeoColomb))
|
||||||
* Update Dev Branch [\#272](https://github.com/cmderdev/cmder/pull/272) ([MartiUK](https://github.com/MartiUK))
|
* Update Dev Branch [\#272](https://github.com/cmderdev/cmder/pull/272) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Add custom loader for Powershell & improve its implementation [\#271](https://github.com/cmderdev/cmder/pull/271) ([LeoColomb](https://github.com/LeoColomb))
|
* Add custom loader for PowerShell & improve its implementation [\#271](https://github.com/cmderdev/cmder/pull/271) ([LeoColomb](https://github.com/LeoColomb))
|
||||||
* Add single mode support. [\#256](https://github.com/cmderdev/cmder/pull/256) ([TheCjw](https://github.com/TheCjw))
|
* Add single mode support. [\#256](https://github.com/cmderdev/cmder/pull/256) ([TheCjw](https://github.com/TheCjw))
|
||||||
* Revert "Start in the HOME folder." [\#253](https://github.com/cmderdev/cmder/pull/253) ([MartiUK](https://github.com/MartiUK))
|
* Revert "Start in the HOME folder." [\#253](https://github.com/cmderdev/cmder/pull/253) ([MartiUK](https://github.com/MartiUK))
|
||||||
* Ensure-Exists is necessary for build.ps1, add it back. [\#249](https://github.com/cmderdev/cmder/pull/249) ([narnaud](https://github.com/narnaud))
|
* Ensure-Exists is necessary for build.ps1, add it back. [\#249](https://github.com/cmderdev/cmder/pull/249) ([narnaud](https://github.com/narnaud))
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
# How to contribute
|
# How to contribute
|
||||||
|
|
||||||
Unfortunately we all can't work on cmder every day of the year, so I have decided to write some guidelines for contributing.
|
Unfortunately we all can't work on Cmder every day of the year, so I have decided to write some guidelines for contributing.
|
||||||
|
|
||||||
If you follow them your contribution will likely be pulled in quicker.
|
If you follow them your contribution will likely be pulled in quicker.
|
||||||
|
|
||||||
|
11
Cmder.bat
11
Cmder.bat
@ -4,8 +4,17 @@ SET CMDER_ROOT=%~dp0
|
|||||||
:: Remove Trailing '\'
|
:: Remove Trailing '\'
|
||||||
@if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
@if "%CMDER_ROOT:~-1%" == "\" SET CMDER_ROOT=%CMDER_ROOT:~0,-1%
|
||||||
|
|
||||||
|
if not exist "%CMDER_ROOT%\config\user_ConEmu.xml" (
|
||||||
|
if not exist "%CMDER_ROOT%\config" mkdir "%CMDER_ROOT%\config" 2>nul
|
||||||
|
copy "%CMDER_ROOT%\vendor\ConEmu.xml.default" "%CMDER_ROOT%\config\user_ConEmu.xml" 1>nul
|
||||||
|
if %errorlevel% neq 0 (
|
||||||
|
echo ERROR: CMDER Initialization has Failed
|
||||||
|
exit /b 1
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
if exist "%~1" (
|
if exist "%~1" (
|
||||||
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%~1"
|
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%~1"
|
||||||
) else (
|
) else (
|
||||||
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%CMDER_ROOT%\config\ConEmu.xml"
|
start %~dp0/vendor/conemu-maximus5/ConEmu.exe /Icon "%CMDER_ROOT%\icons\cmder.ico" /Title Cmder /LoadCfgFile "%CMDER_ROOT%\config\user_ConEmu.xml"
|
||||||
)
|
)
|
||||||
|
64
README.md
64
README.md
@ -1,14 +1,14 @@
|
|||||||
# Cmder
|
# Cmder
|
||||||
|
|
||||||
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/MartiUK/cmder)
|
[](https://gitter.im/cmderdev/cmder?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [](https://ci.appveyor.com/project/cmderdev/cmder) [](https://github.com/cmderdev/cmder/actions/workflows/build.yml)
|
||||||
|
|
||||||
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, comes with a Monokai color scheme, amazing [clink](https://github.com/mridgers/clink) (further enhanced by [clink-completions](https://github.com/vladimir-kotikov/clink-completions)) and a custom prompt layout.
|
Cmder is a **software package** created out of pure frustration over absence of usable console emulator on Windows. It is based on [ConEmu](https://conemu.github.io/) with *major* config overhaul, comes with a Monokai color scheme, amazing [clink](https://chrisant996.github.io/clink/) (further enhanced by [clink-completions](https://github.com/vladimir-kotikov/clink-completions)) and a custom prompt layout.
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
## Why use it
|
## Why use it
|
||||||
|
|
||||||
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like wget, curl and git) with you anywhere.
|
The main advantage of Cmder is portability. It is designed to be totally self-contained with no external dependencies, which makes it great for **USB Sticks** or **cloud storage**. So you can carry your console, aliases and binaries (like `wget`, `curl` and `git`) with you anywhere.
|
||||||
|
|
||||||
The Cmder's user interface is also designed to be more eye pleasing, and you can compare the main differences between Cmder and ConEmu [here](https://conemu.github.io/en/cmder.html).
|
The Cmder's user interface is also designed to be more eye pleasing, and you can compare the main differences between Cmder and ConEmu [here](https://conemu.github.io/en/cmder.html).
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ The Cmder's user interface is also designed to be more eye pleasing, and you can
|
|||||||
|
|
||||||
|
|
||||||
| Argument | Description |
|
| Argument | Description |
|
||||||
| ------------------- | ----------------------------------------------------------------------- |
|
| ------------------------- | ----------------------------------------------------------------------- |
|
||||||
| `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` |
|
| `/C [user_root_path]` | Individual user Cmder root folder. Example: `%userprofile%\cmder_config` |
|
||||||
| `/M` | Use `conemu-%computername%.xml` for ConEmu settings storage instead of `user_conemu.xml` |
|
| `/M` | Use `conemu-%computername%.xml` for ConEmu settings storage instead of `user_conemu.xml` |
|
||||||
| `/REGISTER [ALL, USER]` | Register a Windows Shell Menu shortcut. |
|
| `/REGISTER [ALL, USER]` | Register a Windows Shell Menu shortcut. |
|
||||||
@ -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. |
|
| `/SINGLE` | Start Cmder in single mode. |
|
||||||
| `/START [start_path]` | Folder path to start in. |
|
| `/START [start_path]` | Folder path to start in. |
|
||||||
| `/TASK [task_name]` | Task to start after launch. |
|
| `/TASK [task_name]` | Task to start after launch. |
|
||||||
| `/X [ConEmu extras pars]` | Forwads parameters to ConEmu |
|
| `/X [ConEmu extras pars]` | Forwards parameters to ConEmu |
|
||||||
|
|
||||||
## Context Menu Integration
|
## Context Menu Integration
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ So you've experimented with Cmder a little and want to give it a shot in a more
|
|||||||
1. Open a terminal as an Administrator
|
1. Open a terminal as an Administrator
|
||||||
2. Navigate to the directory you have placed Cmder
|
2. Navigate to the directory you have placed Cmder
|
||||||
3. Execute `.\cmder.exe /REGISTER ALL`
|
3. Execute `.\cmder.exe /REGISTER ALL`
|
||||||
_If you get a message "Access Denied" ensure you are executing the command in an **Administrator** prompt._
|
_If you get an "Access Denied" message, make sure you are executing the command in an **Administrator** prompt._
|
||||||
|
|
||||||
In a file explorer window right click in or on a directory to see "Cmder Here" in the context menu.
|
In a file explorer window right click in or on a directory to see "Cmder Here" in the context menu.
|
||||||
|
|
||||||
@ -115,11 +115,11 @@ You can open multiple tabs each containing one of the following shells:
|
|||||||
|
|
||||||
Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and work as you might expect in Cmder with access to use ConEmu's color schemes, key bindings and other settings defined in the ConEmu Settings dialog.
|
Cmder, PowerShell, and Bash tabs all run on top of the Windows Console API and work as you might expect in Cmder with access to use ConEmu's color schemes, key bindings and other settings defined in the ConEmu Settings dialog.
|
||||||
|
|
||||||
⚠ *NOTE:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini edition without additional configuration.
|
⚠ *Note:* Only the full edition of Cmder comes with a pre-installed bash, using a vendored [git-for-windows](https://gitforwindows.org/) installation. The pre-configured Bash tabs may not work on Cmder mini edition without additional configuration.
|
||||||
|
|
||||||
You may however, choose to use an external installation of bash, such as Microsoft's [Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (called WSL) or the [Cygwin](https://cygwin.com/) project which provides POSIX support on windows.
|
You may however, choose to use an external installation of bash, such as Microsoft's [Subsystem for Linux](https://docs.microsoft.com/en-us/windows/wsl/install-win10) (called WSL) or the [Cygwin](https://cygwin.com/) project which provides POSIX support on windows.
|
||||||
|
|
||||||
⚠ *NOTE:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it.
|
⚠ *Note:* Mintty tabs use a program called 'mintty' as the terminal emulator that is not based on the Windows Console API, rather it's rendered graphically by ConEmu. Mintty differs from the other tabs in that it supports xterm/xterm-256color TERM types, and does not work with ConEmu settings like color schemes and key bindings. As such, some differences in functionality are to be expected, such as Cmder not being able to apply a system-wide configuration to it.
|
||||||
|
|
||||||
As a result mintty specific config is done via the `[%USERPROFILE%|$HOME]/.minttyrc` file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty).
|
As a result mintty specific config is done via the `[%USERPROFILE%|$HOME]/.minttyrc` file. You may read more about Mintty and its config file [here](https://github.com/mintty/mintty).
|
||||||
|
|
||||||
@ -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).
|
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
|
### Changing Cmder Default `cmd.exe` Shell Startup Behaviour Using Task Arguments
|
||||||
|
|
||||||
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
1. Press <kbd>Win</kbd> + <kbd>Alt</kbd> + <kbd>T</kbd>
|
||||||
@ -157,7 +177,7 @@ You may find some Monokai color schemes for mintty to match Cmder [here](https:/
|
|||||||
| `/c [user cmder root]` | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
| `/c [user cmder root]` | Enables user bin and config folders for 'Cmder as admin' sessions due to non-shared environment. | not set |
|
||||||
| `/d` | Enables debug output. | not set |
|
| `/d` | Enables debug output. | not set |
|
||||||
| `/f` | Enables Cmder Fast Init Mode. This disables some features, see pull request [#1492](https://github.com/cmderdev/cmder/pull/1942) for more details. | not set |
|
| `/f` | Enables Cmder Fast Init Mode. This disables some features, see pull request [#1492](https://github.com/cmderdev/cmder/pull/1942) for more details. | not set |
|
||||||
| `/t` | Enables Cmder Timed Init Mode. This displays the time taken run init scripts | not set |
|
| `/t` | Enables Cmder Timed Init Mode. This displays the time taken run init scripts | not set |
|
||||||
| `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` |
|
| `/git_install_root [file path]` | User specified Git installation root path. | `%CMDER_ROOT%\vendor\Git-for-Windows` |
|
||||||
| `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` |
|
| `/home [home folder]` | User specified folder path to set `%HOME%` environment variable. | `%userprofile%` |
|
||||||
| `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
| `/max_depth [1-5]` | Define max recurse depth when adding to the path for `%cmder_root%\bin` and `%cmder_user_bin%` | 1 |
|
||||||
@ -165,10 +185,10 @@ 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` |
|
| `/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` |
|
| `/user_aliases [file path]` | File path pointing to user aliases. | `%CMDER_ROOT%\config\user_aliases.cmd` |
|
||||||
| `/v` | Enables verbose output. | not set |
|
| `/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
|
### Cmder Shell User Config
|
||||||
Single user portable configuration is possible using the cmder specific shell config files. Edit the below files to add your own configuration:
|
Single user portable configuration is possible using the Cmder specific shell config files. Edit the below files to add your own configuration:
|
||||||
|
|
||||||
| Shell | Cmder Portable User Config |
|
| Shell | Cmder Portable User Config |
|
||||||
| ------------- | ----------------------------------------- |
|
| ------------- | ----------------------------------------- |
|
||||||
@ -176,7 +196,7 @@ Single user portable configuration is possible using the cmder specific shell co
|
|||||||
| PowerShell | `$ENV:CMDER_ROOT\config\user_profile.ps1` |
|
| PowerShell | `$ENV:CMDER_ROOT\config\user_profile.ps1` |
|
||||||
| Bash/Mintty | `$CMDER_ROOT/config/user_profile.sh` |
|
| Bash/Mintty | `$CMDER_ROOT/config/user_profile.sh` |
|
||||||
|
|
||||||
Note: Bash and Mintty sessions will also source the `$HOME/.bashrc` file if it exists after it sources `$CMDER_ROOT/config/user_profile.sh`.
|
**Note:** Bash and Mintty sessions will also source the `$HOME/.bashrc` file if it exists after it sources `$CMDER_ROOT/config/user_profile.sh`.
|
||||||
|
|
||||||
You can write `*.cmd|*.bat`, `*.ps1`, and `*.sh` scripts and just drop them in the `%CMDER_ROOT%\config\profile.d` folder to add startup config to Cmder.
|
You can write `*.cmd|*.bat`, `*.ps1`, and `*.sh` scripts and just drop them in the `%CMDER_ROOT%\config\profile.d` folder to add startup config to Cmder.
|
||||||
|
|
||||||
@ -210,7 +230,7 @@ Aliases defined using the `alias.bat` command will automatically be saved in the
|
|||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||||
|
|
||||||
Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything stored in `%CMDER_ROOT%` will be a portable setting and will follow cmder to another machine.
|
Note: These are loaded in this order by `$CMDER_ROOT/vendor/init.bat`. Anything stored in `%CMDER_ROOT%` will be a portable setting and will follow Cmder to another machine.
|
||||||
|
|
||||||
* `%CMDER_ROOT%\config\profile.d\*.cmd` and `\*.bat`
|
* `%CMDER_ROOT%\config\profile.d\*.cmd` and `\*.bat`
|
||||||
* `%CMDER_ROOT%\config\user_aliases.cmd`
|
* `%CMDER_ROOT%\config\user_aliases.cmd`
|
||||||
@ -221,7 +241,7 @@ Bash shells support simple and complex aliases with optional parameters natively
|
|||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||||
|
|
||||||
Note: These are loaded in this order by `$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh`. Anything stored in `$CMDER_ROOT` will be a portable setting and will follow cmder to another machine.
|
Note: These are loaded in this order by `$CMDER_ROOT/vendor/git-for-windows/etc/profile.d/cmder.sh`. Anything stored in `$CMDER_ROOT` will be a portable setting and will follow Cmder to another machine.
|
||||||
|
|
||||||
* `$CMDER_ROOT/config/profile.d/*.sh`
|
* `$CMDER_ROOT/config/profile.d/*.sh`
|
||||||
* `$CMDER_ROOT/config/user_profile.sh`
|
* `$CMDER_ROOT/config/user_profile.sh`
|
||||||
@ -234,7 +254,7 @@ PowerShell has native simple alias support, for example `[new-alias | set-alias]
|
|||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
To make an alias and/or any other profile settings permanent add it to one of the following:
|
||||||
|
|
||||||
Note: These are loaded in this order by `$ENV:CMDER_ROOT\vendor\user_profile.ps1`. Anything stored in `$ENV:CMDER_ROOT` will be a portable setting and will follow cmder to another machine.
|
Note: These are loaded in this order by `$ENV:CMDER_ROOT\vendor\user_profile.ps1`. Anything stored in `$ENV:CMDER_ROOT` will be a portable setting and will follow Cmder to another machine.
|
||||||
|
|
||||||
* `$ENV:CMDER_ROOT\config\profile.d\*.ps1`
|
* `$ENV:CMDER_ROOT\config\profile.d\*.ps1`
|
||||||
* `$ENV:CMDER_ROOT\config\user_profile.ps1`
|
* `$ENV:CMDER_ROOT\config\user_profile.ps1`
|
||||||
@ -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.
|
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.
|
### Using external Cygwin/Babun, MSys2, WSL, or Git for Windows SDK with Cmder.
|
||||||
|
|
||||||
@ -272,7 +292,7 @@ The destination file extension depends on the shell you use in that environment.
|
|||||||
* bash - Copy to `/etc/profile.d/cmder_exinit.sh`
|
* bash - Copy to `/etc/profile.d/cmder_exinit.sh`
|
||||||
* zsh - Copy to `/etc/profile.d/cmder_exinit.zsh`
|
* zsh - Copy to `/etc/profile.d/cmder_exinit.zsh`
|
||||||
|
|
||||||
Uncomment and edit the below line in the script to use Cmder config even when launched from outside Cmder.
|
Uncomment and edit the line below in the script to use Cmder config even when launched from outside Cmder.
|
||||||
|
|
||||||
```
|
```
|
||||||
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
# CMDER_ROOT=${USERPROFILE}/cmder # This is not required if launched from Cmder.
|
||||||
@ -324,9 +344,9 @@ To conditionally start `notepad.exe` when you start a specific `cmder` task:
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To see detailed usage of `cexec`, type `cexec /?` in cmder.
|
To see detailed usage of `cexec`, type `cexec /?` in Cmder.
|
||||||
|
|
||||||
### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs
|
### Integrating Cmder with [Windows Terminal](https://github.com/cmderdev/cmder/wiki/Seamless-Windows-Terminal-Integration), [VS Code](https://github.com/cmderdev/cmder/wiki/Seamless-VS-Code-Integration), and your favorite IDEs
|
||||||
|
|
||||||
Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html).
|
Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html).
|
||||||
|
|
||||||
@ -366,7 +386,11 @@ If you do not have a `[cmder_root]/config/user[-|_]conemu.xml`, you are running
|
|||||||
|
|
||||||
You can download builds of the current development branch by going to AppVeyor via the following link:
|
You can download builds of the current development branch by going to AppVeyor via the following link:
|
||||||
|
|
||||||
[](https://ci.appveyor.com/project/MartiUK/cmder/branch/master/artifacts)
|
[](https://ci.appveyor.com/project/cmderdev/cmder/branch/master/artifacts)
|
||||||
|
|
||||||
|
The latest download builds by GitHub Actions can be downloaded from the link below:
|
||||||
|
|
||||||
|
[](https://github.com/cmderdev/cmder/actions/workflows/build.yml)
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
|
@ -15,7 +15,7 @@ branches:
|
|||||||
#---------------------------------#
|
#---------------------------------#
|
||||||
|
|
||||||
# Operating system (build VM template)
|
# Operating system (build VM template)
|
||||||
os: Visual Studio 2017
|
os: Visual Studio 2022
|
||||||
|
|
||||||
#---------------------------------#
|
#---------------------------------#
|
||||||
# build configuration #
|
# build configuration #
|
||||||
|
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.
|
@ -1,4 +1,4 @@
|
|||||||
|
|
||||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
# Visual Studio 14
|
# Visual Studio 14
|
||||||
VisualStudioVersion = 14.0.23107.0
|
VisualStudioVersion = 14.0.23107.0
|
||||||
|
@ -22,13 +22,13 @@
|
|||||||
<ProjectGuid>{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}</ProjectGuid>
|
<ProjectGuid>{4A8485A5-B7DD-4C44-B7F6-3E2765DD0CD3}</ProjectGuid>
|
||||||
<Keyword>Win32Proj</Keyword>
|
<Keyword>Win32Proj</Keyword>
|
||||||
<RootNamespace>CmderLauncher</RootNamespace>
|
<RootNamespace>CmderLauncher</RootNamespace>
|
||||||
<WindowsTargetPlatformVersion>10.0.16299.0</WindowsTargetPlatformVersion>
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v141_xp</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
|
||||||
@ -36,12 +36,12 @@
|
|||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
<UseDebugLibraries>true</UseDebugLibraries>
|
<UseDebugLibraries>true</UseDebugLibraries>
|
||||||
<PlatformToolset>v141_xp</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
@ -49,7 +49,7 @@
|
|||||||
<UseDebugLibraries>false</UseDebugLibraries>
|
<UseDebugLibraries>false</UseDebugLibraries>
|
||||||
<WholeProgramOptimization>true</WholeProgramOptimization>
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
||||||
<CharacterSet>Unicode</CharacterSet>
|
<CharacterSet>Unicode</CharacterSet>
|
||||||
<PlatformToolset>v141</PlatformToolset>
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
<ImportGroup Label="ExtensionSettings">
|
<ImportGroup Label="ExtensionSettings">
|
||||||
@ -95,6 +95,7 @@
|
|||||||
<Link>
|
<Link>
|
||||||
<SubSystem>Windows</SubSystem>
|
<SubSystem>Windows</SubSystem>
|
||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
|
<!-- <AdditionalDependencies>comctl32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> -->
|
||||||
</Link>
|
</Link>
|
||||||
<Manifest>
|
<Manifest>
|
||||||
<AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
<AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
||||||
@ -121,12 +122,13 @@
|
|||||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||||
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<!-- <AdditionalDependencies>comctl32.lib;shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies> -->
|
||||||
</Link>
|
</Link>
|
||||||
<Manifest>
|
<Manifest>
|
||||||
<AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
<AdditionalManifestFiles>src/app.manifest %(AdditionalManifestFiles)</AdditionalManifestFiles>
|
||||||
</Manifest>
|
</Manifest>
|
||||||
<PostBuildEvent>
|
<PostBuildEvent>
|
||||||
<Command>copy $(TargetPath) $(SolutionDir)..\$(TargetFileName)</Command>
|
<Command>copy "$(TargetPath)" "$(SolutionDir)..\$(TargetFileName)"</Command>
|
||||||
</PostBuildEvent>
|
</PostBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
@ -176,7 +178,7 @@
|
|||||||
</PostBuildEvent>
|
</PostBuildEvent>
|
||||||
</ItemDefinitionGroup>
|
</ItemDefinitionGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="src\Resource.rc">
|
<ResourceCompile Include="src\resource.rc">
|
||||||
<FileType>RC</FileType>
|
<FileType>RC</FileType>
|
||||||
</ResourceCompile>
|
</ResourceCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
@ -189,4 +191,4 @@
|
|||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
<ImportGroup Label="ExtensionTargets">
|
<ImportGroup Label="ExtensionTargets">
|
||||||
</ImportGroup>
|
</ImportGroup>
|
||||||
</Project>
|
</Project>
|
@ -9,6 +9,7 @@
|
|||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
#pragma comment(lib, "Shlwapi.lib")
|
#pragma comment(lib, "Shlwapi.lib")
|
||||||
|
#pragma comment(lib, "comctl32.lib")
|
||||||
#pragma warning( disable : 4091 )
|
#pragma warning( disable : 4091 )
|
||||||
|
|
||||||
#ifndef UNICODE
|
#ifndef UNICODE
|
||||||
@ -31,6 +32,39 @@
|
|||||||
|
|
||||||
#define FAIL_ON_ERROR(x) { DWORD ec; if ((ec = (x)) != ERROR_SUCCESS) { ShowErrorAndExit(ec, __WFUNCTION__, __LINE__); } }
|
#define FAIL_ON_ERROR(x) { DWORD ec; if ((ec = (x)) != ERROR_SUCCESS) { ShowErrorAndExit(ec, __WFUNCTION__, __LINE__); } }
|
||||||
|
|
||||||
|
void TaskDialogOpen( PCWSTR mainStr, PCWSTR contentStr )
|
||||||
|
{
|
||||||
|
|
||||||
|
HRESULT hr = NULL;
|
||||||
|
|
||||||
|
TASKDIALOGCONFIG tsk = {sizeof(tsk)};
|
||||||
|
|
||||||
|
HWND hOwner = NULL;
|
||||||
|
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||||
|
PCWSTR tskTitle = MAKEINTRESOURCE(IDS_TITLE);
|
||||||
|
|
||||||
|
tsk.hInstance = hInstance;
|
||||||
|
tsk.pszMainIcon = MAKEINTRESOURCE(IDI_CMDER);
|
||||||
|
tsk.pszWindowTitle = tskTitle;
|
||||||
|
tsk.pszMainInstruction = mainStr;
|
||||||
|
tsk.pszContent = contentStr;
|
||||||
|
|
||||||
|
TASKDIALOG_BUTTON btns[1] = {
|
||||||
|
{ IDOK, L"OK" }
|
||||||
|
};
|
||||||
|
|
||||||
|
tsk.dwFlags = TDF_ALLOW_DIALOG_CANCELLATION|TDF_ENABLE_HYPERLINKS;
|
||||||
|
tsk.pButtons = btns;
|
||||||
|
tsk.cButtons = _countof(btns);
|
||||||
|
|
||||||
|
tsk.hwndParent = hOwner;
|
||||||
|
|
||||||
|
int selectedButtonId = IDOK;
|
||||||
|
|
||||||
|
hr = TaskDialogIndirect( &tsk, &selectedButtonId, NULL, NULL );
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
void ShowErrorAndExit(DWORD ec, const wchar_t * func, int line)
|
void ShowErrorAndExit(DWORD ec, const wchar_t * func, int line)
|
||||||
{
|
{
|
||||||
wchar_t * buffer;
|
wchar_t * buffer;
|
||||||
@ -71,7 +105,7 @@ bool FileExists(const wchar_t * filePath)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
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"")
|
void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstring taskName = L"", std::wstring title = L"", std::wstring iconPath = L"", std::wstring cfgRoot = L"", bool use_user_cfg = true, std::wstring conemu_args = L"")
|
||||||
{
|
{
|
||||||
#if USE_TASKBAR_API
|
#if USE_TASKBAR_API
|
||||||
wchar_t appId[MAX_PATH] = { 0 };
|
wchar_t appId[MAX_PATH] = { 0 };
|
||||||
@ -98,6 +132,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
|
|
||||||
std::wstring cmderStart = path;
|
std::wstring cmderStart = path;
|
||||||
std::wstring cmderTask = taskName;
|
std::wstring cmderTask = taskName;
|
||||||
|
std::wstring cmderTitle = title;
|
||||||
std::wstring cmderConEmuArgs = conemu_args;
|
std::wstring cmderConEmuArgs = conemu_args;
|
||||||
|
|
||||||
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
std::copy(cfgRoot.begin(), cfgRoot.end(), userConfigDirPath);
|
||||||
@ -158,13 +193,13 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
userAliasesPath, (size_t)MAX_PATH);
|
userAliasesPath, (size_t)MAX_PATH);
|
||||||
rename(lPr, pR);
|
rename(lPr, pR);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Was /c [path] specified?
|
Was /c [path] specified?
|
||||||
*/
|
*/
|
||||||
if (wcscmp(userConfigDirPath, L"") == 0)
|
if (wcscmp(userConfigDirPath, L"") == 0)
|
||||||
{
|
{
|
||||||
// No - It wasn't.
|
// No - It wasn't.
|
||||||
PathCombine(userConfigDirPath, exeDir, L"config");
|
PathCombine(userConfigDirPath, exeDir, L"config");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -250,7 +285,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
{
|
{
|
||||||
MessageBox(NULL,
|
MessageBox(NULL,
|
||||||
(GetLastError() == ERROR_ACCESS_DENIED)
|
(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);
|
: L"Failed to copy config/ConEmu-%COMPUTERNAME%.xml file to vendor/conemu-maximus5/ConEmu.xml!", MB_TITLE, MB_ICONSTOP);
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@ -274,7 +309,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
ExpandEnvironmentStrings(userConEmuCfgPath, userConEmuCfgPath, sizeof(userConEmuCfgPath) / sizeof(userConEmuCfgPath[0]));
|
ExpandEnvironmentStrings(userConEmuCfgPath, userConEmuCfgPath, sizeof(userConEmuCfgPath) / sizeof(userConEmuCfgPath[0]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it.
|
else if (PathFileExists(userCfgPath)) // config/user_conemu.xml exists, use it.
|
||||||
{
|
{
|
||||||
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
{
|
{
|
||||||
@ -306,7 +341,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
PathCombine(userConEmuCfgPath, userConfigDirPath, L"user-ConEmu.xml");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
else if (cfgRoot.length() == 0) // '/c [path]' was NOT specified
|
||||||
{
|
{
|
||||||
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
|
if (PathFileExists(cfgPath)) // vendor/conemu-maximus5/ConEmu.xml exists, copy vendor/conemu-maximus5/ConEmu.xml to config/user_conemu.xml
|
||||||
{
|
{
|
||||||
@ -378,7 +413,7 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
PathCombine(conEmuPath, exeDir, L"vendor\\conemu-maximus5\\ConEmu.exe");
|
||||||
}
|
}
|
||||||
|
|
||||||
swprintf_s(args, L"%s /Icon \"%s\" /Title Cmder", args, icoPath);
|
swprintf_s(args, L"%s /Icon \"%s\"", args, icoPath);
|
||||||
|
|
||||||
if (!streqi(cmderStart.c_str(), L""))
|
if (!streqi(cmderStart.c_str(), L""))
|
||||||
{
|
{
|
||||||
@ -395,6 +430,11 @@ void StartCmder(std::wstring path = L"", bool is_single_mode = false, std::wstr
|
|||||||
swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str());
|
swprintf_s(args, L"%s /run {%s}", args, cmderTask.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!streqi(cmderTitle.c_str(), L""))
|
||||||
|
{
|
||||||
|
swprintf_s(args, L"%s /title \"%s\"", args, cmderTitle.c_str());
|
||||||
|
}
|
||||||
|
|
||||||
if (cfgRoot.length() != 0)
|
if (cfgRoot.length() != 0)
|
||||||
{
|
{
|
||||||
swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath);
|
swprintf_s(args, L"%s -loadcfgfile \"%s\"", args, userConEmuCfgPath);
|
||||||
@ -540,6 +580,7 @@ struct cmderOptions
|
|||||||
std::wstring cmderCfgRoot = L"";
|
std::wstring cmderCfgRoot = L"";
|
||||||
std::wstring cmderStart = L"";
|
std::wstring cmderStart = L"";
|
||||||
std::wstring cmderTask = L"";
|
std::wstring cmderTask = L"";
|
||||||
|
std::wstring cmderTitle = L"Cmder";
|
||||||
std::wstring cmderIcon = L"";
|
std::wstring cmderIcon = L"";
|
||||||
std::wstring cmderRegScope = L"USER";
|
std::wstring cmderRegScope = L"USER";
|
||||||
std::wstring cmderConEmuArgs = L"";
|
std::wstring cmderConEmuArgs = L"";
|
||||||
@ -602,6 +643,11 @@ cmderOptions GetOption()
|
|||||||
cmderOptions.cmderTask = szArgList[i + 1];
|
cmderOptions.cmderTask = szArgList[i + 1];
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
else if (_wcsicmp(L"/title", szArgList[i]) == 0)
|
||||||
|
{
|
||||||
|
cmderOptions.cmderTitle = szArgList[i + 1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
else if (_wcsicmp(L"/icon", szArgList[i]) == 0)
|
else if (_wcsicmp(L"/icon", szArgList[i]) == 0)
|
||||||
{
|
{
|
||||||
cmderOptions.cmderIcon = szArgList[i + 1];
|
cmderOptions.cmderIcon = szArgList[i + 1];
|
||||||
@ -673,16 +719,25 @@ cmderOptions GetOption()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n /c [CMDER User Root Path]\n\n /task [ConEmu Task Name]\n\n /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;
|
cmderOptions.error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
MessageBox(NULL, L"Unrecognized parameter.\n\nValid options:\n\n /c [CMDER User Root Path]\n\n /task [ConEmu Task Name]\n\n /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;
|
cmderOptions.error = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cmderOptions.error == true)
|
||||||
|
{
|
||||||
|
wchar_t validOptions[512];
|
||||||
|
HMODULE hMod = GetModuleHandle(NULL);
|
||||||
|
LoadString(hMod, IDS_SWITCHES, validOptions, 512);
|
||||||
|
|
||||||
|
// display list of valid options on unrecognized parameter
|
||||||
|
TaskDialogOpen( L"Unrecognized parameter.", validOptions );
|
||||||
}
|
}
|
||||||
|
|
||||||
LocalFree(szArgList);
|
LocalFree(szArgList);
|
||||||
@ -721,7 +776,7 @@ int APIENTRY _tWinMain(_In_ HINSTANCE hInstance,
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderIcon, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderConEmuArgs);
|
StartCmder(cmderOptions.cmderStart, cmderOptions.cmderSingle, cmderOptions.cmderTask, cmderOptions.cmderTitle, cmderOptions.cmderIcon, cmderOptions.cmderCfgRoot, cmderOptions.cmderUserCfg, cmderOptions.cmderConEmuArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
|
|
||||||
<!-- Project description definition -->
|
<!-- Project description definition -->
|
||||||
<description>Cmder Console Emulator</description>
|
<description>Cmder Console Emulator</description>
|
||||||
|
|
||||||
<!-- Project dependency definition -->
|
<!-- Project dependency definition -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<dependentAssembly>
|
<dependentAssembly>
|
||||||
@ -16,7 +16,7 @@
|
|||||||
language="*" />
|
language="*" />
|
||||||
</dependentAssembly>
|
</dependentAssembly>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- Win32 User Account Control definition -->
|
<!-- Win32 User Account Control definition -->
|
||||||
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
<security>
|
<security>
|
||||||
@ -27,7 +27,7 @@
|
|||||||
</requestedPrivileges>
|
</requestedPrivileges>
|
||||||
</security>
|
</security>
|
||||||
</trustInfo>
|
</trustInfo>
|
||||||
|
|
||||||
<!-- Required for appcompat behaviour -->
|
<!-- Required for appcompat behaviour -->
|
||||||
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
|
||||||
<application>
|
<application>
|
||||||
@ -39,16 +39,16 @@
|
|||||||
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
|
||||||
<!-- Windows 8.1 -->
|
<!-- Windows 8.1 -->
|
||||||
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
|
||||||
<!-- Windows 10 -->
|
<!-- Windows 10 and Windows 11 -->
|
||||||
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
<supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>
|
||||||
</application>
|
</application>
|
||||||
</compatibility>
|
</compatibility>
|
||||||
|
|
||||||
<!-- Add dpi awareness -->
|
<!-- Add DPI awareness -->
|
||||||
<asmv3:application>
|
<asmv3:application>
|
||||||
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
|
||||||
<dpiAware>true/pm</dpiAware>
|
<dpiAware>true/pm</dpiAware>
|
||||||
</asmv3:windowsSettings>
|
</asmv3:windowsSettings>
|
||||||
</asmv3:application>
|
</asmv3:application>
|
||||||
|
|
||||||
</assembly>
|
</assembly>
|
||||||
|
Binary file not shown.
@ -1,14 +1,15 @@
|
|||||||
/* _
|
/* _
|
||||||
___ _ __ ___ __| | ___ _ __
|
___ _ __ ___ __| | ___ _ __
|
||||||
/ __| '_ ` _ \ / _` |/ _ \ '__|
|
/ __| '_ ` _ \ / _` |/ _ \ '__|
|
||||||
| (__| | | | | | (_| | __/ |
|
| (__| | | | | | (_| | __/ |
|
||||||
\___|_| |_| |_|\__,_|\___|_|
|
\___|_| |_| |_|\__,_|\___|_|
|
||||||
=============================================================================
|
=============================================================================
|
||||||
The Cmder Console Emulator Project
|
The Cmder Console Emulator Project
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
#include "version.rc2"
|
#include "version.rc2"
|
||||||
|
#include "strings.rc2"
|
||||||
|
|
||||||
#define APSTUDIO_READONLY_SYMBOLS
|
#define APSTUDIO_READONLY_SYMBOLS
|
||||||
/////////////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////////////
|
12
launcher/src/strings.rc2
Normal file
12
launcher/src/strings.rc2
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Corresponding ids should be defined in `resource.h` file.
|
||||||
|
|
||||||
|
STRINGTABLE
|
||||||
|
{
|
||||||
|
IDS_TITLE "Cmder Launcher"
|
||||||
|
|
||||||
|
IDS_SWITCHES L"Valid options:\n\n /c [CMDER User Root Path]\n /task [ConEmu Task Name]\n /icon [CMDER Icon Path]\n [/start [Start in Path] | [Start in Path]]\n /single\n /m\n /x [ConEmu extra arguments]\n\nor, either:\n /register [USER | ALL]\n /unregister [USER | ALL]"
|
||||||
|
}
|
||||||
|
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
@ -3,12 +3,15 @@ launcher
|
|||||||
.gitattributes
|
.gitattributes
|
||||||
.git
|
.git
|
||||||
.github
|
.github
|
||||||
|
.vs
|
||||||
|
.vscode
|
||||||
|
.idea
|
||||||
*.md
|
*.md
|
||||||
build
|
build
|
||||||
scripts
|
scripts
|
||||||
config\.history
|
config\.history
|
||||||
packignore
|
packignore
|
||||||
icons\Thumbs.db
|
Thumbs.db
|
||||||
icons\cmder_icon.psd
|
icons\cmder_icon.psd
|
||||||
icons\icon_16*.png
|
icons\icon_16*.png
|
||||||
icons\icon_32*.png
|
icons\icon_32*.png
|
||||||
@ -20,3 +23,5 @@ appveyor.yml
|
|||||||
vendor\cmder.sh
|
vendor\cmder.sh
|
||||||
vendor\git-prompt.sh
|
vendor\git-prompt.sh
|
||||||
config\user-*
|
config\user-*
|
||||||
|
clink_history*
|
||||||
|
*.log
|
||||||
|
@ -11,11 +11,15 @@
|
|||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build.ps1
|
.\build.ps1
|
||||||
|
|
||||||
Executes the default build for Cmder; Conemu, clink. This is equivalent to the "minimum" style package in the releases
|
Executes the default build for Cmder; ConEmu, clink. This is equivalent to the "minimum" style package in the releases
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build.ps1 -Compile
|
.\build.ps1 -Compile
|
||||||
|
|
||||||
Recompile the launcher executable if you have the requisite build tools for C++ installed.
|
Recompile the launcher executable if you have the requisite build tools for C++ installed.
|
||||||
|
.EXAMPLE
|
||||||
|
.\build.ps1 -Compile -NoVendor
|
||||||
|
|
||||||
|
Skip all downloads and only build launcher.
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build -verbose
|
.\build -verbose
|
||||||
|
|
||||||
@ -29,124 +33,149 @@
|
|||||||
Samuel Vasko, Jack Bennett
|
Samuel Vasko, Jack Bennett
|
||||||
Part of the Cmder project.
|
Part of the Cmder project.
|
||||||
.LINK
|
.LINK
|
||||||
http://cmder.net/ - Project Home
|
http://cmder.app/ - Project Home
|
||||||
#>
|
#>
|
||||||
[CmdletBinding(SupportsShouldProcess=$true)]
|
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||||
Param(
|
Param(
|
||||||
# CmdletBinding will give us;
|
# CmdletBinding will give us;
|
||||||
# -verbose switch to turn on logging and
|
# -verbose switch to turn on logging and
|
||||||
# -whatif switch to not actually make changes
|
# -whatif switch to not actually make changes
|
||||||
|
|
||||||
# Path to the vendor configuration source file
|
# Path to the vendor configuration source file
|
||||||
[string]$sourcesPath = "..\vendor\sources.json",
|
[string]$sourcesPath = "$PSScriptRoot\..\vendor\sources.json",
|
||||||
|
|
||||||
# Vendor folder location
|
# Vendor folder location
|
||||||
[string]$saveTo = "..\vendor\",
|
[string]$saveTo = "$PSScriptRoot\..\vendor\",
|
||||||
|
|
||||||
# Launcher folder location
|
# Launcher folder location
|
||||||
[string]$launcher = "..\launcher",
|
[string]$launcher = "$PSScriptRoot\..\launcher",
|
||||||
|
|
||||||
# Config folder location
|
# Config folder location
|
||||||
[string]$config = "..\config",
|
[string]$config = "$PSScriptRoot\..\config",
|
||||||
|
|
||||||
# New launcher if you have MSBuild tools installed
|
# Using this option will skip all downloads, if you only need to build launcher
|
||||||
|
[switch]$noVendor,
|
||||||
|
|
||||||
|
# Build launcher if you have MSBuild tools installed
|
||||||
[switch]$Compile
|
[switch]$Compile
|
||||||
)
|
)
|
||||||
|
|
||||||
# Get the scripts and cmder root dirs we are building in.
|
# Get the scripts and cmder root dirs we are building in.
|
||||||
$ScriptRoot = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition
|
$cmder_root = Resolve-Path "$PSScriptRoot\.."
|
||||||
$cmder_root = $ScriptRoot.replace("\scripts","")
|
|
||||||
|
|
||||||
# Dot source util functions into this scope
|
# Dot source util functions into this scope
|
||||||
. "$PSScriptRoot\utils.ps1"
|
. "$PSScriptRoot\utils.ps1"
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
Push-Location -Path $saveTo
|
if ($Compile) {
|
||||||
$sources = Get-Content $sourcesPath | Out-String | Convertfrom-Json
|
# Check for requirements
|
||||||
|
Ensure-Executable "msbuild"
|
||||||
|
|
||||||
# Get the version string
|
# Get the version string
|
||||||
$version = Get-VersionStr
|
$version = Get-VersionStr
|
||||||
|
|
||||||
# Check for requirements
|
|
||||||
Ensure-Exists $sourcesPath
|
|
||||||
Ensure-Executable "7z"
|
|
||||||
New-Item -Type Directory -Path (Join-Path $saveTo "/tmp/") -ErrorAction SilentlyContinue >$null
|
|
||||||
|
|
||||||
# Preserve modified (by user) ConEmu setting file
|
|
||||||
if ($config -ne "") {
|
|
||||||
$ConEmuXml = Join-Path $saveTo "conemu-maximus5\ConEmu.xml"
|
|
||||||
if (Test-Path $ConEmuXml -pathType leaf) {
|
|
||||||
$ConEmuXmlSave = Join-Path $config "ConEmu.xml"
|
|
||||||
Write-Verbose "Backup '$ConEmuXml' to '$ConEmuXmlSave'"
|
|
||||||
Copy-Item $ConEmuXml $ConEmuXmlSave
|
|
||||||
} else { $ConEmuXml = "" }
|
|
||||||
} else { $ConEmuXml = "" }
|
|
||||||
|
|
||||||
# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
|
|
||||||
foreach ($ssh_agent in $(get-process ssh-agent -erroraction silentlycontinue)) {
|
|
||||||
if ([string]$($ssh_agent.path) -match [string]$cmder_root.replace('\','\\')) {
|
|
||||||
write-verbose $("Stopping " + $ssh_agent.path + "!")
|
|
||||||
stop-process $ssh_agent.id
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$vend = $pwd
|
|
||||||
foreach ($s in $sources) {
|
|
||||||
Write-Verbose "Getting $($s.name) from URL $($s.url)"
|
|
||||||
|
|
||||||
# We do not care about the extensions/type of archive
|
|
||||||
$tempArchive = "tmp/$($s.name).tmp"
|
|
||||||
Delete-Existing $tempArchive
|
|
||||||
Delete-Existing $s.name
|
|
||||||
|
|
||||||
Download-File -Url $s.url -File $vend\$tempArchive -ErrorAction Stop
|
|
||||||
Extract-Archive $tempArchive $s.name
|
|
||||||
|
|
||||||
if ((Get-Childitem $s.name).Count -eq 1) {
|
|
||||||
Flatten-Directory($s.name)
|
|
||||||
}
|
|
||||||
# Write current version to .cmderver file, for later.
|
|
||||||
"$($s.version)" | Out-File "$($s.name)/.cmderver"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Restore user configuration
|
|
||||||
if ($ConEmuXml -ne "") {
|
|
||||||
Write-Verbose "Restore '$ConEmuXmlSave' to '$ConEmuXml'"
|
|
||||||
Copy-Item $ConEmuXmlSave $ConEmuXml
|
|
||||||
}
|
|
||||||
|
|
||||||
Pop-Location
|
|
||||||
|
|
||||||
if($Compile) {
|
|
||||||
Push-Location -Path $launcher
|
Push-Location -Path $launcher
|
||||||
Create-RC $version ($launcher + '\src\version.rc2');
|
Create-RC $version ($launcher + '\src\version.rc2')
|
||||||
msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release
|
|
||||||
|
Write-Verbose "Building the launcher..."
|
||||||
|
|
||||||
|
# Referene: https://docs.microsoft.com/visualstudio/msbuild/msbuild-command-line-reference
|
||||||
|
msbuild CmderLauncher.vcxproj /t:Clean,Build /p:configuration=Release /m
|
||||||
|
|
||||||
if ($LastExitCode -ne 0) {
|
if ($LastExitCode -ne 0) {
|
||||||
throw "msbuild failed to build the executable."
|
throw "MSBuild failed to build the launcher executable."
|
||||||
}
|
|
||||||
else {
|
|
||||||
Write-Verbose "successfully built Cmder v$version!"
|
|
||||||
if ( $Env:APPVEYOR -eq 'True' ) {
|
|
||||||
Add-AppveyorMessage -Message "Building Cmder v$version was successful." -Category Information
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Pop-Location
|
Pop-Location
|
||||||
} else {
|
}
|
||||||
Write-Warning "You are not building a launcher, Use -Compile"
|
|
||||||
|
if (-not $noVendor) {
|
||||||
|
# Check for requirements
|
||||||
|
Ensure-Exists $sourcesPath
|
||||||
|
Ensure-Executable "7z"
|
||||||
|
|
||||||
|
# Get the vendor sources
|
||||||
|
$sources = Get-Content $sourcesPath | Out-String | ConvertFrom-Json
|
||||||
|
|
||||||
|
Push-Location -Path $saveTo
|
||||||
|
New-Item -Type Directory -Path (Join-Path $saveTo "/tmp/") -ErrorAction SilentlyContinue >$null
|
||||||
|
|
||||||
|
$vend = $pwd
|
||||||
|
|
||||||
|
# Preserve modified (by user) ConEmu setting file
|
||||||
|
if ($config -ne "") {
|
||||||
|
$ConEmuXml = Join-Path $saveTo "conemu-maximus5\ConEmu.xml"
|
||||||
|
if (Test-Path $ConEmuXml -pathType leaf) {
|
||||||
|
$ConEmuXmlSave = Join-Path $config "ConEmu.xml"
|
||||||
|
Write-Verbose "Backup '$ConEmuXml' to '$ConEmuXmlSave'"
|
||||||
|
Copy-Item $ConEmuXml $ConEmuXmlSave
|
||||||
|
}
|
||||||
|
else { $ConEmuXml = "" }
|
||||||
|
}
|
||||||
|
else { $ConEmuXml = "" }
|
||||||
|
|
||||||
|
# Kill ssh-agent.exe if it is running from the $env:cmder_root we are building
|
||||||
|
foreach ($ssh_agent in $(Get-Process ssh-agent -ErrorAction SilentlyContinue)) {
|
||||||
|
if ([string]$($ssh_agent.path) -Match [string]$cmder_root.replace('\', '\\')) {
|
||||||
|
Write-Verbose $("Stopping " + $ssh_agent.path + "!")
|
||||||
|
Stop-Process $ssh_agent.id
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($s in $sources) {
|
||||||
|
Write-Verbose "Getting vendored $($s.name) $($s.version)..."
|
||||||
|
|
||||||
|
# We do not care about the extensions/type of archive
|
||||||
|
$tempArchive = "tmp/$($s.name).tmp"
|
||||||
|
Delete-Existing $tempArchive
|
||||||
|
Delete-Existing $s.name
|
||||||
|
|
||||||
|
Download-File -Url $s.url -File $vend\$tempArchive -ErrorAction Stop
|
||||||
|
Extract-Archive $tempArchive $s.name
|
||||||
|
|
||||||
|
if ((Get-ChildItem $s.name).Count -eq 1) {
|
||||||
|
Flatten-Directory($s.name)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Write current version to .cmderver file, for later.
|
||||||
|
"$($s.version)" | Out-File "$($s.name)/.cmderver"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Restore ConEmu user configuration
|
||||||
|
if ($ConEmuXml -ne "") {
|
||||||
|
Write-Verbose "Restore '$ConEmuXmlSave' to '$ConEmuXml'"
|
||||||
|
Copy-Item $ConEmuXmlSave $ConEmuXml
|
||||||
|
}
|
||||||
|
|
||||||
|
# Put vendor\cmder.sh in /etc/profile.d so it runs when we start bash or mintty
|
||||||
|
if ( (Test-Path $($saveTo + "git-for-windows/etc/profile.d") ) ) {
|
||||||
|
Write-Verbose "Adding cmder.sh /etc/profile.d"
|
||||||
|
Copy-Item $($saveTo + "cmder.sh") $($saveTo + "git-for-windows/etc/profile.d/cmder.sh")
|
||||||
|
}
|
||||||
|
|
||||||
|
# Replace /etc/profile.d/git-prompt.sh with cmder lambda prompt so it runs when we start bash or mintty
|
||||||
|
if ( !(Test-Path $($saveTo + "git-for-windows/etc/profile.d/git-prompt.sh.bak") ) ) {
|
||||||
|
Write-Verbose "Replacing /etc/profile.d/git-prompt.sh with our git-prompt.sh"
|
||||||
|
Move-Item $($saveTo + "git-for-windows/etc/profile.d/git-prompt.sh") $($saveTo + "git-for-windows/etc/profile.d/git-prompt.sh.bak")
|
||||||
|
Copy-Item $($saveTo + "git-prompt.sh") $($saveTo + "git-for-windows/etc/profile.d/git-prompt.sh")
|
||||||
|
}
|
||||||
|
|
||||||
|
Pop-Location
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not $Compile -or $noVendor) {
|
||||||
|
Write-Warning "You are not building the full project, Use -Compile without -noVendor"
|
||||||
Write-Warning "This cannot be a release. Test build only!"
|
Write-Warning "This cannot be a release. Test build only!"
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
# Put vendor\cmder.sh in /etc/profile.d so it runs when we start bash or mintty
|
Write-Verbose "Successfully built Cmder v$version!"
|
||||||
if ( (Test-Path $($SaveTo + "git-for-windows/etc/profile.d") ) ) {
|
|
||||||
write-verbose "Adding cmder.sh /etc/profile.d"
|
if ( $Env:APPVEYOR -eq 'True' ) {
|
||||||
Copy-Item $($SaveTo + "cmder.sh") $($SaveTo + "git-for-windows/etc/profile.d/cmder.sh")
|
Add-AppveyorMessage -Message "Building Cmder v$version was successful." -Category Information
|
||||||
}
|
}
|
||||||
|
|
||||||
# Replace /etc/profile.d/git-prompt.sh with cmder lambda prompt so it runs when we start bash or mintty
|
if ( $Env:GITHUB_ACTIONS -eq 'true' ) {
|
||||||
if ( !(Test-Path $($SaveTo + "git-for-windows/etc/profile.d/git-prompt.sh.bak") ) ) {
|
Write-Output "::notice title=Build Complete::Building Cmder v$version was successful."
|
||||||
write-verbose "Replacing /etc/profile.d/git-prompt.sh with our git-prompt.sh"
|
|
||||||
Move-Item $($SaveTo + "git-for-windows/etc/profile.d/git-prompt.sh") $($SaveTo + "git-for-windows/etc/profile.d/git-prompt.sh.bak")
|
|
||||||
Copy-Item $($SaveTo + "git-prompt.sh") $($SaveTo + "git-for-windows/etc/profile.d/git-prompt.sh")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Write-Verbose "All good and done!"
|
Write-Host -ForegroundColor green "All good and done!"
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<#
|
<#
|
||||||
.Synopsis
|
.Synopsis
|
||||||
Pack cmder
|
Pack Cmder
|
||||||
.DESCRIPTION
|
.DESCRIPTION
|
||||||
Use this script to pack cmder into release archives
|
Use this script to pack cmder into release archives
|
||||||
|
|
||||||
@ -11,7 +11,7 @@
|
|||||||
|
|
||||||
Creates default archives for cmder
|
Creates default archives for cmder
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
.\build -verbose
|
.\pack.ps1 -verbose
|
||||||
|
|
||||||
Creates default archives for cmder with plenty of information
|
Creates default archives for cmder with plenty of information
|
||||||
.NOTES
|
.NOTES
|
||||||
@ -22,37 +22,55 @@
|
|||||||
https://github.com/cmderdev/cmder - Project Home
|
https://github.com/cmderdev/cmder - Project Home
|
||||||
#>
|
#>
|
||||||
|
|
||||||
[CmdletBinding(SupportsShouldProcess=$true)]
|
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||||
Param(
|
Param(
|
||||||
# CmdletBinding will give us;
|
# CmdletBinding will give us;
|
||||||
# -verbose switch to turn on logging and
|
# -verbose switch to turn on logging and
|
||||||
# -whatif switch to not actually make changes
|
# -whatif switch to not actually make changes
|
||||||
|
|
||||||
# Path to the vendor configuration source file
|
# Path to the vendor configuration source file
|
||||||
[string]$cmderRoot = "..",
|
[string]$cmderRoot = "$PSScriptRoot\..",
|
||||||
|
|
||||||
# Vendor folder locaton
|
# Vendor folder locaton
|
||||||
[string]$saveTo = "..\build"
|
[string]$saveTo = "$PSScriptRoot\..\build"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
$cmderRoot = Resolve-Path $cmderRoot
|
||||||
|
|
||||||
. "$PSScriptRoot\utils.ps1"
|
. "$PSScriptRoot\utils.ps1"
|
||||||
$ErrorActionPreference = "Stop"
|
$ErrorActionPreference = "Stop"
|
||||||
Ensure-Executable "7z"
|
Ensure-Executable "7z"
|
||||||
|
|
||||||
$targets = @{
|
$targets = @{
|
||||||
"cmder.zip" = $null;
|
"cmder.7z" = "-t7z -m0=lzma2 -mx=9 -mfb=64 -md=32m -ms=on -myx=7 -mqs=on";
|
||||||
"cmder.7z" = $null;
|
"cmder.zip" = "-mm=Deflate -mfb=128 -mpass=3";
|
||||||
"cmder_mini.zip" = "-x!`"vendor\git-for-windows`"";
|
"cmder_mini.zip" = "-xr!`"vendor\git-for-windows`"";
|
||||||
}
|
}
|
||||||
|
|
||||||
Delete-Existing "..\Version*"
|
Push-Location -Path $cmderRoot
|
||||||
Delete-Existing "..\build\*"
|
|
||||||
|
Delete-Existing "$cmderRoot\Version*"
|
||||||
|
Delete-Existing "$cmderRoot\build\*"
|
||||||
|
|
||||||
|
if (-not (Test-Path -PathType container $saveTo)) {
|
||||||
|
(New-Item -ItemType Directory -Path $saveTo) | Out-Null
|
||||||
|
}
|
||||||
|
|
||||||
|
$saveTo = Resolve-Path $saveTo
|
||||||
|
|
||||||
$version = Get-VersionStr
|
$version = Get-VersionStr
|
||||||
(New-Item -ItemType file "$cmderRoot\Version $version") | Out-Null
|
(New-Item -ItemType file "$cmderRoot\Version $version") | Out-Null
|
||||||
|
|
||||||
|
if ($PSCmdlet.MyInvocation.BoundParameters["Verbose"].IsPresent) {
|
||||||
|
Write-Verbose "Packing Cmder $version in $saveTo..."
|
||||||
|
$excluded = (Get-Content -Path "$cmderRoot\packignore") -Split [System.Environment]::NewLine | Where-Object { $_ }
|
||||||
|
Get-ChildItem $cmderRoot -Force -Exclude $excluded
|
||||||
|
}
|
||||||
|
|
||||||
foreach ($t in $targets.GetEnumerator()) {
|
foreach ($t in $targets.GetEnumerator()) {
|
||||||
Create-Archive $cmderRoot "$saveTo\$($t.Name)" $t.Value
|
Create-Archive "$cmderRoot" "$saveTo\$($t.Name)" $t.Value
|
||||||
$hash = (Digest-Hash "$saveTo\$($t.Name)")
|
$hash = (Digest-Hash "$saveTo\$($t.Name)")
|
||||||
Add-Content -path "$saveTo\hashes.txt" -value ($t.Name + ' ' + $hash)
|
Add-Content -path "$saveTo\hashes.txt" -value ($t.Name + ' ' + $hash)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Pop-Location
|
||||||
|
272
scripts/update.ps1
Normal file
272
scripts/update.ps1
Normal file
@ -0,0 +1,272 @@
|
|||||||
|
<#
|
||||||
|
.Synopsis
|
||||||
|
Update Cmder vendored dependencies
|
||||||
|
.DESCRIPTION
|
||||||
|
This script updates dependencies to the latest version in vendor/sources.json file.
|
||||||
|
|
||||||
|
You will need to make this script executable by setting your Powershell Execution Policy to Remote signed
|
||||||
|
Then unblock the script for execution with UnblockFile .\build.ps1
|
||||||
|
.EXAMPLE
|
||||||
|
.\build.ps1
|
||||||
|
|
||||||
|
Updates the dependency sources in the default location, the vendor/sources.json file.
|
||||||
|
.EXAMPLE
|
||||||
|
.\build -verbose
|
||||||
|
|
||||||
|
Updates the dependency sources and see what's going on.
|
||||||
|
.EXAMPLE
|
||||||
|
.\build.ps1 -SourcesPath '~/custom/vendors.json'
|
||||||
|
|
||||||
|
Specify the path to update dependency sources file at.
|
||||||
|
.NOTES
|
||||||
|
AUTHORS
|
||||||
|
David Refoua <David@Refoua.me>
|
||||||
|
Part of the Cmder project.
|
||||||
|
.LINK
|
||||||
|
http://cmder.app/ - Project Home
|
||||||
|
#>
|
||||||
|
[CmdletBinding(SupportsShouldProcess = $true)]
|
||||||
|
Param(
|
||||||
|
# CmdletBinding will give us;
|
||||||
|
# -verbose switch to turn on logging and
|
||||||
|
# -whatif switch to not actually make changes
|
||||||
|
|
||||||
|
# Path to the vendor configuration source file
|
||||||
|
[string]$sourcesPath = "$PSScriptRoot\..\vendor\sources.json"
|
||||||
|
)
|
||||||
|
|
||||||
|
# Get the root directory of the cmder project.
|
||||||
|
$cmder_root = Resolve-Path "$PSScriptRoot\.."
|
||||||
|
|
||||||
|
# Dot source util functions into this scope
|
||||||
|
. "$PSScriptRoot\utils.ps1"
|
||||||
|
$ErrorActionPreference = "Stop"
|
||||||
|
|
||||||
|
# Attempts to match the current link with the new link, returning the count of matching characters.
|
||||||
|
function Match-Filenames {
|
||||||
|
param (
|
||||||
|
$url,
|
||||||
|
$downloadUrl,
|
||||||
|
$fromEnd
|
||||||
|
)
|
||||||
|
|
||||||
|
$filename = [System.IO.Path]::GetFileName($url)
|
||||||
|
$filenameDownload = [System.IO.Path]::GetFileName($downloadUrl)
|
||||||
|
|
||||||
|
$position = 0
|
||||||
|
|
||||||
|
if ([String]::IsNullOrEmpty($filename) -or [String]::IsNullOrEmpty($filenameDownload)) {
|
||||||
|
throw "Either one or both filenames are empty!"
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($fromEnd) {
|
||||||
|
$arr = $filename -split ""
|
||||||
|
[array]::Reverse($arr)
|
||||||
|
$filename = $arr -join ''
|
||||||
|
$arr = $filenameDownload -split ""
|
||||||
|
[array]::Reverse($arr)
|
||||||
|
$filenameDownload = $arr -join ''
|
||||||
|
}
|
||||||
|
|
||||||
|
while ($filename.Substring($position, 1) -eq $filenameDownload.Substring($position, 1)) {
|
||||||
|
$position++
|
||||||
|
|
||||||
|
if ( ($position -ge $filename.Length) -or ($position -ge $filenameDownload.Length) ) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $position
|
||||||
|
}
|
||||||
|
|
||||||
|
# Uses the GitHub api in order to fetch the current download links for the latest releases of the repo.
|
||||||
|
function Fetch-DownloadUrl {
|
||||||
|
param (
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
$urlStr
|
||||||
|
)
|
||||||
|
|
||||||
|
$url = [uri] $urlStr
|
||||||
|
|
||||||
|
if ((-not $url) -or ($null -eq $url) -or ($url -eq '')) {
|
||||||
|
throw "Failed to parse url: $urlStr"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not ("http", "https" -contains $url.Scheme)) {
|
||||||
|
throw "unknown source scheme: $($url.Scheme)"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not ($url.Host -ilike "*github.com")) {
|
||||||
|
throw "unknown source domain: $($url.Host)"
|
||||||
|
}
|
||||||
|
|
||||||
|
$p = $url.Segments.Split([Environment]::NewLine)
|
||||||
|
|
||||||
|
$headers = @{}
|
||||||
|
|
||||||
|
if ($($env:GITHUB_TOKEN)) {
|
||||||
|
$headers["Authorization"] = "token $($env:GITHUB_TOKEN)"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Api server for GitHub
|
||||||
|
$urlHost = "api.github.com"
|
||||||
|
|
||||||
|
# Path for releases end-point
|
||||||
|
$urlPath = [IO.Path]::Combine('repos', $p[1], $p[2], 'releases').Trim('/')
|
||||||
|
|
||||||
|
$apiUrl = [uri] (New-Object System.UriBuilder -ArgumentList $url.Scheme, $urlHost, -1, $urlPath).Uri
|
||||||
|
|
||||||
|
$info = Invoke-RestMethod -Uri $apiUrl -Headers $headers
|
||||||
|
|
||||||
|
$downloadLinks = (New-Object System.Collections.Generic.List[System.Object])
|
||||||
|
|
||||||
|
$charCount = 0
|
||||||
|
|
||||||
|
if (-not ($info -is [array])) {
|
||||||
|
throw "The response received from API server is invalid"
|
||||||
|
}
|
||||||
|
|
||||||
|
:loop foreach ($i in $info) {
|
||||||
|
if (-not ($i.assets -is [array])) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach ($a in $i.assets) {
|
||||||
|
if ([String]::IsNullOrEmpty($a.browser_download_url)) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
# Skip some download links as we're not interested in them
|
||||||
|
if ( $a.browser_download_url -ilike "*_symbols*" ) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
$score = Match-Filenames $url $a.browser_download_url
|
||||||
|
|
||||||
|
# Skip links that don't match or are less similar
|
||||||
|
if ( ($score -eq 0) -or ($score -lt $charCount) ) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
# If we reach the same download link as we have
|
||||||
|
if ( $score -eq [System.IO.Path]::GetFileName($url).Length ) {
|
||||||
|
}
|
||||||
|
|
||||||
|
$charCount = $score
|
||||||
|
$downloadLinks.Add($a.browser_download_url)
|
||||||
|
}
|
||||||
|
|
||||||
|
# If at least one download link was found, don't continue with older releases
|
||||||
|
if ( $downloadLinks.Length -gt 0 ) {
|
||||||
|
break :loop
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Special case for archive downloads of repository
|
||||||
|
if (($null -eq $downloadLinks) -or (-not $downloadLinks)) {
|
||||||
|
if ((($p | ForEach-Object { $_.Trim('/') }) -contains "archive") -and $info[0].tag_name) {
|
||||||
|
for ($i = 0; $i -lt $p.Length; $i++) {
|
||||||
|
if ($p[$i].Trim('/') -eq "archive") {
|
||||||
|
$p[$i + 1] = $info[0].tag_name + ".zip"
|
||||||
|
$downloadLinks = $url.Scheme + "://" + $url.Host + ($p -join '')
|
||||||
|
return $downloadLinks
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return ''
|
||||||
|
}
|
||||||
|
|
||||||
|
$temp = $downloadLinks | Where-Object { (Match-Filenames $url $_) -eq $charCount }
|
||||||
|
|
||||||
|
$downloadLinks = (New-Object System.Collections.Generic.List[System.Object])
|
||||||
|
|
||||||
|
$charCount = 0
|
||||||
|
|
||||||
|
foreach ($l in $temp) {
|
||||||
|
$score = Match-Filenames $url $l true
|
||||||
|
|
||||||
|
if ( ($score -eq 0) -or ($score -lt $charCount) ) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
$charCount = $score
|
||||||
|
}
|
||||||
|
|
||||||
|
$downloadLinks = $temp | Where-Object { (Match-Filenames $url $_ true) -eq $charCount }
|
||||||
|
|
||||||
|
if (($null -eq $downloadLinks) -or (-not $downloadLinks)) {
|
||||||
|
throw "No suitable download links matched for the url!"
|
||||||
|
}
|
||||||
|
|
||||||
|
if (-not($downloadLinks -is [String])) {
|
||||||
|
throw "Found multiple matches for the same url:`n" + $downloadLinks
|
||||||
|
}
|
||||||
|
|
||||||
|
return $downloadLinks
|
||||||
|
}
|
||||||
|
|
||||||
|
$count = 0
|
||||||
|
|
||||||
|
# Read the current sources content
|
||||||
|
$sources = Get-Content $sourcesPath | Out-String | ConvertFrom-Json
|
||||||
|
|
||||||
|
foreach ($s in $sources) {
|
||||||
|
Write-Verbose "Updating sources link for $($s.name)..."
|
||||||
|
|
||||||
|
Write-Verbose "Old Link: $($s.url)"
|
||||||
|
|
||||||
|
$downloadUrl = Fetch-DownloadUrl $s.url
|
||||||
|
|
||||||
|
if (($null -eq $downloadUrl) -or ($downloadUrl -eq '')) {
|
||||||
|
Write-Verbose "No new links were found"
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Link: $downloadUrl"
|
||||||
|
|
||||||
|
$url = [uri] $downloadUrl
|
||||||
|
|
||||||
|
$version = ''
|
||||||
|
|
||||||
|
if (($url.Segments[-3] -eq "download/") -and ($url.Segments[-2].StartsWith("v"))) {
|
||||||
|
$version = $url.Segments[-2].TrimStart('v').TrimEnd('/')
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($url.Segments[-2] -eq "archive/")) {
|
||||||
|
$version = [System.IO.Path]::GetFileNameWithoutExtension($url.Segments[-1].TrimStart('v').TrimEnd('/'))
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($version -eq '') {
|
||||||
|
throw "Unable to extract version from url string"
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Version: $version"
|
||||||
|
|
||||||
|
if ( $s.version -ne $version ) {
|
||||||
|
# if ( ([System.Version] $s.version) -gt ([System.Version] $version) ) {
|
||||||
|
# throw "The current version $($s.version) is already newer than the found version $version!"
|
||||||
|
# }
|
||||||
|
|
||||||
|
$count++
|
||||||
|
}
|
||||||
|
|
||||||
|
$s.url = $downloadUrl
|
||||||
|
$s.version = $version
|
||||||
|
}
|
||||||
|
|
||||||
|
$sources | ConvertTo-Json | Set-Content $sourcesPath
|
||||||
|
|
||||||
|
if ($count -eq 0) {
|
||||||
|
Write-Host -ForegroundColor yellow "No new releases were found."
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Env:APPVEYOR -eq 'True') {
|
||||||
|
Add-AppveyorMessage -Message "Successfully updated $count dependencies." -Category Information
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($Env:GITHUB_ACTIONS -eq 'true') {
|
||||||
|
Write-Output "::notice title=Task Complete::Successfully updated $count dependencies."
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Host -ForegroundColor green "Successfully updated $count dependencies."
|
@ -9,13 +9,13 @@ function Ensure-Exists($path) {
|
|||||||
function Ensure-Executable($command) {
|
function Ensure-Executable($command) {
|
||||||
try { Get-Command $command -ErrorAction Stop > $null }
|
try { Get-Command $command -ErrorAction Stop > $null }
|
||||||
catch {
|
catch {
|
||||||
If( ($command -eq "7z") -and (Test-Path "$env:programfiles\7-zip\7z.exe") ){
|
if( ($command -eq "7z") -and (Test-Path "$env:programfiles\7-zip\7z.exe") ){
|
||||||
set-alias -Name "7z" -Value "$env:programfiles\7-zip\7z.exe" -Scope script
|
Set-Alias -Name "7z" -Value "$env:programfiles\7-zip\7z.exe" -Scope script
|
||||||
}
|
}
|
||||||
ElseIf( ($command -eq "7z") -and (Test-Path "$env:programw6432\7-zip\7z.exe") ) {
|
elseif( ($command -eq "7z") -and (Test-Path "$env:programw6432\7-zip\7z.exe") ) {
|
||||||
set-alias -Name "7z" -Value "$env:programw6432\7-zip\7z.exe" -Scope script
|
Set-Alias -Name "7z" -Value "$env:programw6432\7-zip\7z.exe" -Scope script
|
||||||
}
|
}
|
||||||
Else {
|
else {
|
||||||
Write-Error "Missing $command! Ensure it is installed and on in the PATH"
|
Write-Error "Missing $command! Ensure it is installed and on in the PATH"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
@ -23,96 +23,121 @@ function Ensure-Executable($command) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Delete-Existing($path) {
|
function Delete-Existing($path) {
|
||||||
Write-Verbose "Remove $path"
|
if (Test-Path $path) {
|
||||||
Remove-Item -Recurse -force $path -ErrorAction SilentlyContinue
|
Write-Verbose "Remove existing $path"
|
||||||
|
}
|
||||||
|
Remove-Item -Recurse -Force $path -ErrorAction SilentlyContinue
|
||||||
}
|
}
|
||||||
|
|
||||||
function Extract-Archive($source, $target) {
|
function Extract-Archive($source, $target) {
|
||||||
Write-Verbose $("Extracting Archive '$cmder_root\vendor\" + $source.replace('/','\') + " to '$cmder_root\vendor\$target'")
|
Write-Verbose $("Extracting Archive '$cmder_root\vendor\" + $source.replace('/','\') + " to '$cmder_root\vendor\$target'")
|
||||||
Invoke-Expression "7z x -y -o`"$($target)`" `"$source`" > `$null"
|
Invoke-Expression "7z x -y -o`"$($target)`" `"$source`" > `$null"
|
||||||
if ($lastexitcode -ne 0) {
|
if ($LastExitCode -ne 0) {
|
||||||
Write-Error "Extracting of $source failied"
|
Write-Error "Extracting of $source failed"
|
||||||
}
|
}
|
||||||
Remove-Item $source
|
Remove-Item $source
|
||||||
}
|
}
|
||||||
|
|
||||||
function Create-Archive($source, $target, $params) {
|
function Create-Archive($source, $target, $params) {
|
||||||
$command = "7z a -x@`"$source\packignore`" $params $target $source > `$null"
|
$command = "7z a -x@`"$source\packignore`" $params `"$target`" `"*`" > `$null"
|
||||||
Write-Verbose "Running: $command"
|
Write-Verbose "Creating Archive from '$source' in '$target' with parameters '$params'"
|
||||||
|
Push-Location $source
|
||||||
Invoke-Expression $command
|
Invoke-Expression $command
|
||||||
if ($lastexitcode -ne 0) {
|
Pop-Location
|
||||||
Write-Error "Compressing $source failied"
|
if ($LastExitCode -ne 0) {
|
||||||
|
Write-Error "Compressing $source failed"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# If directory contains only one child directory
|
# If directory contains only one child directory
|
||||||
# Flatten it instead
|
# Flatten it instead
|
||||||
function Flatten-Directory($name) {
|
function Flatten-Directory($name) {
|
||||||
$child = (Get-Childitem $name)[0]
|
$name = Resolve-Path $name
|
||||||
Rename-Item $name -NewName "$($name)_moving"
|
$moving = "$($name)_moving"
|
||||||
Move-Item -Path "$($name)_moving\$child" -Destination $name
|
Rename-Item $name -NewName $moving
|
||||||
Remove-Item -Recurse "$($name)_moving"
|
Write-Verbose "Flattening the '$name' directory..."
|
||||||
|
$child = (Get-ChildItem $moving)[0] | Resolve-Path
|
||||||
|
Move-Item -Path $child -Destination $name
|
||||||
|
Remove-Item -Recurse $moving
|
||||||
}
|
}
|
||||||
|
|
||||||
function Digest-Hash($path) {
|
function Digest-Hash($path) {
|
||||||
if(Get-Command Get-FileHash -ErrorAction SilentlyContinue){
|
if (Get-Command Get-FileHash -ErrorAction SilentlyContinue) {
|
||||||
return (Get-FileHash -Algorithm SHA256 -Path $path).Hash
|
return (Get-FileHash -Algorithm SHA256 -Path $path).Hash
|
||||||
}
|
}
|
||||||
|
|
||||||
return Invoke-Expression "md5sum $path"
|
return Invoke-Expression "md5sum $path"
|
||||||
}
|
}
|
||||||
|
|
||||||
function Get-VersionStr() {
|
function Set-GHVariable {
|
||||||
|
param(
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$Name,
|
||||||
|
[Parameter(Mandatory = $true)]
|
||||||
|
[string]$Value
|
||||||
|
)
|
||||||
|
|
||||||
|
Write-Verbose "Setting CI variable $Name to $Value" -Verbose
|
||||||
|
|
||||||
|
if ($env:GITHUB_ENV) {
|
||||||
|
Write-Output "$Name=$Value" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-GHTempPath {
|
||||||
|
$temp = [System.IO.Path]::GetTempPath()
|
||||||
|
if ($env:RUNNER_TEMP) {
|
||||||
|
$temp = $env:RUNNER_TEMP
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Get CI Temp path: $temp" -Verbose
|
||||||
|
return $temp
|
||||||
|
}
|
||||||
|
|
||||||
|
function Get-VersionStr {
|
||||||
# Clear existing variable
|
# Clear existing variable
|
||||||
if ($string) { Clear-Variable -name string }
|
if ($string) { Clear-Variable -name string }
|
||||||
|
|
||||||
# Determine if git is available
|
# Determine if git is available
|
||||||
if (Get-Command "git.exe" -ErrorAction SilentlyContinue)
|
if (Get-Command "git.exe" -ErrorAction SilentlyContinue) {
|
||||||
{
|
# Determine if the current directory is a git repository
|
||||||
|
$GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
# Determine if the current diesctory is a git repository
|
if ( $GitPresent -eq 'true' ) {
|
||||||
$GitPresent = Invoke-Expression "git rev-parse --is-inside-work-tree" -erroraction SilentlyContinue
|
|
||||||
|
|
||||||
if ( $GitPresent -eq 'true' )
|
|
||||||
{
|
|
||||||
$string = Invoke-Expression "git describe --abbrev=0 --tags"
|
$string = Invoke-Expression "git describe --abbrev=0 --tags"
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Fallback used when Git is not available
|
# Fallback used when Git is not available
|
||||||
if ( -not($string) )
|
if ( -not($string) ) {
|
||||||
{
|
|
||||||
$string = Parse-Changelog ($PSScriptRoot + '\..\' + 'CHANGELOG.md')
|
$string = Parse-Changelog ($PSScriptRoot + '\..\' + 'CHANGELOG.md')
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add build number, if AppVeyor is present
|
# Add build number, if AppVeyor is present
|
||||||
if ( $Env:APPVEYOR -eq 'True' )
|
if ( $Env:APPVEYOR -eq 'True' ) {
|
||||||
{
|
|
||||||
$string = $string + '.' + $Env:APPVEYOR_BUILD_NUMBER
|
$string = $string + '.' + $Env:APPVEYOR_BUILD_NUMBER
|
||||||
}
|
}
|
||||||
|
elseif ( $Env:GITHUB_ACTIONS -eq 'true' ) {
|
||||||
|
$string = $string + '.' + $Env:GITHUB_RUN_NUMBER
|
||||||
|
}
|
||||||
|
|
||||||
# Remove starting 'v' characters
|
# Remove starting 'v' characters
|
||||||
$string = $string -replace '^v+','' # normalize version string
|
$string = $string -replace '^v+','' # normalize version string
|
||||||
|
|
||||||
return $string
|
return $string
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Parse-Changelog($file) {
|
function Parse-Changelog($file) {
|
||||||
|
|
||||||
# Define the regular expression to match the version string from changelog
|
# Define the regular expression to match the version string from changelog
|
||||||
[regex]$regex = '^## \[(?<version>[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$';
|
[regex]$regex = '^## \[(?<version>[\w\-\.]+)\]\([^\n()]+\)\s+\([^\n()]+\)$';
|
||||||
|
|
||||||
# Find the first match of the version string which means the latest version
|
# Find the first match of the version string which means the latest version
|
||||||
$version = Select-String -Path $file -Pattern $regex | Select-Object -First 1 | % { $_.Matches.Groups[1].Value }
|
$version = Select-String -Path $file -Pattern $regex | Select-Object -First 1 | ForEach-Object { $_.Matches.Groups[1].Value }
|
||||||
|
|
||||||
return $version
|
return $version
|
||||||
}
|
}
|
||||||
|
|
||||||
function Create-RC($string, $path) {
|
function Create-RC($string, $path) {
|
||||||
|
|
||||||
$version = $string + '.0.0.0.0' # padding for version string
|
$version = $string + '.0.0.0.0' # padding for version string
|
||||||
|
|
||||||
if ( !(Test-Path "$path.sample") ) {
|
if ( !(Test-Path "$path.sample") ) {
|
||||||
@ -132,13 +157,12 @@ function Create-RC($string, $path) {
|
|||||||
$resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment )
|
$resource = $resource.Replace( "{" + $pattern[$index++] + "}", $fragment )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add the version string
|
# Add the version string
|
||||||
$resource = $resource.Replace( "{Cmder-Version-Str}", '"' + $string + '"' )
|
$resource = $resource.Replace( "{Cmder-Version-Str}", '"' + $string + '"' )
|
||||||
|
|
||||||
# Write the results
|
# Write the results
|
||||||
Set-Content -Path $path -Value $resource
|
Set-Content -Path $path -Value $resource
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function Register-Cmder() {
|
function Register-Cmder() {
|
||||||
@ -201,14 +225,27 @@ function Download-File {
|
|||||||
$File
|
$File
|
||||||
)
|
)
|
||||||
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
|
||||||
|
|
||||||
# I think this is the problem
|
$useBitTransfer = $null -ne (Get-Module -Name BitsTransfer -ListAvailable) -and ($PSVersionTable.PSVersion.Major -le 5)
|
||||||
$File = $File -Replace "/", "\"
|
|
||||||
Write-Verbose "Downloading from $Url to $File"
|
$File = $File -replace "/", "\"
|
||||||
|
|
||||||
|
try {
|
||||||
|
if ($useBitTransfer) {
|
||||||
|
Start-BitsTransfer -Source $Url -Destination $File -DisplayName "Downloading '$Url' to $File"
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch {
|
||||||
|
Write-Error "Failed to download file using BITS, reason: $_`nUsing fallback method instead...`n" -ErrorAction:Continue
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Verbose "Downloading from $Url to $File`n"
|
||||||
|
|
||||||
$wc = New-Object System.Net.WebClient
|
$wc = New-Object System.Net.WebClient
|
||||||
if ($env:https_proxy) {
|
if ($env:https_proxy) {
|
||||||
$wc.proxy = (New-Object System.Net.WebProxy($env:https_proxy))
|
$wc.proxy = (New-Object System.Net.WebProxy($env:https_proxy))
|
||||||
}
|
}
|
||||||
$wc.Proxy.Credentials=[System.Net.CredentialCache]::DefaultNetworkCredentials;
|
$wc.Proxy.Credentials = [System.Net.CredentialCache]::DefaultNetworkCredentials;
|
||||||
$wc.DownloadFile($Url, $File)
|
$wc.DownloadFile($Url, $File)
|
||||||
}
|
}
|
||||||
|
4
vendor/ConEmu.xml.default
vendored
4
vendor/ConEmu.xml.default
vendored
@ -549,14 +549,14 @@
|
|||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
<value name="Cmd1" type="string" data="*"%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
<value name="Cmd1" type="string" data="*set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||||
</key>
|
</key>
|
||||||
<key name="Task8" modified="2018-02-22 06:05:13" build="171109">
|
<key name="Task8" modified="2018-02-22 06:05:13" build="171109">
|
||||||
<value name="Name" type="string" data="{bash::bash}"/>
|
<value name="Name" type="string" data="{bash::bash}"/>
|
||||||
<value name="Flags" type="dword" data="00000000"/>
|
<value name="Flags" type="dword" data="00000000"/>
|
||||||
<value name="Hotkey" type="dword" data="00000000"/>
|
<value name="Hotkey" type="dword" data="00000000"/>
|
||||||
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
<value name="GuiArgs" type="string" data=" /icon "%CMDER_ROOT%\icons\cmder.ico""/>
|
||||||
<value name="Cmd1" type="string" data=""%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
<value name="Cmd1" type="string" data="set "PATH=%ConEmuDir%\..\git-for-windows\usr\bin;%PATH%" & %ConEmuDir%\..\git-for-windows\git-cmd.exe --no-cd --command=%ConEmuBaseDirShort%\conemu-msys2-64.exe "%ConEmuDir%\..\git-for-windows\usr\bin\bash.exe" --login -i"/>
|
||||||
<value name="Active" type="long" data="0"/>
|
<value name="Active" type="long" data="0"/>
|
||||||
<value name="Count" type="long" data="1"/>
|
<value name="Count" type="long" data="1"/>
|
||||||
</key>
|
</key>
|
||||||
|
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. quotes only require '^^%%' vs '^^^^^^^^%%'
|
||||||
echo. $* - allows the alias to assume all the parameters of the supplied
|
echo. $* - allows the alias to assume all the parameters of the supplied
|
||||||
echo. command.
|
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. 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. together into one alias.
|
||||||
echo.
|
echo.
|
||||||
echo. For more information, read DOSKEY /?
|
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.
|
||||||
echo cexec /setPath [NOT] flagName command/program [parameters]
|
echo cexec /setPath [NOT] flagName command/program [parameters]
|
||||||
echo.
|
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 quicker use. Following arguments will be ignored.
|
||||||
echo.
|
echo.
|
||||||
echo NOT Specifies that cexec should carry out
|
echo NOT Specifies that cexec should carry out
|
||||||
echo the command only if the flag is missing.
|
echo the command only if the flag is missing.
|
||||||
echo.
|
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 to use a pair of double quotation marks to wrap
|
||||||
echo your flag name to avoid exceed expectation.
|
echo your flag name to avoid exceed expectation.
|
||||||
echo.
|
echo.
|
||||||
echo command/program Specifies the command to carry out if the
|
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 use a pair of double quotation marks to
|
||||||
echo wrap your command to avoid exceed expectation.
|
echo wrap your command to avoid exceed expectation.
|
||||||
echo.
|
echo.
|
||||||
echo parameters These are the parameters passed to the command/program.
|
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 to wrap your flag name to avoid exceed expectation.
|
||||||
echo.
|
echo.
|
||||||
echo Examples:
|
echo Examples:
|
||||||
echo.
|
echo.
|
||||||
echo These examples are expected to be written in %cmder_root%/config/user-profile.cmd
|
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 caries out actions based on flags that are passed.
|
||||||
echo.
|
echo.
|
||||||
echo Case 1:
|
echo Case 1:
|
||||||
|
50
vendor/bin/cmder_diag.cmd
vendored
50
vendor/bin/cmder_diag.cmd
vendored
@ -1,5 +1,29 @@
|
|||||||
@echo off
|
@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 ------------------------------------
|
||||||
echo dir "%cmder_root%"
|
echo dir "%cmder_root%"
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
@ -23,25 +47,15 @@ echo dir /s "%cmder_root%\config"
|
|||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
dir /s "%cmder_root%\config"
|
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 ------------------------------------
|
echo ------------------------------------
|
||||||
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
||||||
echo ------------------------------------
|
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 ------------------------------------
|
if (test-path $env:temp\cmder_diag_ps.log) {
|
||||||
write-host get-childitem "$env:CMDER_ROOT"
|
remove-item $env:temp\cmder_diag_ps.log
|
||||||
write-host ------------------------------------
|
}
|
||||||
get-childitem "$env:CMDER_ROOT"
|
|
||||||
|
|
||||||
write-host ''
|
$cmder_diag = {
|
||||||
write-host ------------------------------------
|
""
|
||||||
write-host get-childitem "$env:CMDER_ROOT/vendor"
|
"------------------------------------"
|
||||||
write-host ------------------------------------
|
"get-childitem env:"
|
||||||
get-childitem "$env:CMDER_ROOT/vendor"
|
"------------------------------------"
|
||||||
|
get-childitem env: | ft -autosize -wrap 2>&1
|
||||||
|
|
||||||
write-host ''
|
""
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
write-host get-childitem -s "$env:CMDER_ROOT/bin"
|
"get-command git -all -ErrorAction SilentlyContinue"
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
get-childitem -s "$env:CMDER_ROOT/bin"
|
get-command git -all -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
write-host ''
|
""
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
write-host get-childitem -s "$env:CMDER_ROOT/config"
|
"get-command clink -all -ErrorAction SilentlyContinue"
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
get-childitem -s "$env:CMDER_ROOT/config"
|
get-command clink -all -ErrorAction SilentlyContinue
|
||||||
|
|
||||||
write-host ''
|
""
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
write-host get-childitem env:
|
"systeminfo"
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
get-childitem env: |ft -autosize -wrap
|
systeminfo 2>&1
|
||||||
|
|
||||||
write-host ''
|
"------------------------------------"
|
||||||
write-host ------------------------------------
|
"get-childitem '$env:CMDER_ROOT'"
|
||||||
write-host get-command git
|
"------------------------------------"
|
||||||
write-host ------------------------------------
|
get-childitem "$env:CMDER_ROOT" |ft LastWriteTime,mode,length,FullName
|
||||||
get-command git
|
|
||||||
|
|
||||||
write-host ''
|
""
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
write-host systeminfo
|
"get-childitem '$env:CMDER_ROOT/vendor'"
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
systeminfo
|
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!
|
"get-childitem -s '$env:CMDER_ROOT/bin'"
|
||||||
write-host ------------------------------------
|
"------------------------------------"
|
||||||
|
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 ------------------------------------
|
#!/usr/bin/env bash
|
||||||
echo ls -la "$CMDER_ROOT"
|
|
||||||
echo ------------------------------------
|
|
||||||
ls -la "$CMDER_ROOT"
|
|
||||||
|
|
||||||
echo ''
|
[[ -f "$TEMP/cmder_diag_sh.log" ]] && rm -f "$TEMP/cmder_diag_sh.log"
|
||||||
echo ------------------------------------
|
|
||||||
echo ls -la "$CMDER_ROOT/vendor"
|
|
||||||
echo ------------------------------------
|
|
||||||
ls -la "$CMDER_ROOT/vendor"
|
|
||||||
|
|
||||||
echo ''
|
(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
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
env
|
env 2>&1
|
||||||
|
|
||||||
echo ''
|
echo ''
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
echo which git
|
echo which git
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
|
which git 2>&1
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo ------------------------------------
|
||||||
|
echo which clink
|
||||||
|
echo ------------------------------------
|
||||||
|
which clink 2>&1
|
||||||
|
|
||||||
which git
|
|
||||||
echo ''
|
echo ''
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
echo systeminfo
|
echo systeminfo
|
||||||
echo ------------------------------------
|
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 ------------------------------------
|
echo ------------------------------------
|
||||||
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
echo Make sure you sanitize this output of private data prior to posting it online for review by the CMDER Team!
|
||||||
echo ------------------------------------
|
echo ------------------------------------
|
||||||
|
) > "$TEMP/cmder_diag_sh.log"
|
||||||
|
|
||||||
|
cat "$TEMP/cmder_diag_sh.log"
|
||||||
|
|
||||||
|
echo ''
|
||||||
|
echo Above output was saved in "$TEMP/cmder_diag_sh.log"
|
||||||
|
13
vendor/bin/cmder_shell.cmd
vendored
Normal file
13
vendor/bin/cmder_shell.cmd
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
@echo off
|
||||||
|
|
||||||
|
set CMDER_ROOT=%~dp0..\..\
|
||||||
|
|
||||||
|
if "%cmder_init%" == "1" (
|
||||||
|
"%CMDER_ROOT%\vendor\clink\clink.bat" inject -q --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
||||||
|
) else (
|
||||||
|
set cmder_init=1
|
||||||
|
)
|
||||||
|
|
||||||
|
pushd "%CMDER_ROOT%"
|
||||||
|
call "%CMDER_ROOT%\vendor\init.bat" /f
|
||||||
|
popd
|
6
vendor/bin/excd.cmd
vendored
Normal file
6
vendor/bin/excd.cmd
vendored
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@if "%~1"=="/?" (@cd %*)
|
||||||
|
@set excd=%*
|
||||||
|
@set excd=%excd:"=%
|
||||||
|
@if "%excd:~0,1%"=="~" (@set excd=%userprofile%\%excd:~1%)
|
||||||
|
@if not "%~1"=="/d" (@set excd_param="/d") else (@set excd_param=)
|
||||||
|
@cd %excd_param% "%excd%"
|
2
vendor/bin/vscode_init.cmd
vendored
2
vendor/bin/vscode_init.cmd
vendored
@ -1,6 +1,6 @@
|
|||||||
@echo off
|
@echo off
|
||||||
|
|
||||||
:: Find root dir
|
rem Find root dir
|
||||||
|
|
||||||
if not defined CMDER_ROOT (
|
if not defined CMDER_ROOT (
|
||||||
for /f "delims=" %%i in ("%~dp0\..\..") do (
|
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
|
@echo off
|
||||||
|
|
||||||
:: Below are the default Cmder session settings:
|
rem Below are the default Cmder session settings:
|
||||||
::
|
rem
|
||||||
:: See "%CMDER_ROOT%\README.md" for details on these settings.
|
rem See "%CMDER_ROOT%\README.md" for details on these settings.
|
||||||
::
|
rem
|
||||||
:: `Cmder.exe` Arguments:
|
rem `Cmder.exe` Arguments:
|
||||||
:: ----------------------
|
rem ----------------------
|
||||||
::
|
rem
|
||||||
:: `/c [cmder_user_cfg_root]
|
rem `/c [cmder_user_cfg_root]
|
||||||
:: set cmder_user_bin=[cmder_user_cfg_root]\bin
|
rem set cmder_user_bin=[cmder_user_cfg_root]\bin
|
||||||
:: set cmder_user_config=[cmder_user_cfg_root]\config
|
rem set cmder_user_config=[cmder_user_cfg_root]\config
|
||||||
::
|
rem
|
||||||
:: `init.bat` Arguments
|
rem `init.bat` Arguments
|
||||||
:: --------------------
|
rem --------------------
|
||||||
::
|
rem
|
||||||
:: `/d`
|
rem `/d`
|
||||||
:: debug_output=0
|
rem debug_output=0
|
||||||
::
|
rem
|
||||||
:: `/v`
|
rem `/v`
|
||||||
:: verbose_output=0
|
rem verbose_output=0
|
||||||
::
|
rem
|
||||||
:: `/f`
|
rem `/f`
|
||||||
:: fast_init=0
|
rem fast_init=0
|
||||||
::
|
rem
|
||||||
:: `/nix_tools`
|
rem `/nix_tools`
|
||||||
:: nix_tools=1
|
rem nix_tools=1
|
||||||
::
|
rem
|
||||||
:: `/t`
|
rem `/t`
|
||||||
:: time_init=0
|
rem time_init=0
|
||||||
::
|
rem
|
||||||
:: `/max_depth`
|
rem `/max_depth`
|
||||||
:: max_depth=1
|
rem max_depth=1
|
||||||
::
|
rem
|
||||||
:: `/user_aliases`
|
rem `/user_aliases`
|
||||||
:: user_aliases=
|
rem user_aliases=
|
||||||
::
|
rem
|
||||||
:: `/git_install_root`
|
rem `/git_install_root`
|
||||||
:: GIT_INSTALL_ROOT=
|
rem GIT_INSTALL_ROOT=
|
||||||
::
|
rem
|
||||||
:: `/home`
|
rem `/home`
|
||||||
:: HOME=
|
rem HOME=
|
||||||
::
|
rem
|
||||||
:: `/svn_ssh`
|
rem `/svn_ssh`
|
||||||
:: SVN_SSH=
|
rem SVN_SSH=
|
||||||
|
|
||||||
echo Applying Cmder VSCode settings from '%~0'...
|
echo Applying Cmder VSCode settings from '%~0'...
|
||||||
|
|
||||||
if defined CMDER_CONFIGURED (
|
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
|
set verbose_output=1
|
||||||
) else (
|
) 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 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!
|
echo Applying Cmder VSCode settings is complete!
|
||||||
|
395
vendor/clink.lua
vendored
395
vendor/clink.lua
vendored
@ -13,6 +13,38 @@ dofile(clink_lua_file)
|
|||||||
|
|
||||||
-- now add our own things...
|
-- now add our own things...
|
||||||
|
|
||||||
|
|
||||||
|
local function get_uah_color()
|
||||||
|
return uah_color or "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_cwd_color()
|
||||||
|
return cwd_color or "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_lamb_color()
|
||||||
|
return lamb_color or "\x1b[1;30;49m" -- Light Grey = Lambda Color
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function get_clean_color()
|
||||||
|
return clean_color or "\x1b[37;1m" -- White, Bold
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function get_dirty_color()
|
||||||
|
return dirty_color or "\x1b[33;3m" -- Yellow, Italic
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function get_conflict_color()
|
||||||
|
return conflict_color or "\x1b[31;1m" -- Red, Bold
|
||||||
|
end
|
||||||
|
|
||||||
|
local function get_unknown_color()
|
||||||
|
return unknown_color or "\x1b[37;1m" -- White, Bold
|
||||||
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Makes a string safe to use as the replacement in string.gsub
|
-- Makes a string safe to use as the replacement in string.gsub
|
||||||
---
|
---
|
||||||
@ -21,6 +53,42 @@ local function verbatim(s)
|
|||||||
return s
|
return s
|
||||||
end
|
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
|
-- 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
|
-- not destroy our own prompt. It also means that started cmds (or batch files
|
||||||
@ -44,17 +112,69 @@ local function set_prompt_filter()
|
|||||||
-- also check for square brackets
|
-- also check for square brackets
|
||||||
if env == nil then env = old_prompt:match('.*%[([^%]]+)%].+:') end
|
if env == nil then env = old_prompt:match('.*%[([^%]]+)%].+:') end
|
||||||
|
|
||||||
-- build our own prompt
|
-- Much of the below was 'borrowed' from https://github.com/AmrEldib/cmder-powerline-prompt
|
||||||
-- orig: $E[1;32;40m$P$S{git}{hg}$S$_$E[1;30;40m{lamb}$S$E[0m
|
-- Symbol displayed for the home dir in the prompt.
|
||||||
-- color codes: "\x1b[1;37;40m"
|
if not prompt_homeSymbol then
|
||||||
local cmder_prompt = "\x1b[1;32;40m{cwd} {git}{hg}{svn} \n\x1b[1;39;40m{lamb} \x1b[0m"
|
prompt_homeSymbol = "~"
|
||||||
local lambda = "λ"
|
|
||||||
cmder_prompt = string.gsub(cmder_prompt, "{cwd}", verbatim(cwd))
|
|
||||||
|
|
||||||
if env ~= nil then
|
|
||||||
lambda = "("..env..") "..lambda
|
|
||||||
end
|
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
|
||||||
|
|
||||||
|
cr = "\x1b[0m" .. cr
|
||||||
|
|
||||||
|
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 .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m "
|
||||||
|
prompt = string.gsub(prompt, "{uah}", uah)
|
||||||
|
prompt = string.gsub(prompt, "{cwd}", cwd)
|
||||||
|
prompt = string.gsub(prompt, "{env}", env)
|
||||||
|
clink.prompt.value = string.gsub(prompt, "{lamb}", prompt_lambSymbol)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function percent_prompt_filter()
|
local function percent_prompt_filter()
|
||||||
@ -138,6 +258,12 @@ local function get_git_dir(path)
|
|||||||
local git_dir = gitfile:read():match('gitdir: (.*)')
|
local git_dir = gitfile:read():match('gitdir: (.*)')
|
||||||
gitfile:close()
|
gitfile:close()
|
||||||
|
|
||||||
|
if os.isdir then -- only available in Clink v1.0.0 and higher
|
||||||
|
if git_dir and os.isdir(git_dir) then
|
||||||
|
return git_dir
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
return git_dir and dir..'/'..git_dir
|
return git_dir and dir..'/'..git_dir
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -185,11 +311,18 @@ local function get_git_branch(git_dir)
|
|||||||
end
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Find out current branch
|
-- Find out current branch information
|
||||||
-- @return {false|mercurial branch name}
|
-- @return {false|mercurial branch information}
|
||||||
---
|
---
|
||||||
local function get_hg_branch()
|
local function get_hg_branch()
|
||||||
local file = io.popen("hg branch 2>nul")
|
-- Return the branch information. The default is to get just the
|
||||||
|
-- branch name, but you could e.g. use the "hg-prompt" extension to
|
||||||
|
-- get more information, such as any applied mq patches. Here's an
|
||||||
|
-- example of that:
|
||||||
|
-- local cmd = "hg prompt \"{branch}{status}{|{patch}}{update}\""
|
||||||
|
local cmd = "hg branch 2>nul"
|
||||||
|
local file = io.popen(cmd)
|
||||||
|
|
||||||
for line in file:lines() do
|
for line in file:lines() do
|
||||||
local m = line:match("(.+)$")
|
local m = line:match("(.+)$")
|
||||||
if m then
|
if m then
|
||||||
@ -207,7 +340,7 @@ end
|
|||||||
-- @return {false|svn branch name}
|
-- @return {false|svn branch name}
|
||||||
---
|
---
|
||||||
local function get_svn_branch(svn_dir)
|
local function get_svn_branch(svn_dir)
|
||||||
local file = io.popen("svn info 2>nul")
|
local file = io_popenyield("svn info 2>nul")
|
||||||
for line in file:lines() do
|
for line in file:lines() do
|
||||||
local m = line:match("^Relative URL:")
|
local m = line:match("^Relative URL:")
|
||||||
if m then
|
if m then
|
||||||
@ -221,32 +354,27 @@ local function get_svn_branch(svn_dir)
|
|||||||
end
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Get the status of working dir
|
-- Get the status and conflict status of working dir
|
||||||
-- @return {bool}
|
-- @return {bool <status>, bool <is_conflict>}
|
||||||
---
|
---
|
||||||
local function get_git_status()
|
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
|
for line in file:lines() do
|
||||||
file:close()
|
local code = line:sub(1, 2)
|
||||||
return false
|
-- 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
|
end
|
||||||
file:close()
|
file:close()
|
||||||
|
return { status = is_status, conflict = conflict_found }
|
||||||
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
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -270,7 +398,7 @@ end
|
|||||||
-- @return {bool}
|
-- @return {bool}
|
||||||
---
|
---
|
||||||
local function get_svn_status()
|
local function get_svn_status()
|
||||||
local file = io.popen("svn status -q")
|
local file = io_popenyield("svn status -q")
|
||||||
for line in file:lines() do
|
for line in file:lines() do
|
||||||
file:close()
|
file:close()
|
||||||
return false
|
return false
|
||||||
@ -284,54 +412,116 @@ end
|
|||||||
-- Get the status of working dir
|
-- Get the status of working dir
|
||||||
-- @return {bool}
|
-- @return {bool}
|
||||||
---
|
---
|
||||||
|
local last_git_status_time = nil
|
||||||
|
local last_git_status_setting = true
|
||||||
local function get_git_status_setting()
|
local function get_git_status_setting()
|
||||||
gitStatusSetting = io.popen("git --no-pager config -l 2>nul")
|
local time = os.clock()
|
||||||
|
local last_time = last_git_status_time
|
||||||
|
last_git_status_time = time
|
||||||
|
if last_time and time >= 0 and time - last_time < 10 then
|
||||||
|
return last_git_status_setting
|
||||||
|
end
|
||||||
|
|
||||||
for line in gitStatusSetting:lines() do
|
-- When async prompt filtering is available, check the
|
||||||
if string.match(line, 'cmder.status=false') or string.match(line, 'cmder.cmdstatus=false') then
|
-- prompt_overrideGitStatusOptIn config setting for whether to ignore the
|
||||||
gitStatusSetting:close()
|
-- cmder.status and cmder.cmdstatus git config opt-in settings.
|
||||||
return false
|
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") then
|
||||||
|
if prompt_overrideGitStatusOptIn then
|
||||||
|
last_git_status_setting = true
|
||||||
|
return true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
gitStatusSetting:close()
|
|
||||||
|
|
||||||
|
local gitStatusConfig = io_popenyield("git --no-pager config cmder.status 2>nul")
|
||||||
|
for line in gitStatusConfig:lines() do
|
||||||
|
if string.match(line, 'false') then
|
||||||
|
gitStatusConfig:close()
|
||||||
|
last_git_status_setting = false
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
gitStatusConfig:close()
|
||||||
|
|
||||||
|
local gitCmdStatusConfig = io_popenyield("git --no-pager config cmder.cmdstatus 2>nul")
|
||||||
|
for line in gitCmdStatusConfig:lines() do
|
||||||
|
if string.match(line, 'false') then
|
||||||
|
gitCmdStatusConfig:close()
|
||||||
|
last_git_status_setting = false
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
gitCmdStatusConfig:close()
|
||||||
|
|
||||||
|
last_git_status_setting = true
|
||||||
return true
|
return true
|
||||||
end
|
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 ()
|
||||||
|
-- Use git status if allowed.
|
||||||
|
local cmderGitStatusOptIn = get_git_status_setting()
|
||||||
|
return cmderGitStatusOptIn and get_git_status() or {}
|
||||||
|
end)
|
||||||
|
if not info then
|
||||||
|
info = cached_info.git_info or {}
|
||||||
|
else
|
||||||
|
cached_info.git_info = info
|
||||||
|
end
|
||||||
|
return info
|
||||||
|
end
|
||||||
|
|
||||||
local function git_prompt_filter()
|
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
|
-- Colors for git status
|
||||||
local colors = {
|
local colors = {
|
||||||
clean = "\x1b[1;37;40m",
|
clean = get_clean_color(),
|
||||||
dirty = "\x1b[33;3m",
|
dirty = get_dirty_color(),
|
||||||
conflict = "\x1b[31;1m"
|
conflict = get_conflict_color(),
|
||||||
|
nostatus = get_unknown_color()
|
||||||
}
|
}
|
||||||
|
|
||||||
local git_dir = get_git_dir()
|
local git_dir = get_git_dir()
|
||||||
|
local color
|
||||||
|
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
|
||||||
|
|
||||||
if get_git_status_setting() then
|
-- If we're inside of git repo then try to detect current branch
|
||||||
if git_dir then
|
-- Has branch => therefore it is a git folder, now figure out status
|
||||||
-- if we're inside of git repo then try to detect current branch
|
local gitInfo = get_git_info_table()
|
||||||
local branch = get_git_branch(git_dir)
|
local gitStatus = gitInfo.status
|
||||||
local color
|
local gitConflict = gitInfo.conflict
|
||||||
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 == nil then
|
||||||
if gitStatus then
|
color = colors.nostatus
|
||||||
color = colors.clean
|
elseif gitStatus then
|
||||||
end
|
color = colors.clean
|
||||||
|
else
|
||||||
|
color = colors.dirty
|
||||||
|
end
|
||||||
|
|
||||||
if gitConflict then
|
if gitConflict then
|
||||||
color = colors.conflict
|
color = colors.conflict
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..verbatim(branch)..")")
|
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", " "..color.."("..verbatim(branch)..")")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
-- No git present or not in git file
|
-- No git present or not in git file
|
||||||
@ -341,19 +531,22 @@ end
|
|||||||
|
|
||||||
local function hg_prompt_filter()
|
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 result = ""
|
||||||
|
|
||||||
local hg_dir = get_hg_dir()
|
local hg_dir = get_hg_dir()
|
||||||
if hg_dir then
|
if hg_dir then
|
||||||
-- Colors for mercurial status
|
-- Colors for mercurial status
|
||||||
local colors = {
|
local colors = {
|
||||||
clean = "\x1b[1;37;40m",
|
clean = get_clean_color(),
|
||||||
dirty = "\x1b[31;1m",
|
dirty = get_dirty_color(),
|
||||||
|
nostatus = get_unknown_color()
|
||||||
}
|
}
|
||||||
|
local output = get_hg_branch()
|
||||||
local pipe = io.popen("hg branch 2>&1")
|
|
||||||
local output = pipe:read('*all')
|
|
||||||
local rc = { pipe:close() }
|
|
||||||
|
|
||||||
-- strip the trailing newline from the branch name
|
-- strip the trailing newline from the branch name
|
||||||
local n = #output
|
local n = #output
|
||||||
@ -374,34 +567,66 @@ local function hg_prompt_filter()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", verbatim(result))
|
clink.prompt.value = string.gsub(clink.prompt.value, "{hg}", " "..verbatim(result))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local function svn_prompt_filter()
|
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
|
-- Colors for svn status
|
||||||
local colors = {
|
local colors = {
|
||||||
clean = "\x1b[1;37;40m",
|
clean = get_clean_color(),
|
||||||
dirty = "\x1b[31;1m",
|
dirty = get_dirty_color(),
|
||||||
|
nostatus = get_unknown_color()
|
||||||
}
|
}
|
||||||
|
|
||||||
if get_svn_dir() then
|
local svn_dir = get_svn_dir()
|
||||||
|
if svn_dir then
|
||||||
-- if we're inside of svn repo then try to detect current branch
|
-- if we're inside of svn repo then try to detect current branch
|
||||||
local branch = get_svn_branch()
|
local branch = get_svn_branch()
|
||||||
local color
|
local color
|
||||||
if branch then
|
if branch then
|
||||||
if get_svn_status() then
|
-- If in a different repo or branch than last time, discard cached info
|
||||||
|
if cached_info.svn_dir ~= svn_dir or cached_info.svn_branch ~= branch then
|
||||||
|
cached_info.svn_info = nil
|
||||||
|
cached_info.svn_dir = svn_dir
|
||||||
|
cached_info.svn_branch = branch
|
||||||
|
end
|
||||||
|
-- Get the svn status using coroutine if available and option is enabled. Otherwise use a blocking call
|
||||||
|
local svnStatus
|
||||||
|
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") and prompt_overrideSvnStatusOptIn then
|
||||||
|
svnStatus = clink_promptcoroutine(function ()
|
||||||
|
return get_svn_status()
|
||||||
|
end)
|
||||||
|
-- If the status result is pending, use the cached version instead, otherwise store it to the cache
|
||||||
|
if svnStatus == nil then
|
||||||
|
svnStatus = cached_info.svn_info
|
||||||
|
else
|
||||||
|
cached_info.svn_info = svnStatus
|
||||||
|
end
|
||||||
|
else
|
||||||
|
svnStatus = get_svn_status()
|
||||||
|
end
|
||||||
|
|
||||||
|
if svnStatus == nil then
|
||||||
|
color = colors.nostatus
|
||||||
|
elseif svnStatus then
|
||||||
color = colors.clean
|
color = colors.clean
|
||||||
else
|
else
|
||||||
color = colors.dirty
|
color = colors.dirty
|
||||||
end
|
end
|
||||||
|
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", color.."("..verbatim(branch)..")")
|
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", " "..color.."("..verbatim(branch)..")")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- No mercurial present or not in mercurial file
|
-- No svn present or not in svn file
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", "")
|
clink.prompt.value = string.gsub(clink.prompt.value, "{svn}", "")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
@ -427,11 +652,11 @@ for _,lua_module in ipairs(clink.find_files(completions_dir..'*.lua')) do
|
|||||||
end
|
end
|
||||||
|
|
||||||
if clink.get_env('CMDER_USER_CONFIG') then
|
if clink.get_env('CMDER_USER_CONFIG') then
|
||||||
local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/'
|
local cmder_config_dir = clink.get_env('CMDER_ROOT')..'/config/'
|
||||||
for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do
|
for _,lua_module in ipairs(clink.find_files(cmder_config_dir..'*.lua')) do
|
||||||
local filename = cmder_config_dir..lua_module
|
local filename = cmder_config_dir..lua_module
|
||||||
-- use dofile instead of require because require caches loaded modules
|
-- use dofile instead of require because require caches loaded modules
|
||||||
-- so config reloading using Alt-Q won't reload updated modules.
|
-- so config reloading using Alt-Q won't reload updated modules.
|
||||||
dofile(filename)
|
dofile(filename)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
9
vendor/clink_settings.default
vendored
9
vendor/clink_settings.default
vendored
@ -17,3 +17,12 @@ history.max_lines = 10000
|
|||||||
# name: Share history between instances
|
# name: Share history between instances
|
||||||
# type: boolean
|
# type: boolean
|
||||||
history.shared = True
|
history.shared = True
|
||||||
|
|
||||||
|
# name: Auto-answer terminate prompt
|
||||||
|
# type: enum
|
||||||
|
# options: off,answer_yes,answer_no
|
||||||
|
cmd.auto_answer = answer_yes
|
||||||
|
|
||||||
|
# name: Doskey completions
|
||||||
|
# type: color
|
||||||
|
color.doskey = yellow
|
||||||
|
12
vendor/cmder.sh
vendored
12
vendor/cmder.sh
vendored
@ -33,19 +33,19 @@ CMDER_ROOT=$(echo $CMDER_ROOT | sed 's:/*$::')
|
|||||||
|
|
||||||
export CMDER_ROOT
|
export CMDER_ROOT
|
||||||
|
|
||||||
if [ -d "/c/Program Files/Git" ] ; then
|
if [ -f "/c/Program Files/Git/cmd/git.exe" ] ; then
|
||||||
GIT_INSTALL_ROOT="/c/Program Files/Git"
|
GIT_INSTALL_ROOT="/c/Program Files/Git"
|
||||||
elif [ -d "/c/Program Files(x86)/Git" ] ; then
|
elif [ -f "/c/Program Files(x86)/Git/cmd/git.exe" ] ; then
|
||||||
GIT_INSTALL_ROOT="/c/Program Files(x86)/Git"
|
GIT_INSTALL_ROOT="/c/Program Files(x86)/Git"
|
||||||
elif [ -d "${CMDER_ROOT}/vendor/git-for-windows" ] ; then
|
elif [ -f "${CMDER_ROOT}/vendor/git-for-windows/cmd/git.exe" ] ; then
|
||||||
GIT_INSTALL_ROOT=${CMDER_ROOT}/vendor/git-for-windows
|
GIT_INSTALL_ROOT=${CMDER_ROOT}/vendor/git-for-windows
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! "$PATH" =~ "${GIT_INSTALL_ROOT}/bin:" ]] ; then
|
if [[ ! "$PATH" =~ "${GIT_INSTALL_ROOT}/bin:" ]] ; then
|
||||||
PATH=${GIT_INSTALL_ROOT}/bin:$PATH
|
PATH="${GIT_INSTALL_ROOT}/bin:$PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
PATH=${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}
|
PATH="${CMDER_ROOT}/bin:${CMDER_ROOT}/vendor/bin:$PATH:${CMDER_ROOT}"
|
||||||
|
|
||||||
export PATH
|
export PATH
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ if [ "${CMDER_USER_CONFIG}" != "" ] ; then
|
|||||||
mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
|
mv "$CMDER_USER_CONFIG/user-profile.sh" "$CMDER_USER_CONFIG/user_profile.sh"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export PATH=${CMDER_USER_CONFIG}/bin:$PATH
|
export PATH="${CMDER_USER_CONFIG}/bin:$PATH"
|
||||||
|
|
||||||
CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh"
|
CmderUserProfilePath="${CMDER_USER_CONFIG}/user_profile.sh"
|
||||||
if [ -f "${CMDER_USER_CONFIG}/user_profile.sh" ] ; then
|
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
|
# zsh - Copy to /etc/profile.d/cmder_exinit.zsh
|
||||||
# Add portable user customizations ${CMDER_ROOT}/config/user-profile.sh or
|
# 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
|
# 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
|
# These customizations will follow Cmder if $CMDER_ROOT is copied
|
||||||
# to another machine.
|
# to another machine.
|
||||||
|
62
vendor/cmder_prompt_config.lua.default
vendored
Normal file
62
vendor/cmder_prompt_config.lua.default
vendored
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
-- 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 Cmder includes git, mercurial, and subversion status in the prompt.
|
||||||
|
-- default is true
|
||||||
|
prompt_includeVersionControl = true
|
||||||
|
|
||||||
|
-- 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 always ignore the cmder.status and cmder.cmdstatus svn config settings and run the svn prompt commands in the background.
|
||||||
|
-- default is false
|
||||||
|
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
||||||
|
prompt_overrideSvnStatusOptIn = false
|
||||||
|
|
||||||
|
-- Prompt Attributes
|
||||||
|
--
|
||||||
|
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
|
||||||
|
-- Effects: https://github.com/cmderdev/cmder/wiki/Customization#list-of-effects
|
||||||
|
--
|
||||||
|
-- Green: "\x1b[1;33;49m"
|
||||||
|
-- Yellow: "\x1b[1;32;49m"
|
||||||
|
-- Light Grey: "\x1b[1;30;49m"
|
||||||
|
|
||||||
|
-- Prompt Element Colors
|
||||||
|
uah_color = "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
|
||||||
|
cwd_color = "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
|
||||||
|
lamb_color = "\x1b[1;30;49m" -- Light Grey = Lambda Color
|
||||||
|
clean_color = "\x1b[37;1m"
|
||||||
|
dirty_color = "\x1b[33;3m" -- Yellow, Italic
|
||||||
|
conflict_color = "\x1b[31;1m" -- Red, Bold
|
||||||
|
unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color
|
24
vendor/git-prompt.sh
vendored
24
vendor/git-prompt.sh
vendored
@ -1,5 +1,5 @@
|
|||||||
function getGitStatusSetting() {
|
function getGitStatusSetting() {
|
||||||
gitStatusSetting=$(git --no-pager config -l 2>/dev/null)
|
gitStatusSetting=$(git --no-pager config -l 2>/dev/null)
|
||||||
|
|
||||||
if [[ -n ${gitStatusSetting} ]] && [[ ${gitStatusSetting} =~ cmder.status=false ]] || [[ ${gitStatusSetting} =~ cmder.shstatus=false ]]
|
if [[ -n ${gitStatusSetting} ]] && [[ ${gitStatusSetting} =~ cmder.status=false ]] || [[ ${gitStatusSetting} =~ cmder.shstatus=false ]]
|
||||||
then
|
then
|
||||||
@ -9,6 +9,21 @@ function getGitStatusSetting() {
|
|||||||
fi
|
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
|
if test -f /etc/profile.d/git-sdk.sh
|
||||||
then
|
then
|
||||||
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
|
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
|
||||||
@ -45,12 +60,15 @@ else
|
|||||||
. "$COMPLETION_PATH/git-prompt.sh"
|
. "$COMPLETION_PATH/git-prompt.sh"
|
||||||
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
PS1="$PS1"'\[\033[36m\]' # change color to cyan
|
||||||
PS1="$PS1"'`__git_ps1`' # bash function
|
PS1="$PS1"'`__git_ps1`' # bash function
|
||||||
|
else
|
||||||
|
PS1="$PS1"'\[\033[37;1m\]' # change color to white
|
||||||
|
PS1="$PS1"'`getSimpleGitBranch`'
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
PS1="$PS1"'\[\033[0m\]' # change color
|
PS1="$PS1"'\[\033[0m\]' # change color
|
||||||
PS1="$PS1"'\n' # new line
|
PS1="$PS1"'\n' # new line
|
||||||
PS1="$PS1"'λ ' # prompt: always λ
|
PS1="$PS1"'λ ' # prompt: always λ
|
||||||
fi
|
fi
|
||||||
|
|
||||||
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
|
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
|
293
vendor/init.bat
vendored
293
vendor/init.bat
vendored
@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
set CMDER_INIT_START=%time%
|
set CMDER_INIT_START=%time%
|
||||||
|
|
||||||
:: Init Script for cmd.exe
|
:: Init Script for cmd.exe shell
|
||||||
:: Created as part of cmder project
|
:: Created as part of cmder project
|
||||||
|
|
||||||
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
:: !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||||
@ -23,7 +23,7 @@ if not defined fast_init set fast_init=0
|
|||||||
:: Use /max_depth 1-5 to set max recurse depth for calls to `enhance_path_recursive`
|
:: 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
|
if not defined max_depth set max_depth=1
|
||||||
|
|
||||||
:: Add *nix tools to end of path. 0 turns off *nix tools, 2 adds *nix tools to the front of thr path.
|
:: Add *nix tools to end of path. 0 turns off *nix tools, 2 adds *nix tools to the front of the path.
|
||||||
if not defined nix_tools set nix_tools=1
|
if not defined nix_tools set nix_tools=1
|
||||||
|
|
||||||
set "CMDER_USER_FLAGS= "
|
set "CMDER_USER_FLAGS= "
|
||||||
@ -44,10 +44,11 @@ if not defined CMDER_ROOT (
|
|||||||
:: Remove trailing '\' from %CMDER_ROOT%
|
:: Remove trailing '\' from %CMDER_ROOT%
|
||||||
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
if "%CMDER_ROOT:~-1%" == "\" SET "CMDER_ROOT=%CMDER_ROOT:~0,-1%"
|
||||||
|
|
||||||
|
:: Include Cmder libraries
|
||||||
call "%cmder_root%\vendor\bin\cexec.cmd" /setpath
|
call "%cmder_root%\vendor\bin\cexec.cmd" /setpath
|
||||||
|
call "%cmder_root%\vendor\lib\lib_console"
|
||||||
call "%cmder_root%\vendor\lib\lib_base"
|
call "%cmder_root%\vendor\lib\lib_base"
|
||||||
call "%cmder_root%\vendor\lib\lib_path"
|
call "%cmder_root%\vendor\lib\lib_path"
|
||||||
call "%cmder_root%\vendor\lib\lib_console"
|
|
||||||
call "%cmder_root%\vendor\lib\lib_git"
|
call "%cmder_root%\vendor\lib\lib_git"
|
||||||
call "%cmder_root%\vendor\lib\lib_profile"
|
call "%cmder_root%\vendor\lib\lib_profile"
|
||||||
|
|
||||||
@ -58,9 +59,9 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
|||||||
set fast_init=1
|
set fast_init=1
|
||||||
) else if /i "%1" == "/t" (
|
) else if /i "%1" == "/t" (
|
||||||
set time_init=1
|
set time_init=1
|
||||||
) else if /i "%1"=="/v" (
|
) else if /i "%1" == "/v" (
|
||||||
set verbose_output=1
|
set verbose_output=1
|
||||||
) else if /i "%1"=="/d" (
|
) else if /i "%1" == "/d" (
|
||||||
set debug_output=1
|
set debug_output=1
|
||||||
) else if /i "%1" == "/max_depth" (
|
) else if /i "%1" == "/max_depth" (
|
||||||
if "%~2" geq "1" if "%~2" leq "5" (
|
if "%~2" geq "1" if "%~2" leq "5" (
|
||||||
@ -88,10 +89,10 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
|||||||
set "GIT_INSTALL_ROOT=%~2"
|
set "GIT_INSTALL_ROOT=%~2"
|
||||||
shift
|
shift
|
||||||
) else (
|
) else (
|
||||||
%print_error% "The Git install root folder "%~2", you specified does not exist!"
|
%print_error% "The Git install root folder "%~2" that you specified does not exist!"
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
) else if /i "%1"=="/nix_tools" (
|
) else if /i "%1" == "/nix_tools" (
|
||||||
if "%2" equ "0" (
|
if "%2" equ "0" (
|
||||||
REM Do not add *nix tools to path
|
REM Do not add *nix tools to path
|
||||||
set nix_tools=0
|
set nix_tools=0
|
||||||
@ -110,155 +111,185 @@ call "%cmder_root%\vendor\lib\lib_profile"
|
|||||||
set "HOME=%~2"
|
set "HOME=%~2"
|
||||||
shift
|
shift
|
||||||
) else (
|
) else (
|
||||||
%print_error% The home folder "%2", you specified does not exist!
|
%print_error% The home folder "%2" that you specified does not exist!
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
) else if /i "%1" == "/svn_ssh" (
|
) else if /i "%1" == "/svn_ssh" (
|
||||||
set SVN_SSH=%2
|
set SVN_SSH=%2
|
||||||
shift
|
shift
|
||||||
) else (
|
) else (
|
||||||
set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%"
|
set "CMDER_USER_FLAGS=%1 %CMDER_USER_FLAGS%"
|
||||||
)
|
)
|
||||||
shift
|
shift
|
||||||
goto var_loop
|
goto :var_loop
|
||||||
|
|
||||||
:start
|
:start
|
||||||
:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES
|
:: Enable console related methods if verbose/debug is turned on
|
||||||
|
if %debug_output% gtr 0 (set print_debug=%lib_console% debug_output)
|
||||||
|
if %verbose_output% gtr 0 (
|
||||||
|
set print_verbose=%lib_console% verbose_output
|
||||||
|
set print_warning=%lib_console% show_warning
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Sets CMDER_SHELL, CMDER_CLINK, CMDER_ALIASES variables
|
||||||
%lib_base% cmder_shell
|
%lib_base% cmder_shell
|
||||||
%print_debug% init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%"
|
%print_debug% init.bat "Env Var - CMDER_ROOT=%CMDER_ROOT%"
|
||||||
%print_debug% init.bat "Env Var - debug_output=%debug_output%"
|
%print_debug% init.bat "Env Var - debug_output=%debug_output%"
|
||||||
|
|
||||||
|
:: Set the Cmder directory paths
|
||||||
|
set CMDER_CONFIG_DIR=%CMDER_ROOT%\config
|
||||||
|
|
||||||
|
:: Check if we're using Cmder individual user profile
|
||||||
if defined CMDER_USER_CONFIG (
|
if defined CMDER_USER_CONFIG (
|
||||||
%print_debug% init.bat "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '%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"
|
||||||
|
set CMDER_CONFIG_DIR=%CMDER_USER_CONFIG%
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Pick right version of clink
|
if not "%CMDER_SHELL%" == "cmd" (
|
||||||
|
%print_warning% "Incompatible 'ComSpec/Shell' Detetected: %CMDER_SHELL%"
|
||||||
|
set CMDER_CLINK=0
|
||||||
|
set CMDER_ALIASES=0
|
||||||
|
)
|
||||||
|
|
||||||
|
:: Pick right version of Clink
|
||||||
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
|
||||||
set clink_architecture=x86
|
set clink_architecture=x86
|
||||||
set architecture_bits=32
|
set architecture_bits=32
|
||||||
) else (
|
) else if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
|
||||||
set clink_architecture=x64
|
set clink_architecture=x64
|
||||||
set architecture_bits=64
|
set architecture_bits=64
|
||||||
|
) else (
|
||||||
|
%print_warning% "Incompatible Processor Detetected: %PROCESSOR_ARCHITECTURE%"
|
||||||
|
set CMDER_CLINK=0
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%CMDER_CLINK%" == "1" (
|
if "%CMDER_CLINK%" == "1" (
|
||||||
%print_verbose% "Injecting Clink!"
|
%print_verbose% "Injecting Clink!"
|
||||||
|
|
||||||
:: Run clink
|
:: Check if Clink is not present
|
||||||
if defined CMDER_USER_CONFIG (
|
if not exist "%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" (
|
||||||
if not exist "%CMDER_USER_CONFIG%\settings" if not exist "%CMDER_USER_CONFIG%\clink_settings" (
|
%print_error% "Clink executable is not present in 'vendor\clink\clink_%clink_architecture%.exe'"
|
||||||
echo Generating clink initial settings in "%CMDER_USER_CONFIG%\clink_settings"
|
|
||||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_USER_CONFIG%\clink_settings"
|
|
||||||
echo Additional *.lua files in "%CMDER_USER_CONFIG%" are loaded on startup.
|
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Cleanup lagacy Clink Settings file
|
:: Run Clink
|
||||||
if exist "%CMDER_USER_CONFIG%\settings" if exist "%CMDER_USER_CONFIG%\clink_settings" (
|
if not exist "%CMDER_CONFIG_DIR%\settings" if not exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||||
del "%CMDER_USER_CONFIG%\settings"
|
echo Generating Clink initial settings in "%CMDER_CONFIG_DIR%\clink_settings"
|
||||||
|
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_CONFIG_DIR%\clink_settings"
|
||||||
|
echo Additional *.lua files in "%CMDER_CONFIG_DIR%" are loaded on startup.
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Cleanup legacy CLink history file
|
if not exist "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" (
|
||||||
if exist "%CMDER_USER_CONFIG%\.history" if exist "%CMDER_USER_CONFIG%\clink_history" (
|
echo Creating Cmder prompt config file: "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||||
del "%CMDER_USER_CONFIG%\.history"
|
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||||
)
|
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_USER_CONFIG%" --scripts "%CMDER_ROOT%\vendor"
|
|
||||||
) else (
|
|
||||||
if not exist "%CMDER_ROOT%\config\settings" if not exist "%CMDER_ROOT%\config\clink_settings" (
|
|
||||||
echo Generating clink initial settings in "%CMDER_ROOT%\config\clink_settings"
|
|
||||||
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_ROOT%\config\clink_settings"
|
|
||||||
echo Additional *.lua files in "%CMDER_ROOT%\config" are loaded on startup.
|
|
||||||
)
|
|
||||||
|
|
||||||
REM Cleanup lagacy Clink Settings file
|
|
||||||
if exist "%CMDER_ROOT%\config\settings" if exist "%CMDER_ROOT%\config\clink_settings" (
|
|
||||||
del "%CMDER_ROOT%\config\settings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Cleanup legacy Clink history file
|
:: Cleanup lagacy Clink Settings file
|
||||||
if exist "%CMDER_ROOT%\config\.history" if exist "%CMDER_ROOT%\config\clink_history" (
|
if exist "%CMDER_CONFIG_DIR%\settings" if exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||||
del "%CMDER_ROOT%\config\.history"
|
del "%CMDER_CONFIG_DIR%\settings"
|
||||||
)
|
)
|
||||||
|
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --scripts "%CMDER_ROOT%\vendor"
|
:: Cleanup legacy Clink history file
|
||||||
)
|
if exist "%CMDER_CONFIG_DIR%\.history" if exist "%CMDER_CONFIG_DIR%\clink_history" (
|
||||||
|
del "%CMDER_CONFIG_DIR%\.history"
|
||||||
|
)
|
||||||
|
|
||||||
|
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
||||||
|
|
||||||
|
if errorlevel 1 (
|
||||||
|
%print_error% "Clink initilization has failed with error code: %errorlevel%"
|
||||||
|
)
|
||||||
) else (
|
) else (
|
||||||
%print_verbose% "WARNING: Incompatible 'ComSpec/Shell' Detetected Skipping Clink Injection!"
|
%print_warning% "Skipping Clink Injection!"
|
||||||
|
|
||||||
|
for /f "tokens=2 delims=:." %%x in ('chcp') do set cp=%%x
|
||||||
|
chcp 65001>nul
|
||||||
|
|
||||||
|
:: Revert back to plain cmd.exe prompt without clink
|
||||||
|
prompt $E[1;32;49m$P$S$_$E[1;30;49mλ$S$E[0m
|
||||||
|
|
||||||
|
chcp %cp%>nul
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%CMDER_CONFIGURED%" GTR "1" (
|
if "%CMDER_CONFIGURED%" GTR "1" (
|
||||||
%print_verbose% "Cmder is already configured, skipping Cmder Init!"
|
%print_verbose% "Cmder is already configured, skipping Cmder Init!"
|
||||||
|
|
||||||
goto USER_ALIASES
|
goto :USER_ALIASES
|
||||||
) else if "%CMDER_CONFIGURED%" == "1" (
|
) else if "%CMDER_CONFIGURED%" == "1" (
|
||||||
%print_verbose% "Cmder is already configured, skipping to Cmder User Init!"
|
%print_verbose% "Cmder is already configured, skipping to Cmder User Init!"
|
||||||
|
|
||||||
goto USER_CONFIG_START
|
goto :USER_CONFIG_START
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Prepare for git-for-windows
|
:: Prepare for git-for-windows
|
||||||
|
|
||||||
:: I do not even know, copypasted from their .bat
|
:: Detect which git.exe version to use
|
||||||
set PLINK_PROTOCOL=ssh
|
|
||||||
if not defined TERM set TERM=cygwin
|
|
||||||
|
|
||||||
:: The idea:
|
|
||||||
:: * if the users points as to a specific git, use that
|
:: * if the users points as to a specific git, use that
|
||||||
:: * test if a git is in path and if yes, use that
|
:: * test if a git is in path and if yes, use that
|
||||||
:: * last, use our vendored git
|
:: * last, use our vendored git
|
||||||
:: also check that we have a recent enough version of git by examining the version string
|
:: also check that we have a recent enough version of git by examining the version string
|
||||||
if defined GIT_INSTALL_ROOT (
|
if defined GIT_INSTALL_ROOT (
|
||||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
|
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" goto :SPECIFIED_GIT
|
||||||
|
set GIT_INSTALL_ROOT=
|
||||||
) else if "%fast_init%" == "1" (
|
) else if "%fast_init%" == "1" (
|
||||||
if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" (
|
if exist "%CMDER_ROOT%\vendor\git-for-windows\cmd\git.exe" (
|
||||||
%print_debug% "Skipping Git Auto-Detect!"
|
%print_debug% init.bat "Skipping Git Auto-Detect!"
|
||||||
goto :VENDORED_GIT
|
goto :VENDORED_GIT
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
%print_debug% init.bat "Looking for Git install root..."
|
%print_debug% init.bat "Looking for Git install root..."
|
||||||
|
|
||||||
:: get the version information for vendored git binary
|
:: Get the version information for vendored git binary
|
||||||
%lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" 2>nul
|
%lib_git% read_version VENDORED "%CMDER_ROOT%\vendor\git-for-windows\cmd" 2>nul
|
||||||
%lib_git% validate_version VENDORED %GIT_VERSION_VENDORED%
|
%lib_git% validate_version VENDORED %GIT_VERSION_VENDORED%
|
||||||
|
|
||||||
:: check if git is in path...
|
:: Check if git is in path
|
||||||
for /F "delims=" %%F in ('where git.exe 2^>nul') do (
|
for /F "delims=" %%F in ('where git.exe 2^>nul') do call :check_git "%%~fF"
|
||||||
:: get the absolute path to the user provided git binary
|
|
||||||
%lib_git% is_git_shim "%%~dpF"
|
|
||||||
%lib_git% get_user_git_version
|
|
||||||
%lib_git% compare_git_versions
|
|
||||||
|
|
||||||
if defined GIT_INSTALL_ROOT (
|
if defined GIT_INSTALL_ROOT (
|
||||||
goto :FOUND_GIT
|
goto :FOUND_GIT
|
||||||
)
|
) else (
|
||||||
|
goto :VENDORED_GIT
|
||||||
)
|
)
|
||||||
|
|
||||||
:: our last hope: our own git...
|
:check_git
|
||||||
|
set full_path="%~f1"
|
||||||
|
if not defined GIT_INSTALL_ROOT (
|
||||||
|
if not [\%full_path:\cmd\git.exe=:%]==[\%full_path%] (
|
||||||
|
:: Get the absolute path to the user provided git binary
|
||||||
|
%lib_git% is_git_shim "%~dp1"
|
||||||
|
%lib_git% get_user_git_version
|
||||||
|
%lib_git% compare_git_versions
|
||||||
|
)
|
||||||
|
)
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:: Our last hope: use vendored git
|
||||||
:VENDORED_GIT
|
:VENDORED_GIT
|
||||||
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
if exist "%CMDER_ROOT%\vendor\git-for-windows" (
|
||||||
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
set "GIT_INSTALL_ROOT=%CMDER_ROOT%\vendor\git-for-windows"
|
||||||
%print_debug% "Using vendored Git '%GIT_VERSION_VENDORED%'..."
|
%print_debug% init.bat "Using vendored Git '%GIT_VERSION_VENDORED%'..."
|
||||||
goto :CONFIGURE_GIT
|
goto :CONFIGURE_GIT
|
||||||
) else (
|
) else (
|
||||||
goto :NO_GIT
|
goto :NO_GIT
|
||||||
)
|
)
|
||||||
|
|
||||||
:SPECIFIED_GIT
|
:SPECIFIED_GIT
|
||||||
%print_debug% "Using /GIT_INSTALL_ROOT..."
|
%print_debug% init.bat "Using /GIT_INSTALL_ROOT..."
|
||||||
goto :CONFIGURE_GIT
|
goto :CONFIGURE_GIT
|
||||||
|
|
||||||
:FOUND_GIT
|
:FOUND_GIT
|
||||||
%print_debug% "Using found Git '%GIT_VERSION_USER%' from '%GIT_INSTALL_ROOT%..."
|
%print_debug% init.bat "Using found Git '%GIT_VERSION_USER%' from '%GIT_INSTALL_ROOT%..."
|
||||||
goto :CONFIGURE_GIT
|
goto :CONFIGURE_GIT
|
||||||
|
|
||||||
:CONFIGURE_GIT
|
:CONFIGURE_GIT
|
||||||
%print_debug% "Using Git from '%GIT_INSTALL_ROOT%..."
|
%print_debug% init.bat "Using Git from '%GIT_INSTALL_ROOT%..."
|
||||||
:: Add git to the path
|
:: Add git to the path
|
||||||
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" ""
|
if exist "%GIT_INSTALL_ROOT%\cmd\git.exe" %lib_path% enhance_path "%GIT_INSTALL_ROOT%\cmd" ""
|
||||||
|
|
||||||
:: Add the unix commands at the end to not shadow windows commands like more
|
:: Add the unix commands at the end to not shadow windows commands like `more` and `find`
|
||||||
if %nix_tools% equ 1 (
|
if %nix_tools% equ 1 (
|
||||||
%print_verbose% "Preferring Windows commands"
|
%print_verbose% "Preferring Windows commands"
|
||||||
set "path_position=append"
|
set "path_position=append"
|
||||||
@ -278,24 +309,26 @@ if %nix_tools% geq 1 (
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: define SVN_SSH so we can use git svn with ssh svn repositories
|
:: Plink (PuTTY Link) is a command-line connection tool similar to ssh, setting its protocol to ssh
|
||||||
|
set PLINK_PROTOCOL=ssh
|
||||||
|
|
||||||
|
:: Define SVN_SSH so we can use git svn with ssh svn repositories
|
||||||
if not defined SVN_SSH set "SVN_SSH=%GIT_INSTALL_ROOT:\=\\%\\bin\\ssh.exe"
|
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.
|
:: 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 if exist "%GIT_INSTALL_ROOT%\usr\bin\locale.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\locale.exe"
|
||||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where locale.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" )
|
if not defined git_locale for /F "tokens=* delims=" %%F in ('where locale.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" )
|
||||||
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\env.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\env.exe" /usr/bin/locale
|
if not defined git_locale if exist "%GIT_INSTALL_ROOT%\usr\bin\env.exe" set git_locale="%GIT_INSTALL_ROOT%\usr\bin\env.exe" /usr/bin/locale
|
||||||
if not defined git_locale for /F "tokens=* delims=" %%F in ('where env.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" /usr/bin/locale )
|
if not defined git_locale for /F "tokens=* delims=" %%F in ('where env.exe 2^>nul') do ( if not defined git_locale set git_locale="%%F" /usr/bin/locale )
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if defined git_locale (
|
if defined git_locale (
|
||||||
|
REM %print_debug% init.bat "Env Var - git_locale=!git_locale!"
|
||||||
REM %print_debug% init.bat "Env Var - git_locale=!git_locale!"
|
if not defined LANG (
|
||||||
if not defined LANG (
|
for /F "delims=" %%F in ('!git_locale! -uU 2') do (
|
||||||
for /F "delims=" %%F in ('!git_locale! -uU 2') do (
|
set "LANG=%%F"
|
||||||
set "LANG=%%F"
|
)
|
||||||
)
|
)
|
||||||
)
|
|
||||||
)
|
)
|
||||||
endlocal && set LANG=%LANG%
|
endlocal && set LANG=%LANG%
|
||||||
|
|
||||||
@ -313,7 +346,7 @@ endlocal
|
|||||||
:USER_CONFIG_START
|
:USER_CONFIG_START
|
||||||
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
%lib_path% enhance_path_recursive "%CMDER_ROOT%\bin" 0 %max_depth%
|
||||||
if defined CMDER_USER_BIN (
|
if defined CMDER_USER_BIN (
|
||||||
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
%lib_path% enhance_path_recursive "%CMDER_USER_BIN%" 0 %max_depth%
|
||||||
)
|
)
|
||||||
%lib_path% enhance_path "%CMDER_ROOT%" append
|
%lib_path% enhance_path "%CMDER_ROOT%" append
|
||||||
|
|
||||||
@ -321,7 +354,7 @@ if defined CMDER_USER_BIN (
|
|||||||
:: to run them at startup.
|
:: to run them at startup.
|
||||||
%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d"
|
%lib_profile% run_profile_d "%CMDER_ROOT%\config\profile.d"
|
||||||
if defined CMDER_USER_CONFIG (
|
if defined CMDER_USER_CONFIG (
|
||||||
%lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
%lib_profile% run_profile_d "%CMDER_USER_CONFIG%\profile.d"
|
||||||
)
|
)
|
||||||
|
|
||||||
:USER_ALIASES
|
:USER_ALIASES
|
||||||
@ -332,51 +365,47 @@ if defined CMDER_USER_CONFIG (
|
|||||||
:: must also be self executing, see '.\user_aliases.cmd.default',
|
:: must also be self executing, see '.\user_aliases.cmd.default',
|
||||||
:: and be in profile.d folder.
|
:: and be in profile.d folder.
|
||||||
if not defined user_aliases (
|
if not defined user_aliases (
|
||||||
if defined CMDER_USER_CONFIG (
|
set "user_aliases=%CMDER_CONFIG_DIR%\user_aliases.cmd"
|
||||||
set "user_aliases=%CMDER_USER_CONFIG%\user_aliases.cmd"
|
|
||||||
) else (
|
|
||||||
set "user_aliases=%CMDER_ROOT%\config\user_aliases.cmd"
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if "%CMDER_ALIASES%" == "1" (
|
if "%CMDER_ALIASES%" == "1" (
|
||||||
REM The aliases environment variable is used by alias.bat to id
|
REM The aliases environment variable is used by alias.bat to id
|
||||||
REM the default file to store new aliases in.
|
REM the default file to store new aliases in.
|
||||||
if not defined aliases (
|
if not defined aliases (
|
||||||
set "aliases=%user_aliases%"
|
set "aliases=%user_aliases%"
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Make sure we have a self-extracting user_aliases.cmd file
|
REM Make sure we have a self-extracting user_aliases.cmd file
|
||||||
if not exist "%user_aliases%" (
|
if not exist "%user_aliases%" (
|
||||||
echo Creating initial user_aliases store in "%user_aliases%"...
|
echo Creating initial user_aliases store in "%user_aliases%"...
|
||||||
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
copy "%CMDER_ROOT%\vendor\user_aliases.cmd.default" "%user_aliases%"
|
||||||
) else (
|
) else (
|
||||||
%lib_base% update_legacy_aliases
|
%lib_base% update_legacy_aliases
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd'
|
:: Update old 'user_aliases' to new self executing 'user_aliases.cmd'
|
||||||
if exist "%CMDER_ROOT%\config\aliases" (
|
if exist "%CMDER_ROOT%\config\aliases" (
|
||||||
echo Updating old "%CMDER_ROOT%\config\aliases" to new format...
|
echo Updating old "%CMDER_ROOT%\config\aliases" to new format...
|
||||||
type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%"
|
type "%CMDER_ROOT%\config\aliases" >> "%user_aliases%"
|
||||||
del "%CMDER_ROOT%\config\aliases"
|
del "%CMDER_ROOT%\config\aliases"
|
||||||
) else if exist "%user_aliases%.old_format" (
|
) else if exist "%user_aliases%.old_format" (
|
||||||
echo Updating old "%user_aliases%" to new format...
|
echo Updating old "%user_aliases%" to new format...
|
||||||
type "%user_aliases%.old_format" >> "%user_aliases%"
|
type "%user_aliases%.old_format" >> "%user_aliases%"
|
||||||
del "%user_aliases%.old_format"
|
del "%user_aliases%.old_format"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
:: Add aliases to the environment
|
:: Add aliases to the environment
|
||||||
type "%user_aliases%" | findstr /b /l /i "history=cat " >nul
|
type "%user_aliases%" | findstr /b /l /i "history=cat " >nul
|
||||||
if "%ERRORLEVEL%" == "0" (
|
if "%ERRORLEVEL%" == "0" (
|
||||||
echo Migrating alias 'history' to new Clink 1.x.x...
|
echo Migrating alias 'history' to new Clink 1.x.x...
|
||||||
call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history
|
call "%CMDER_ROOT%\vendor\bin\alias.cmd" /d history
|
||||||
echo Restart the session to activate changes!
|
echo Restart the session to activate changes!
|
||||||
)
|
)
|
||||||
|
|
||||||
call "%user_aliases%"
|
call "%user_aliases%"
|
||||||
|
|
||||||
if "%CMDER_CONFIGURED%" gtr "1" goto CMDER_CONFIGURED
|
if "%CMDER_CONFIGURED%" gtr "1" goto :CMDER_CONFIGURED
|
||||||
|
|
||||||
:: See vendor\git-for-windows\README.portable for why we do this
|
:: See vendor\git-for-windows\README.portable for why we do this
|
||||||
:: Basically we need to execute this post-install.bat because we are
|
:: Basically we need to execute this post-install.bat because we are
|
||||||
@ -400,12 +429,12 @@ if exist "%CMDER_ROOT%\config\user_profile.cmd" (
|
|||||||
)
|
)
|
||||||
|
|
||||||
if defined CMDER_USER_CONFIG (
|
if defined CMDER_USER_CONFIG (
|
||||||
set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd"
|
set "initialConfig=%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||||
if exist "%CMDER_USER_CONFIG%\user_profile.cmd" (
|
if exist "%CMDER_USER_CONFIG%\user_profile.cmd" (
|
||||||
REM Create this file and place your own command in there
|
REM Create this file and place your own command in there
|
||||||
%print_debug% init.bat "Calling - %CMDER_USER_CONFIG%\user_profile.cmd"
|
%print_debug% init.bat "Calling - %CMDER_USER_CONFIG%\user_profile.cmd"
|
||||||
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
call "%CMDER_USER_CONFIG%\user_profile.cmd"
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%initialConfig%" (
|
if not exist "%initialConfig%" (
|
||||||
@ -414,16 +443,16 @@ if not exist "%initialConfig%" (
|
|||||||
)
|
)
|
||||||
|
|
||||||
if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" (
|
if "%CMDER_ALIASES%" == "1" if exist "%CMDER_ROOT%\bin\alias.bat" if exist "%CMDER_ROOT%\vendor\bin\alias.cmd" (
|
||||||
echo Cmder's 'alias' command has been moved into "%CMDER_ROOT%\vendor\bin\alias.cmd"
|
echo Cmder's 'alias' command has been moved into "%CMDER_ROOT%\vendor\bin\alias.cmd"
|
||||||
echo to get rid of this message either:
|
echo to get rid of this message either:
|
||||||
echo.
|
echo.
|
||||||
echo Delete the file "%CMDER_ROOT%\bin\alias.bat"
|
echo Delete the file "%CMDER_ROOT%\bin\alias.bat"
|
||||||
echo.
|
echo.
|
||||||
echo or
|
echo or
|
||||||
echo.
|
echo.
|
||||||
echo If you have customized it and want to continue using it instead of the included version
|
echo If you have customized it and want to continue using it instead of the included version
|
||||||
echo * Rename "%CMDER_ROOT%\bin\alias.bat" to "%CMDER_ROOT%\bin\alias.cmd".
|
echo * Rename "%CMDER_ROOT%\bin\alias.bat" to "%CMDER_ROOT%\bin\alias.cmd".
|
||||||
echo * Search for 'user-aliases' and replace it with 'user_aliases'.
|
echo * Search for 'user-aliases' and replace it with 'user_aliases'.
|
||||||
)
|
)
|
||||||
|
|
||||||
set initialConfig=
|
set initialConfig=
|
||||||
@ -434,6 +463,6 @@ if not defined CMDER_CONFIGURED set CMDER_CONFIGURED=1
|
|||||||
set CMDER_INIT_END=%time%
|
set CMDER_INIT_END=%time%
|
||||||
|
|
||||||
if %time_init% gtr 0 (
|
if %time_init% gtr 0 (
|
||||||
"%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
"%cmder_root%\vendor\bin\timer.cmd" "%CMDER_INIT_START%" "%CMDER_INIT_END%"
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
13
vendor/lib/lib_base.cmd
vendored
13
vendor/lib/lib_base.cmd
vendored
@ -61,22 +61,17 @@ exit /b
|
|||||||
::: file <in> full path to file containing lib_routines to display
|
::: file <in> full path to file containing lib_routines to display
|
||||||
:::.
|
:::.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
echo %comspec% | %WINDIR%\System32\find /i "\cmd.exe" > nul && set "CMDER_SHELL=cmd"
|
call :detect_comspec %ComSpec%
|
||||||
echo %comspec% | %WINDIR%\System32\find /i "\tcc.exe" > nul && set "CMDER_SHELL=tcc"
|
exit /b
|
||||||
echo %comspec% | %WINDIR%\System32\find /i "\tccle" > nul && set "CMDER_SHELL=tccle"
|
|
||||||
|
|
||||||
|
:detect_comspec
|
||||||
|
set CMDER_SHELL=%~n1
|
||||||
if not defined CMDER_CLINK (
|
if not defined CMDER_CLINK (
|
||||||
set CMDER_CLINK=1
|
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 (
|
if not defined CMDER_ALIASES (
|
||||||
set CMDER_ALIASES=1
|
set CMDER_ALIASES=1
|
||||||
if "%CMDER_SHELL%" equ "tcc" set CMDER_ALIASES=0
|
|
||||||
if "%CMDER_SHELL%" equ "tccle" set CMDER_ALIASES=0
|
|
||||||
)
|
)
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:update_legacy_aliases
|
:update_legacy_aliases
|
||||||
|
27
vendor/lib/lib_console.cmd
vendored
27
vendor/lib/lib_console.cmd
vendored
@ -2,13 +2,15 @@
|
|||||||
|
|
||||||
call "%~dp0lib_base.cmd"
|
call "%~dp0lib_base.cmd"
|
||||||
set lib_console=call "%~dp0lib_console.cmd"
|
set lib_console=call "%~dp0lib_console.cmd"
|
||||||
|
set ESC=
|
||||||
|
|
||||||
:: Much faster than using "%lib_console% debug_output ..." etc.
|
:: Much faster than using "%lib_console% debug_output ..." etc.
|
||||||
set print_debug=if %debug_output% gtr 0 %lib_console% debug_output
|
set print_debug=if %debug_output% gtr 0 %lib_console% debug_output
|
||||||
set print_verbose=if %verbose_output% gtr 0 %lib_console% verbose_output
|
set print_verbose=if %verbose_output% gtr 0 %lib_console% verbose_output
|
||||||
|
set print_warning=if %verbose_output% gtr 0 %lib_console% show_warning
|
||||||
set print_error=%lib_console% show_error
|
set print_error=%lib_console% show_error
|
||||||
|
|
||||||
if "%fast_init%" == "1" exit /b
|
if %fast_init% gtr %verbose_output% if %fast_init% gtr %debug_output% exit /b
|
||||||
|
|
||||||
if "%~1" == "/h" (
|
if "%~1" == "/h" (
|
||||||
%lib_base% help "%~0"
|
%lib_base% help "%~0"
|
||||||
@ -80,5 +82,26 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
echo ERROR: %~1
|
echo %ESC%[91;1mERROR:%ESC%[0m %~1
|
||||||
|
exit /b
|
||||||
|
|
||||||
|
:show_warning
|
||||||
|
:::===============================================================================
|
||||||
|
:::show_warning - Output a warning message to the console.
|
||||||
|
:::.
|
||||||
|
:::include:
|
||||||
|
:::.
|
||||||
|
::: call "$0"
|
||||||
|
:::.
|
||||||
|
:::usage:
|
||||||
|
:::.
|
||||||
|
::: %lib_console% show_warning "[message]"
|
||||||
|
:::.
|
||||||
|
:::required:
|
||||||
|
:::.
|
||||||
|
::: [message] <in> Message text to display.
|
||||||
|
:::.
|
||||||
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
echo %ESC%[93;1mWARNING:%ESC%[0m %~1
|
||||||
exit /b
|
exit /b
|
||||||
|
30
vendor/lib/lib_git.cmd
vendored
30
vendor/lib/lib_git.cmd
vendored
@ -14,7 +14,7 @@ exit /b
|
|||||||
|
|
||||||
:read_version
|
:read_version
|
||||||
:::===============================================================================
|
:::===============================================================================
|
||||||
:::read_version - Get the git.exe verion
|
:::read_version - Get the git.exe version
|
||||||
:::.
|
:::.
|
||||||
:::include:
|
:::include:
|
||||||
:::.
|
:::.
|
||||||
@ -54,7 +54,7 @@ exit /b
|
|||||||
if /i "%%A %%B" == "git version" (
|
if /i "%%A %%B" == "git version" (
|
||||||
set "GIT_VERSION=%%C"
|
set "GIT_VERSION=%%C"
|
||||||
) else (
|
) else (
|
||||||
echo "'git --version' returned an inproper version string!"
|
echo "'git --version' returned an improper version string!"
|
||||||
pause
|
pause
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
@ -101,9 +101,9 @@ exit /b
|
|||||||
|
|
||||||
REM endlocal & set "%~1_MAJOR=!%~1_MAJOR!" & set "%~1_MINOR=!%~1_MINOR!" & set "%~1_PATCH=!%~1_PATCH!" & set "%~1_BUILD=!%~1_BUILD!"
|
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" (
|
if "%~1" == "VENDORED" (
|
||||||
endlocal & set "%~1_MAJOR=%VENDORED_MAJOR%" & set "%~1_MINOR=%VENDORED_MINOR%" & set "%~1_PATCH=%VENDORED_PATCH%" & set "%~1_BUILD=%VENDORED_BUILD%"
|
endlocal & set "%~1_MAJOR=%VENDORED_MAJOR%" & set "%~1_MINOR=%VENDORED_MINOR%" & set "%~1_PATCH=%VENDORED_PATCH%" & set "%~1_BUILD=%VENDORED_BUILD%"
|
||||||
) else (
|
) else (
|
||||||
endlocal & set "%~1_MAJOR=%USER_MAJOR%" & set "%~1_MINOR=%USER_MINOR%" & set "%~1_PATCH=%USER_PATCH%" & set "%~1_BUILD=%USER_BUILD%"
|
endlocal & set "%~1_MAJOR=%USER_MAJOR%" & set "%~1_MINOR=%USER_MINOR%" & set "%~1_PATCH=%USER_PATCH%" & set "%~1_BUILD=%USER_BUILD%"
|
||||||
)
|
)
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
@ -136,9 +136,9 @@ exit /b
|
|||||||
:: ... and maybe display it, for debugging purposes.
|
:: ... and maybe display it, for debugging purposes.
|
||||||
REM %print_debug% :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!"
|
REM %print_debug% :validate_version "Found Git Version for %~1: !%~1_MAJOR!.!%~1_MINOR!.!%~1_PATCH!.!%~1_BUILD!"
|
||||||
if "%~1" == "VENDORED" (
|
if "%~1" == "VENDORED" (
|
||||||
%print_debug% :validate_version "Found Git Version for %~1: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%"
|
%print_debug% :validate_version "Found Git Version for %~1: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%"
|
||||||
) else (
|
) else (
|
||||||
%print_debug% :validate_version "Found Git Version for %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%"
|
%print_debug% :validate_version "Found Git Version for %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%"
|
||||||
)
|
)
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
@ -163,9 +163,9 @@ exit /b
|
|||||||
:: checks all major, minor, patch and build variables for the given arguments.
|
:: checks all major, minor, patch and build variables for the given arguments.
|
||||||
:: whichever binary that has the most recent version will be used based on the return code.
|
:: whichever binary that has the most recent version will be used based on the return code.
|
||||||
|
|
||||||
%print_debug% Comparing:
|
%print_debug% ":compare_versions" "Comparing:"
|
||||||
%print_debug% %~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%
|
%print_debug% ":compare_versions" "%~1: %USER_MAJOR%.%USER_MINOR%.%USER_PATCH%.%USER_BUILD%"
|
||||||
%print_debug% %~2: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%
|
%print_debug% ":compare_versions" "%~2: %VENDORED_MAJOR%.%VENDORED_MINOR%.%VENDORED_PATCH%.%VENDORED_BUILD%"
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if !%~1_MAJOR! GTR !%~2_MAJOR! (endlocal & exit /b 1)
|
if !%~1_MAJOR! GTR !%~2_MAJOR! (endlocal & exit /b 1)
|
||||||
@ -233,23 +233,26 @@ exit /b
|
|||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if ERRORLEVEL 0 (
|
if ERRORLEVEL 0 (
|
||||||
:: compare the user git version against the vendored version
|
:: compare the user git version against the vendored version
|
||||||
!lib_git! compare_versions USER VENDORED
|
%lib_git% compare_versions USER VENDORED
|
||||||
|
set result=!ERRORLEVEL!
|
||||||
|
%print_debug% ":compare_git_versions" "campare versions_result: !result!"
|
||||||
|
|
||||||
:: use the user provided git if its version is greater than, or equal to the vendored git
|
:: use the user provided git if its version is greater than, or equal to the vendored git
|
||||||
if ERRORLEVEL 0 (
|
if !result! geq 0 (
|
||||||
if exist "!test_dir:~0,-4!\cmd\git.exe" (
|
if exist "!test_dir:~0,-4!\cmd\git.exe" (
|
||||||
set "GIT_INSTALL_ROOT=!test_dir:~0,-4!"
|
set "GIT_INSTALL_ROOT=!test_dir:~0,-4!"
|
||||||
) else (
|
) else (
|
||||||
set "GIT_INSTALL_ROOT=!test_dir!"
|
set "GIT_INSTALL_ROOT=!test_dir!"
|
||||||
)
|
)
|
||||||
) else (
|
) else (
|
||||||
%print_verbose% "Found old !GIT_VERSION_USER! in !test_dir!, but not using..."
|
%print_debug% ":compare_git_versions" "Found old !GIT_VERSION_USER! in !test_dir!, but not using..."
|
||||||
)
|
)
|
||||||
) else (
|
) else (
|
||||||
:: compare the user git version against the vendored version
|
:: compare the user git version against the vendored version
|
||||||
:: if the user provided git executable is not found
|
:: if the user provided git executable is not found
|
||||||
IF ERRORLEVEL -255 IF NOT ERRORLEVEL -254 (
|
IF ERRORLEVEL -255 IF NOT ERRORLEVEL -254 (
|
||||||
%print_verbose% "No git at "!git_executable!" found."
|
:: if not exist "%git_executable%" (
|
||||||
|
%print_debug% ":compare_git_versions" "No git at "%git_executable%" found."
|
||||||
set test_dir=
|
set test_dir=
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
@ -272,6 +275,7 @@ exit /b
|
|||||||
:get_user_git_version
|
:get_user_git_version
|
||||||
:: get the version information for the user provided git binary
|
:: get the version information for the user provided git binary
|
||||||
%lib_git% read_version USER "%test_dir%" 2>nul
|
%lib_git% read_version USER "%test_dir%" 2>nul
|
||||||
|
%print_debug% ":get_user_git_version" "get_user_git_version GIT_VERSION_USER: %GIT_VERSION_USER%"
|
||||||
%lib_git% validate_version USER %GIT_VERSION_USER%
|
%lib_git% validate_version USER %GIT_VERSION_USER%
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
64
vendor/lib/lib_path.cmd
vendored
64
vendor/lib/lib_path.cmd
vendored
@ -60,41 +60,41 @@ exit /b
|
|||||||
)
|
)
|
||||||
|
|
||||||
if "%fast_init%" == "1" (
|
if "%fast_init%" == "1" (
|
||||||
if "%position%" == "append" (
|
if "%position%" == "append" (
|
||||||
set "PATH=%PATH%;%add_to_path%"
|
set "PATH=%PATH%;%add_to_path%"
|
||||||
) else (
|
) else (
|
||||||
set "PATH=%add_to_path%;%PATH%"
|
set "PATH=%add_to_path%;%PATH%"
|
||||||
)
|
)
|
||||||
goto :end_enhance_path
|
goto :end_enhance_path
|
||||||
) else if "add_to_path" equ "" (
|
) else if "add_to_path" equ "" (
|
||||||
goto :end_enhance_path
|
goto :end_enhance_path
|
||||||
)
|
)
|
||||||
|
|
||||||
set found=0
|
set found=0
|
||||||
set "find_query=%add_to_path%"
|
set "find_query=%add_to_path%"
|
||||||
set "find_query=%find_query:\=\\%"
|
set "find_query=%find_query:\=\\%"
|
||||||
set "find_query=%find_query: =\ %"
|
set "find_query=%find_query: =\ %"
|
||||||
set OLD_PATH=%PATH%
|
set "OLD_PATH=%PATH%"
|
||||||
|
|
||||||
setlocal enabledelayedexpansion
|
setlocal enabledelayedexpansion
|
||||||
if "!found!" == "0" (
|
if "!found!" == "0" (
|
||||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!;"
|
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!;"
|
||||||
call :set_found
|
call :set_found
|
||||||
)
|
)
|
||||||
%print_debug% :enhance_path "Env Var INSIDE PATH !find_query! - found=!found!"
|
%print_debug% :enhance_path "Env Var INSIDE PATH !find_query! - found=!found!"
|
||||||
|
|
||||||
if /i "!position!" == "append" (
|
if /i "!position!" == "append" (
|
||||||
if "!found!" == "0" (
|
if "!found!" == "0" (
|
||||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!\"$"
|
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:";!find_query!\"$"
|
||||||
call :set_found
|
call :set_found
|
||||||
)
|
)
|
||||||
%print_debug% :enhance_path "Env Var END PATH !find_query! - found=!found!"
|
%print_debug% :enhance_path "Env Var END PATH !find_query! - found=!found!"
|
||||||
) else (
|
) else (
|
||||||
if "!found!" == "0" (
|
if "!found!" == "0" (
|
||||||
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:"^\"!find_query!;"
|
echo "!path!"|!WINDIR!\System32\findstr >nul /I /R /C:"^\"!find_query!;"
|
||||||
call :set_found
|
call :set_found
|
||||||
)
|
)
|
||||||
%print_debug% :enhance_path "Env Var BEGIN PATH !find_query! - found=!found!"
|
%print_debug% :enhance_path "Env Var BEGIN PATH !find_query! - found=!found!"
|
||||||
)
|
)
|
||||||
endlocal & set found=%found%
|
endlocal & set found=%found%
|
||||||
|
|
||||||
@ -121,24 +121,24 @@ exit /b
|
|||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:toolong
|
:toolong
|
||||||
echo %OLD_PATH%>tempfileA
|
echo "%OLD_PATH%">"%temp%\cmder_lib_pathA"
|
||||||
echo %PATH%>tempfileB
|
echo "%PATH%">"%temp%\cmder_lib_pathB"
|
||||||
fc /b tempfileA tempfileB 2>nul 1>nul
|
fc /b "%temp%\cmder_lib_pathA" "%temp%\cmder_lib_pathB" 2>nul 1>nul
|
||||||
if errorlevel 1 ( del tempfileA & del tempfileB & goto :changed )
|
if errorlevel 1 ( del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB" & goto :changed )
|
||||||
del tempfileA & del tempfileB
|
del "%temp%\cmder_lib_pathA" & del "%temp%\cmder_lib_pathB"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
:changed
|
:changed
|
||||||
%print_debug% :enhance_path "END Env Var - PATH=%path%"
|
%print_debug% :enhance_path "END Env Var - PATH=%path%"
|
||||||
%print_debug% :enhance_path "Env Var %find_query% - found=%found%"
|
%print_debug% :enhance_path "Env Var %find_query% - found=%found%"
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
|
||||||
:set_found
|
:set_found
|
||||||
if "%ERRORLEVEL%" == "0" (
|
if "%ERRORLEVEL%" == "0" (
|
||||||
set found=1
|
set found=1
|
||||||
)
|
)
|
||||||
|
|
||||||
exit /b
|
exit /b
|
||||||
@ -162,7 +162,7 @@ exit /b
|
|||||||
:::.
|
:::.
|
||||||
:::options:
|
:::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.
|
::: append <in> Append instead to path env variable rather than pre-pend.
|
||||||
:::.
|
:::.
|
||||||
@ -202,7 +202,7 @@ exit /b
|
|||||||
|
|
||||||
set "PATH=%PATH:;;=;%"
|
set "PATH=%PATH:;;=;%"
|
||||||
if "%fast_init%" == "1" (
|
if "%fast_init%" == "1" (
|
||||||
exit /b
|
exit /b
|
||||||
)
|
)
|
||||||
|
|
||||||
%print_debug% :enhance_path_recursive "Env Var - add_path=%add_to_path%"
|
%print_debug% :enhance_path_recursive "Env Var - add_path=%add_to_path%"
|
||||||
|
20
vendor/lib/lib_profile.cmd
vendored
20
vendor/lib/lib_profile.cmd
vendored
@ -32,15 +32,15 @@ exit /b
|
|||||||
::: path <out> Sets the path env variable if required.
|
::: path <out> Sets the path env variable if required.
|
||||||
:::-------------------------------------------------------------------------------
|
:::-------------------------------------------------------------------------------
|
||||||
|
|
||||||
if not exist "%~1" (
|
if not exist "%~1" (
|
||||||
mkdir "%~1"
|
mkdir "%~1"
|
||||||
)
|
)
|
||||||
|
|
||||||
pushd "%~1"
|
pushd "%~1"
|
||||||
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
for /f "usebackq" %%x in ( `dir /b *.bat *.cmd 2^>nul` ) do (
|
||||||
%print_verbose% "Calling '%~1\%%x'..."
|
%print_verbose% "Calling '%~1\%%x'..."
|
||||||
call "%~1\%%x"
|
call "%~1\%%x"
|
||||||
)
|
)
|
||||||
popd
|
popd
|
||||||
exit /b
|
exit /b
|
||||||
|
|
||||||
|
207
vendor/profile.ps1
vendored
207
vendor/profile.ps1
vendored
@ -1,73 +1,115 @@
|
|||||||
# Init Script for PowerShell
|
# Init Script for PowerShell
|
||||||
# Created as part of cmder project
|
# Created as part of Cmder project
|
||||||
|
# NOTE: This file must be saved using UTF-8 with BOM encoding for prompt symbol to work correctly.
|
||||||
|
|
||||||
# !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
# !!! THIS FILE IS OVERWRITTEN WHEN CMDER IS UPDATED
|
||||||
# !!! Use "%CMDER_ROOT%\config\user_profile.ps1" to add your own startup commands
|
# !!! Use "%CMDER_ROOT%\config\user_profile.ps1" to add your own startup commands
|
||||||
|
|
||||||
|
$CMDER_INIT_START = $(Get-Date -UFormat %s)
|
||||||
|
|
||||||
# Compatibility with PS major versions <= 2
|
# Compatibility with PS major versions <= 2
|
||||||
if(!$PSScriptRoot) {
|
if (!$PSScriptRoot) {
|
||||||
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
$PSScriptRoot = Split-Path $Script:MyInvocation.MyCommand.Path
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($ENV:CMDER_USER_CONFIG) {
|
if ($ENV:CMDER_USER_CONFIG) {
|
||||||
# write-host "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
Write-Verbose "CMDER IS ALSO USING INDIVIDUAL USER CONFIG FROM '$ENV:CMDER_USER_CONFIG'!"
|
||||||
}
|
}
|
||||||
|
|
||||||
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not beng set.
|
# We do this for Powershell as Admin Sessions because CMDER_ROOT is not being set.
|
||||||
if (! $ENV:CMDER_ROOT ) {
|
if (!$ENV:CMDER_ROOT) {
|
||||||
if ( $ENV:ConEmuDir ) {
|
if ($ENV:ConEmuDir) {
|
||||||
$ENV:CMDER_ROOT = resolve-path( $ENV:ConEmuDir + "\..\.." )
|
$ENV:CMDER_ROOT = Resolve-Path($ENV:ConEmuDir + "\..\..")
|
||||||
} else {
|
} else {
|
||||||
$ENV:CMDER_ROOT = resolve-path( $PSScriptRoot + "\.." )
|
$ENV:CMDER_ROOT = Resolve-Path($PSScriptRoot + "\..")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Remove trailing '\'
|
# Remove trailing '\'
|
||||||
$ENV:CMDER_ROOT = (($ENV:CMDER_ROOT).trimend("\"))
|
$ENV:CMDER_ROOT = ($ENV:CMDER_ROOT).TrimEnd("\")
|
||||||
|
|
||||||
# Do not load bundled psget if a module installer is already available
|
# Do not load bundled PsGet if a module installer is already available
|
||||||
# -> recent PowerShell versions include PowerShellGet out of the box
|
# -> recent PowerShell versions include PowerShellGet out of the box
|
||||||
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
|
$moduleInstallerAvailable = [bool](Get-Command -Name 'Install-Module' -ErrorAction SilentlyContinue)
|
||||||
|
|
||||||
# Add Cmder modules directory to the autoload path.
|
# Add Cmder modules directory to the autoload path.
|
||||||
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
$CmderModulePath = Join-path $PSScriptRoot "psmodules/"
|
||||||
|
|
||||||
$CmderFunctions = Join-Path $CmderModulePath "Cmder.ps1"
|
$CmderFunctions = Join-Path $CmderModulePath "Cmder.ps1"
|
||||||
. $CmderFunctions
|
. $CmderFunctions
|
||||||
|
|
||||||
if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderModulePath) ){
|
if(-not $moduleInstallerAvailable -and -not $env:PSModulePath.Contains($CmderModulePath) ) {
|
||||||
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
$env:PSModulePath = $env:PSModulePath.Insert(0, "$CmderModulePath;")
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
$gitVersionVendor = (readVersion -gitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd")
|
||||||
# Check if git is on PATH, i.e. Git already installed on system
|
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
||||||
Get-command -Name "git" -ErrorAction Stop >$null
|
|
||||||
} catch {
|
# Get user installed Git Version[s] and Compare with vendored if found.
|
||||||
if (test-path "$env:CMDER_ROOT\vendor\git-for-windows") {
|
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
||||||
Configure-Git "$env:CMDER_ROOT\vendor\git-for-windows"
|
Write-Debug "GIT PATH: {$git.Path}"
|
||||||
|
$gitDir = Split-Path -Path $git.Path
|
||||||
|
$gitDir = isGitShim -gitPath $gitDir
|
||||||
|
$gitVersionUser = (readVersion -gitPath $gitDir)
|
||||||
|
Write-Debug "GIT USER: ${gitVersionUser}"
|
||||||
|
|
||||||
|
$useGitVersion = compare_git_versions -userVersion $gitVersionUser -vendorVersion $gitVersionVendor
|
||||||
|
Write-Debug "Using Git Version: ${useGitVersion}"
|
||||||
|
|
||||||
|
# Use user installed Git
|
||||||
|
if ($null -eq $gitPathUser) {
|
||||||
|
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-Debug "Using Git Dir: ${gitDir}"
|
||||||
|
$ENV:GIT_INSTALL_ROOT = $gitPathUser
|
||||||
|
$ENV:GIT_INSTALL_TYPE = 'USER'
|
||||||
|
break
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Get-command -Name "vim" -ErrorAction silentlycontinue) {
|
# User vendored Git.
|
||||||
new-alias -name "vi" -value vim
|
if ($null -eq $ENV:GIT_INSTALL_ROOT -and $null -ne $gitVersionVendor) {
|
||||||
|
$ENV:GIT_INSTALL_ROOT = "$ENV:CMDER_ROOT\vendor\git-for-windows"
|
||||||
|
$ENV:GIT_INSTALL_TYPE = 'VENDOR'
|
||||||
|
}
|
||||||
|
|
||||||
|
Write-Debug "GIT_INSTALL_ROOT: ${ENV:GIT_INSTALL_ROOT}"
|
||||||
|
Write-Debug "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
||||||
|
|
||||||
|
if ($null -ne $ENV:GIT_INSTALL_ROOT) {
|
||||||
|
$env:Path = Configure-Git -gitRoot "$ENV:GIT_INSTALL_ROOT" -gitType $ENV:GIT_INSTALL_TYPE -gitPathUser $gitPathUser
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Get-Command -Name "vim" -ErrorAction SilentlyContinue) {
|
||||||
|
New-Alias -name "vi" -value vim
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
if (Get-Module PSReadline -ErrorAction "SilentlyContinue") {
|
||||||
Set-PSReadlineOption -ExtraPromptLineCount 1
|
Set-PSReadlineOption -ExtraPromptLineCount 1
|
||||||
}
|
}
|
||||||
|
|
||||||
# Pre assign default prompt hooks so the first run of cmder gets a working prompt.
|
# Pre-assign default prompt hooks so the first run of cmder gets a working prompt.
|
||||||
$env:gitLoaded = $false
|
$env:gitLoaded = $null
|
||||||
[ScriptBlock]$PrePrompt = {}
|
[ScriptBlock]$PrePrompt = {}
|
||||||
[ScriptBlock]$PostPrompt = {}
|
[ScriptBlock]$PostPrompt = {}
|
||||||
[ScriptBlock]$CmderPrompt = {
|
[ScriptBlock]$CmderPrompt = {
|
||||||
|
# Check if we're currently running under Admin privileges.
|
||||||
|
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
|
||||||
|
$principal = [Security.Principal.WindowsPrincipal] $identity
|
||||||
|
$adminRole = [Security.Principal.WindowsBuiltInRole]::Administrator
|
||||||
|
$color = "White"
|
||||||
|
if ($principal.IsInRole($adminRole)) { $color = "Red" }
|
||||||
$Host.UI.RawUI.ForegroundColor = "White"
|
$Host.UI.RawUI.ForegroundColor = "White"
|
||||||
Write-Host -NoNewline "$([char]0x200B)"
|
Microsoft.PowerShell.Utility\Write-Host "PS " -NoNewline -ForegroundColor $color
|
||||||
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
Microsoft.PowerShell.Utility\Write-Host $pwd.ProviderPath -NoNewLine -ForegroundColor Green
|
||||||
if (get-command git -erroraction silentlycontinue) {
|
checkGit($pwd.ProviderPath)
|
||||||
checkGit($pwd.ProviderPath)
|
Microsoft.PowerShell.Utility\Write-Host "`nλ" -NoNewLine -ForegroundColor "DarkGray"
|
||||||
}
|
|
||||||
Microsoft.PowerShell.Utility\Write-Host "`nλ " -NoNewLine -ForegroundColor "DarkGray"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Enhance Path
|
# Enhance Path
|
||||||
@ -75,41 +117,39 @@ $env:Path = "$Env:CMDER_ROOT\bin;$Env:CMDER_ROOT\vendor\bin;$env:Path;$Env:CMDER
|
|||||||
|
|
||||||
# Drop *.ps1 files into "$ENV:CMDER_ROOT\config\profile.d"
|
# Drop *.ps1 files into "$ENV:CMDER_ROOT\config\profile.d"
|
||||||
# to source them at startup.
|
# to source them at startup.
|
||||||
if (-not (test-path "$ENV:CMDER_ROOT\config\profile.d")) {
|
if (-not (Test-Path -PathType container "$ENV:CMDER_ROOT\config\profile.d")) {
|
||||||
mkdir "$ENV:CMDER_ROOT\config\profile.d"
|
New-Item -ItemType Directory -Path "$ENV:CMDER_ROOT\config\profile.d"
|
||||||
}
|
}
|
||||||
|
|
||||||
pushd $ENV:CMDER_ROOT\config\profile.d
|
Push-Location $ENV:CMDER_ROOT\config\profile.d
|
||||||
foreach ($x in Get-ChildItem *.psm1) {
|
foreach ($x in Get-ChildItem *.psm1) {
|
||||||
# write-host write-host Sourcing $x
|
Write-Verbose Write-Host Sourcing $x
|
||||||
Import-Module $x
|
Import-Module $x
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($x in Get-ChildItem *.ps1) {
|
foreach ($x in Get-ChildItem *.ps1) {
|
||||||
# write-host write-host Sourcing $x
|
Write-Verbose Write-Host Sourcing $x
|
||||||
. $x
|
. $x
|
||||||
}
|
}
|
||||||
popd
|
Pop-Location
|
||||||
|
|
||||||
# Drop *.ps1 files into "$ENV:CMDER_USER_CONFIG\config\profile.d"
|
# Drop *.ps1 files into "$ENV:CMDER_USER_CONFIG\config\profile.d"
|
||||||
# to source them at startup. Requires using cmder.exe /C [cmder_user_root_path] argument
|
# to source them at startup. Requires using cmder.exe /C [cmder_user_root_path] argument
|
||||||
if ($ENV:CMDER_USER_CONFIG -ne "" -and (test-path "$ENV:CMDER_USER_CONFIG\profile.d")) {
|
if ($ENV:CMDER_USER_CONFIG -ne "" -and (Test-Path "$ENV:CMDER_USER_CONFIG\profile.d")) {
|
||||||
pushd $ENV:CMDER_USER_CONFIG\profile.d
|
Push-Location $ENV:CMDER_USER_CONFIG\profile.d
|
||||||
foreach ($x in Get-ChildItem *.psm1) {
|
foreach ($x in Get-ChildItem *.psm1) {
|
||||||
# write-host write-host Sourcing $x
|
Write-Verbose Write-Host Sourcing $x
|
||||||
Import-Module $x
|
Import-Module $x
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($x in Get-ChildItem *.ps1) {
|
foreach ($x in Get-ChildItem *.ps1) {
|
||||||
# write-host write-host Sourcing $x
|
Write-Verbose Write-Host Sourcing $x
|
||||||
. $x
|
. $x
|
||||||
}
|
}
|
||||||
popd
|
Pop-Location
|
||||||
}
|
}
|
||||||
|
|
||||||
# Renaming to "config\user_profile.ps1" to "user_profile.ps1" for consistency.
|
# Renaming to "config\user_profile.ps1" to "user_profile.ps1" for consistency.
|
||||||
if (test-path "$env:CMDER_ROOT\config\user-profile.ps1") {
|
if (Test-Path "$env:CMDER_ROOT\config\user-profile.ps1") {
|
||||||
rename-item "$env:CMDER_ROOT\config\user-profile.ps1" user_profile.ps1
|
Rename-Item "$env:CMDER_ROOT\config\user-profile.ps1" user_profile.ps1
|
||||||
}
|
}
|
||||||
|
|
||||||
$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user_profile.ps1"
|
$CmderUserProfilePath = Join-Path $env:CMDER_ROOT "config\user_profile.ps1"
|
||||||
@ -120,20 +160,22 @@ if (Test-Path $CmderUserProfilePath) {
|
|||||||
|
|
||||||
if ($ENV:CMDER_USER_CONFIG) {
|
if ($ENV:CMDER_USER_CONFIG) {
|
||||||
# Renaming to "$env:CMDER_USER_CONFIG\user-profile.ps1" to "user_profile.ps1" for consistency.
|
# Renaming to "$env:CMDER_USER_CONFIG\user-profile.ps1" to "user_profile.ps1" for consistency.
|
||||||
if (test-path "$env:CMDER_USER_CONFIG\user-profile.ps1") {
|
if (Test-Path "$env:CMDER_USER_CONFIG\user-profile.ps1") {
|
||||||
rename-item "$env:CMDER_USER_CONFIG\user-profile.ps1" user_profile.ps1
|
Rename-Item "$env:CMDER_USER_CONFIG\user-profile.ps1" user_profile.ps1
|
||||||
}
|
}
|
||||||
|
|
||||||
$env:Path = "$Env:CMDER_USER_CONFIG\bin;$env:Path"
|
$env:Path = "$Env:CMDER_USER_CONFIG\bin;$env:Path"
|
||||||
|
|
||||||
$CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user_profile.ps1"
|
$CmderUserProfilePath = Join-Path $ENV:CMDER_USER_CONFIG "user_profile.ps1"
|
||||||
if (Test-Path $CmderUserProfilePath) {
|
if (Test-Path $CmderUserProfilePath) {
|
||||||
. "$CmderUserProfilePath" # user_profile.ps1 is not a module DO NOT USE import-module
|
. "$CmderUserProfilePath" # user_profile.ps1 is not a module DO NOT USE import-module
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (! (Test-Path $CmderUserProfilePath) ) {
|
if (-not (Test-Path $CmderUserProfilePath)) {
|
||||||
Write-Host -BackgroundColor Darkgreen -ForegroundColor White "First Run: Creating user startup file: $CmderUserProfilePath"
|
$CmderUserProfilePath = $ExecutionContext.SessionState.Path.GetUnresolvedProviderPathFromPSPath($CmderUserProfilePath)
|
||||||
|
Write-Host -NoNewline "`r"
|
||||||
|
Write-Host -BackgroundColor Green -ForegroundColor Black "First Run: Creating user startup file: $CmderUserProfilePath"
|
||||||
Copy-Item "$env:CMDER_ROOT\vendor\user_profile.ps1.default" -Destination $CmderUserProfilePath
|
Copy-Item "$env:CMDER_ROOT\vendor\user_profile.ps1.default" -Destination $CmderUserProfilePath
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,36 +186,43 @@ if (! (Test-Path $CmderUserProfilePath) ) {
|
|||||||
|
|
||||||
# Only set the prompt if it is currently set to the default
|
# Only set the prompt if it is currently set to the default
|
||||||
# This allows users to configure the prompt in their user_profile.ps1 or config\profile.d\*.ps1
|
# 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 `
|
if ( $(Get-Command prompt).Definition -match 'PS \$\(\$executionContext.SessionState.Path.CurrentLocation\)\$\(' -and `
|
||||||
$(get-command prompt).Definition -match '\(\$nestedPromptLevel \+ 1\)\) ";') {
|
$(Get-Command prompt).Definition -match '\(\$nestedPromptLevel \+ 1\)\) ";') {
|
||||||
|
|
||||||
<#
|
<#
|
||||||
This scriptblock runs every time the prompt is returned.
|
This scriptblock runs every time the prompt is returned.
|
||||||
Explicitly use functions from MS namespace to protect from being overridden in the user session.
|
Explicitly use functions from MS namespace to protect from being overridden in the user session.
|
||||||
Custom prompt functions are loaded in as constants to get the same behaviour
|
Custom prompt functions are loaded in as constants to get the same behaviour
|
||||||
#>
|
#>
|
||||||
[ScriptBlock]$Prompt = {
|
[ScriptBlock]$Prompt = {
|
||||||
$realLASTEXITCODE = $LASTEXITCODE
|
$lastSUCCESS = $?
|
||||||
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
$realLastExitCode = $LastExitCode
|
||||||
PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
$host.UI.RawUI.WindowTitle = Microsoft.PowerShell.Management\Split-Path $pwd.ProviderPath -Leaf
|
||||||
CmderPrompt
|
Microsoft.PowerShell.Utility\Write-Host -NoNewline "$([char]0x200B)`r$([char]0x1B)[K"
|
||||||
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
if ($lastSUCCESS -or ($LastExitCode -ne 0)) {
|
||||||
$global:LASTEXITCODE = $realLASTEXITCODE
|
Microsoft.PowerShell.Utility\Write-Host
|
||||||
return " "
|
}
|
||||||
}
|
PrePrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||||
|
CmderPrompt
|
||||||
|
PostPrompt | Microsoft.PowerShell.Utility\Write-Host -NoNewline
|
||||||
|
$global:LastExitCode = $realLastExitCode
|
||||||
|
return " "
|
||||||
|
}
|
||||||
|
|
||||||
|
# Once Created these code blocks cannot be overwritten
|
||||||
|
# if (-not $(Get-Command PrePrompt).Options -match 'Constant') {Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant}
|
||||||
|
# if (-not $(Get-Command CmderPrompt).Options -match 'Constant') {Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant}
|
||||||
|
# if (-not $(Get-Command PostPrompt).Options -match 'Constant') {Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant}
|
||||||
|
|
||||||
# Once Created these code blocks cannot be overwritten
|
Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant
|
||||||
# if (-not $(get-command PrePrompt).Options -match 'Constant') {Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant}
|
Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant
|
||||||
# if (-not $(get-command CmderPrompt).Options -match 'Constant') {Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant}
|
Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant
|
||||||
# if (-not $(get-command PostPrompt).Options -match 'Constant') {Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant}
|
|
||||||
|
|
||||||
Set-Item -Path function:\PrePrompt -Value $PrePrompt -Options Constant
|
# Functions can be made constant only at creation time
|
||||||
Set-Item -Path function:\CmderPrompt -Value $CmderPrompt -Options Constant
|
# ReadOnly at least requires `-force` to be overwritten
|
||||||
Set-Item -Path function:\PostPrompt -Value $PostPrompt -Options Constant
|
# 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
|
||||||
# Functions can be made constant only at creation time
|
|
||||||
# ReadOnly at least requires `-force` to be overwritten
|
|
||||||
# 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-Verbose "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)"
|
||||||
|
189
vendor/psmodules/Cmder.ps1
vendored
189
vendor/psmodules/Cmder.ps1
vendored
@ -1,56 +1,175 @@
|
|||||||
function Configure-Git($GIT_INSTALL_ROOT){
|
function readVersion($gitPath) {
|
||||||
$env:Path += $(";" + $GIT_INSTALL_ROOT + "\cmd")
|
$gitExecutable = "${gitPath}\git.exe"
|
||||||
|
|
||||||
# Add "$GIT_INSTALL_ROOT\usr\bin" to the path if exists and not done already
|
if (-not (Test-Path "$gitExecutable")) {
|
||||||
$GIT_INSTALL_ROOT_ESC=$GIT_INSTALL_ROOT.replace('\','\\')
|
return $null
|
||||||
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
|
$gitVersion = (cmd /c "${gitExecutable}" --version)
|
||||||
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"
|
if ($gitVersion -match 'git version') {
|
||||||
} elseif ((test-path "$GIT_INSTALL_ROOT\mingw64\bin") -and -not ($env:path -match "$GIT_INSTALL_ROOT_ESC\\mingw64\\bin")) {
|
($trash1, $trash2, $gitVersion) = $gitVersion.split(' ', 3)
|
||||||
$env:path = "$env:path;$GIT_INSTALL_ROOT\mingw64\bin"
|
} else {
|
||||||
}
|
pause
|
||||||
|
return $null
|
||||||
|
}
|
||||||
|
|
||||||
|
return $gitVersion.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
function Import-Git(){
|
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 ($null -ne $userVersion) {
|
||||||
|
($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4)
|
||||||
|
} else {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($null -ne $vendorVersion) {
|
||||||
|
($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4)
|
||||||
|
} else {
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
|
||||||
|
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-Debug "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 is older, match its path config adding paths
|
||||||
|
# in the same path positions allowing a user to configure Cmder Git path
|
||||||
|
# using locally installed Git Path Config.
|
||||||
|
if ($gitType -eq 'VENDOR') {
|
||||||
|
# If User Git is installed replace its path config with Newer Vendored Git Path
|
||||||
|
if (($null -ne $gitPathUser) -and ($gitPathUser -ne '')) {
|
||||||
|
Write-Verbose "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..."
|
||||||
|
|
||||||
|
$newPath = ($env:path -ireplace [regex]::Escape($gitPathUser), $gitRoot)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (-not ($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
|
||||||
|
Write-Debug "Adding $gitRoot\cmd to the path"
|
||||||
|
$newPath = $($gitRoot + "\cmd" + ";" + $env:Path)
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add "$gitRoot\mingw[32|64]\bin" to the path if exists and not done already
|
||||||
|
if ((Test-Path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) {
|
||||||
|
Write-Debug "Adding $gitRoot\mingw32\bin to the path"
|
||||||
|
$newPath = "$newPath;$gitRoot\mingw32\bin"
|
||||||
|
}
|
||||||
|
elseif ((Test-Path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
|
||||||
|
Write-Debug "Adding $gitRoot\mingw64\bin to the path"
|
||||||
|
$newPath = "$newPath;$gitRoot\mingw64\bin"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add "$gitRoot\usr\bin" to the path if exists and not done already
|
||||||
|
if ((Test-Path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) {
|
||||||
|
Write-Debug "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
|
$GitModule = Get-Module -Name Posh-Git -ListAvailable
|
||||||
if($GitModule | select version | where version -le ([version]"0.6.1.20160330")){
|
if ($GitModule | Select-Object version | Where-Object version -le ([version]"0.6.1.20160330")) {
|
||||||
Import-Module Posh-Git > $null
|
Import-Module Posh-Git > $null
|
||||||
}
|
}
|
||||||
if(-not ($GitModule) ) {
|
if ($GitModule | Select-Object version | Where-Object version -ge ([version]"1.0.0")) {
|
||||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
Import-Module Posh-Git > $null
|
||||||
|
$GitPromptSettings.AnsiConsole = $false
|
||||||
}
|
}
|
||||||
# Make sure we only run once by alawys returning true
|
if (-not $GitModule) {
|
||||||
|
Write-Host -NoNewline "`r`n"
|
||||||
|
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart Cmder."
|
||||||
|
Write-Host -NoNewline "`r$([char]0x1B)[A"
|
||||||
|
return $false
|
||||||
|
}
|
||||||
|
# Make sure we only run once by always returning true
|
||||||
return $true
|
return $true
|
||||||
}
|
}
|
||||||
|
|
||||||
function checkGit($Path) {
|
function checkGit($Path) {
|
||||||
if (Test-Path -Path (Join-Path $Path '.git') ) {
|
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
|
||||||
if($env:gitLoaded -eq 'false') {
|
return
|
||||||
$env:gitLoaded = Import-Git
|
|
||||||
}
|
|
||||||
|
|
||||||
if (getGitStatusSetting -eq $true) {
|
|
||||||
Write-VcsStatus
|
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
$SplitPath = split-path $path
|
if (-not (Test-Path -Path (Join-Path $Path '.git'))) {
|
||||||
if ($SplitPath) {
|
$SplitPath = Split-Path $path
|
||||||
checkGit($SplitPath)
|
if ($SplitPath) { checkGit($SplitPath) }
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (getGitStatusSetting -eq $true) {
|
||||||
|
if ($null -eq $env:gitLoaded) {
|
||||||
|
$env:gitLoaded = Import-Git
|
||||||
|
}
|
||||||
|
if ($env:gitLoaded -eq $true) {
|
||||||
|
Write-VcsStatus
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$headContent = Get-Content (Join-Path $Path '.git/HEAD')
|
||||||
|
if ($headContent -like "ref: refs/heads/*") {
|
||||||
|
$branchName = $headContent.Substring(16)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$branchName = "HEAD detached at $($headContent.Substring(0, 7))"
|
||||||
|
}
|
||||||
|
Write-Host " [$branchName]" -NoNewline -ForegroundColor White
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function getGitStatusSetting() {
|
function getGitStatusSetting() {
|
||||||
$gitStatus = (git --no-pager config -l) | out-string
|
$gitStatus = (git --no-pager config -l) | Out-String
|
||||||
|
|
||||||
ForEach ($line in $($gitStatus -split "`r`n")) {
|
foreach ($line in $($gitStatus -split "`r`n")) {
|
||||||
if ($line -match 'cmder.status=false' -or $line -match 'cmder.psstatus=false') {
|
if (($line -match 'cmder.status=false') -or ($line -match 'cmder.psstatus=false')) {
|
||||||
return $false
|
return $false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
18
vendor/psmodules/PsGet/PsGet.psm1
vendored
18
vendor/psmodules/PsGet/PsGet.psm1
vendored
@ -124,7 +124,7 @@ Set-Variable -Name PSGET_PSD1 -Value 'PSD1' -Option Constant -Scope Script
|
|||||||
|
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
Installs the module witout importing it to the current session
|
Installs the module without importing it to the current session
|
||||||
|
|
||||||
.EXAMPLE
|
.EXAMPLE
|
||||||
# Install-Module PoshHg -AddToProfile
|
# Install-Module PoshHg -AddToProfile
|
||||||
@ -448,7 +448,7 @@ function Update-Module {
|
|||||||
|
|
||||||
Description
|
Description
|
||||||
-----------
|
-----------
|
||||||
Retrieves information about all registerd modules that starts with PoshCo.
|
Retrieves information about all registered modules that start with PoshCo.
|
||||||
#>
|
#>
|
||||||
function Get-PsGetModuleInfo {
|
function Get-PsGetModuleInfo {
|
||||||
[CmdletBinding()]
|
[CmdletBinding()]
|
||||||
@ -694,7 +694,7 @@ function Install-ModuleFromDirectory {
|
|||||||
throw "Module $Module was not found in central repository"
|
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) {
|
if (Test-ModuleInstalledAndImport -ModuleName:$moduleData.ModuleName -Destination:$Destination -Update:$Update -DoNotImport:$DoNotImport -ModuleHash:$ModuleHash) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -1488,7 +1488,7 @@ function Invoke-DownloadModuleFromWeb {
|
|||||||
Install the module inside of the provided directory into the defined destination
|
Install the module inside of the provided directory into the defined destination
|
||||||
and perform the following steps:
|
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.
|
* If a ModuleHash is provided, check if it matches.
|
||||||
* Add the destination path to the PSModulePath if necessary (depends on provided parameters)
|
* Add the destination path to the PSModulePath if necessary (depends on provided parameters)
|
||||||
* Place the conventions-matching module folder in the destination folder
|
* Place the conventions-matching module folder in the destination folder
|
||||||
@ -1796,9 +1796,9 @@ function Test-ModuleInstalledAndImport {
|
|||||||
|
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.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'
|
Path to a zip file with the file extension '.zip'
|
||||||
|
|
||||||
.Parameter Destination
|
.Parameter Destination
|
||||||
@ -1818,7 +1818,7 @@ function Expand-ZipModule {
|
|||||||
|
|
||||||
# Check if powershell v3+ and .net v4.5 is available
|
# Check if powershell v3+ and .net v4.5 is available
|
||||||
$netFailed = $true
|
$netFailed = $true
|
||||||
if ( $PSVersionTable.PSVersion.Major -ge 3 -and (Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4' -Recurse | Get-ItemProperty -Name Version | Where-Object { $_.Version -like '4.5*' -Or $_.Version -ge '4.5' }) ) {
|
if ( $PSVersionTable.PSVersion.Major -ge 3 -and (Get-ChildItem -Path 'HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4' -Recurse | Get-ItemProperty -Name Version | Where-Object { $_.Version -like '4.5*' -or $_.Version -ge '4.5' }) ) {
|
||||||
Write-Debug 'Attempting unzip using the .NET Framework...'
|
Write-Debug 'Attempting unzip using the .NET Framework...'
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -1856,7 +1856,7 @@ function Expand-ZipModule {
|
|||||||
|
|
||||||
<#
|
<#
|
||||||
.SYNOPSIS
|
.SYNOPSIS
|
||||||
Update '$env:PSModulePath' from 'User' and 'Machine' scope envrionment variables
|
Update '$env:PSModulePath' from 'User' and 'Machine' scope environment variables
|
||||||
#>
|
#>
|
||||||
function Update-PSModulePath {
|
function Update-PSModulePath {
|
||||||
process {
|
process {
|
||||||
@ -2152,4 +2152,4 @@ Export-ModuleMember TabExpansion
|
|||||||
Export-ModuleMember -Alias inmo
|
Export-ModuleMember -Alias inmo
|
||||||
Export-ModuleMember -Alias ismo
|
Export-ModuleMember -Alias ismo
|
||||||
Export-ModuleMember -Alias upmo
|
Export-ModuleMember -Alias upmo
|
||||||
#endregion
|
#endregion
|
||||||
|
40
vendor/sources.json
vendored
40
vendor/sources.json
vendored
@ -1,22 +1,22 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "git-for-windows",
|
"name": "git-for-windows",
|
||||||
"version": "v2.29.1.windows.1",
|
"version": "2.39.0.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"
|
"url": "https://github.com/git-for-windows/git/releases/download/v2.39.0.windows.1/PortableGit-2.39.0-64-bit.7z.exe"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink",
|
"name": "clink",
|
||||||
"version": "1.1.45",
|
"version": "1.4.4",
|
||||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.1.45/clink.1.1.45.1c3985.zip"
|
"url": "https://github.com/chrisant996/clink/releases/download/v1.4.4/clink.1.4.4.7fe1ca.zip"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "conemu-maximus5",
|
"name": "conemu-maximus5",
|
||||||
"version": "210304",
|
"version": "22.12.18",
|
||||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v21.03.04/ConEmuPack.210304.7z"
|
"url": "https://github.com/Maximus5/ConEmu/releases/download/v22.12.18/ConEmuPack.221218.7z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink-completions",
|
"name": "clink-completions",
|
||||||
"version": "0.3.6",
|
"version": "0.4.2",
|
||||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.6.zip"
|
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/v0.4.2.zip"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
2
vendor/user_aliases.cmd.default
vendored
2
vendor/user_aliases.cmd.default
vendored
@ -6,9 +6,11 @@
|
|||||||
;= Add aliases below here
|
;= Add aliases below here
|
||||||
e.=explorer .
|
e.=explorer .
|
||||||
gl=git log --oneline --all --graph --decorate $*
|
gl=git log --oneline --all --graph --decorate $*
|
||||||
|
l=ls --show-control-chars -CFGNhp --color --ignore={"NTUSER.DAT*","ntuser.dat*"} $*
|
||||||
ls=ls --show-control-chars -F --color $*
|
ls=ls --show-control-chars -F --color $*
|
||||||
pwd=cd
|
pwd=cd
|
||||||
clear=cls
|
clear=cls
|
||||||
unalias=alias /d $1
|
unalias=alias /d $1
|
||||||
vi=vim $*
|
vi=vim $*
|
||||||
cmderr=cd /d "%CMDER_ROOT%"
|
cmderr=cd /d "%CMDER_ROOT%"
|
||||||
|
pwsh=%SystemRoot%/System32/WindowsPowerShell/v1.0/powershell.exe -ExecutionPolicy Bypass -NoLogo -NoProfile -NoExit -Command "Invoke-Expression '. ''%CMDER_ROOT%/vendor/profile.ps1'''"
|
||||||
|
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%"
|
:: set "PATH=%CMDER_ROOT%\vendor\whatever;%PATH%"
|
||||||
|
|
||||||
:: arguments in this batch are passed from init.bat, you can quickly parse them like so:
|
:: 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"
|
:: %ccall% "/customOption" "command/program"
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user