mirror of
https://github.com/cmderdev/cmder.git
synced 2025-07-16 12:39:38 +08:00
Compare commits
243 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 | |||
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
|
5
.gitignore
vendored
5
.gitignore
vendored
@ -23,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
|
||||||
|
148
CHANGELOG.md
148
CHANGELOG.md
@ -1,24 +1,52 @@
|
|||||||
# 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)
|
## [1.3.19](https://github.com/cmderdev/cmder/tree/v1.3.19) (2022-01-15)
|
||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
- Update Git for Windows to 2.34.0
|
- Update Git for Windows to 2.34.0
|
||||||
- Update to Clink 1.2.46
|
- Update to Clink 1.2.46
|
||||||
- Update to stable Conemu 210912
|
- Update to stable ConEmu 210912
|
||||||
- Do not rely on having a `%cmder_root%\config\cmder_prompt_config.lua`
|
- Do not rely on having a `%cmder_root%\config\cmder_prompt_config.lua`
|
||||||
|
|
||||||
### Adds
|
### Adds
|
||||||
|
|
||||||
- Powershell Git version Discovery - See #2373 for the full proposal.
|
- PowerShell Git version Discovery - See #2373 for the full proposal.
|
||||||
- Find user installed Git on Path
|
- Find user installed Git on Path
|
||||||
- If found
|
- If found
|
||||||
- if newer than Cmder embedded Git
|
- if newer than Cmder embedded Git
|
||||||
- Use it's existing Path config and completely ignore embedded Git.
|
- Use its existing Path config and completely ignore embedded Git.
|
||||||
- Else if Cmder embedded Git exists and is newer
|
- Else if Cmder embedded Git exists and is newer
|
||||||
- Match User installed Git path config using Cmder embedded Git folders.
|
- Match User installed Git path config using Cmder embedded Git folders.
|
||||||
- Else if Cmder embedded Git exists
|
- Else if Cmder embedded Git exists
|
||||||
- Add Cmder embedded Git folders to the path.
|
- Add Cmder embedded Git folders to the path.
|
||||||
- `$env:cmder_root\vendor\git-for-windows\cmd;$env: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\usr\bin`
|
||||||
@ -62,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)
|
||||||
@ -101,7 +129,7 @@
|
|||||||
|
|
||||||
### Changes
|
### Changes
|
||||||
|
|
||||||
* Update to Conemu 19.10.12
|
* Update to ConEmu 19.10.12
|
||||||
|
|
||||||
### Adds
|
### Adds
|
||||||
|
|
||||||
@ -113,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.
|
||||||
|
|
||||||
@ -122,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.
|
||||||
|
|
||||||
@ -137,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
|
||||||
|
|
||||||
@ -172,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
|
||||||
|
|
||||||
@ -192,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)
|
||||||
@ -253,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
|
||||||
@ -279,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):
|
||||||
@ -314,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):
|
||||||
@ -383,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
|
||||||
@ -436,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:**
|
||||||
|
|
||||||
@ -444,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:**
|
||||||
|
|
||||||
@ -468,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)
|
||||||
@ -476,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))
|
||||||
@ -508,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)
|
||||||
@ -600,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)
|
||||||
@ -627,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)
|
||||||
@ -650,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)
|
||||||
@ -684,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)
|
||||||
@ -708,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)
|
||||||
@ -746,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)
|
||||||
@ -816,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)
|
||||||
@ -955,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)
|
||||||
@ -972,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:**
|
||||||
@ -996,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))
|
||||||
@ -1040,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))
|
||||||
@ -1053,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))
|
||||||
@ -1071,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))
|
||||||
@ -1089,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))
|
||||||
@ -1108,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"
|
||||||
)
|
)
|
||||||
|
38
README.md
38
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]` | Forwards 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).
|
||||||
|
|
||||||
@ -188,7 +188,7 @@ Documentation is in the file for each setting.
|
|||||||
| (custom arguments) | User defined arguments processed by `cexec`. Type `cexec /?` for more usage. | not set |
|
| (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 |
|
||||||
| ------------- | ----------------------------------------- |
|
| ------------- | ----------------------------------------- |
|
||||||
@ -196,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.
|
||||||
|
|
||||||
@ -230,7 +230,7 @@ Aliases defined using the `alias.bat` command will automatically be saved in the
|
|||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
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`
|
||||||
@ -241,7 +241,7 @@ Bash shells support simple and complex aliases with optional parameters natively
|
|||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
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`
|
||||||
@ -254,7 +254,7 @@ PowerShell has native simple alias support, for example `[new-alias | set-alias]
|
|||||||
|
|
||||||
To make an alias and/or any other profile settings permanent add it to one of the following:
|
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`
|
||||||
@ -292,7 +292,7 @@ The destination file extension depends on the shell you use in that environment.
|
|||||||
* bash - Copy to `/etc/profile.d/cmder_exinit.sh`
|
* 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.
|
||||||
@ -344,9 +344,9 @@ To conditionally start `notepad.exe` when you start a specific `cmder` task:
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To see detailed usage of `cexec`, type `cexec /?` in cmder.
|
To see detailed usage of `cexec`, type `cexec /?` in Cmder.
|
||||||
|
|
||||||
### Integrating Cmder with [Hyper](https://github.com/zeit/hyper), [Microsoft VS Code](https://code.visualstudio.com/), and your favorite IDEs
|
### Integrating Cmder with [Windows Terminal](https://github.com/cmderdev/cmder/wiki/Seamless-Windows-Terminal-Integration), [VS Code](https://github.com/cmderdev/cmder/wiki/Seamless-VS-Code-Integration), and your favorite IDEs
|
||||||
|
|
||||||
Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html).
|
Cmder by default comes with a vendored ConEmu installation as the underlying terminal emulator, as stated [here](https://conemu.github.io/en/cmder.html).
|
||||||
|
|
||||||
@ -386,7 +386,11 @@ If you do not have a `[cmder_root]/config/user[-|_]conemu.xml`, you are running
|
|||||||
|
|
||||||
You can download builds of the current development branch by going to AppVeyor via the following link:
|
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 #
|
||||||
|
@ -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
|
||||||
@ -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,24 +23,28 @@ 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 failed"
|
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
|
||||||
|
if ($LastExitCode -ne 0) {
|
||||||
Write-Error "Compressing $source failed"
|
Write-Error "Compressing $source failed"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -48,71 +52,92 @@ function Create-Archive($source, $target, $params) {
|
|||||||
# 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>
|
||||||
|
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%"
|
249
vendor/clink.lua
vendored
249
vendor/clink.lua
vendored
@ -15,34 +15,34 @@ dofile(clink_lua_file)
|
|||||||
|
|
||||||
|
|
||||||
local function get_uah_color()
|
local function get_uah_color()
|
||||||
return uah_color or "\x1b[1;33;40m" -- Green = uah = [user]@[hostname]
|
return uah_color or "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_cwd_color()
|
local function get_cwd_color()
|
||||||
return cwd_color or "\x1b[1;32;40m" -- Yellow cwd = Current Working Directory
|
return cwd_color or "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_lamb_color()
|
local function get_lamb_color()
|
||||||
return lamb_color or "\x1b[1;30;40m" -- Light Grey = Lambda Color
|
return lamb_color or "\x1b[1;30;49m" -- Light Grey = Lambda Color
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local function get_clean_color()
|
local function get_clean_color()
|
||||||
return clean_color or "\x1b[1;37;40m"
|
return clean_color or "\x1b[37;1m" -- White, Bold
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local function get_dirty_color()
|
local function get_dirty_color()
|
||||||
return dirty_color or "\x1b[33;3m"
|
return dirty_color or "\x1b[33;3m" -- Yellow, Italic
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local function get_conflict_color()
|
local function get_conflict_color()
|
||||||
return conflict_color or "\x1b[31;1m"
|
return conflict_color or "\x1b[31;1m" -- Red, Bold
|
||||||
end
|
end
|
||||||
|
|
||||||
local function get_unknown_color()
|
local function get_unknown_color()
|
||||||
return unknown_color or "\x1b[37;1m"
|
return unknown_color or "\x1b[37;1m" -- White, Bold
|
||||||
end
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -57,9 +57,9 @@ end
|
|||||||
-- Ex: Input C:\Windows\System32 returns System32
|
-- Ex: Input C:\Windows\System32 returns System32
|
||||||
---
|
---
|
||||||
local function get_folder_name(path)
|
local function get_folder_name(path)
|
||||||
local reversePath = string.reverse(path)
|
local reversePath = string.reverse(path)
|
||||||
local slashIndex = string.find(reversePath, "\\")
|
local slashIndex = string.find(reversePath, "\\")
|
||||||
return string.sub(path, string.len(path) - slashIndex + 2)
|
return string.sub(path, string.len(path) - slashIndex + 2)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -115,32 +115,32 @@ local function set_prompt_filter()
|
|||||||
-- Much of the below was 'borrowed' from https://github.com/AmrEldib/cmder-powerline-prompt
|
-- Much of the below was 'borrowed' from https://github.com/AmrEldib/cmder-powerline-prompt
|
||||||
-- Symbol displayed for the home dir in the prompt.
|
-- Symbol displayed for the home dir in the prompt.
|
||||||
if not prompt_homeSymbol then
|
if not prompt_homeSymbol then
|
||||||
prompt_homeSymbol = "~"
|
prompt_homeSymbol = "~"
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Symbol displayed in the new line below the prompt.
|
-- Symbol displayed in the new line below the prompt.
|
||||||
if not prompt_lambSymbol then
|
if not prompt_lambSymbol then
|
||||||
prompt_lambSymbol = "λ"
|
prompt_lambSymbol = "λ"
|
||||||
end
|
end
|
||||||
|
|
||||||
if not prompt_type then
|
if not prompt_type then
|
||||||
prompt_type = "full"
|
prompt_type = "full"
|
||||||
end
|
end
|
||||||
|
|
||||||
if prompt_useHomeSymbol == nil then
|
if prompt_useHomeSymbol == nil then
|
||||||
prompt_useHomeSymbol = false
|
prompt_useHomeSymbol = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if prompt_useUserAtHost == nil then
|
if prompt_useUserAtHost == nil then
|
||||||
prompt_useUserAtHost = false
|
prompt_useUserAtHost = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if prompt_singleLine == nil then
|
if prompt_singleLine == nil then
|
||||||
prompt_singleLine = false
|
prompt_singleLine = false
|
||||||
end
|
end
|
||||||
|
|
||||||
if prompt_includeVersionControl == nil then
|
if prompt_includeVersionControl == nil then
|
||||||
prompt_includeVersionControl = true
|
prompt_includeVersionControl = true
|
||||||
end
|
end
|
||||||
|
|
||||||
if prompt_type == 'folder' then
|
if prompt_type == 'folder' then
|
||||||
@ -158,9 +158,11 @@ local function set_prompt_filter()
|
|||||||
|
|
||||||
cr = "\n"
|
cr = "\n"
|
||||||
if prompt_singleLine then
|
if prompt_singleLine then
|
||||||
cr = ' '
|
cr = ' '
|
||||||
end
|
end
|
||||||
|
|
||||||
|
cr = "\x1b[0m" .. cr
|
||||||
|
|
||||||
if env ~= nil then env = "("..env..") " else env = "" end
|
if env ~= nil then env = "("..env..") " else env = "" end
|
||||||
|
|
||||||
if uah ~= '' then uah = get_uah_color() .. uah end
|
if uah ~= '' then uah = get_uah_color() .. uah end
|
||||||
@ -168,7 +170,7 @@ local function set_prompt_filter()
|
|||||||
|
|
||||||
local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or ""
|
local version_control = prompt_includeVersionControl and "{git}{hg}{svn}" or ""
|
||||||
|
|
||||||
prompt = "{uah}{cwd}" .. version_control .. get_lamb_color() .. cr .. "{env}{lamb} \x1b[0m"
|
prompt = "{uah}{cwd}" .. version_control .. cr .. get_lamb_color() .. "{env}{lamb}\x1b[0m "
|
||||||
prompt = string.gsub(prompt, "{uah}", uah)
|
prompt = string.gsub(prompt, "{uah}", uah)
|
||||||
prompt = string.gsub(prompt, "{cwd}", cwd)
|
prompt = string.gsub(prompt, "{cwd}", cwd)
|
||||||
prompt = string.gsub(prompt, "{env}", env)
|
prompt = string.gsub(prompt, "{env}", env)
|
||||||
@ -256,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
|
||||||
|
|
||||||
@ -303,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
|
||||||
@ -325,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
|
||||||
@ -350,12 +365,12 @@ local function get_git_status()
|
|||||||
local code = line:sub(1, 2)
|
local code = line:sub(1, 2)
|
||||||
-- print (string.format("code: %s, line: %s", code, line))
|
-- 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
|
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
|
is_status = false
|
||||||
conflict_found = true
|
conflict_found = true
|
||||||
break
|
break
|
||||||
-- unversioned files are ignored, comment out 'code ~= "!!"' to unignore them
|
-- unversioned files are ignored, comment out 'code ~= "!!"' to unignore them
|
||||||
elseif code ~= "!!" and code ~= "??" then
|
elseif code ~= "!!" and code ~= "??" then
|
||||||
is_status = false
|
is_status = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
file:close()
|
file:close()
|
||||||
@ -383,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
|
||||||
@ -393,13 +408,63 @@ local function get_svn_status()
|
|||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
---
|
||||||
|
-- Get the status of working dir
|
||||||
|
-- @return {bool}
|
||||||
|
---
|
||||||
|
local last_git_status_time = nil
|
||||||
|
local last_git_status_setting = true
|
||||||
|
local function get_git_status_setting()
|
||||||
|
local time = os.clock()
|
||||||
|
local last_time = last_git_status_time
|
||||||
|
last_git_status_time = time
|
||||||
|
if last_time and time >= 0 and time - last_time < 10 then
|
||||||
|
return last_git_status_setting
|
||||||
|
end
|
||||||
|
|
||||||
|
-- When async prompt filtering is available, check the
|
||||||
|
-- prompt_overrideGitStatusOptIn config setting for whether to ignore the
|
||||||
|
-- cmder.status and cmder.cmdstatus git config opt-in settings.
|
||||||
|
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") then
|
||||||
|
if prompt_overrideGitStatusOptIn then
|
||||||
|
last_git_status_setting = true
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local gitStatusConfig = io_popenyield("git --no-pager config cmder.status 2>nul")
|
||||||
|
for line in gitStatusConfig:lines() do
|
||||||
|
if string.match(line, 'false') then
|
||||||
|
gitStatusConfig:close()
|
||||||
|
last_git_status_setting = false
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
gitStatusConfig:close()
|
||||||
|
|
||||||
|
local gitCmdStatusConfig = io_popenyield("git --no-pager config cmder.cmdstatus 2>nul")
|
||||||
|
for line in gitCmdStatusConfig:lines() do
|
||||||
|
if string.match(line, 'false') then
|
||||||
|
gitCmdStatusConfig:close()
|
||||||
|
last_git_status_setting = false
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
end
|
||||||
|
gitCmdStatusConfig:close()
|
||||||
|
|
||||||
|
last_git_status_setting = true
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
---
|
---
|
||||||
-- Use a prompt coroutine to get git status in the background.
|
-- Use a prompt coroutine to get git status in the background.
|
||||||
-- Cache the info so we can reuse it next time to reduce flicker.
|
-- Cache the info so we can reuse it next time to reduce flicker.
|
||||||
---
|
---
|
||||||
local function get_git_info_table()
|
local function get_git_info_table()
|
||||||
local info = clink_promptcoroutine(function ()
|
local info = clink_promptcoroutine(function ()
|
||||||
return get_git_status()
|
-- Use git status if allowed.
|
||||||
|
local cmderGitStatusOptIn = get_git_status_setting()
|
||||||
|
return cmderGitStatusOptIn and get_git_status() or {}
|
||||||
end)
|
end)
|
||||||
if not info then
|
if not info then
|
||||||
info = cached_info.git_info or {}
|
info = cached_info.git_info or {}
|
||||||
@ -409,42 +474,6 @@ local function get_git_info_table()
|
|||||||
return info
|
return info
|
||||||
end
|
end
|
||||||
|
|
||||||
---
|
|
||||||
-- Get the status of working dir
|
|
||||||
-- @return {bool}
|
|
||||||
---
|
|
||||||
local function get_git_status_setting()
|
|
||||||
-- When async prompt filtering is available, check the
|
|
||||||
-- prompt_overrideGitStatusOptIn config setting for whether to ignore the
|
|
||||||
-- cmder.status and cmder.cmdstatus git config opt-in settings.
|
|
||||||
if clink.promptcoroutine and io.popenyield and settings.get("prompt.async") then
|
|
||||||
if prompt_overrideGitStatusOptIn then
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local gitStatusConfig = io.popen("git --no-pager config cmder.status 2>nul")
|
|
||||||
|
|
||||||
for line in gitStatusConfig:lines() do
|
|
||||||
if string.match(line, 'false') then
|
|
||||||
gitStatusConfig:close()
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local gitCmdStatusConfig = io.popen("git --no-pager config cmder.cmdstatus 2>nul")
|
|
||||||
for line in gitCmdStatusConfig:lines() do
|
|
||||||
if string.match(line, 'false') then
|
|
||||||
gitCmdStatusConfig:close()
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
end
|
|
||||||
gitStatusConfig:close()
|
|
||||||
gitCmdStatusConfig:close()
|
|
||||||
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
|
|
||||||
local function git_prompt_filter()
|
local function git_prompt_filter()
|
||||||
|
|
||||||
-- Don't do any git processing if the prompt doesn't want to show git info.
|
-- Don't do any git processing if the prompt doesn't want to show git info.
|
||||||
@ -462,7 +491,6 @@ local function git_prompt_filter()
|
|||||||
|
|
||||||
local git_dir = get_git_dir()
|
local git_dir = get_git_dir()
|
||||||
local color
|
local color
|
||||||
cmderGitStatusOptIn = get_git_status_setting()
|
|
||||||
if git_dir then
|
if git_dir then
|
||||||
local branch = get_git_branch(git_dir)
|
local branch = get_git_branch(git_dir)
|
||||||
if branch then
|
if branch then
|
||||||
@ -472,29 +500,26 @@ local function git_prompt_filter()
|
|||||||
cached_info.git_dir = git_dir
|
cached_info.git_dir = git_dir
|
||||||
cached_info.git_branch = branch
|
cached_info.git_branch = branch
|
||||||
end
|
end
|
||||||
-- Use git status if allowed.
|
|
||||||
if cmderGitStatusOptIn then
|
|
||||||
-- if we're inside of git repo then try to detect current branch
|
|
||||||
-- Has branch => therefore it is a git folder, now figure out status
|
|
||||||
local gitInfo = get_git_info_table()
|
|
||||||
local gitStatus = gitInfo.status
|
|
||||||
local gitConflict = gitInfo.conflict
|
|
||||||
|
|
||||||
if gitStatus == nil then
|
-- If we're inside of git repo then try to detect current branch
|
||||||
color = colors.nostatus
|
-- Has branch => therefore it is a git folder, now figure out status
|
||||||
elseif gitStatus then
|
local gitInfo = get_git_info_table()
|
||||||
color = colors.clean
|
local gitStatus = gitInfo.status
|
||||||
else
|
local gitConflict = gitInfo.conflict
|
||||||
color = colors.dirty
|
|
||||||
end
|
|
||||||
|
|
||||||
if gitConflict then
|
if gitStatus == nil then
|
||||||
color = colors.conflict
|
|
||||||
end
|
|
||||||
else
|
|
||||||
color = colors.nostatus
|
color = colors.nostatus
|
||||||
|
elseif gitStatus then
|
||||||
|
color = colors.clean
|
||||||
|
else
|
||||||
|
color = colors.dirty
|
||||||
end
|
end
|
||||||
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", color.."("..verbatim(branch)..")")
|
|
||||||
|
if gitConflict then
|
||||||
|
color = colors.conflict
|
||||||
|
end
|
||||||
|
|
||||||
|
clink.prompt.value = string.gsub(clink.prompt.value, "{git}", " "..color.."("..verbatim(branch)..")")
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -521,10 +546,7 @@ local function hg_prompt_filter()
|
|||||||
dirty = get_dirty_color(),
|
dirty = get_dirty_color(),
|
||||||
nostatus = get_unknown_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
|
||||||
@ -545,7 +567,7 @@ 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
|
||||||
|
|
||||||
@ -563,23 +585,48 @@ local function svn_prompt_filter()
|
|||||||
nostatus = get_unknown_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
|
||||||
@ -605,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
|
||||||
|
6
vendor/cmder.sh
vendored
6
vendor/cmder.sh
vendored
@ -33,11 +33,11 @@ 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
|
||||||
|
|
||||||
|
33
vendor/cmder_prompt_config.lua.default
vendored
33
vendor/cmder_prompt_config.lua.default
vendored
@ -29,27 +29,34 @@ prompt_useUserAtHost = false
|
|||||||
-- default is false
|
-- default is false
|
||||||
prompt_singleLine = 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.
|
-- 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
|
-- default is false
|
||||||
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
||||||
prompt_overrideGitStatusOptIn = false
|
prompt_overrideGitStatusOptIn = false
|
||||||
|
|
||||||
-- OPTIONAL. If true then Cmder includes git, mercurial, and subversion status in the prompt.
|
-- 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 true
|
-- default is false
|
||||||
prompt_includeVersionControl = true
|
-- NOTE: This only takes effect if using Clink v1.2.10 or higher.
|
||||||
|
prompt_overrideSvnStatusOptIn = false
|
||||||
|
|
||||||
-- Prompt Attributes
|
-- Prompt Attributes
|
||||||
--
|
--
|
||||||
-- Colors
|
-- Colors: https://github.com/cmderdev/cmder/wiki/Customization#list-of-colors
|
||||||
-- Green: "\x1b[1;33;40m"
|
-- Effects: https://github.com/cmderdev/cmder/wiki/Customization#list-of-effects
|
||||||
-- Yellow: "\x1b[1;32;40m"
|
--
|
||||||
-- Light Grey: "\x1b[1;30;40m"
|
-- Green: "\x1b[1;33;49m"
|
||||||
|
-- Yellow: "\x1b[1;32;49m"
|
||||||
|
-- Light Grey: "\x1b[1;30;49m"
|
||||||
|
|
||||||
-- Prompt Element Colors
|
-- Prompt Element Colors
|
||||||
uah_color = "\x1b[1;33;40m" -- Green = uah = [user]@[hostname]
|
uah_color = "\x1b[1;33;49m" -- Green = uah = [user]@[hostname]
|
||||||
cwd_color = "\x1b[1;32;40m" -- Yellow cwd = Current Working Directory
|
cwd_color = "\x1b[1;32;49m" -- Yellow cwd = Current Working Directory
|
||||||
lamb_color = "\x1b[1;30;40m" -- Light Grey = Lambda Color
|
lamb_color = "\x1b[1;30;49m" -- Light Grey = Lambda Color
|
||||||
clean_color = "\x1b[1;37;40m"
|
clean_color = "\x1b[37;1m"
|
||||||
dirty_color = "\x1b[33;3m"
|
dirty_color = "\x1b[33;3m" -- Yellow, Italic
|
||||||
conflict_color = "\x1b[31;1m"
|
conflict_color = "\x1b[31;1m" -- Red, Bold
|
||||||
unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color
|
unknown_color = "\x1b[37;1m" -- White = No VCS Status Branch Color
|
||||||
|
1
vendor/git-for-windows_1.29.1
vendored
1
vendor/git-for-windows_1.29.1
vendored
@ -1 +0,0 @@
|
|||||||
../../../dtgam/bin/git-2.29.0
|
|
18
vendor/git-prompt.sh
vendored
18
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
|
||||||
@ -12,16 +12,16 @@ function getGitStatusSetting() {
|
|||||||
function getSimpleGitBranch() {
|
function getSimpleGitBranch() {
|
||||||
gitDir=$(git rev-parse --git-dir 2>/dev/null)
|
gitDir=$(git rev-parse --git-dir 2>/dev/null)
|
||||||
if [ -z "$gitDir" ]; then
|
if [ -z "$gitDir" ]; then
|
||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
headContent=$(< "$gitDir/HEAD")
|
headContent=$(< "$gitDir/HEAD")
|
||||||
if [[ "$headContent" == "ref: refs/heads/"* ]]
|
if [[ "$headContent" == "ref: refs/heads/"* ]]
|
||||||
then
|
then
|
||||||
echo " (${headContent:16})"
|
echo " (${headContent:16})"
|
||||||
else
|
else
|
||||||
echo " (HEAD detached at ${headContent:0:7})"
|
echo " (HEAD detached at ${headContent:0:7})"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
if test -f /etc/profile.d/git-sdk.sh
|
if test -f /etc/profile.d/git-sdk.sh
|
||||||
@ -68,7 +68,7 @@ else
|
|||||||
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
|
295
vendor/init.bat
vendored
295
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,165 +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.
|
|
||||||
)
|
)
|
||||||
|
|
||||||
if not exist "%CMDER_USER_CONFIG%\cmder_prompt_config.lua" (
|
:: Run Clink
|
||||||
echo Creating Cmder prompt config file: "%CMDER_USER_CONFIG%\cmder_prompt_config.lua"
|
if not exist "%CMDER_CONFIG_DIR%\settings" if not exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_USER_CONFIG%\cmder_prompt_config.lua"
|
echo Generating Clink initial settings in "%CMDER_CONFIG_DIR%\clink_settings"
|
||||||
|
copy "%CMDER_ROOT%\vendor\clink_settings.default" "%CMDER_CONFIG_DIR%\clink_settings"
|
||||||
|
echo Additional *.lua files in "%CMDER_CONFIG_DIR%" are loaded on startup.
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Cleanup lagacy Clink Settings file
|
if not exist "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua" (
|
||||||
if exist "%CMDER_USER_CONFIG%\settings" if exist "%CMDER_USER_CONFIG%\clink_settings" (
|
echo Creating Cmder prompt config file: "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||||
del "%CMDER_USER_CONFIG%\settings"
|
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_CONFIG_DIR%\cmder_prompt_config.lua"
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Cleanup legacy CLink history file
|
:: Cleanup lagacy Clink Settings file
|
||||||
if exist "%CMDER_USER_CONFIG%\.history" if exist "%CMDER_USER_CONFIG%\clink_history" (
|
if exist "%CMDER_CONFIG_DIR%\settings" if exist "%CMDER_CONFIG_DIR%\clink_settings" (
|
||||||
del "%CMDER_USER_CONFIG%\.history"
|
del "%CMDER_CONFIG_DIR%\settings"
|
||||||
)
|
|
||||||
"%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.
|
|
||||||
)
|
|
||||||
|
|
||||||
if not exist "%CMDER_ROOT%\config\cmder_prompt_config.lua" (
|
|
||||||
echo Creating Cmder prompt config file: "%CMDER_ROOT%\config\cmder_prompt_config.lua"
|
|
||||||
copy "%CMDER_ROOT%\vendor\cmder_prompt_config.lua.default" "%CMDER_ROOT%\config\cmder_prompt_config.lua"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Cleanup lagacy Clink Settings file
|
:: Cleanup legacy Clink history file
|
||||||
if exist "%CMDER_ROOT%\config\settings" if exist "%CMDER_ROOT%\config\clink_settings" (
|
if exist "%CMDER_CONFIG_DIR%\.history" if exist "%CMDER_CONFIG_DIR%\clink_history" (
|
||||||
del "%CMDER_ROOT%\config\settings"
|
del "%CMDER_CONFIG_DIR%\.history"
|
||||||
)
|
)
|
||||||
|
|
||||||
REM Cleanup legacy Clink history file
|
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_CONFIG_DIR%" --scripts "%CMDER_ROOT%\vendor"
|
||||||
if exist "%CMDER_ROOT%\config\.history" if exist "%CMDER_ROOT%\config\clink_history" (
|
|
||||||
del "%CMDER_ROOT%\config\.history"
|
|
||||||
)
|
|
||||||
|
|
||||||
"%CMDER_ROOT%\vendor\clink\clink_%clink_architecture%.exe" inject --quiet --profile "%CMDER_ROOT%\config" --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"
|
||||||
@ -288,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%
|
||||||
|
|
||||||
@ -323,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
|
||||||
|
|
||||||
@ -331,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
|
||||||
@ -342,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
|
||||||
@ -410,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%" (
|
||||||
@ -424,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=
|
||||||
@ -444,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
|
||||||
|
26
vendor/lib/lib_git.cmd
vendored
26
vendor/lib/lib_git.cmd
vendored
@ -101,9 +101,9 @@ exit /b
|
|||||||
|
|
||||||
REM endlocal & set "%~1_MAJOR=!%~1_MAJOR!" & set "%~1_MINOR=!%~1_MINOR!" & set "%~1_PATCH=!%~1_PATCH!" & set "%~1_BUILD=!%~1_BUILD!"
|
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
|
||||||
|
|
||||||
|
60
vendor/lib/lib_path.cmd
vendored
60
vendor/lib/lib_path.cmd
vendored
@ -60,14 +60,14 @@ exit /b
|
|||||||
)
|
)
|
||||||
|
|
||||||
if "%fast_init%" == "1" (
|
if "%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
|
||||||
@ -78,23 +78,23 @@ exit /b
|
|||||||
|
|
||||||
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
|
||||||
@ -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
|
||||||
|
|
||||||
|
192
vendor/profile.ps1
vendored
192
vendor/profile.ps1
vendored
@ -1,70 +1,72 @@
|
|||||||
# 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)
|
|
||||||
|
$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 being 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;")
|
||||||
}
|
}
|
||||||
|
|
||||||
$gitVersionVendor = (readVersion -gitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd")
|
$gitVersionVendor = (readVersion -gitPath "$ENV:CMDER_ROOT\vendor\git-for-windows\cmd")
|
||||||
# write-host "GIT VENDOR: ${gitVersionVendor}"
|
Write-Debug "GIT VENDOR: ${gitVersionVendor}"
|
||||||
|
|
||||||
# Get user installed Git Version[s] and Compare with vendored if found.
|
# Get user installed Git Version[s] and Compare with vendored if found.
|
||||||
foreach ($git in (get-command -ErrorAction SilentlyContinue 'git')) {
|
foreach ($git in (Get-Command -ErrorAction SilentlyContinue 'git')) {
|
||||||
# write-host "GIT Path: " + $git.Path
|
Write-Debug "GIT PATH: {$git.Path}"
|
||||||
$gitDir = Split-Path -Path $git.Path
|
$gitDir = Split-Path -Path $git.Path
|
||||||
$gitDir = isGitShim -gitPath $gitDir
|
$gitDir = isGitShim -gitPath $gitDir
|
||||||
$gitVersionUser = (readVersion -gitPath $gitDir)
|
$gitVersionUser = (readVersion -gitPath $gitDir)
|
||||||
# write-host "GIT USER: ${gitVersionUser}"
|
Write-Debug "GIT USER: ${gitVersionUser}"
|
||||||
|
|
||||||
$useGitVersion = compare_git_versions -userVersion $gitVersionUser -vendorVersion $gitVersionVendor
|
$useGitVersion = compare_git_versions -userVersion $gitVersionUser -vendorVersion $gitVersionVendor
|
||||||
# write-host "Using GIT Version: ${useGitVersion}"
|
Write-Debug "Using Git Version: ${useGitVersion}"
|
||||||
|
|
||||||
# Use user installed Git
|
# Use user installed Git
|
||||||
if ($gitPathUser -eq $null) {
|
if ($null -eq $gitPathUser) {
|
||||||
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
if ($gitDir -match '\\mingw32\\bin' -or $gitDir -match '\\mingw64\\bin') {
|
||||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 12))
|
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 12))
|
||||||
} else {
|
} else {
|
||||||
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 4))
|
$gitPathUser = ($gitDir.subString(0,$gitDir.Length - 4))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($useGitVersion -eq $gitVersionUser) {
|
if ($useGitVersion -eq $gitVersionUser) {
|
||||||
# write-host "Using GIT Dir: ${gitDir}"
|
Write-Debug "Using Git Dir: ${gitDir}"
|
||||||
$ENV:GIT_INSTALL_ROOT = $gitPathUser
|
$ENV:GIT_INSTALL_ROOT = $gitPathUser
|
||||||
$ENV:GIT_INSTALL_TYPE = 'USER'
|
$ENV:GIT_INSTALL_TYPE = 'USER'
|
||||||
break
|
break
|
||||||
@ -72,38 +74,42 @@ foreach ($git in (get-command -ErrorAction SilentlyContinue 'git')) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# User vendored Git.
|
# User vendored Git.
|
||||||
if ($ENV:GIT_INSTALL_ROOT -eq $null -and $gitVersionVendor -ne $null) {
|
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_ROOT = "$ENV:CMDER_ROOT\vendor\git-for-windows"
|
||||||
$ENV:GIT_INSTALL_TYPE = 'VENDOR'
|
$ENV:GIT_INSTALL_TYPE = 'VENDOR'
|
||||||
}
|
}
|
||||||
|
|
||||||
# write-host "GIT_INSTALL_ROOT: ${ENV:GIT_INSTALL_ROOT}"
|
Write-Debug "GIT_INSTALL_ROOT: ${ENV:GIT_INSTALL_ROOT}"
|
||||||
# write-host "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
Write-Debug "GIT_INSTALL_TYPE: ${ENV:GIT_INSTALL_TYPE}"
|
||||||
|
|
||||||
if (-not($ENV:GIT_INSTALL_ROOT -eq $null)) {
|
if ($null -ne $ENV:GIT_INSTALL_ROOT) {
|
||||||
$env:Path = Configure-Git -gitRoot "$ENV:GIT_INSTALL_ROOT" -gitType $ENV:GIT_INSTALL_TYPE -gitPathUser $gitPathUser
|
$env:Path = Configure-Git -gitRoot "$ENV:GIT_INSTALL_ROOT" -gitType $ENV:GIT_INSTALL_TYPE -gitPathUser $gitPathUser
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( Get-command -Name "vim" -ErrorAction silentlycontinue) {
|
if (Get-Command -Name "vim" -ErrorAction SilentlyContinue) {
|
||||||
new-alias -name "vi" -value vim
|
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
|
||||||
@ -111,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"
|
||||||
@ -156,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
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -180,39 +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)
|
$CMDER_INIT_END = $(Get-Date -UFormat %s)
|
||||||
# write-host "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)"
|
Write-Verbose "Elapsed Time: $(get-Date) `($($CMDER_INIT_END - $CMDER_INIT_START) total`)"
|
||||||
|
123
vendor/psmodules/Cmder.ps1
vendored
123
vendor/psmodules/Cmder.ps1
vendored
@ -1,7 +1,7 @@
|
|||||||
function readVersion($gitPath) {
|
function readVersion($gitPath) {
|
||||||
$gitExecutable = "${gitPath}\git.exe"
|
$gitExecutable = "${gitPath}\git.exe"
|
||||||
|
|
||||||
if (!(test-path "$gitExecutable")) {
|
if (-not (Test-Path "$gitExecutable")) {
|
||||||
return $null
|
return $null
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -20,44 +20,44 @@ function readVersion($gitPath) {
|
|||||||
function isGitShim($gitPath) {
|
function isGitShim($gitPath) {
|
||||||
# check if there's shim - and if yes follow the path
|
# check if there's shim - and if yes follow the path
|
||||||
|
|
||||||
if (test-path "${gitPath}\git.shim") {
|
if (Test-Path "${gitPath}\git.shim") {
|
||||||
$shim = (get-content "${gitPath}\git.shim")
|
$shim = (get-content "${gitPath}\git.shim")
|
||||||
($trash, $gitPath) = $shim.replace(' ','').split('=')
|
($trash, $gitPath) = $shim.replace(' ', '').split('=')
|
||||||
|
|
||||||
$gitPath=$gitPath.replace('\git.exe','')
|
$gitPath = $gitPath.replace('\git.exe', '')
|
||||||
}
|
}
|
||||||
|
|
||||||
return $gitPath.toString()
|
return $gitPath.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
function compareVersions($userVersion, $vendorVersion) {
|
function compareVersions($userVersion, $vendorVersion) {
|
||||||
if (-not($userVersion -eq $null)) {
|
if ($null -ne $userVersion) {
|
||||||
($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4)
|
($userMajor, $userMinor, $userPatch, $userBuild) = $userVersion.split('.', 4)
|
||||||
} else {
|
} else {
|
||||||
return -1
|
return -1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (-not($vendorVersion -eq $null)) {
|
if ($null -ne $vendorVersion) {
|
||||||
($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4)
|
($vendorMajor, $vendorMinor, $vendorPatch, $vendorBuild) = $vendorVersion.split('.', 4)
|
||||||
} else {
|
} else {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
|
if (($userMajor -eq $vendorMajor) -and ($userMinor -eq $vendorMinor) -and ($userPatch -eq $vendorPatch) -and ($userBuild -eq $vendorBuild)) {
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($userMajor -gt $vendorMajor) {return 1}
|
if ($userMajor -gt $vendorMajor) { return 1 }
|
||||||
if ($userMajor -lt $vendorMajor) {return -1}
|
if ($userMajor -lt $vendorMajor) { return -1 }
|
||||||
|
|
||||||
if ($userMinor -gt $vendorMinor) {return 1}
|
if ($userMinor -gt $vendorMinor) { return 1 }
|
||||||
if ($userMinor -lt $vendorMinor) {return -1}
|
if ($userMinor -lt $vendorMinor) { return -1 }
|
||||||
|
|
||||||
if ($userPatch -gt $vendorPatch) {return 1}
|
if ($userPatch -gt $vendorPatch) { return 1 }
|
||||||
if ($userPatch -lt $vendorPatch) {return -1}
|
if ($userPatch -lt $vendorPatch) { return -1 }
|
||||||
|
|
||||||
if ($userBuild -gt $vendorBuild) {return 1}
|
if ($userBuild -gt $vendorBuild) { return 1 }
|
||||||
if ($userBuild -lt $vendorBuild) {return -1}
|
if ($userBuild -lt $vendorBuild) { return -1 }
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@ -65,45 +65,48 @@ function compareVersions($userVersion, $vendorVersion) {
|
|||||||
function compare_git_versions($userVersion, $vendorVersion) {
|
function compare_git_versions($userVersion, $vendorVersion) {
|
||||||
$result = compareVersions -userVersion $userVersion -vendorVersion $vendorVersion
|
$result = compareVersions -userVersion $userVersion -vendorVersion $vendorVersion
|
||||||
|
|
||||||
# write-host "Compare Versions Result: ${result}"
|
Write-Debug "Compare Versions Result: ${result}"
|
||||||
if ($result -ge 0) {
|
if ($result -ge 0) {
|
||||||
return $userVersion
|
return $userVersion
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
return $vendorVersion
|
return $vendorVersion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function Configure-Git($gitRoot, $gitType, $gitPathUser){
|
function Configure-Git($gitRoot, $gitType, $gitPathUser) {
|
||||||
# Proposed Behavior
|
# Proposed Behavior
|
||||||
|
|
||||||
# Modify the path if we are using VENDORED Git do nothing if using USER Git.
|
# Modify the path if we are using VENDORED Git, do nothing if using USER Git.
|
||||||
# If User Git is installed but older match its path config adding paths
|
# 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
|
# in the same path positions allowing a user to configure Cmder Git path
|
||||||
# using locally installed Git Path Config.
|
# using locally installed Git Path Config.
|
||||||
if ($gitType -eq 'VENDOR') {
|
if ($gitType -eq 'VENDOR') {
|
||||||
# If User Git is installed replace its path config with Newer Vendored Git Path
|
# If User Git is installed replace its path config with Newer Vendored Git Path
|
||||||
if ($gitPathUser -ne '' -and $gitPathUser -ne $null) {
|
if (($null -ne $gitPathUser) -and ($gitPathUser -ne '')) {
|
||||||
# write-host "Cmder 'profile.ps1': Replacing older user Git path '$gitPathUser' with newer vendored Git path '$gitRoot' in the system path..."
|
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)
|
$newPath = ($env:path -ireplace [regex]::Escape($gitPathUser), $gitRoot)
|
||||||
} else {
|
}
|
||||||
if (!($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
|
else {
|
||||||
# write-host "Adding $gitRoot\cmd to the path"
|
if (-not ($env:Path -match [regex]::Escape("$gitRoot\cmd"))) {
|
||||||
|
Write-Debug "Adding $gitRoot\cmd to the path"
|
||||||
$newPath = $($gitRoot + "\cmd" + ";" + $env:Path)
|
$newPath = $($gitRoot + "\cmd" + ";" + $env:Path)
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add "$gitRoot\mingw[32|64]\bin" to the path if exists and not done already
|
# 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"))) {
|
if ((Test-Path "$gitRoot\mingw32\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw32\bin"))) {
|
||||||
# write-host "Adding $gitRoot\mingw32\bin to the path"
|
Write-Debug "Adding $gitRoot\mingw32\bin to the path"
|
||||||
$newPath = "$newPath;$gitRoot\mingw32\bin"
|
$newPath = "$newPath;$gitRoot\mingw32\bin"
|
||||||
} elseif ((test-path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
|
}
|
||||||
# write-host "Adding $gitRoot\mingw64\bin to the path"
|
elseif ((Test-Path "$gitRoot\mingw64\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\mingw64\bin"))) {
|
||||||
|
Write-Debug "Adding $gitRoot\mingw64\bin to the path"
|
||||||
$newPath = "$newPath;$gitRoot\mingw64\bin"
|
$newPath = "$newPath;$gitRoot\mingw64\bin"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Add "$gitRoot\usr\bin" to the path if exists and not done already
|
# 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"))) {
|
if ((Test-Path "$gitRoot\usr\bin") -and -not ($env:path -match [regex]::Escape("$gitRoot\usr\bin"))) {
|
||||||
# write-host "Adding $gitRoot\usr\bin to the path"
|
Write-Debug "Adding $gitRoot\usr\bin to the path"
|
||||||
$newPath = "$newPath;$gitRoot\usr\bin"
|
$newPath = "$newPath;$gitRoot\usr\bin"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -114,53 +117,59 @@ function Configure-Git($gitRoot, $gitType, $gitPathUser){
|
|||||||
return $env:path
|
return $env:path
|
||||||
}
|
}
|
||||||
|
|
||||||
function Import-Git(){
|
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($GitModule | select version | where version -ge ([version]"1.0.0")){
|
if ($GitModule | Select-Object version | Where-Object version -ge ([version]"1.0.0")) {
|
||||||
Import-Module Posh-Git > $null
|
Import-Module Posh-Git > $null
|
||||||
$GitPromptSettings.AnsiConsole = $false
|
$GitPromptSettings.AnsiConsole = $false
|
||||||
}
|
}
|
||||||
if(-not ($GitModule) ) {
|
if (-not $GitModule) {
|
||||||
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart cmder."
|
Write-Host -NoNewline "`r`n"
|
||||||
|
Write-Warning "Missing git support, install posh-git with 'Install-Module posh-git' and restart Cmder."
|
||||||
|
Write-Host -NoNewline "`r$([char]0x1B)[A"
|
||||||
|
return $false
|
||||||
}
|
}
|
||||||
# Make sure we only run once by alawys returning true
|
# Make sure we only run once by always returning true
|
||||||
return $true
|
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 (-not (Test-Path -Path (Join-Path $Path '.git'))) {
|
||||||
|
$SplitPath = Split-Path $path
|
||||||
if (getGitStatusSetting -eq $true) {
|
if ($SplitPath) { checkGit($SplitPath) }
|
||||||
Write-VcsStatus
|
return
|
||||||
} else {
|
}
|
||||||
|
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')
|
$headContent = Get-Content (Join-Path $Path '.git/HEAD')
|
||||||
if ($headContent -like "ref: refs/heads/*") {
|
if ($headContent -like "ref: refs/heads/*") {
|
||||||
$branchName = $headContent.Substring(16)
|
$branchName = $headContent.Substring(16)
|
||||||
} else {
|
}
|
||||||
|
else {
|
||||||
$branchName = "HEAD detached at $($headContent.Substring(0, 7))"
|
$branchName = "HEAD detached at $($headContent.Substring(0, 7))"
|
||||||
}
|
}
|
||||||
Write-Host " [$branchName]" -NoNewline -ForegroundColor White
|
Write-Host " [$branchName]" -NoNewline -ForegroundColor White
|
||||||
}
|
|
||||||
|
|
||||||
return
|
|
||||||
}
|
|
||||||
$SplitPath = split-path $path
|
|
||||||
if ($SplitPath) {
|
|
||||||
checkGit($SplitPath)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
vendor/psmodules/PsGet/PsGet.psm1
vendored
2
vendor/psmodules/PsGet/PsGet.psm1
vendored
@ -1818,7 +1818,7 @@ function Expand-ZipModule {
|
|||||||
|
|
||||||
# Check if powershell v3+ and .net v4.5 is available
|
# 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 {
|
||||||
|
40
vendor/sources.json
vendored
40
vendor/sources.json
vendored
@ -1,22 +1,22 @@
|
|||||||
[
|
[
|
||||||
{
|
{
|
||||||
"name": "git-for-windows",
|
"name": "git-for-windows",
|
||||||
"version": "v2.34.0.windows.1",
|
"version": "2.39.0.windows.1",
|
||||||
"url": "https://github.com/git-for-windows/git/releases/download/v2.34.0.windows.1/PortableGit-2.34.0-64-bit.7z.exe"
|
"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.2.46",
|
"version": "1.4.4",
|
||||||
"url": "https://github.com/chrisant996/clink/releases/download/v1.2.46/clink.1.2.46.69fc92.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": "210912",
|
"version": "22.12.18",
|
||||||
"url": "https://github.com/Maximus5/ConEmu/releases/download/v21.09.12/ConEmuPack.210912.7z"
|
"url": "https://github.com/Maximus5/ConEmu/releases/download/v22.12.18/ConEmuPack.221218.7z"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "clink-completions",
|
"name": "clink-completions",
|
||||||
"version": "0.3.7",
|
"version": "0.4.2",
|
||||||
"url": "https://github.com/vladimir-kotikov/clink-completions/archive/0.3.7.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'''"
|
||||||
|
Reference in New Issue
Block a user