mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2026-05-31 08:18:26 +00:00
Compare commits
107 Commits
2daffdf101
...
copilot/fi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c95203294b | ||
|
|
7b4ce37547 | ||
|
|
fe11a3ae23 | ||
|
|
87a9b16b72 | ||
|
|
857a646516 | ||
|
|
5ef67beadb | ||
|
|
d633270784 | ||
|
|
43c68566be | ||
|
|
cb64103161 | ||
|
|
0eecd2821e | ||
|
|
2a5313a9d0 | ||
|
|
24959d5817 | ||
|
|
efd6135bf5 | ||
|
|
c68e752b1b | ||
|
|
8d0ff417c3 | ||
|
|
80a6f169c7 | ||
|
|
c4e39ad56b | ||
|
|
7478f1fd22 | ||
|
|
a07126330b | ||
|
|
1381fec0bf | ||
|
|
3604dc23e0 | ||
|
|
8ab16fa493 | ||
|
|
e64912e0c1 | ||
|
|
c24960c324 | ||
|
|
571439d06b | ||
|
|
ff8297b0a9 | ||
|
|
e7aa0c56e6 | ||
|
|
2d5841740a | ||
|
|
278ee100fc | ||
|
|
52c830cd32 | ||
|
|
8c3cce964a | ||
|
|
d50115afd6 | ||
|
|
232c6e4d8d | ||
|
|
50c56eb49b | ||
|
|
bbe8cace5a | ||
|
|
349b9e49ce | ||
|
|
a4ee4daf3c | ||
|
|
7a6357cbf6 | ||
|
|
106b887c1f | ||
|
|
e42ac8c57b | ||
|
|
061f773dd3 | ||
|
|
c53cfb2de4 | ||
|
|
1708d84b70 | ||
|
|
46c673072e | ||
|
|
7c10d9839f | ||
|
|
103246c198 | ||
|
|
887a864aba | ||
|
|
d1fb3ebfc7 | ||
|
|
beab0c0b3c | ||
|
|
f0e2160abb | ||
|
|
9e2c1548c3 | ||
|
|
cb13cc539f | ||
|
|
76ffd9e22a | ||
|
|
11c1718983 | ||
|
|
9151236d1e | ||
|
|
7e7cb5a23c | ||
|
|
2614f529ce | ||
|
|
df64afb062 | ||
|
|
21dbafa904 | ||
|
|
cfad9e07f6 | ||
|
|
44394e7225 | ||
|
|
4daba14316 | ||
|
|
bec3f2244a | ||
|
|
b42f22643a | ||
|
|
7de13621b3 | ||
|
|
8df5c1b18b | ||
|
|
d1222044bc | ||
|
|
44c0e856f8 | ||
|
|
2bc4538c36 | ||
|
|
1e3abc123f | ||
|
|
abc2372919 | ||
|
|
5292fea2ba | ||
|
|
4f8632db32 | ||
|
|
bf2948322b | ||
|
|
25d4d753bf | ||
|
|
3fd2331ae8 | ||
|
|
6bb9718dd2 | ||
|
|
5c4f27b716 | ||
|
|
400591e71c | ||
|
|
536515d186 | ||
|
|
2117ee5cf7 | ||
|
|
7f8d6b1fca | ||
|
|
52d93f18d6 | ||
|
|
44f2a128aa | ||
|
|
45dd7d006a | ||
|
|
993afc8267 | ||
|
|
a8aca3fba5 | ||
|
|
cdd31a7ab3 | ||
|
|
88659ed193 | ||
|
|
41c5b9677a | ||
|
|
116be8badd | ||
|
|
9df4ea095f | ||
|
|
1a253c375a | ||
|
|
67cd8c4673 | ||
|
|
0074e724f8 | ||
|
|
db66764f46 | ||
|
|
e076690551 | ||
|
|
233e81db4e | ||
|
|
99b243b9a9 | ||
|
|
4677b798aa | ||
|
|
834fbf3711 | ||
|
|
47e990ccad | ||
|
|
ec14da72fb | ||
|
|
35068db837 | ||
|
|
871d4b9816 | ||
|
|
ed21aa1961 | ||
|
|
6634f44826 |
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
1
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -7,6 +7,7 @@
|
|||||||
- [ ] I have read the contribution guide and followed all the instructions.
|
- [ ] I have read the contribution guide and followed all the instructions.
|
||||||
- [ ] The code follows the code style guide detailed in the wiki.
|
- [ ] The code follows the code style guide detailed in the wiki.
|
||||||
- [ ] The code is mine or it's from somewhere with an MIT-compatible license.
|
- [ ] The code is mine or it's from somewhere with an MIT-compatible license.
|
||||||
|
- [ ] If I used AI tools (ChatGPT, Claude, Gemini, etc.) to assist with this contribution, I've disclosed it below.
|
||||||
- [ ] The code is efficient, to the best of my ability, and does not waste computer resources.
|
- [ ] The code is efficient, to the best of my ability, and does not waste computer resources.
|
||||||
- [ ] The code is stable and I have tested it myself, to the best of my abilities.
|
- [ ] The code is stable and I have tested it myself, to the best of my abilities.
|
||||||
- [ ] If the code introduces new aliases, I provide a valid use case for all plugin users down below.
|
- [ ] If the code introduces new aliases, I provide a valid use case for all plugin users down below.
|
||||||
|
|||||||
8
.github/dependencies.yml
vendored
8
.github/dependencies.yml
vendored
@@ -12,14 +12,14 @@ dependencies:
|
|||||||
plugins/gradle:
|
plugins/gradle:
|
||||||
repo: gradle/gradle-completion
|
repo: gradle/gradle-completion
|
||||||
branch: master
|
branch: master
|
||||||
version: a9d7c822e42cc6a5b028b59e46cffcc8e7bc1134
|
version: d8bc301a1fdeed8dc1dd9675138e1d9b7ddc5e4e
|
||||||
precopy: |
|
precopy: |
|
||||||
set -e
|
set -e
|
||||||
find . ! -name _gradle ! -name LICENSE -delete
|
find . ! -name _gradle ! -name LICENSE -delete
|
||||||
plugins/history-substring-search:
|
plugins/history-substring-search:
|
||||||
repo: zsh-users/zsh-history-substring-search
|
repo: zsh-users/zsh-history-substring-search
|
||||||
branch: master
|
branch: master
|
||||||
version: 87ce96b1862928d84b1afe7c173316614b30e301
|
version: 14c8d2e0ffaee98f2df9850b19944f32546fdea5
|
||||||
precopy: |
|
precopy: |
|
||||||
set -e
|
set -e
|
||||||
rm -f zsh-history-substring-search.plugin.zsh
|
rm -f zsh-history-substring-search.plugin.zsh
|
||||||
@@ -30,7 +30,7 @@ dependencies:
|
|||||||
plugins/kube-ps1:
|
plugins/kube-ps1:
|
||||||
repo: jonmosco/kube-ps1
|
repo: jonmosco/kube-ps1
|
||||||
branch: master
|
branch: master
|
||||||
version: 0b0e6daf4197ecabb1ae4f2d46fb148a8e1e73e5
|
version: 04af46f7fe888ad287abcab6699b9bb10234bc3d
|
||||||
precopy: |
|
precopy: |
|
||||||
set -e
|
set -e
|
||||||
find . ! -name kube-ps1.sh ! -name LICENSE ! -name README.md -delete
|
find . ! -name kube-ps1.sh ! -name LICENSE ! -name README.md -delete
|
||||||
@@ -46,7 +46,7 @@ dependencies:
|
|||||||
plugins/z:
|
plugins/z:
|
||||||
branch: master
|
branch: master
|
||||||
repo: agkozak/zsh-z
|
repo: agkozak/zsh-z
|
||||||
version: cf9225feebfae55e557e103e95ce20eca5eff270
|
version: acd0e1984df350c189f8f9c4956ec586b6c73fca
|
||||||
precopy: |
|
precopy: |
|
||||||
set -e
|
set -e
|
||||||
test -e README.md && mv -f README.md MANUAL.md
|
test -e README.md && mv -f README.md MANUAL.md
|
||||||
|
|||||||
13
.github/workflows/dependencies.yml
vendored
13
.github/workflows/dependencies.yml
vendored
@@ -4,6 +4,9 @@ on:
|
|||||||
schedule:
|
schedule:
|
||||||
- cron: "0 6 * * 0"
|
- cron: "0 6 * * 0"
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check:
|
check:
|
||||||
name: Check for updates
|
name: Check for updates
|
||||||
@@ -13,22 +16,22 @@ jobs:
|
|||||||
contents: write # this is needed to push commits and branches
|
contents: write # this is needed to push commits and branches
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Authenticate as @ohmyzsh
|
- name: Authenticate as @ohmyzsh
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.OHMYZSH_APP_ID }}
|
client-id: ${{ secrets.OHMYZSH_CLIENT_ID }}
|
||||||
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}
|
||||||
- name: Setup Python
|
- name: Setup Python
|
||||||
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
|
uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
||||||
with:
|
with:
|
||||||
python-version: "3.12"
|
python-version: "3.12"
|
||||||
cache: "pip"
|
cache: "pip"
|
||||||
|
|||||||
10
.github/workflows/dependencies/requirements.txt
vendored
10
.github/workflows/dependencies/requirements.txt
vendored
@@ -1,7 +1,7 @@
|
|||||||
certifi==2026.1.4
|
certifi==2026.4.22
|
||||||
charset-normalizer==3.4.4
|
charset-normalizer==3.4.7
|
||||||
idna==3.11
|
idna==3.15
|
||||||
PyYAML==6.0.3
|
PyYAML==6.0.3
|
||||||
requests==2.32.5
|
requests==2.34.2
|
||||||
semver==3.0.4
|
semver==3.0.4
|
||||||
urllib3==2.6.2
|
urllib3==2.7.0
|
||||||
|
|||||||
8
.github/workflows/installer.yml
vendored
8
.github/workflows/installer.yml
vendored
@@ -26,12 +26,12 @@ jobs:
|
|||||||
- macos-latest
|
- macos-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
- name: Set up git repository
|
- name: Set up git repository
|
||||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
- name: Install zsh
|
- name: Install zsh
|
||||||
if: runner.os == 'Linux'
|
if: runner.os == 'Linux'
|
||||||
run: sudo apt-get update; sudo apt-get install zsh
|
run: sudo apt-get update; sudo apt-get install zsh
|
||||||
@@ -47,12 +47,12 @@ jobs:
|
|||||||
- test
|
- test
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
- name: Install Vercel CLI
|
- name: Install Vercel CLI
|
||||||
run: npm install -g vercel
|
run: npm install -g vercel
|
||||||
- name: Setup project and deploy
|
- name: Setup project and deploy
|
||||||
|
|||||||
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
@@ -24,12 +24,12 @@ jobs:
|
|||||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
- name: Set up git repository
|
- name: Set up git repository
|
||||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
- name: Install zsh
|
- name: Install zsh
|
||||||
run: sudo apt-get update; sudo apt-get install zsh
|
run: sudo apt-get update; sudo apt-get install zsh
|
||||||
- name: Check syntax
|
- name: Check syntax
|
||||||
|
|||||||
6
.github/workflows/project.yml
vendored
6
.github/workflows/project.yml
vendored
@@ -17,14 +17,14 @@ jobs:
|
|||||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
- name: Authenticate as @ohmyzsh
|
- name: Authenticate as @ohmyzsh
|
||||||
id: generate-token
|
id: generate-token
|
||||||
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
uses: actions/create-github-app-token@bcd2ba49218906704ab6c1aa796996da409d3eb1 # v3.2.0
|
||||||
with:
|
with:
|
||||||
app-id: ${{ secrets.OHMYZSH_APP_ID }}
|
client-id: ${{ secrets.OHMYZSH_CLIENT_ID }}
|
||||||
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}
|
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}
|
||||||
- name: Read project data
|
- name: Read project data
|
||||||
env:
|
env:
|
||||||
|
|||||||
8
.github/workflows/scorecard.yml
vendored
8
.github/workflows/scorecard.yml
vendored
@@ -36,12 +36,12 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@20cf305ff2072d973412fa9b1e3a4f227bda3c76 # v2.14.0
|
uses: step-security/harden-runner@9af89fc71515a100421586dfdb3dc9c984fbf411 # v2.19.4
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
- name: "Checkout code"
|
- name: "Checkout code"
|
||||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
||||||
with:
|
with:
|
||||||
persist-credentials: false
|
persist-credentials: false
|
||||||
|
|
||||||
@@ -53,13 +53,13 @@ jobs:
|
|||||||
publish_results: true
|
publish_results: true
|
||||||
|
|
||||||
- name: "Upload artifact"
|
- name: "Upload artifact"
|
||||||
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f # v6.0.0
|
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
||||||
with:
|
with:
|
||||||
name: SARIF file
|
name: SARIF file
|
||||||
path: results.sarif
|
path: results.sarif
|
||||||
retention-days: 5
|
retention-days: 5
|
||||||
|
|
||||||
- name: "Upload to code-scanning"
|
- name: "Upload to code-scanning"
|
||||||
uses: github/codeql-action/upload-sarif@5d4e8d1aca955e8d8589aabd499c5cae939e33c7 # v4.31.9
|
uses: github/codeql-action/upload-sarif@7211b7c8077ea37d8641b6271f6a365a22a5fbfa # v4.36.0
|
||||||
with:
|
with:
|
||||||
sarif_file: results.sarif
|
sarif_file: results.sarif
|
||||||
|
|||||||
6
.gitignore
vendored
6
.gitignore
vendored
@@ -4,7 +4,12 @@ custom/
|
|||||||
# temp files directories
|
# temp files directories
|
||||||
cache/
|
cache/
|
||||||
log/
|
log/
|
||||||
|
|
||||||
|
# Vim swap/backup files
|
||||||
*.swp
|
*.swp
|
||||||
|
*.swo
|
||||||
|
|
||||||
|
# macOS system files
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|
||||||
# editor configs
|
# editor configs
|
||||||
@@ -13,3 +18,4 @@ log/
|
|||||||
|
|
||||||
# zcompile cached files
|
# zcompile cached files
|
||||||
*.zwc
|
*.zwc
|
||||||
|
*.zwc.old
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ you would make is not already covered.
|
|||||||
- [Getting started](#getting-started)
|
- [Getting started](#getting-started)
|
||||||
- [You have a solution](#you-have-a-solution)
|
- [You have a solution](#you-have-a-solution)
|
||||||
- [You have an addition](#you-have-an-addition)
|
- [You have an addition](#you-have-an-addition)
|
||||||
|
- [A note on AI-assisted contributions](#a-note-on-ai-assisted-contributions)
|
||||||
- [Use the Search, Luke](#use-the-search-luke)
|
- [Use the Search, Luke](#use-the-search-luke)
|
||||||
- [Commit Guidelines](#commit-guidelines)
|
- [Commit Guidelines](#commit-guidelines)
|
||||||
- [Format](#format)
|
- [Format](#format)
|
||||||
@@ -125,6 +126,30 @@ Because of this, from now on, we require that new aliases follow these condition
|
|||||||
This list is not exhaustive! Please remember that your alias will be in the machines of many people,
|
This list is not exhaustive! Please remember that your alias will be in the machines of many people,
|
||||||
so it should be justified why they should have it.
|
so it should be justified why they should have it.
|
||||||
|
|
||||||
|
## A note on AI-assisted contributions
|
||||||
|
|
||||||
|
We'll admit it: AI tools can be pretty helpful for coding tasks, and we're not here to gatekeep how you get your work done. We use these tools ourselves! 🤖
|
||||||
|
|
||||||
|
But here's the thing—Oh My Zsh is maintained by a small team of volunteers who do this in their spare time. We already have hundreds of pending PRs, and we want to make sure we're spending our limited time effectively.
|
||||||
|
|
||||||
|
If you used AI tools meaningfully in your contribution (code generation, agentic coding assistants, etc.), please mention it in your PR description. Basic autocomplete doesn't count, but if an AI wrote substantial parts of your code, just let us know.
|
||||||
|
|
||||||
|
**Examples of good disclosure:**
|
||||||
|
- "Used ChatGPT to help generate the initial regex pattern for parsing git status output"
|
||||||
|
- "Claude assisted with writing the unit tests for this feature"
|
||||||
|
- "Generated with Gemini and then reviewed/tested manually"
|
||||||
|
- Or simply: "AI-assisted" in your PR description
|
||||||
|
|
||||||
|
Here's what we're looking for:
|
||||||
|
|
||||||
|
- **You understand your code**: You should be able to explain what your contribution does and how it works. We want to collaborate with humans who are invested in the project.
|
||||||
|
- **Context matters**: Tell us what problem you're solving, how you tested it, and link to relevant docs. Small, incremental changes work better than massive generated overhauls.
|
||||||
|
- **Quality over quantity**: We'd rather have one thoughtful, well-tested contribution than ten AI-generated PRs that need extensive review.
|
||||||
|
|
||||||
|
The disclosure helps us know how much guidance to offer. If we're just reviewing AI output that you can't explain or improve, that changes the dynamic—and frankly, it's not a great use of anyone's time.
|
||||||
|
|
||||||
|
As always, we reserve the right to decline any contribution. PRs that appear to be unreviewed AI output, or code the contributor can't explain, may be closed without extensive feedback.
|
||||||
|
|
||||||
----
|
----
|
||||||
|
|
||||||
## Use the Search, Luke
|
## Use the Search, Luke
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2009-2025 Robby Russell and contributors (https://github.com/ohmyzsh/ohmyzsh/contributors)
|
Copyright (c) 2009-2026 Robby Russell and contributors (https://github.com/ohmyzsh/ohmyzsh/contributors)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ Twitter), and join us on [Discord](https://discord.gg/ohmyzsh).
|
|||||||
- [Manual Installation](#manual-installation)
|
- [Manual Installation](#manual-installation)
|
||||||
- [Installation Problems](#installation-problems)
|
- [Installation Problems](#installation-problems)
|
||||||
- [Custom Plugins And Themes](#custom-plugins-and-themes)
|
- [Custom Plugins And Themes](#custom-plugins-and-themes)
|
||||||
- [Enable GNU ls In macOS And freeBSD Systems](#enable-gnu-ls-in-macos-and-freebsd-systems)
|
- [Enable GNU ls In macOS And FreeBSD Systems](#enable-gnu-ls-in-macos-and-freebsd-systems)
|
||||||
- [Skip Aliases](#skip-aliases)
|
- [Skip Aliases](#skip-aliases)
|
||||||
- [Async git prompt](#async-git-prompt)
|
- [Async git prompt](#async-git-prompt)
|
||||||
- [Getting Updates](#getting-updates)
|
- [Getting Updates](#getting-updates)
|
||||||
@@ -70,7 +70,7 @@ Twitter), and join us on [Discord](https://discord.gg/ohmyzsh).
|
|||||||
| O/S | Status |
|
| O/S | Status |
|
||||||
| :------------- | :----: |
|
| :------------- | :----: |
|
||||||
| Android | ✅ |
|
| Android | ✅ |
|
||||||
| freeBSD | ✅ |
|
| FreeBSD | ✅ |
|
||||||
| LCARS | 🛸 |
|
| LCARS | 🛸 |
|
||||||
| Linux | ✅ |
|
| Linux | ✅ |
|
||||||
| macOS | ✅ |
|
| macOS | ✅ |
|
||||||
@@ -349,7 +349,7 @@ If you have many functions that go well together, you can put them as a `XYZ.plu
|
|||||||
If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the
|
If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the
|
||||||
same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`.
|
same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`.
|
||||||
|
|
||||||
### Enable GNU ls In macOS And freeBSD Systems
|
### Enable GNU ls In macOS And FreeBSD Systems
|
||||||
|
|
||||||
<a name="enable-gnu-ls"></a>
|
<a name="enable-gnu-ls"></a>
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ function _omz_git_prompt_info() {
|
|||||||
&& upstream=" -> ${upstream}"
|
&& upstream=" -> ${upstream}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "${ZSH_THEME_GIT_PROMPT_PREFIX}${ref:gs/%/%%}${upstream:gs/%/%%}$(parse_git_dirty)${ZSH_THEME_GIT_PROMPT_SUFFIX}"
|
echo "${ZSH_THEME_GIT_PROMPT_PREFIX}${ref//\%/%%}${upstream//\%/%%}$(parse_git_dirty)${ZSH_THEME_GIT_PROMPT_SUFFIX}"
|
||||||
}
|
}
|
||||||
|
|
||||||
function _omz_git_prompt_status() {
|
function _omz_git_prompt_status() {
|
||||||
@@ -255,7 +255,7 @@ function git_remote_status() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -n $ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_DETAILED ]]; then
|
if [[ -n $ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_DETAILED ]]; then
|
||||||
git_remote_status="$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_PREFIX${remote:gs/%/%%}$git_remote_status_detailed$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_SUFFIX"
|
git_remote_status="$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_PREFIX${remote//\%/%%}$git_remote_status_detailed$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_SUFFIX"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo $git_remote_status
|
echo $git_remote_status
|
||||||
|
|||||||
@@ -40,9 +40,9 @@ if [[ -z "$LS_COLORS" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
function test-ls-args {
|
function test-ls-args {
|
||||||
local cmd="$1" # ls, gls, colorls, ...
|
# Usage: test-ls-args cmd args...
|
||||||
local args="${@[2,-1]}" # arguments except the first one
|
# e.g. test-ls-args gls --color
|
||||||
command "$cmd" "$args" /dev/null &>/dev/null
|
command "$@" /dev/null &>/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
# Find the option for using colors in ls, depending on the version
|
# Find the option for using colors in ls, depending on the version
|
||||||
|
|||||||
@@ -6,14 +6,4 @@ function _opswd() {
|
|||||||
[[ -z "$services" ]] || compadd -a -- services
|
[[ -z "$services" ]] || compadd -a -- services
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: 2022-03-26: Remove support for op CLI 1
|
|
||||||
autoload -Uz is-at-least
|
|
||||||
is-at-least 2.0.0 $(op --version) || {
|
|
||||||
function _opswd() {
|
|
||||||
local -a services
|
|
||||||
services=("${(@f)$(op list items --categories Login 2>/dev/null | op get item - --fields title 2>/dev/null)}")
|
|
||||||
[[ -z "$services" ]] || compadd -a -- services
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
_opswd "$@"
|
_opswd "$@"
|
||||||
|
|||||||
@@ -46,45 +46,4 @@ function opswd() {
|
|||||||
(sleep 20 && clipcopy </dev/null 2>/dev/null) &!
|
(sleep 20 && clipcopy </dev/null 2>/dev/null) &!
|
||||||
}
|
}
|
||||||
|
|
||||||
# TODO: 2022-03-26: Remove support for op CLI 1
|
|
||||||
autoload -Uz is-at-least
|
|
||||||
is-at-least 2.0.0 $(op --version) || {
|
|
||||||
print -ru2 ${(%):-"%F{yellow}opswd: usage with op version $(op --version) is deprecated. Upgrade to CLI 2 and reload zsh.
|
|
||||||
For instructions, see https://developer.1password.com/docs/cli/upgrade.%f"}
|
|
||||||
|
|
||||||
# opswd puts the password of the named service into the clipboard. If there's a
|
|
||||||
# one time password, it will be copied into the clipboard after 10 seconds. The
|
|
||||||
# clipboard is cleared after another 20 seconds.
|
|
||||||
function opswd() {
|
|
||||||
if [[ $# -lt 1 ]]; then
|
|
||||||
echo "Usage: opswd <service>"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
local service=$1
|
|
||||||
|
|
||||||
# If not logged in, print error and return
|
|
||||||
op list users > /dev/null || return
|
|
||||||
|
|
||||||
local password
|
|
||||||
# Copy the password to the clipboard
|
|
||||||
if ! password=$(op get item "$service" --fields password 2>/dev/null); then
|
|
||||||
echo "error: could not obtain password for $service"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo -n "$password" | clipcopy
|
|
||||||
echo "✔ password for $service copied to clipboard"
|
|
||||||
|
|
||||||
# If there's a one time password, copy it to the clipboard after 5 seconds
|
|
||||||
local totp
|
|
||||||
if totp=$(op get totp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then
|
|
||||||
sleep 10 && echo -n "$totp" | clipcopy
|
|
||||||
echo "✔ TOTP for $service copied to clipboard"
|
|
||||||
fi
|
|
||||||
|
|
||||||
(sleep 20 && clipcopy </dev/null 2>/dev/null) &!
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
opswd "$@"
|
opswd "$@"
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
alias-finder() {
|
alias-finder() {
|
||||||
local cmd=" " exact="" longer="" cheaper="" wordEnd="'{0,1}$" finder="" filter=""
|
local cmd=" " exact="" longer="" cheaper="" wordEnd="'?$" finder="" filter=""
|
||||||
|
|
||||||
# build command and options
|
# build command and options
|
||||||
for c in "$@"; do
|
for c in "$@"; do
|
||||||
@@ -31,7 +31,7 @@ alias-finder() {
|
|||||||
|
|
||||||
# find with alias and grep, removing last word each time until no more words
|
# find with alias and grep, removing last word each time until no more words
|
||||||
while [[ $cmd != "" ]]; do
|
while [[ $cmd != "" ]]; do
|
||||||
finder="'{0,1}$cmd$wordEnd"
|
finder="'?$cmd$wordEnd"
|
||||||
|
|
||||||
# make filter to find only shorter results than current cmd
|
# make filter to find only shorter results than current cmd
|
||||||
if [[ $cheaper == true ]]; then
|
if [[ $cheaper == true ]]; then
|
||||||
|
|||||||
@@ -6,7 +6,9 @@ import argparse
|
|||||||
|
|
||||||
def parse(line):
|
def parse(line):
|
||||||
left = line[0:line.find('=')].strip()
|
left = line[0:line.find('=')].strip()
|
||||||
right = line[line.find('=')+1:].strip('\'"\n ')
|
right = line[line.find('=')+1:].strip('\n ')
|
||||||
|
if len(right) >= 2 and right[0] == right[-1] and right[0] in '\'"':
|
||||||
|
right = right[1:-1]
|
||||||
try:
|
try:
|
||||||
cmd = next(part for part in right.split() if len([char for char in '=<>' if char in part])==0)
|
cmd = next(part for part in right.split() if len([char for char in '=<>' if char in part])==0)
|
||||||
except StopIteration:
|
except StopIteration:
|
||||||
|
|||||||
@@ -67,6 +67,9 @@ function bgnotify_appid {
|
|||||||
elif [[ -n $WAYLAND_DISPLAY ]] && ([[ -n $SWAYSOCK ]] || [[ -n $I3SOCK ]]) && (( ${+commands[swaymsg]} )); then # wayland+sway
|
elif [[ -n $WAYLAND_DISPLAY ]] && ([[ -n $SWAYSOCK ]] || [[ -n $I3SOCK ]]) && (( ${+commands[swaymsg]} )); then # wayland+sway
|
||||||
local app_id=$(bgnotify_find_sway_appid)
|
local app_id=$(bgnotify_find_sway_appid)
|
||||||
[[ -n "$app_id" ]] && echo "$app_id" || echo $EPOCHSECONDS
|
[[ -n "$app_id" ]] && echo "$app_id" || echo $EPOCHSECONDS
|
||||||
|
elif [[ -n $NIRI_SOCKET ]]; then # niri
|
||||||
|
local app_id=$(bgnotify_find_niri_appid)
|
||||||
|
[[ -n "$app_id" ]] && echo "$app_id" || echo $EPOCHSECONDS
|
||||||
elif [[ -z $WAYLAND_DISPLAY ]] && [[ -n $DISPLAY ]] && (( ${+commands[xprop]} )); then
|
elif [[ -z $WAYLAND_DISPLAY ]] && [[ -n $DISPLAY ]] && (( ${+commands[xprop]} )); then
|
||||||
xprop -root _NET_ACTIVE_WINDOW 2>/dev/null | cut -d' ' -f5
|
xprop -root _NET_ACTIVE_WINDOW 2>/dev/null | cut -d' ' -f5
|
||||||
else
|
else
|
||||||
@@ -106,6 +109,12 @@ function bgnotify_find_sway_appid {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function bgnotify_find_niri_appid {
|
||||||
|
if (( ${+commands[jq]} )); then
|
||||||
|
niri msg -j windows | jq '.[] | select(.is_focused) | {app_id, id} | join(",")'
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
function bgnotify_programid {
|
function bgnotify_programid {
|
||||||
case "$TERM_PROGRAM" in
|
case "$TERM_PROGRAM" in
|
||||||
iTerm.app) echo 'com.googlecode.iterm2' ;;
|
iTerm.app) echo 'com.googlecode.iterm2' ;;
|
||||||
|
|||||||
@@ -35,11 +35,14 @@ the `brew` binary before sourcing `oh-my-zsh.sh` and it'll set up the environmen
|
|||||||
| `bdr` | `brew doctor` | Check your system for potential problems. |
|
| `bdr` | `brew doctor` | Check your system for potential problems. |
|
||||||
| `bfu` | `brew upgrade --formula` | Upgrade only formulae (not casks). |
|
| `bfu` | `brew upgrade --formula` | Upgrade only formulae (not casks). |
|
||||||
| `bi` | `brew install` | Install a formula. |
|
| `bi` | `brew install` | Install a formula. |
|
||||||
|
| `bih` | `brew install --HEAD` | Install a formula with --HEAD |
|
||||||
| `bl` | `brew list` | List all installed formulae. |
|
| `bl` | `brew list` | List all installed formulae. |
|
||||||
| `bo` | `brew outdated` | List installed formulae that have an updated version available. |
|
| `bo` | `brew outdated` | List installed formulae that have an updated version available. |
|
||||||
|
| `br` | `brew reinstall` | Reinstall a formula. |
|
||||||
| `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. |
|
| `brewp` | `brew pin` | Pin a specified formula so that it's not upgraded. |
|
||||||
| `brews` | `brew list -1` | List installed formulae or the installed files for a given formula. |
|
| `brews` | _function_ | List installed leaf formulae with their dependencies, then casks. |
|
||||||
| `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. |
|
| `brewsp` | `brew list --pinned` | List pinned formulae, or show the version of a given formula. |
|
||||||
|
| `brh` | `brew reinstall --HEAD` | Reinstall a formula with --HEAD |
|
||||||
| `bs` | `brew search` | Perform a substring search of cask tokens and formula names for text. |
|
| `bs` | `brew search` | Perform a substring search of cask tokens and formula names for text. |
|
||||||
| `bsl` | `brew services list` | List all running services. |
|
| `bsl` | `brew services list` | List all running services. |
|
||||||
| `bsoff` | `brew services stop` | Stop the service and unregister it from launching at login (or boot). |
|
| `bsoff` | `brew services stop` | Stop the service and unregister it from launching at login (or boot). |
|
||||||
|
|||||||
@@ -48,10 +48,13 @@ alias bcup='brew upgrade --cask'
|
|||||||
alias bdr='brew doctor'
|
alias bdr='brew doctor'
|
||||||
alias bfu='brew upgrade --formula'
|
alias bfu='brew upgrade --formula'
|
||||||
alias bi='brew install'
|
alias bi='brew install'
|
||||||
|
alias bih='brew install --HEAD'
|
||||||
alias bl='brew list'
|
alias bl='brew list'
|
||||||
alias bo='brew outdated'
|
alias bo='brew outdated'
|
||||||
|
alias br='brew reinstall'
|
||||||
alias brewp='brew pin'
|
alias brewp='brew pin'
|
||||||
alias brewsp='brew list --pinned'
|
alias brewsp='brew list --pinned'
|
||||||
|
alias brh='brew reinstall --HEAD'
|
||||||
alias bs='brew search'
|
alias bs='brew search'
|
||||||
alias bsl='brew services list'
|
alias bsl='brew services list'
|
||||||
alias bsoff='brew services stop'
|
alias bsoff='brew services stop'
|
||||||
|
|||||||
@@ -12,12 +12,12 @@ plugins=(... bundler)
|
|||||||
## Aliases
|
## Aliases
|
||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
|--------|--------------------------------------|------------------------------------------------------------------------------------------|
|
| ------ | ----------------- | -------------------------------------------------------- |
|
||||||
| `ba` | `bundle add` | Add gem to the Gemfile and run bundle install |
|
| `ba` | `bundle add` | Add gem to the Gemfile and run bundle install |
|
||||||
| `bck` | `bundle check` | Verifies if dependencies are satisfied by installed gems |
|
| `bck` | `bundle check` | Verifies if dependencies are satisfied by installed gems |
|
||||||
| `bcn` | `bundle clean` | Cleans up unused gems in your bundler directory |
|
| `bcn` | `bundle clean` | Cleans up unused gems in your bundler directory |
|
||||||
| `be` | `bundle exec` | Execute a command in the context of the bundle |
|
| `be` | `bundle exec` | Execute a command in the context of the bundle |
|
||||||
| `bi` | `bundle install --jobs=<core_count>` | Install the dependencies specified in your Gemfile (using all cores in bundler >= 1.4.0) |
|
| `bi` | `bundle install` | Install the dependencies specified in your Gemfile |
|
||||||
| `bl` | `bundle list` | List all the gems in the bundle |
|
| `bl` | `bundle list` | List all the gems in the bundle |
|
||||||
| `bo` | `bundle open` | Opens the source directory for a gem in your bundle |
|
| `bo` | `bundle open` | Opens the source directory for a gem in your bundle |
|
||||||
| `bout` | `bundle outdated` | List installed gems with newer versions available |
|
| `bout` | `bundle outdated` | List installed gems with newer versions available |
|
||||||
|
|||||||
@@ -4,45 +4,13 @@ alias ba="bundle add"
|
|||||||
alias bck="bundle check"
|
alias bck="bundle check"
|
||||||
alias bcn="bundle clean"
|
alias bcn="bundle clean"
|
||||||
alias be="bundle exec"
|
alias be="bundle exec"
|
||||||
alias bi="bundle_install"
|
alias bi="bundle install"
|
||||||
alias bl="bundle list"
|
alias bl="bundle list"
|
||||||
alias bo="bundle open"
|
alias bo="bundle open"
|
||||||
alias bout="bundle outdated"
|
alias bout="bundle outdated"
|
||||||
alias bp="bundle package"
|
alias bp="bundle package"
|
||||||
alias bu="bundle update"
|
alias bu="bundle update"
|
||||||
|
|
||||||
## Functions
|
|
||||||
|
|
||||||
bundle_install() {
|
|
||||||
# Bail out if bundler is not installed
|
|
||||||
if (( ! $+commands[bundle] )); then
|
|
||||||
echo "Bundler is not installed"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Bail out if not in a bundled project
|
|
||||||
if ! _within-bundled-project; then
|
|
||||||
echo "Can't 'bundle install' outside a bundled project"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Check the bundler version is at least 1.4.0
|
|
||||||
autoload -Uz is-at-least
|
|
||||||
local bundler_version=$(bundle version | cut -d' ' -f3)
|
|
||||||
if ! is-at-least 1.4.0 "$bundler_version"; then
|
|
||||||
bundle install "$@"
|
|
||||||
return $?
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If bundler is at least 1.4.0, use all the CPU cores to bundle install
|
|
||||||
if [[ "$OSTYPE" = (darwin|freebsd)* ]]; then
|
|
||||||
local cores_num="$(sysctl -n hw.ncpu)"
|
|
||||||
else
|
|
||||||
local cores_num="$(nproc)"
|
|
||||||
fi
|
|
||||||
BUNDLE_JOBS="$cores_num" bundle install "$@"
|
|
||||||
}
|
|
||||||
|
|
||||||
## Gem wrapper
|
## Gem wrapper
|
||||||
|
|
||||||
bundled_commands=(
|
bundled_commands=(
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ function colored() {
|
|||||||
environment+=( PATH="${__colored_man_pages_dir}:$PATH" )
|
environment+=( PATH="${__colored_man_pages_dir}:$PATH" )
|
||||||
fi
|
fi
|
||||||
|
|
||||||
command env $environment "$@"
|
command env "${environment[@]}" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
# Colorize man and dman/debman (from debian-goodies)
|
# Colorize man and dman/debman (from debian-goodies)
|
||||||
|
|||||||
@@ -22,14 +22,15 @@ Try: sudo apt install <selected package>
|
|||||||
|
|
||||||
It works out of the box with the command-not-found packages for:
|
It works out of the box with the command-not-found packages for:
|
||||||
|
|
||||||
- [Ubuntu](https://www.porcheron.info/command-not-found-for-zsh/)
|
- [Ubuntu](https://launchpad.net/ubuntu/+source/command-not-found)
|
||||||
- [Debian](https://packages.debian.org/search?keywords=command-not-found)
|
- [Debian](https://packages.debian.org/search?keywords=command-not-found)
|
||||||
- [Arch Linux](https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found)
|
- [Arch Linux](https://wiki.archlinux.org/title/Zsh#pkgfile_"command_not_found"_handler)
|
||||||
- [macOS (Homebrew)](https://github.com/Homebrew/homebrew-command-not-found)
|
- [macOS (Homebrew)](https://github.com/Homebrew/brew/blob/main/docs/Command-Not-Found.md)
|
||||||
- [Fedora](https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound)
|
- [Fedora](https://fedoraproject.org/wiki/Features/PackageKitCommandNotFound)
|
||||||
- [NixOS](https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/command-not-found)
|
- [NixOS](https://github.com/NixOS/nixpkgs/tree/master/nixos/modules/programs/command-not-found)
|
||||||
- [Termux](https://github.com/termux/command-not-found)
|
- [Termux](https://github.com/termux/command-not-found)
|
||||||
- [SUSE](https://www.unix.com/man-page/suse/1/command-not-found/)
|
- [SUSE](https://www.unix.com/man-page/suse/1/command-not-found/)
|
||||||
- [Gentoo](https://github.com/AndrewAmmerlaan/command-not-found-gentoo/tree/main)
|
- [Gentoo](https://github.com/AndrewAmmerlaan/command-not-found-gentoo/tree/main)
|
||||||
|
- [Void Linux](https://codeberg.org/classabbyamp/xbps-command-not-found)
|
||||||
|
|
||||||
You can add support for other platforms by submitting a Pull Request.
|
You can add support for other platforms by submitting a Pull Request.
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
## Platforms with a built-in command-not-found handler init file
|
## Platforms with a built-in command-not-found handler init file
|
||||||
|
|
||||||
for file (
|
for file (
|
||||||
# Arch Linux. Must have pkgfile installed: https://wiki.archlinux.org/index.php/Pkgfile#Command_not_found
|
# Arch Linux. Must have pkgfile installed: https://wiki.archlinux.org/title/Zsh#pkgfile_"command_not_found"_handler
|
||||||
/usr/share/doc/pkgfile/command-not-found.zsh
|
/usr/share/doc/pkgfile/command-not-found.zsh
|
||||||
# Homebrew: https://github.com/Homebrew/homebrew-command-not-found
|
# Void Linux: https://codeberg.org/classabbyamp/xbps-command-not-found
|
||||||
|
/usr/share/zsh/plugins/xbps-command-not-found/xbps-command-not-found.zsh
|
||||||
|
# Homebrew: https://github.com/Homebrew/brew/blob/main/docs/Command-Not-Found.md
|
||||||
/opt/homebrew/Library/Homebrew/command-not-found/handler.sh
|
/opt/homebrew/Library/Homebrew/command-not-found/handler.sh
|
||||||
/usr/local/Homebrew/Library/Homebrew/command-not-found/handler.sh
|
/usr/local/Homebrew/Library/Homebrew/command-not-found/handler.sh
|
||||||
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/command-not-found/handler.sh
|
/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/command-not-found/handler.sh
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ of `dnf5` and uses it as drop-in alternative to the slower `dnf`.
|
|||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
|-------|-------------------------|--------------------------|
|
|-------|-------------------------|--------------------------|
|
||||||
| dnfl | `dnf list` | List packages |
|
| dnfl | `dnf list` | List packages |
|
||||||
| dnfli | `dnf list installed` | List installed packages |
|
| dnfli | `dnf list --installed` | List installed packages |
|
||||||
| dnfgl | `dnf grouplist` | List package groups |
|
| dnfgl | `dnf grouplist` | List package groups |
|
||||||
| dnfmc | `dnf makecache` | Generate metadata cache |
|
| dnfmc | `dnf makecache` | Generate metadata cache |
|
||||||
| dnfp | `dnf info` | Show package information |
|
| dnfp | `dnf info` | Show package information |
|
||||||
|
|||||||
@@ -5,15 +5,23 @@ local dnfprog="dnf"
|
|||||||
command -v dnf5 > /dev/null && dnfprog=dnf5
|
command -v dnf5 > /dev/null && dnfprog=dnf5
|
||||||
|
|
||||||
alias dnfl="${dnfprog} list" # List packages
|
alias dnfl="${dnfprog} list" # List packages
|
||||||
alias dnfli="${dnfprog} list installed" # List installed packages
|
alias dnfli="${dnfprog} list --installed" # List installed packages
|
||||||
alias dnfgl="${dnfprog} grouplist" # List package groups
|
|
||||||
alias dnfmc="${dnfprog} makecache" # Generate metadata cache
|
alias dnfmc="${dnfprog} makecache" # Generate metadata cache
|
||||||
alias dnfp="${dnfprog} info" # Show package information
|
alias dnfp="${dnfprog} info" # Show package information
|
||||||
alias dnfs="${dnfprog} search" # Search package
|
alias dnfs="${dnfprog} search" # Search package
|
||||||
|
|
||||||
alias dnfu="sudo ${dnfprog} upgrade" # Upgrade package
|
alias dnfu="sudo ${dnfprog} upgrade" # Upgrade package
|
||||||
alias dnfi="sudo ${dnfprog} install" # Install package
|
alias dnfi="sudo ${dnfprog} install" # Install package
|
||||||
alias dnfgi="sudo ${dnfprog} groupinstall" # Install package group
|
|
||||||
alias dnfr="sudo ${dnfprog} remove" # Remove package
|
alias dnfr="sudo ${dnfprog} remove" # Remove package
|
||||||
alias dnfgr="sudo ${dnfprog} groupremove" # Remove package group
|
|
||||||
alias dnfc="sudo ${dnfprog} clean all" # Clean cache
|
alias dnfc="sudo ${dnfprog} clean all" # Clean cache
|
||||||
|
|
||||||
|
# Conditional aliases based on dnfprog value
|
||||||
|
if [[ "${dnfprog}" == "dnf5" ]]; then
|
||||||
|
alias dnfgl="${dnfprog} group list" # List package groups (dnf5)
|
||||||
|
alias dnfgi="sudo ${dnfprog} group install" # Install package group (dnf5)
|
||||||
|
alias dnfgr="sudo ${dnfprog} group remove" # Remove package group (dnf5)
|
||||||
|
else
|
||||||
|
alias dnfgl="${dnfprog} grouplist" # List package groups (dnf)
|
||||||
|
alias dnfgi="sudo ${dnfprog} groupinstall" # Install package group (dnf)
|
||||||
|
alias dnfgr="sudo ${dnfprog} groupremove" # Remove package group (dnf)
|
||||||
|
fi
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ If you use Podman's Docker wrapper, you need to enable legacy completion. See ab
|
|||||||
| dcin | `docker container inspect` | Display detailed information on one or more containers |
|
| dcin | `docker container inspect` | Display detailed information on one or more containers |
|
||||||
| dcls | `docker container ls` | List all the running docker containers |
|
| dcls | `docker container ls` | List all the running docker containers |
|
||||||
| dclsa | `docker container ls -a` | List all running and stopped containers |
|
| dclsa | `docker container ls -a` | List all running and stopped containers |
|
||||||
|
| dcprune | `docker container prune` | Remove all stopped containers |
|
||||||
| dib | `docker image build` | Build an image from a Dockerfile (same as docker build) |
|
| dib | `docker image build` | Build an image from a Dockerfile (same as docker build) |
|
||||||
| dii | `docker image inspect` | Display detailed information on one or more images |
|
| dii | `docker image inspect` | Display detailed information on one or more images |
|
||||||
| dils | `docker image ls` | List docker images |
|
| dils | `docker image ls` | List docker images |
|
||||||
@@ -64,6 +65,7 @@ If you use Podman's Docker wrapper, you need to enable legacy completion. See ab
|
|||||||
| dndcn | `docker network disconnect` | Disconnect a container from a network |
|
| dndcn | `docker network disconnect` | Disconnect a container from a network |
|
||||||
| dni | `docker network inspect` | Return information about one or more networks |
|
| dni | `docker network inspect` | Return information about one or more networks |
|
||||||
| dnls | `docker network ls` | List all networks the engine daemon knows about, including those spanning multiple hosts |
|
| dnls | `docker network ls` | List all networks the engine daemon knows about, including those spanning multiple hosts |
|
||||||
|
| dnprune | `docker network prune` | Remove all unused networks |
|
||||||
| dnrm | `docker network rm` | Remove one or more networks |
|
| dnrm | `docker network rm` | Remove one or more networks |
|
||||||
| dpo | `docker container port` | List port mappings or a specific mapping for the container |
|
| dpo | `docker container port` | List port mappings or a specific mapping for the container |
|
||||||
| dps | `docker ps` | List all the running docker containers |
|
| dps | `docker ps` | List all the running docker containers |
|
||||||
@@ -73,6 +75,7 @@ If you use Podman's Docker wrapper, you need to enable legacy completion. See ab
|
|||||||
| drit | `docker container run -it` | Create a new container and start it in an interactive shell |
|
| drit | `docker container run -it` | Create a new container and start it in an interactive shell |
|
||||||
| drm | `docker container rm` | Remove the specified container(s) |
|
| drm | `docker container rm` | Remove the specified container(s) |
|
||||||
| drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) |
|
| drm! | `docker container rm -f` | Force the removal of a running container (uses SIGKILL) |
|
||||||
|
| dsprune | `docker system prune` | Remove unused data |
|
||||||
| dst | `docker container start` | Start one or more stopped containers |
|
| dst | `docker container start` | Start one or more stopped containers |
|
||||||
| drs | `docker container restart` | Restart one or more containers |
|
| drs | `docker container restart` | Restart one or more containers |
|
||||||
| dsta | `docker stop $(docker ps -q)` | Stop all running containers |
|
| dsta | `docker stop $(docker ps -q)` | Stop all running containers |
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ alias dbl='docker build'
|
|||||||
alias dcin='docker container inspect'
|
alias dcin='docker container inspect'
|
||||||
alias dcls='docker container ls'
|
alias dcls='docker container ls'
|
||||||
alias dclsa='docker container ls -a'
|
alias dclsa='docker container ls -a'
|
||||||
|
alias dcprune='docker container prune'
|
||||||
alias dib='docker image build'
|
alias dib='docker image build'
|
||||||
alias dii='docker image inspect'
|
alias dii='docker image inspect'
|
||||||
alias dils='docker image ls'
|
alias dils='docker image ls'
|
||||||
@@ -15,6 +16,7 @@ alias dncn='docker network connect'
|
|||||||
alias dndcn='docker network disconnect'
|
alias dndcn='docker network disconnect'
|
||||||
alias dni='docker network inspect'
|
alias dni='docker network inspect'
|
||||||
alias dnls='docker network ls'
|
alias dnls='docker network ls'
|
||||||
|
alias dnprune='docker network prune'
|
||||||
alias dnrm='docker network rm'
|
alias dnrm='docker network rm'
|
||||||
alias dpo='docker container port'
|
alias dpo='docker container port'
|
||||||
alias dps='docker ps'
|
alias dps='docker ps'
|
||||||
@@ -24,6 +26,7 @@ alias dr='docker container run'
|
|||||||
alias drit='docker container run -it'
|
alias drit='docker container run -it'
|
||||||
alias drm='docker container rm'
|
alias drm='docker container rm'
|
||||||
alias 'drm!'='docker container rm -f'
|
alias 'drm!'='docker container rm -f'
|
||||||
|
alias dsprune='docker system prune'
|
||||||
alias dst='docker container start'
|
alias dst='docker container start'
|
||||||
alias drs='docker container restart'
|
alias drs='docker container restart'
|
||||||
alias dsta='docker stop $(docker ps -q)'
|
alias dsta='docker stop $(docker ps -q)'
|
||||||
|
|||||||
@@ -78,6 +78,14 @@ change.
|
|||||||
NOTE: if a directory is found in both the allowed and disallowed lists, the disallowed list
|
NOTE: if a directory is found in both the allowed and disallowed lists, the disallowed list
|
||||||
takes preference, _i.e._ the .env file will never be sourced.
|
takes preference, _i.e._ the .env file will never be sourced.
|
||||||
|
|
||||||
|
## Named Pipe (FIFO) Support
|
||||||
|
|
||||||
|
The plugin supports `.env` files provided as UNIX named pipes (FIFOs) in addition to regular files.
|
||||||
|
This is useful when secrets managers like [1Password Environments](https://developer.1password.com/docs/environment/)
|
||||||
|
mount `.env` files as named pipes to inject secrets on-the-fly without writing them to disk.
|
||||||
|
|
||||||
|
No additional configuration is required — the plugin automatically detects and sources named pipes.
|
||||||
|
|
||||||
## Version Control
|
## Version Control
|
||||||
|
|
||||||
**It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it's supposed to be local only.
|
**It's strongly recommended to add `.env` file to `.gitignore`**, because usually it contains sensitive information such as your credentials, secret keys, passwords etc. You don't want to commit this file, it's supposed to be local only.
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
## Functions
|
## Functions
|
||||||
|
|
||||||
source_env() {
|
source_env() {
|
||||||
if [[ ! -f "$ZSH_DOTENV_FILE" ]]; then
|
if [[ ! -f "$ZSH_DOTENV_FILE" ]] && [[ ! -p "$ZSH_DOTENV_FILE" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,34 @@
|
|||||||
|
|
||||||
This plugin adds autocompletion for [fnm](https://github.com/Schniz/fnm) - a Node.js version manager.
|
This plugin adds autocompletion for [fnm](https://github.com/Schniz/fnm) - a Node.js version manager.
|
||||||
|
|
||||||
To use it, add `fnm` to the plugins array in your zshrc file:
|
To use it, add `fnm` to the plugins array in your `.zshrc` file:
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
plugins=(... fnm)
|
plugins=(... fnm)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
|
||||||
|
These settings should go in your `.zshrc` file, before Oh My Zsh is sourced.
|
||||||
|
|
||||||
|
### Autostart
|
||||||
|
|
||||||
|
If set, the plugin will automatically start fnm for the session, running the `fnm env`:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
zstyle ':omz:plugins:fnm' autostart yes
|
||||||
|
```
|
||||||
|
|
||||||
|
Default: `no` (disabled)
|
||||||
|
|
||||||
|
### Use on cd
|
||||||
|
|
||||||
|
If set, the Node.js version will be switched based on the requirements of the current directory (recommended):
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
zstyle ':omz:plugins:fnm' use-on-cd yes
|
||||||
|
```
|
||||||
|
|
||||||
|
Default: `yes` (enabled)
|
||||||
|
|
||||||
|
Check out the [official documentation](https://github.com/Schniz/fnm/blob/master/docs/commands.md) for the available fnm variables.
|
||||||
|
|||||||
@@ -11,3 +11,11 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &|
|
fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &|
|
||||||
|
|
||||||
|
if zstyle -t ':omz:plugins:fnm' autostart; then
|
||||||
|
local -a fnm_env_cmd
|
||||||
|
if zstyle -T ':omz:plugins:fnm' use-on-cd; then
|
||||||
|
fnm_env_cmd+=("--use-on-cd")
|
||||||
|
fi
|
||||||
|
eval "$(fnm env --shell=zsh $fnm_env_cmd)"
|
||||||
|
fi
|
||||||
|
|||||||
@@ -181,6 +181,8 @@ plugins=(... git)
|
|||||||
| `grst` | `git restore --staged` |
|
| `grst` | `git restore --staged` |
|
||||||
| `gunwip` | `git rev-list --max-count=1 --format="%s" HEAD \| grep -q "--wip--" && git reset HEAD~1` |
|
| `gunwip` | `git rev-list --max-count=1 --format="%s" HEAD \| grep -q "--wip--" && git reset HEAD~1` |
|
||||||
| `grev` | `git revert` |
|
| `grev` | `git revert` |
|
||||||
|
| `greva` | `git revert --abort` |
|
||||||
|
| `grevc` | `git revert --continue` |
|
||||||
| `grm` | `git rm` |
|
| `grm` | `git rm` |
|
||||||
| `grmc` | `git rm --cached` |
|
| `grmc` | `git rm --cached` |
|
||||||
| `gcount` | `git shortlog --summary -n` |
|
| `gcount` | `git shortlog --summary -n` |
|
||||||
@@ -215,6 +217,7 @@ plugins=(... git)
|
|||||||
| `gunignore` | `git update-index --no-assume-unchanged` |
|
| `gunignore` | `git update-index --no-assume-unchanged` |
|
||||||
| `gwch` | `git log --patch --abbrev-commit --pretty=medium --raw` |
|
| `gwch` | `git log --patch --abbrev-commit --pretty=medium --raw` |
|
||||||
| `gwt` | `git worktree` |
|
| `gwt` | `git worktree` |
|
||||||
|
| `gwta` | `git worktree add` |
|
||||||
| `gwtls` | `git worktree list` |
|
| `gwtls` | `git worktree list` |
|
||||||
| `gwtmv` | `git worktree move` |
|
| `gwtmv` | `git worktree move` |
|
||||||
| `gwtrm` | `git worktree remove` |
|
| `gwtrm` | `git worktree remove` |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# gitignore
|
# gitignore
|
||||||
|
|
||||||
This plugin enables you the use of [gitignore.io](https://www.toptal.com/developers/gitignore) from the command line. You need an active internet connection.
|
This plugin enables you to use [gitignore.io](https://www.gitignore.io) from the command line. You need an active internet connection to fetch templates. The plugin uses the gitignore.io CDN endpoint to simplify access and improve reliability.
|
||||||
|
|
||||||
To use it, add `gitignore` to the plugins array in your zshrc file:
|
To use it, add `gitignore` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
@@ -14,4 +14,4 @@ plugins=(... gitignore)
|
|||||||
|
|
||||||
* `gi [TEMPLATENAME]`: Show git-ignore output on the command line, e.g. `gi java` to exclude class and package files.
|
* `gi [TEMPLATENAME]`: Show git-ignore output on the command line, e.g. `gi java` to exclude class and package files.
|
||||||
|
|
||||||
* `gi [TEMPLATENAME] >> .gitignore`: Appending programming language settings to your projects .gitignore.
|
* `gi [TEMPLATENAME] >> .gitignore`: Append the template rules to your project's `.gitignore` file.
|
||||||
|
|||||||
@@ -1,12 +1,21 @@
|
|||||||
function gi() { curl -fLw '\n' https://www.toptal.com/developers/gitignore/api/"${(j:,:)@}" }
|
# gitignore plugin for oh-my-zsh
|
||||||
|
# Uses gitignore.io CDN endpoint
|
||||||
|
function _gi_curl() {
|
||||||
|
curl -sfL "https://www.gitignore.io/api/$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
function gi() {
|
||||||
|
local query="${(j:,:)@}"
|
||||||
|
_gi_curl "$query" || return 1
|
||||||
|
}
|
||||||
|
|
||||||
_gitignoreio_get_command_list() {
|
_gitignoreio_get_command_list() {
|
||||||
curl -sfL https://www.toptal.com/developers/gitignore/api/list | tr "," "\n"
|
_gi_curl "list" | tr "," "\n"
|
||||||
}
|
}
|
||||||
|
|
||||||
_gitignoreio () {
|
_gitignoreio () {
|
||||||
compset -P '*,'
|
compset -P '*,'
|
||||||
compadd -S '' `_gitignoreio_get_command_list`
|
compadd -S '' $(_gitignoreio_get_command_list)
|
||||||
}
|
}
|
||||||
|
|
||||||
compdef _gitignoreio gi
|
compdef _gitignoreio gi
|
||||||
@@ -34,18 +34,16 @@ __gradle-set-build-file() {
|
|||||||
|
|
||||||
local default_gradle_build_file_name="build.gradle"
|
local default_gradle_build_file_name="build.gradle"
|
||||||
if [[ -r $gradle_settings_file ]]; then
|
if [[ -r $gradle_settings_file ]]; then
|
||||||
default_gradle_build_file_name=${$(grep "^rootProject\.buildFileName" $gradle_settings_file | \
|
local build_file_name=${$(grep "^rootProject\.buildFileName" $gradle_settings_file | \
|
||||||
sed -n -e "s/rootProject\.buildFileName = [\'\"]\(.*\)[\'\"]/\1/p")}
|
sed -n -e "s/rootProject\.buildFileName = [\'\"]\(.*\)[\'\"]/\1/p")}
|
||||||
|
|
||||||
default_gradle_build_file_name="${default_gradle_build_file:-build.gradle}"
|
default_gradle_build_file_name="${build_file_name:-build.gradle}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local default_gradle_build_file="$project_root_dir/$default_gradle_build_file_name"
|
gradle_build_file="$project_root_dir/$default_gradle_build_file_name"
|
||||||
if [[ ! -f $default_gradle_build_file ]]; then
|
if [[ ! -f $gradle_build_file ]]; then
|
||||||
default_gradle_build_file="$project_root_dir/build.gradle.kts"
|
gradle_build_file="$project_root_dir/build.gradle.kts"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
gradle_build_file=$default_gradle_build_file
|
|
||||||
}
|
}
|
||||||
|
|
||||||
__gradle-set-cache-name() {
|
__gradle-set-cache-name() {
|
||||||
@@ -214,6 +212,7 @@ __gradle_subcommand() {
|
|||||||
'--dsl=[Set the build script DSL to be used in generated scripts.]' \
|
'--dsl=[Set the build script DSL to be used in generated scripts.]' \
|
||||||
'--incubating[Allow the generated build to use new features and APIs.]' \
|
'--incubating[Allow the generated build to use new features and APIs.]' \
|
||||||
'--insecure-protocol=[How to handle insecure URLs used for Maven Repositories.]' \
|
'--insecure-protocol=[How to handle insecure URLs used for Maven Repositories.]' \
|
||||||
|
'--into=[Set the directory where the project is generated.]' \
|
||||||
'--java-version=[Provides java version to use in the project.]' \
|
'--java-version=[Provides java version to use in the project.]' \
|
||||||
'--overwrite[Allow existing files in the build directory to be overwritten?]' \
|
'--overwrite[Allow existing files in the build directory to be overwritten?]' \
|
||||||
'--package=[Set the package for source files.]' \
|
'--package=[Set the package for source files.]' \
|
||||||
@@ -228,6 +227,7 @@ __gradle_subcommand() {
|
|||||||
'--all[Show additional tasks and detail.]' \
|
'--all[Show additional tasks and detail.]' \
|
||||||
'--group=[Show tasks for a specific group.]' \
|
'--group=[Show tasks for a specific group.]' \
|
||||||
'--groups=[Show tasks for specific groups (can be used multiple times to specify multiple groups).]' \
|
'--groups=[Show tasks for specific groups (can be used multiple times to specify multiple groups).]' \
|
||||||
|
'--provenance[Show task provenance information]' \
|
||||||
'--types[Show task class types]' && ret=0
|
'--types[Show task class types]' && ret=0
|
||||||
;;
|
;;
|
||||||
(test)
|
(test)
|
||||||
@@ -245,11 +245,15 @@ __gradle_subcommand() {
|
|||||||
'--gradle-distribution-url=[The URL to download the Gradle distribution from.]' \
|
'--gradle-distribution-url=[The URL to download the Gradle distribution from.]' \
|
||||||
'--gradle-version=[The version of the Gradle distribution required by the wrapper. The following labels are allowed: latest, release-candidate, release-milestone, release-nightly, and nightly.]' \
|
'--gradle-version=[The version of the Gradle distribution required by the wrapper. The following labels are allowed: latest, release-candidate, release-milestone, release-nightly, and nightly.]' \
|
||||||
'--network-timeout=[Timeout in ms to use when the wrapper is performing network operations.]' \
|
'--network-timeout=[Timeout in ms to use when the wrapper is performing network operations.]' \
|
||||||
|
'--retries=[The number of download retries.]' \
|
||||||
|
'--retry-back-off-ms=[The initial back off in milliseconds between retries (doubles on each failure).]' \
|
||||||
'--validate-url[Sets task to validate the configured distribution url.]' && ret=0
|
'--validate-url[Sets task to validate the configured distribution url.]' && ret=0
|
||||||
;;
|
;;
|
||||||
(*)
|
(*)
|
||||||
_arguments -C \
|
_arguments -C \
|
||||||
'-Dgradle.user.home=[Specifies the Gradle user home directory. Defaults to ~/.gradle]:gradle.user.home:_directories' \
|
'-Dcom.gradle.develocity.plugin.version=[Version of the Develocity plugin to auto-apply, must be 4.4.0 or higher if Develocity URL is specified as well.]' \
|
||||||
|
'-Dcom.gradle.develocity.url=[Default URL of the Develocity server to publish Build Scan to. Triggers auto-application of the Develocity plugin if not already applied.]' \
|
||||||
|
'-Dgradle.user.home=[Specifies the Gradle user home directory. Default is ~/.gradle.]:gradle.user.home:_directories' \
|
||||||
'-Dorg.gradle.caching.debug=[]' \
|
'-Dorg.gradle.caching.debug=[]' \
|
||||||
'-Dorg.gradle.caching=[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]:org.gradle.caching:(true false)' \
|
'-Dorg.gradle.caching=[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]:org.gradle.caching:(true false)' \
|
||||||
'-Dorg.gradle.configuration-cache.entries-per-key=[]' \
|
'-Dorg.gradle.configuration-cache.entries-per-key=[]' \
|
||||||
@@ -260,24 +264,25 @@ __gradle_subcommand() {
|
|||||||
'-Dorg.gradle.configuration-cache.integrity-check=[]' \
|
'-Dorg.gradle.configuration-cache.integrity-check=[]' \
|
||||||
'-Dorg.gradle.configuration-cache.max-problems=[]' \
|
'-Dorg.gradle.configuration-cache.max-problems=[]' \
|
||||||
'-Dorg.gradle.configuration-cache.parallel=[]' \
|
'-Dorg.gradle.configuration-cache.parallel=[]' \
|
||||||
'-Dorg.gradle.configuration-cache.problems=[Configures how the configuration cache handles problems (fail or warn). Defaults to fail.]:org.gradle.configuration cache.problems:(fail warn)' \
|
'-Dorg.gradle.configuration-cache.problems=[Configures how the configuration cache handles problems (fail or warn). Supported values are 'warn', or 'fail' (default).]:org.gradle.configuration cache.problems:(fail warn)' \
|
||||||
'-Dorg.gradle.configuration-cache.read-only=[]' \
|
'-Dorg.gradle.configuration-cache.read-only=[]' \
|
||||||
'-Dorg.gradle.configuration-cache.unsafe.ignore.unsupported-build-events-listeners=[]' \
|
'-Dorg.gradle.configuration-cache.unsafe.ignore.unsupported-build-events-listeners=[]' \
|
||||||
'-Dorg.gradle.configuration-cache=[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
'-Dorg.gradle.configuration-cache=[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
||||||
'-Dorg.gradle.configureondemand=[Configure necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds.]' \
|
'-Dorg.gradle.configureondemand=[Configures necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds.]' \
|
||||||
'-Dorg.gradle.console=[Specifies which type of console output to generate. Values are 'plain', 'colored', 'auto' (default), 'rich' or 'verbose'.]:org.gradle.console:(plain auto rich verbose)' \
|
'-Dorg.gradle.console.unicode=[Specifies which character types are allowed in the console output. Supported values are 'auto' (default), 'disable', or 'enable'.]' \
|
||||||
'-Dorg.gradle.continue=[Continue task execution after a task failure.]' \
|
'-Dorg.gradle.console=[Specifies which type of console output to generate. Supported values are 'plain', 'colored', 'auto' (default), 'rich', or 'verbose'.]:org.gradle.console:(plain auto rich verbose)' \
|
||||||
|
'-Dorg.gradle.continue=[Continues task execution after a task failure.]' \
|
||||||
'-Dorg.gradle.continuous.quietperiod=[]' \
|
'-Dorg.gradle.continuous.quietperiod=[]' \
|
||||||
'-Dorg.gradle.daemon.healthcheckinterval=[]' \
|
'-Dorg.gradle.daemon.healthcheckinterval=[]' \
|
||||||
'-Dorg.gradle.daemon.idletimeout=[]' \
|
'-Dorg.gradle.daemon.idletimeout=[]' \
|
||||||
'-Dorg.gradle.daemon.registry.base=[]:org.gradle.daemon.registry.base:_directories' \
|
'-Dorg.gradle.daemon.registry.base=[]:org.gradle.daemon.registry.base:_directories' \
|
||||||
'-Dorg.gradle.daemon=[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
|
'-Dorg.gradle.daemon=[Uses the Gradle daemon to run the build. Starts the daemon if it is not running.]' \
|
||||||
'-Dorg.gradle.debug.host=[]' \
|
'-Dorg.gradle.debug.host=[]' \
|
||||||
'-Dorg.gradle.debug.port=[]' \
|
'-Dorg.gradle.debug.port=[]' \
|
||||||
'-Dorg.gradle.debug.server=[]' \
|
'-Dorg.gradle.debug.server=[]' \
|
||||||
'-Dorg.gradle.debug.suspend=[]' \
|
'-Dorg.gradle.debug.suspend=[]' \
|
||||||
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false)' \
|
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false)' \
|
||||||
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Values are 'strict', 'lenient' or 'off'.]:org.gradle.dependency.verification:(strict lenient off)' \
|
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:org.gradle.dependency.verification:(strict lenient off)' \
|
||||||
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories' \
|
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories' \
|
||||||
'-Dorg.gradle.java.installations.auto-detect=[]' \
|
'-Dorg.gradle.java.installations.auto-detect=[]' \
|
||||||
'-Dorg.gradle.java.installations.auto-download=[]' \
|
'-Dorg.gradle.java.installations.auto-download=[]' \
|
||||||
@@ -288,69 +293,73 @@ __gradle_subcommand() {
|
|||||||
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug)' \
|
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug)' \
|
||||||
'-Dorg.gradle.logging.stacktrace=[]' \
|
'-Dorg.gradle.logging.stacktrace=[]' \
|
||||||
'-Dorg.gradle.native=[]' \
|
'-Dorg.gradle.native=[]' \
|
||||||
'-Dorg.gradle.parallel=[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]:org.gradle.parallel:(true false)' \
|
'-Dorg.gradle.parallel=[Builds projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]:org.gradle.parallel:(true false)' \
|
||||||
'-Dorg.gradle.priority=[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Values are 'normal' (default) or 'low']:org.gradle.priority:(normal low)' \
|
'-Dorg.gradle.priority=[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Supported values are 'normal' (default) or 'low'.]:org.gradle.priority:(normal low)' \
|
||||||
'-Dorg.gradle.problems.report=[(Experimental) enables HTML problems report]' \
|
'-Dorg.gradle.problems.report=[Enables the HTML problems report.]' \
|
||||||
'-Dorg.gradle.projectcachedir=[Specify the project-specific cache directory. Defaults to .gradle in the root project directory.]:org.gradle.projectcachedir:_directories' \
|
'-Dorg.gradle.projectcachedir=[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:org.gradle.projectcachedir:_directories' \
|
||||||
|
'-Dorg.gradle.tooling.parallel=[]' \
|
||||||
'-Dorg.gradle.unsafe.isolated-projects=[]' \
|
'-Dorg.gradle.unsafe.isolated-projects=[]' \
|
||||||
'-Dorg.gradle.vfs.verbose=[]' \
|
'-Dorg.gradle.vfs.verbose=[]' \
|
||||||
'-Dorg.gradle.vfs.watch=[Enables watching the file system for changes, allowing data about the file system to be re-used for the next build.]:org.gradle.vfs.watch:(true false)' \
|
'-Dorg.gradle.vfs.watch=[Enables file system watching. Reuses file system data for subsequent builds.]:org.gradle.vfs.watch:(true false)' \
|
||||||
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Values are 'all', 'fail', 'summary'(default) or 'none']' \
|
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]' \
|
||||||
'-Dorg.gradle.welcome=[]:org.gradle.welcome:(once never)' \
|
'-Dorg.gradle.welcome=[]:org.gradle.welcome:(once never)' \
|
||||||
'-Dorg.gradle.workers.max=[Configure the number of concurrent workers Gradle is allowed to use.]' \
|
'-Dorg.gradle.workers.max=[Configures the maximum number of concurrent workers Gradle is allowed to use.]' \
|
||||||
(--no-build-cache)'--build-cache[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]' \
|
(--no-build-cache)'--build-cache[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]' \
|
||||||
(--no-configuration-cache)'--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
(--no-configuration-cache)'--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
||||||
'--configuration-cache-problems[Configures how the configuration cache handles problems (fail or warn). Defaults to fail.]:configuration cache problems:(fail warn)' \
|
'--configuration-cache-problems[Configures how the configuration cache handles problems (fail or warn). Supported values are 'warn', or 'fail' (default).]:configuration cache problems:(fail warn)' \
|
||||||
(--no-configure-on-demand)'--configure-on-demand[Configure necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds. (incubating)]' \
|
(--no-configure-on-demand)'--configure-on-demand[Configures necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds. (incubating)]' \
|
||||||
'--console[Specifies which type of console output to generate. Values are 'plain', 'colored', 'auto' (default), 'rich' or 'verbose'.]:console:(plain auto rich verbose)' \
|
'--console[Specifies which type of console output to generate. Supported values are 'plain', 'colored', 'auto' (default), 'rich', or 'verbose'.]:console:(plain auto rich verbose)' \
|
||||||
(--no-continue)'--continue[Continue task execution after a task failure.]' \
|
'--console-unicode[Specifies which character types are allowed in the console output. Supported values are 'auto' (default), 'disable', or 'enable'.]' \
|
||||||
|
(--no-continue)'--continue[Continues task execution after a task failure.]' \
|
||||||
{-t,--continuous}'[Enables continuous build. Gradle does not exit and will re-execute tasks when task file inputs change.]' \
|
{-t,--continuous}'[Enables continuous build. Gradle does not exit and will re-execute tasks when task file inputs change.]' \
|
||||||
(--no-daemon)'--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
|
(--no-daemon)'--daemon[Uses the Gradle daemon to run the build. Starts the daemon if it is not running.]' \
|
||||||
(--quiet,-q,--warn,-w,--info,-i){-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
|
(--quiet,-q,--warn,-w,--info,-i){-d,--debug}'[Sets log level to debug. Includes the normal stacktrace.]' \
|
||||||
{-F,--dependency-verification}'[Configures the dependency verification mode. Values are 'strict', 'lenient' or 'off'.]:dependency verification:(strict lenient off)' \
|
{-F,--dependency-verification}'[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:dependency verification:(strict lenient off)' \
|
||||||
{-m,--dry-run}'[Run the builds with all task actions disabled.]' \
|
'--develocity-plugin-version[Version of the Develocity plugin to auto-apply, must be 4.4.0 or higher if Develocity URL is specified as well.]' \
|
||||||
\*{-x,--exclude-task}'[Specify a task to be excluded from execution.]' \
|
'--develocity-url[Default URL of the Develocity server to publish Build Scan to. Triggers auto-application of the Develocity plugin if not already applied.]' \
|
||||||
|
{-m,--dry-run}'[Runs the build with all task actions disabled.]' \
|
||||||
|
\*{-x,--exclude-task}'[Specifies a task to exclude from execution.]' \
|
||||||
'--export-keys[Exports the public keys used for dependency verification.]' \
|
'--export-keys[Exports the public keys used for dependency verification.]' \
|
||||||
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
||||||
(--stacktrace,-s){-S,--full-stacktrace}'[Print out the full (very verbose) stacktrace for all exceptions.]' \
|
(--stacktrace,-s){-S,--full-stacktrace}'[Prints the full (very verbose) stacktrace for all exceptions.]' \
|
||||||
{-g,--gradle-user-home}'[Specifies the Gradle user home directory. Defaults to ~/.gradle]:gradle user home:_directories' \
|
{-g,--gradle-user-home}'[Specifies the Gradle user home directory. Default is ~/.gradle.]:gradle user home:_directories' \
|
||||||
\*'--include-build[Include the specified build in the composite.]:include build:_directories' \
|
\*'--include-build[Includes the specified build in the composite.]:include build:_directories' \
|
||||||
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Set log level to info.]' \
|
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Sets the log level to info.]' \
|
||||||
\*{-I,--init-script}'[Specify an initialization script.]:init script:_files -g \*.gradle(|.kts)' \
|
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle(|.kts)' \
|
||||||
'--max-workers[Configure the number of concurrent workers Gradle is allowed to use.]' \
|
'--max-workers[Configures the maximum number of concurrent workers Gradle is allowed to use.]' \
|
||||||
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
||||||
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
||||||
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
||||||
(--continue)'--no-continue[Stop task execution after a task failure.]' \
|
(--continue)'--no-continue[Stops task execution after a task failure.]' \
|
||||||
(--daemon)'--no-daemon[Do not use the Gradle daemon to run the build. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
(--daemon)'--no-daemon[Runs the build without the Gradle daemon. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
||||||
(--parallel)'--no-parallel[Disables parallel execution to build projects.]' \
|
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
||||||
(--problems-report)'--no-problems-report[(Experimental) disables HTML problems report]' \
|
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
||||||
{-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
|
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
||||||
(--scan)'--no-scan[Disables the creation of a Build Scan.]' \
|
(--scan)'--no-scan[Disables the creation of a Build Scan.]' \
|
||||||
(--watch-fs)'--no-watch-fs[Disables watching the file system.]' \
|
(--watch-fs)'--no-watch-fs[Disables file system watching.]' \
|
||||||
'--offline[Execute the build without accessing network resources.]' \
|
'--offline[Runs the build without accessing network resources.]' \
|
||||||
(--no-parallel)'--parallel[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
|
(--no-parallel)'--parallel[Builds projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
|
||||||
'--priority[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Values are 'normal' (default) or 'low']' \
|
'--priority[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Supported values are 'normal' (default) or 'low'.]' \
|
||||||
(--no-problems-report)'--problems-report[(Experimental) enables HTML problems report]' \
|
(--no-problems-report)'--problems-report[Enables the HTML problems report. (incubating)]' \
|
||||||
'--profile[Profile build execution time and generates a report in the <build_dir>/reports/profile directory.]' \
|
'--profile[Profiles build execution time. Generates a report in the <build_dir>/reports/profile directory.]' \
|
||||||
'--project-cache-dir[Specify the project-specific cache directory. Defaults to .gradle in the root project directory.]:project cache dir:_directories' \
|
'--project-cache-dir[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:project cache dir:_directories' \
|
||||||
{-p,--project-dir}'[Specifies the start directory for Gradle. Defaults to current directory.]:project dir:_directories' \
|
{-p,--project-dir}'[Specifies the start directory for Gradle. Default is the current directory.]:project dir:_directories' \
|
||||||
'--property-upgrade-report[(Experimental) Runs build with experimental property upgrade report.]' \
|
'--property-upgrade-report[Runs the build with the experimental property upgrade report. (incubating)]' \
|
||||||
(--warn,-w,--info,-i,--debug,-d){-q,--quiet}'[Log errors only.]' \
|
(--warn,-w,--info,-i,--debug,-d){-q,--quiet}'[Logs errors only.]' \
|
||||||
{-U,--refresh-dependencies}'[Refresh the state of dependencies.]' \
|
{-U,--refresh-dependencies}'[Refreshes the state of dependencies.]' \
|
||||||
'--refresh-keys[Refresh the public keys used for dependency verification.]' \
|
'--refresh-keys[Refreshes the public keys used for dependency verification.]' \
|
||||||
'--rerun[Causes the task to be re-run even if up-to-date.]' \
|
'--rerun[Causes the task to be re-run even if up-to-date.]' \
|
||||||
'--rerun-tasks[Ignore previously cached task results.]' \
|
'--rerun-tasks[Ignores previously cached task results.]' \
|
||||||
(--no-scan)'--scan[Generate a Build Scan (powered by Develocity).]' \
|
(--no-scan)'--scan[Generates a Build Scan (powered by Develocity).]' \
|
||||||
{-V,--show-version}'[Print version info and continue.]' \
|
{-V,--show-version}'[Print version info and continue.]' \
|
||||||
(--full-stacktrace,-S){-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
|
(--full-stacktrace,-S){-s,--stacktrace}'[Prints the stacktrace for all exceptions.]' \
|
||||||
'--task-graph[(Experimental) Print task graph instead of executing tasks.]' \
|
'--task-graph[Prints the task graph instead of executing tasks.]' \
|
||||||
\*'--update-locks[Perform a partial update of the dependency lock, letting passed in module notations change version. (incubating)]' \
|
\*'--update-locks[Performs a partial update of the dependency lock. Allows passed-in module notations to change version. (incubating)]' \
|
||||||
(--quiet,-q,--info,-i,--debug,-d){-w,--warn}'[Set log level to warn.]' \
|
(--quiet,-q,--info,-i,--debug,-d){-w,--warn}'[Sets the log level to warn.]' \
|
||||||
'--warning-mode[Specifies which mode of warnings to generate. Values are 'all', 'fail', 'summary'(default) or 'none']:warning mode:(all summary none)' \
|
'--warning-mode[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]:warning mode:(all summary none)' \
|
||||||
(--no-watch-fs)'--watch-fs[Enables watching the file system for changes, allowing data about the file system to be re-used for the next build.]' \
|
(--no-watch-fs)'--watch-fs[Enables file system watching. Reuses file system data for subsequent builds.]' \
|
||||||
'--write-locks[Persists dependency resolution for locked configurations, ignoring existing locking information if it exists]' \
|
'--write-locks[Persists dependency resolution for locked configurations. Ignores existing locking information if it exists.]' \
|
||||||
{-M,--write-verification-metadata}'[Generates checksums for dependencies used in the project (comma-separated list)]' && ret=0
|
{-M,--write-verification-metadata}'[Generates checksums for dependencies used in the project. Accepts a comma-separated list.]' && ret=0
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
@@ -376,7 +385,9 @@ _gradle() {
|
|||||||
typeset -A opt_args
|
typeset -A opt_args
|
||||||
|
|
||||||
_arguments -C \
|
_arguments -C \
|
||||||
'-Dgradle.user.home=[Specifies the Gradle user home directory. Defaults to ~/.gradle]:gradle.user.home:_directories:->argument-expected' \
|
'-Dcom.gradle.develocity.plugin.version=[Version of the Develocity plugin to auto-apply, must be 4.4.0 or higher if Develocity URL is specified as well.]:->argument-expected' \
|
||||||
|
'-Dcom.gradle.develocity.url=[Default URL of the Develocity server to publish Build Scan to. Triggers auto-application of the Develocity plugin if not already applied.]:->argument-expected' \
|
||||||
|
'-Dgradle.user.home=[Specifies the Gradle user home directory. Default is ~/.gradle.]:gradle.user.home:_directories:->argument-expected' \
|
||||||
'-Dorg.gradle.caching.debug=[]:->argument-expected' \
|
'-Dorg.gradle.caching.debug=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.caching=[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]:org.gradle.caching:(true false):->argument-expected' \
|
'-Dorg.gradle.caching=[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]:org.gradle.caching:(true false):->argument-expected' \
|
||||||
'-Dorg.gradle.configuration-cache.entries-per-key=[]:->argument-expected' \
|
'-Dorg.gradle.configuration-cache.entries-per-key=[]:->argument-expected' \
|
||||||
@@ -387,24 +398,25 @@ _gradle() {
|
|||||||
'-Dorg.gradle.configuration-cache.integrity-check=[]:->argument-expected' \
|
'-Dorg.gradle.configuration-cache.integrity-check=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.configuration-cache.max-problems=[]:->argument-expected' \
|
'-Dorg.gradle.configuration-cache.max-problems=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.configuration-cache.parallel=[]:->argument-expected' \
|
'-Dorg.gradle.configuration-cache.parallel=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.configuration-cache.problems=[Configures how the configuration cache handles problems (fail or warn). Defaults to fail.]:org.gradle.configuration cache.problems:(fail warn):->argument-expected' \
|
'-Dorg.gradle.configuration-cache.problems=[Configures how the configuration cache handles problems (fail or warn). Supported values are 'warn', or 'fail' (default).]:org.gradle.configuration cache.problems:(fail warn):->argument-expected' \
|
||||||
'-Dorg.gradle.configuration-cache.read-only=[]:->argument-expected' \
|
'-Dorg.gradle.configuration-cache.read-only=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.configuration-cache.unsafe.ignore.unsupported-build-events-listeners=[]:->argument-expected' \
|
'-Dorg.gradle.configuration-cache.unsafe.ignore.unsupported-build-events-listeners=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.configuration-cache=[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]:->argument-expected' \
|
'-Dorg.gradle.configuration-cache=[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]:->argument-expected' \
|
||||||
'-Dorg.gradle.configureondemand=[Configure necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds.]:->argument-expected' \
|
'-Dorg.gradle.configureondemand=[Configures necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds.]:->argument-expected' \
|
||||||
'-Dorg.gradle.console=[Specifies which type of console output to generate. Values are 'plain', 'colored', 'auto' (default), 'rich' or 'verbose'.]:org.gradle.console:(plain auto rich verbose):->argument-expected' \
|
'-Dorg.gradle.console.unicode=[Specifies which character types are allowed in the console output. Supported values are 'auto' (default), 'disable', or 'enable'.]:->argument-expected' \
|
||||||
'-Dorg.gradle.continue=[Continue task execution after a task failure.]:->argument-expected' \
|
'-Dorg.gradle.console=[Specifies which type of console output to generate. Supported values are 'plain', 'colored', 'auto' (default), 'rich', or 'verbose'.]:org.gradle.console:(plain auto rich verbose):->argument-expected' \
|
||||||
|
'-Dorg.gradle.continue=[Continues task execution after a task failure.]:->argument-expected' \
|
||||||
'-Dorg.gradle.continuous.quietperiod=[]:->argument-expected' \
|
'-Dorg.gradle.continuous.quietperiod=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.daemon.healthcheckinterval=[]:->argument-expected' \
|
'-Dorg.gradle.daemon.healthcheckinterval=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.daemon.idletimeout=[]:->argument-expected' \
|
'-Dorg.gradle.daemon.idletimeout=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.daemon.registry.base=[]:org.gradle.daemon.registry.base:_directories:->argument-expected' \
|
'-Dorg.gradle.daemon.registry.base=[]:org.gradle.daemon.registry.base:_directories:->argument-expected' \
|
||||||
'-Dorg.gradle.daemon=[Uses the Gradle daemon to run the build. Starts the daemon if not running.]:->argument-expected' \
|
'-Dorg.gradle.daemon=[Uses the Gradle daemon to run the build. Starts the daemon if it is not running.]:->argument-expected' \
|
||||||
'-Dorg.gradle.debug.host=[]:->argument-expected' \
|
'-Dorg.gradle.debug.host=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.debug.port=[]:->argument-expected' \
|
'-Dorg.gradle.debug.port=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.debug.server=[]:->argument-expected' \
|
'-Dorg.gradle.debug.server=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.debug.suspend=[]:->argument-expected' \
|
'-Dorg.gradle.debug.suspend=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false):->argument-expected' \
|
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false):->argument-expected' \
|
||||||
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Values are 'strict', 'lenient' or 'off'.]:org.gradle.dependency.verification:(strict lenient off):->argument-expected' \
|
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:org.gradle.dependency.verification:(strict lenient off):->argument-expected' \
|
||||||
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories:->argument-expected' \
|
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories:->argument-expected' \
|
||||||
'-Dorg.gradle.java.installations.auto-detect=[]:->argument-expected' \
|
'-Dorg.gradle.java.installations.auto-detect=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.java.installations.auto-download=[]:->argument-expected' \
|
'-Dorg.gradle.java.installations.auto-download=[]:->argument-expected' \
|
||||||
@@ -415,73 +427,77 @@ _gradle() {
|
|||||||
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug):->argument-expected' \
|
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug):->argument-expected' \
|
||||||
'-Dorg.gradle.logging.stacktrace=[]:->argument-expected' \
|
'-Dorg.gradle.logging.stacktrace=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.native=[]:->argument-expected' \
|
'-Dorg.gradle.native=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.parallel=[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]:org.gradle.parallel:(true false):->argument-expected' \
|
'-Dorg.gradle.parallel=[Builds projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]:org.gradle.parallel:(true false):->argument-expected' \
|
||||||
'-Dorg.gradle.priority=[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Values are 'normal' (default) or 'low']:org.gradle.priority:(normal low):->argument-expected' \
|
'-Dorg.gradle.priority=[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Supported values are 'normal' (default) or 'low'.]:org.gradle.priority:(normal low):->argument-expected' \
|
||||||
'-Dorg.gradle.problems.report=[(Experimental) enables HTML problems report]:->argument-expected' \
|
'-Dorg.gradle.problems.report=[Enables the HTML problems report.]:->argument-expected' \
|
||||||
'-Dorg.gradle.projectcachedir=[Specify the project-specific cache directory. Defaults to .gradle in the root project directory.]:org.gradle.projectcachedir:_directories:->argument-expected' \
|
'-Dorg.gradle.projectcachedir=[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:org.gradle.projectcachedir:_directories:->argument-expected' \
|
||||||
|
'-Dorg.gradle.tooling.parallel=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.unsafe.isolated-projects=[]:->argument-expected' \
|
'-Dorg.gradle.unsafe.isolated-projects=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.vfs.verbose=[]:->argument-expected' \
|
'-Dorg.gradle.vfs.verbose=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.vfs.watch=[Enables watching the file system for changes, allowing data about the file system to be re-used for the next build.]:org.gradle.vfs.watch:(true false):->argument-expected' \
|
'-Dorg.gradle.vfs.watch=[Enables file system watching. Reuses file system data for subsequent builds.]:org.gradle.vfs.watch:(true false):->argument-expected' \
|
||||||
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Values are 'all', 'fail', 'summary'(default) or 'none']:->argument-expected' \
|
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]:->argument-expected' \
|
||||||
'-Dorg.gradle.welcome=[]:org.gradle.welcome:(once never):->argument-expected' \
|
'-Dorg.gradle.welcome=[]:org.gradle.welcome:(once never):->argument-expected' \
|
||||||
'-Dorg.gradle.workers.max=[Configure the number of concurrent workers Gradle is allowed to use.]:->argument-expected' \
|
'-Dorg.gradle.workers.max=[Configures the maximum number of concurrent workers Gradle is allowed to use.]:->argument-expected' \
|
||||||
(--no-build-cache)'--build-cache[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]' \
|
(--no-build-cache)'--build-cache[Enables the Gradle build cache. Gradle will try to reuse outputs from previous builds.]' \
|
||||||
(--no-configuration-cache)'--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
(--no-configuration-cache)'--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
||||||
'--configuration-cache-problems[Configures how the configuration cache handles problems (fail or warn). Defaults to fail.]:configuration cache problems:(fail warn):->argument-expected' \
|
'--configuration-cache-problems[Configures how the configuration cache handles problems (fail or warn). Supported values are 'warn', or 'fail' (default).]:configuration cache problems:(fail warn):->argument-expected' \
|
||||||
(--no-configure-on-demand)'--configure-on-demand[Configure necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds. (incubating)]' \
|
(--no-configure-on-demand)'--configure-on-demand[Configures necessary projects only. Gradle will attempt to reduce configuration time for large multi-project builds. (incubating)]' \
|
||||||
'--console[Specifies which type of console output to generate. Values are 'plain', 'colored', 'auto' (default), 'rich' or 'verbose'.]:console:(plain auto rich verbose):->argument-expected' \
|
'--console[Specifies which type of console output to generate. Supported values are 'plain', 'colored', 'auto' (default), 'rich', or 'verbose'.]:console:(plain auto rich verbose):->argument-expected' \
|
||||||
(--no-continue)'--continue[Continue task execution after a task failure.]' \
|
'--console-unicode[Specifies which character types are allowed in the console output. Supported values are 'auto' (default), 'disable', or 'enable'.]:->argument-expected' \
|
||||||
|
(--no-continue)'--continue[Continues task execution after a task failure.]' \
|
||||||
{-t,--continuous}'[Enables continuous build. Gradle does not exit and will re-execute tasks when task file inputs change.]' \
|
{-t,--continuous}'[Enables continuous build. Gradle does not exit and will re-execute tasks when task file inputs change.]' \
|
||||||
(--no-daemon)'--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
|
(--no-daemon)'--daemon[Uses the Gradle daemon to run the build. Starts the daemon if it is not running.]' \
|
||||||
(--quiet,-q,--warn,-w,--info,-i){-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
|
(--quiet,-q,--warn,-w,--info,-i){-d,--debug}'[Sets log level to debug. Includes the normal stacktrace.]' \
|
||||||
{-F,--dependency-verification}'[Configures the dependency verification mode. Values are 'strict', 'lenient' or 'off'.]:dependency verification:(strict lenient off):->argument-expected' \
|
{-F,--dependency-verification}'[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:dependency verification:(strict lenient off):->argument-expected' \
|
||||||
{-m,--dry-run}'[Run the builds with all task actions disabled.]' \
|
'--develocity-plugin-version[Version of the Develocity plugin to auto-apply, must be 4.4.0 or higher if Develocity URL is specified as well.]:->argument-expected' \
|
||||||
\*{-x,--exclude-task}'[Specify a task to be excluded from execution.]' \
|
'--develocity-url[Default URL of the Develocity server to publish Build Scan to. Triggers auto-application of the Develocity plugin if not already applied.]:->argument-expected' \
|
||||||
|
{-m,--dry-run}'[Runs the build with all task actions disabled.]' \
|
||||||
|
\*{-x,--exclude-task}'[Specifies a task to exclude from execution.]' \
|
||||||
'--export-keys[Exports the public keys used for dependency verification.]' \
|
'--export-keys[Exports the public keys used for dependency verification.]' \
|
||||||
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
||||||
(--stacktrace,-s){-S,--full-stacktrace}'[Print out the full (very verbose) stacktrace for all exceptions.]' \
|
(--stacktrace,-s){-S,--full-stacktrace}'[Prints the full (very verbose) stacktrace for all exceptions.]' \
|
||||||
{-g,--gradle-user-home}'[Specifies the Gradle user home directory. Defaults to ~/.gradle]:gradle user home:_directories:->argument-expected' \
|
{-g,--gradle-user-home}'[Specifies the Gradle user home directory. Default is ~/.gradle.]:gradle user home:_directories:->argument-expected' \
|
||||||
{-h,--help}'[Shows a help message.]' \
|
{-h,--help}'[Shows a help message.]' \
|
||||||
\*'--include-build[Include the specified build in the composite.]:include build:_directories:->argument-expected' \
|
\*'--include-build[Includes the specified build in the composite.]:include build:_directories:->argument-expected' \
|
||||||
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Set log level to info.]' \
|
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Sets the log level to info.]' \
|
||||||
\*{-I,--init-script}'[Specify an initialization script.]:init script:_files -g \*.gradle(|.kts):->argument-expected' \
|
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle(|.kts):->argument-expected' \
|
||||||
'--max-workers[Configure the number of concurrent workers Gradle is allowed to use.]:->argument-expected' \
|
'--max-workers[Configures the maximum number of concurrent workers Gradle is allowed to use.]:->argument-expected' \
|
||||||
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
||||||
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
||||||
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
||||||
(--continue)'--no-continue[Stop task execution after a task failure.]' \
|
(--continue)'--no-continue[Stops task execution after a task failure.]' \
|
||||||
(--daemon)'--no-daemon[Do not use the Gradle daemon to run the build. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
(--daemon)'--no-daemon[Runs the build without the Gradle daemon. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
||||||
(--parallel)'--no-parallel[Disables parallel execution to build projects.]' \
|
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
||||||
(--problems-report)'--no-problems-report[(Experimental) disables HTML problems report]' \
|
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
||||||
{-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
|
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
||||||
(--scan)'--no-scan[Disables the creation of a Build Scan.]' \
|
(--scan)'--no-scan[Disables the creation of a Build Scan.]' \
|
||||||
(--watch-fs)'--no-watch-fs[Disables watching the file system.]' \
|
(--watch-fs)'--no-watch-fs[Disables file system watching.]' \
|
||||||
'--offline[Execute the build without accessing network resources.]' \
|
'--offline[Runs the build without accessing network resources.]' \
|
||||||
(--no-parallel)'--parallel[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
|
(--no-parallel)'--parallel[Builds projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
|
||||||
'--priority[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Values are 'normal' (default) or 'low']:->argument-expected' \
|
'--priority[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Supported values are 'normal' (default) or 'low'.]:->argument-expected' \
|
||||||
(--no-problems-report)'--problems-report[(Experimental) enables HTML problems report]' \
|
(--no-problems-report)'--problems-report[Enables the HTML problems report. (incubating)]' \
|
||||||
'--profile[Profile build execution time and generates a report in the <build_dir>/reports/profile directory.]' \
|
'--profile[Profiles build execution time. Generates a report in the <build_dir>/reports/profile directory.]' \
|
||||||
'--project-cache-dir[Specify the project-specific cache directory. Defaults to .gradle in the root project directory.]:project cache dir:_directories:->argument-expected' \
|
'--project-cache-dir[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:project cache dir:_directories:->argument-expected' \
|
||||||
{-p,--project-dir}'[Specifies the start directory for Gradle. Defaults to current directory.]:project dir:_directories:->argument-expected' \
|
{-p,--project-dir}'[Specifies the start directory for Gradle. Default is the current directory.]:project dir:_directories:->argument-expected' \
|
||||||
'--property-upgrade-report[(Experimental) Runs build with experimental property upgrade report.]' \
|
'--property-upgrade-report[Runs the build with the experimental property upgrade report. (incubating)]' \
|
||||||
(--warn,-w,--info,-i,--debug,-d){-q,--quiet}'[Log errors only.]' \
|
(--warn,-w,--info,-i,--debug,-d){-q,--quiet}'[Logs errors only.]' \
|
||||||
{-U,--refresh-dependencies}'[Refresh the state of dependencies.]' \
|
{-U,--refresh-dependencies}'[Refreshes the state of dependencies.]' \
|
||||||
'--refresh-keys[Refresh the public keys used for dependency verification.]' \
|
'--refresh-keys[Refreshes the public keys used for dependency verification.]' \
|
||||||
'--rerun[Causes the task to be re-run even if up-to-date.]' \
|
'--rerun[Causes the task to be re-run even if up-to-date.]' \
|
||||||
'--rerun-tasks[Ignore previously cached task results.]' \
|
'--rerun-tasks[Ignores previously cached task results.]' \
|
||||||
(--no-scan)'--scan[Generate a Build Scan (powered by Develocity).]' \
|
(--no-scan)'--scan[Generates a Build Scan (powered by Develocity).]' \
|
||||||
{-V,--show-version}'[Print version info and continue.]' \
|
{-V,--show-version}'[Print version info and continue.]' \
|
||||||
(--full-stacktrace,-S){-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
|
(--full-stacktrace,-S){-s,--stacktrace}'[Prints the stacktrace for all exceptions.]' \
|
||||||
'--status[Shows status of running and recently stopped Gradle daemon(s).]' \
|
'--status[Shows the status of running and recently stopped Gradle daemons.]' \
|
||||||
'--stop[Stops the Gradle daemon if it is running.]' \
|
'--stop[Stops the Gradle daemon if it is running.]' \
|
||||||
'--task-graph[(Experimental) Print task graph instead of executing tasks.]' \
|
'--task-graph[Prints the task graph instead of executing tasks.]' \
|
||||||
\*'--update-locks[Perform a partial update of the dependency lock, letting passed in module notations change version. (incubating)]' \
|
\*'--update-locks[Performs a partial update of the dependency lock. Allows passed-in module notations to change version. (incubating)]' \
|
||||||
{-v,--version}'[Print version info and exit.]' \
|
{-v,--version}'[Print version info and exit.]' \
|
||||||
(--quiet,-q,--info,-i,--debug,-d){-w,--warn}'[Set log level to warn.]' \
|
(--quiet,-q,--info,-i,--debug,-d){-w,--warn}'[Sets the log level to warn.]' \
|
||||||
'--warning-mode[Specifies which mode of warnings to generate. Values are 'all', 'fail', 'summary'(default) or 'none']:warning mode:(all summary none):->argument-expected' \
|
'--warning-mode[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]:warning mode:(all summary none):->argument-expected' \
|
||||||
(--no-watch-fs)'--watch-fs[Enables watching the file system for changes, allowing data about the file system to be re-used for the next build.]' \
|
(--no-watch-fs)'--watch-fs[Enables file system watching. Reuses file system data for subsequent builds.]' \
|
||||||
'--write-locks[Persists dependency resolution for locked configurations, ignoring existing locking information if it exists]' \
|
'--write-locks[Persists dependency resolution for locked configurations. Ignores existing locking information if it exists.]' \
|
||||||
{-M,--write-verification-metadata}'[Generates checksums for dependencies used in the project (comma-separated list)]:->argument-expected' \
|
{-M,--write-verification-metadata}'[Generates checksums for dependencies used in the project. Accepts a comma-separated list.]:->argument-expected' \
|
||||||
'(-)*:: :->task-or-option' && ret=0
|
'(-)*:: :->task-or-option' && ret=0
|
||||||
|
|
||||||
if [[ $words[CURRENT] != -* && $state != "argument-expected" ]]; then
|
if [[ $words[CURRENT] != -* && $state != "argument-expected" ]]; then
|
||||||
|
|||||||
143
plugins/hcloud/README.md
Normal file
143
plugins/hcloud/README.md
Normal file
@@ -0,0 +1,143 @@
|
|||||||
|
# hcloud plugin
|
||||||
|
|
||||||
|
This plugin adds completion for the [Hetzner Cloud CLI](https://github.com/hetznercloud/cli),
|
||||||
|
as well as some aliases for common hcloud commands.
|
||||||
|
|
||||||
|
To use it, add `hcloud` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
plugins=(... hcloud)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
| Alias | Command | Description |
|
||||||
|
| :--------- | :---------------------------------------- | :------------------------------------------------------------ |
|
||||||
|
| hc | `hcloud` | The hcloud command |
|
||||||
|
| | | **Context Management** |
|
||||||
|
| hcctx | `hcloud context` | Manage contexts |
|
||||||
|
| hcctxls | `hcloud context list` | List all contexts |
|
||||||
|
| hcctxu | `hcloud context use` | Use a context |
|
||||||
|
| hcctxc | `hcloud context create` | Create a new context |
|
||||||
|
| hcctxd | `hcloud context delete` | Delete a context |
|
||||||
|
| hcctxa | `hcloud context active` | Show active context |
|
||||||
|
| | | **Server Management** |
|
||||||
|
| hcs | `hcloud server` | Manage servers |
|
||||||
|
| hcsl | `hcloud server list` | List all servers |
|
||||||
|
| hcsc | `hcloud server create` | Create a server |
|
||||||
|
| hcsd | `hcloud server delete` | Delete a server |
|
||||||
|
| hcsdesc | `hcloud server describe` | Describe a server |
|
||||||
|
| hcspoff | `hcloud server poweroff` | Power off a server |
|
||||||
|
| hcspon | `hcloud server poweron` | Power on a server |
|
||||||
|
| hcsr | `hcloud server reboot` | Reboot a server |
|
||||||
|
| hcsreset | `hcloud server reset` | Reset a server |
|
||||||
|
| hcssh | `hcloud server ssh` | SSH into a server |
|
||||||
|
| hcse | `hcloud server enable-rescue` | Enable rescue mode for a server |
|
||||||
|
| hcsdr | `hcloud server disable-rescue` | Disable rescue mode for a server |
|
||||||
|
| hcsip | `hcloud server ip` | Manage server IPs |
|
||||||
|
| hcsa | `hcloud server attach-iso` | Attach an ISO to a server |
|
||||||
|
| hcsda | `hcloud server detach-iso` | Detach an ISO from a server |
|
||||||
|
| hcscip | `hcloud server change-type` | Change server type |
|
||||||
|
| | | **Volume Management** |
|
||||||
|
| hcv | `hcloud volume` | Manage volumes |
|
||||||
|
| hcvl | `hcloud volume list` | List all volumes |
|
||||||
|
| hcvc | `hcloud volume create` | Create a volume |
|
||||||
|
| hcvd | `hcloud volume delete` | Delete a volume |
|
||||||
|
| hcvdesc | `hcloud volume describe` | Describe a volume |
|
||||||
|
| hcva | `hcloud volume attach` | Attach a volume to a server |
|
||||||
|
| hcvda | `hcloud volume detach` | Detach a volume from a server |
|
||||||
|
| hcvr | `hcloud volume resize` | Resize a volume |
|
||||||
|
| | | **Network Management** |
|
||||||
|
| hcn | `hcloud network` | Manage networks |
|
||||||
|
| hcnl | `hcloud network list` | List all networks |
|
||||||
|
| hcnc | `hcloud network create` | Create a network |
|
||||||
|
| hcnd | `hcloud network delete` | Delete a network |
|
||||||
|
| hcndesc | `hcloud network describe` | Describe a network |
|
||||||
|
| hcnas | `hcloud network add-subnet` | Add a subnet to a network |
|
||||||
|
| hcnds | `hcloud network delete-subnet` | Delete a subnet from a network |
|
||||||
|
| hcnar | `hcloud network add-route` | Add a route to a network |
|
||||||
|
| hcndr | `hcloud network delete-route` | Delete a route from a network |
|
||||||
|
| | | **Floating IP Management** |
|
||||||
|
| hcfip | `hcloud floating-ip` | Manage floating IPs |
|
||||||
|
| hcfipl | `hcloud floating-ip list` | List all floating IPs |
|
||||||
|
| hcfipc | `hcloud floating-ip create` | Create a floating IP |
|
||||||
|
| hcfipd | `hcloud floating-ip delete` | Delete a floating IP |
|
||||||
|
| hcfipdesc | `hcloud floating-ip describe` | Describe a floating IP |
|
||||||
|
| hcfipa | `hcloud floating-ip assign` | Assign a floating IP to a server |
|
||||||
|
| hcfipua | `hcloud floating-ip unassign` | Unassign a floating IP from a server |
|
||||||
|
| | | **SSH Key Management** |
|
||||||
|
| hcsk | `hcloud ssh-key` | Manage SSH keys |
|
||||||
|
| hcskl | `hcloud ssh-key list` | List all SSH keys |
|
||||||
|
| hcskc | `hcloud ssh-key create` | Create an SSH key |
|
||||||
|
| hcskd | `hcloud ssh-key delete` | Delete an SSH key |
|
||||||
|
| hcskdesc | `hcloud ssh-key describe` | Describe an SSH key |
|
||||||
|
| hcsku | `hcloud ssh-key update` | Update an SSH key |
|
||||||
|
| | | **Image Management** |
|
||||||
|
| hci | `hcloud image` | Manage images |
|
||||||
|
| hcil | `hcloud image list` | List all images |
|
||||||
|
| hcid | `hcloud image delete` | Delete an image |
|
||||||
|
| hcidesc | `hcloud image describe` | Describe an image |
|
||||||
|
| hciu | `hcloud image update` | Update an image |
|
||||||
|
| | | **Firewall Management** |
|
||||||
|
| hcfw | `hcloud firewall` | Manage firewalls |
|
||||||
|
| hcfwl | `hcloud firewall list` | List all firewalls |
|
||||||
|
| hcfwc | `hcloud firewall create` | Create a firewall |
|
||||||
|
| hcfwd | `hcloud firewall delete` | Delete a firewall |
|
||||||
|
| hcfwdesc | `hcloud firewall describe` | Describe a firewall |
|
||||||
|
| hcfwar | `hcloud firewall add-rule` | Add a rule to a firewall |
|
||||||
|
| hcfwdr | `hcloud firewall delete-rule` | Delete a rule from a firewall |
|
||||||
|
| hcfwas | `hcloud firewall apply-to-resource` | Apply a firewall to a resource |
|
||||||
|
| hcfwrs | `hcloud firewall remove-from-resource` | Remove a firewall from a resource |
|
||||||
|
| | | **Load Balancer Management** |
|
||||||
|
| hclb | `hcloud load-balancer` | Manage load balancers |
|
||||||
|
| hclbl | `hcloud load-balancer list` | List all load balancers |
|
||||||
|
| hclbc | `hcloud load-balancer create` | Create a load balancer |
|
||||||
|
| hclbd | `hcloud load-balancer delete` | Delete a load balancer |
|
||||||
|
| hclbdesc | `hcloud load-balancer describe` | Describe a load balancer |
|
||||||
|
| hclbu | `hcloud load-balancer update` | Update a load balancer |
|
||||||
|
| hclbas | `hcloud load-balancer add-service` | Add a service to a load balancer |
|
||||||
|
| hclbds | `hcloud load-balancer delete-service` | Delete a service from a load balancer |
|
||||||
|
| hclbat | `hcloud load-balancer add-target` | Add a target to a load balancer |
|
||||||
|
| hclbdt | `hcloud load-balancer delete-target` | Delete a target from a load balancer |
|
||||||
|
| | | **Certificate Management** |
|
||||||
|
| hccert | `hcloud certificate` | Manage certificates |
|
||||||
|
| hccertl | `hcloud certificate list` | List all certificates |
|
||||||
|
| hccertc | `hcloud certificate create` | Create a certificate |
|
||||||
|
| hccertd | `hcloud certificate delete` | Delete a certificate |
|
||||||
|
| hccertdesc | `hcloud certificate describe` | Describe a certificate |
|
||||||
|
| hccertu | `hcloud certificate update` | Update a certificate |
|
||||||
|
| | | **Datacenter and Location Info** |
|
||||||
|
| hcdc | `hcloud datacenter list` | List all datacenters |
|
||||||
|
| hcloc | `hcloud location list` | List all locations |
|
||||||
|
| hcst | `hcloud server-type list` | List all server types |
|
||||||
|
| hcit | `hcloud image list --type system` | List all system images |
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
This plugin requires the [Hetzner Cloud CLI](https://github.com/hetznercloud/cli) to be installed.
|
||||||
|
|
||||||
|
### Installation
|
||||||
|
|
||||||
|
Install the Hetzner Cloud CLI using one of the following methods:
|
||||||
|
|
||||||
|
**macOS (Homebrew):**
|
||||||
|
```bash
|
||||||
|
brew install hcloud
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux (from source):**
|
||||||
|
```bash
|
||||||
|
go install github.com/hetznercloud/cli/cmd/hcloud@latest
|
||||||
|
```
|
||||||
|
|
||||||
|
**Or download a prebuilt binary from the [releases page](https://github.com/hetznercloud/cli/releases).**
|
||||||
|
|
||||||
|
### Setup
|
||||||
|
|
||||||
|
After installation, create a context and authenticate:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hcloud context create my-project
|
||||||
|
```
|
||||||
|
|
||||||
|
You'll be prompted to enter your Hetzner Cloud API token, which you can generate in the [Hetzner Cloud Console](https://console.hetzner.cloud/).
|
||||||
129
plugins/hcloud/hcloud.plugin.zsh
Normal file
129
plugins/hcloud/hcloud.plugin.zsh
Normal file
@@ -0,0 +1,129 @@
|
|||||||
|
# hcloud plugin for oh-my-zsh
|
||||||
|
# Hetzner Cloud CLI: https://github.com/hetznercloud/cli
|
||||||
|
|
||||||
|
if (( ! $+commands[hcloud] )); then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the completion file doesn't exist yet, we need to autoload it and
|
||||||
|
# bind it to `hcloud`. Otherwise, compinit will have already done that.
|
||||||
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_hcloud" ]]; then
|
||||||
|
typeset -g -A _comps
|
||||||
|
autoload -Uz _hcloud
|
||||||
|
_comps[hcloud]=_hcloud
|
||||||
|
fi
|
||||||
|
|
||||||
|
hcloud completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_hcloud" &|
|
||||||
|
|
||||||
|
# Main alias
|
||||||
|
alias hc='hcloud'
|
||||||
|
|
||||||
|
# Context management
|
||||||
|
alias hcctx='hcloud context'
|
||||||
|
alias hcctxls='hcloud context list'
|
||||||
|
alias hcctxu='hcloud context use'
|
||||||
|
alias hcctxc='hcloud context create'
|
||||||
|
alias hcctxd='hcloud context delete'
|
||||||
|
alias hcctxa='hcloud context active'
|
||||||
|
|
||||||
|
# Server management
|
||||||
|
alias hcs='hcloud server'
|
||||||
|
alias hcsl='hcloud server list'
|
||||||
|
alias hcsc='hcloud server create'
|
||||||
|
alias hcsd='hcloud server delete'
|
||||||
|
alias hcsdesc='hcloud server describe'
|
||||||
|
alias hcspoff='hcloud server poweroff'
|
||||||
|
alias hcspon='hcloud server poweron'
|
||||||
|
alias hcsr='hcloud server reboot'
|
||||||
|
alias hcsreset='hcloud server reset'
|
||||||
|
alias hcssh='hcloud server ssh'
|
||||||
|
alias hcse='hcloud server enable-rescue'
|
||||||
|
alias hcsdr='hcloud server disable-rescue'
|
||||||
|
alias hcsip='hcloud server ip'
|
||||||
|
|
||||||
|
# Server actions
|
||||||
|
alias hcsa='hcloud server attach-iso'
|
||||||
|
alias hcsda='hcloud server detach-iso'
|
||||||
|
alias hcscip='hcloud server change-type'
|
||||||
|
|
||||||
|
# Volume management
|
||||||
|
alias hcv='hcloud volume'
|
||||||
|
alias hcvl='hcloud volume list'
|
||||||
|
alias hcvc='hcloud volume create'
|
||||||
|
alias hcvd='hcloud volume delete'
|
||||||
|
alias hcvdesc='hcloud volume describe'
|
||||||
|
alias hcva='hcloud volume attach'
|
||||||
|
alias hcvda='hcloud volume detach'
|
||||||
|
alias hcvr='hcloud volume resize'
|
||||||
|
|
||||||
|
# Network management
|
||||||
|
alias hcn='hcloud network'
|
||||||
|
alias hcnl='hcloud network list'
|
||||||
|
alias hcnc='hcloud network create'
|
||||||
|
alias hcnd='hcloud network delete'
|
||||||
|
alias hcndesc='hcloud network describe'
|
||||||
|
alias hcnas='hcloud network add-subnet'
|
||||||
|
alias hcnds='hcloud network delete-subnet'
|
||||||
|
alias hcnar='hcloud network add-route'
|
||||||
|
alias hcndr='hcloud network delete-route'
|
||||||
|
|
||||||
|
# Floating IP management
|
||||||
|
alias hcfip='hcloud floating-ip'
|
||||||
|
alias hcfipl='hcloud floating-ip list'
|
||||||
|
alias hcfipc='hcloud floating-ip create'
|
||||||
|
alias hcfipd='hcloud floating-ip delete'
|
||||||
|
alias hcfipdesc='hcloud floating-ip describe'
|
||||||
|
alias hcfipa='hcloud floating-ip assign'
|
||||||
|
alias hcfipua='hcloud floating-ip unassign'
|
||||||
|
|
||||||
|
# SSH key management
|
||||||
|
alias hcsk='hcloud ssh-key'
|
||||||
|
alias hcskl='hcloud ssh-key list'
|
||||||
|
alias hcskc='hcloud ssh-key create'
|
||||||
|
alias hcskd='hcloud ssh-key delete'
|
||||||
|
alias hcskdesc='hcloud ssh-key describe'
|
||||||
|
alias hcsku='hcloud ssh-key update'
|
||||||
|
|
||||||
|
# Image management
|
||||||
|
alias hci='hcloud image'
|
||||||
|
alias hcil='hcloud image list'
|
||||||
|
alias hcid='hcloud image delete'
|
||||||
|
alias hcidesc='hcloud image describe'
|
||||||
|
alias hciu='hcloud image update'
|
||||||
|
|
||||||
|
# Firewall management
|
||||||
|
alias hcfw='hcloud firewall'
|
||||||
|
alias hcfwl='hcloud firewall list'
|
||||||
|
alias hcfwc='hcloud firewall create'
|
||||||
|
alias hcfwd='hcloud firewall delete'
|
||||||
|
alias hcfwdesc='hcloud firewall describe'
|
||||||
|
alias hcfwar='hcloud firewall add-rule'
|
||||||
|
alias hcfwdr='hcloud firewall delete-rule'
|
||||||
|
alias hcfwas='hcloud firewall apply-to-resource'
|
||||||
|
alias hcfwrs='hcloud firewall remove-from-resource'
|
||||||
|
|
||||||
|
# Load balancer management
|
||||||
|
alias hclb='hcloud load-balancer'
|
||||||
|
alias hclbl='hcloud load-balancer list'
|
||||||
|
alias hclbc='hcloud load-balancer create'
|
||||||
|
alias hclbd='hcloud load-balancer delete'
|
||||||
|
alias hclbdesc='hcloud load-balancer describe'
|
||||||
|
alias hclbu='hcloud load-balancer update'
|
||||||
|
alias hclbas='hcloud load-balancer add-service'
|
||||||
|
alias hclbds='hcloud load-balancer delete-service'
|
||||||
|
alias hclbat='hcloud load-balancer add-target'
|
||||||
|
alias hclbdt='hcloud load-balancer delete-target'
|
||||||
|
|
||||||
|
# Certificate management
|
||||||
|
alias hccert='hcloud certificate'
|
||||||
|
alias hccertl='hcloud certificate list'
|
||||||
|
alias hccertc='hcloud certificate create'
|
||||||
|
alias hccertd='hcloud certificate delete'
|
||||||
|
alias hccertdesc='hcloud certificate describe'
|
||||||
|
alias hccertu='hcloud certificate update'
|
||||||
|
|
||||||
|
# Datacenter and location info
|
||||||
|
alias hcdc='hcloud datacenter list'
|
||||||
|
alias hcloc='hcloud location list'
|
||||||
|
alias hcst='hcloud server-type list'
|
||||||
|
alias hcit='hcloud image list --type system'
|
||||||
@@ -79,7 +79,7 @@ Using [Zinit](https://github.com/zdharma-continuum/zinit):
|
|||||||
|
|
||||||
2. Load the plugin in `~/.zshrc`:
|
2. Load the plugin in `~/.zshrc`:
|
||||||
|
|
||||||
zinit load 'zsh-users/zsh-history-substring-search
|
zinit load 'zsh-users/zsh-history-substring-search'
|
||||||
zinit ice wait atload'_history_substring_search_config'
|
zinit ice wait atload'_history_substring_search_config'
|
||||||
|
|
||||||
3. Run `exec zsh` to take changes into account:
|
3. Run `exec zsh` to take changes into account:
|
||||||
|
|||||||
@@ -3,6 +3,13 @@
|
|||||||
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
|
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
|
||||||
0="${${(M)0:#/*}:-$PWD/$0}"
|
0="${${(M)0:#/*}:-$PWD/$0}"
|
||||||
|
|
||||||
|
# Respect case sensitivity settings for globbing in history search
|
||||||
|
if [[ "$CASE_SENSITIVE" = true ]]; then
|
||||||
|
: ${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS=''}
|
||||||
|
else
|
||||||
|
: ${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'}
|
||||||
|
fi
|
||||||
|
|
||||||
source ${0:A:h}/history-substring-search.zsh
|
source ${0:A:h}/history-substring-search.zsh
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -45,14 +45,7 @@
|
|||||||
|
|
||||||
: ${HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold'}
|
: ${HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_FOUND='bg=magenta,fg=white,bold'}
|
||||||
: ${HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold'}
|
: ${HISTORY_SUBSTRING_SEARCH_HIGHLIGHT_NOT_FOUND='bg=red,fg=white,bold'}
|
||||||
|
|
||||||
# Respect CASE_SENSITIVE setting for case sensitivity
|
|
||||||
if [[ "$CASE_SENSITIVE" = true ]]; then
|
|
||||||
: ${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS=''}
|
|
||||||
else
|
|
||||||
: ${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'}
|
: ${HISTORY_SUBSTRING_SEARCH_GLOBBING_FLAGS='i'}
|
||||||
fi
|
|
||||||
|
|
||||||
: ${HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=''}
|
: ${HISTORY_SUBSTRING_SEARCH_ENSURE_UNIQUE=''}
|
||||||
: ${HISTORY_SUBSTRING_SEARCH_FUZZY=''}
|
: ${HISTORY_SUBSTRING_SEARCH_FUZZY=''}
|
||||||
: ${HISTORY_SUBSTRING_SEARCH_PREFIXED=''}
|
: ${HISTORY_SUBSTRING_SEARCH_PREFIXED=''}
|
||||||
@@ -302,8 +295,8 @@ _history-substring-search-begin() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Escape and join query parts with wildcard character '*' as separator
|
# Escape and join query parts with wildcard character '*' as seperator
|
||||||
# `(j:CHAR:)` join array to string with CHAR as separator
|
# `(j:CHAR:)` join array to string with CHAR as seperator
|
||||||
#
|
#
|
||||||
local search_pattern="${(j:*:)_history_substring_search_query_parts[@]//(#m)[\][()|\\*?#<>~^]/\\$MATCH}*"
|
local search_pattern="${(j:*:)_history_substring_search_query_parts[@]//(#m)[\][()|\\*?#<>~^]/\\$MATCH}*"
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,9 @@ plugins=(... jj)
|
|||||||
|
|
||||||
| Alias | Command |
|
| Alias | Command |
|
||||||
| ------ | ----------------------------- |
|
| ------ | ----------------------------- |
|
||||||
|
| jja | `jj abandon` |
|
||||||
| jjb | `jj bookmark` |
|
| jjb | `jj bookmark` |
|
||||||
|
| jjba | `jj bookmark advance` |
|
||||||
| jjbc | `jj bookmark create` |
|
| jjbc | `jj bookmark create` |
|
||||||
| jjbd | `jj bookmark delete` |
|
| jjbd | `jj bookmark delete` |
|
||||||
| jjbf | `jj bookmark forget` |
|
| jjbf | `jj bookmark forget` |
|
||||||
@@ -97,6 +99,25 @@ If you prefer to keep your prompt always up-to-date but still don't want to _fee
|
|||||||
your prompt asynchronous. This plugin doesn't do this automatically so you'd have to hack your theme a bit for
|
your prompt asynchronous. This plugin doesn't do this automatically so you'd have to hack your theme a bit for
|
||||||
that.
|
that.
|
||||||
|
|
||||||
|
### Git async-prompt compatibility
|
||||||
|
|
||||||
|
If you use a wrapper function that calls `git_prompt_info` (as shown above), it won't work with
|
||||||
|
the default git async-prompt mode. This is because async-prompt only registers its background worker
|
||||||
|
when it detects `$(git_prompt_info)` literally in your prompt variables. A wrapper like
|
||||||
|
`$(_my_theme_vcs_info)` won't match, so the async output stays empty.
|
||||||
|
|
||||||
|
To fix this, add one of the following to your `.zshrc` **before** Oh My Zsh is sourced:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
# Option 1: force async handlers to always register (recommended, keeps async behavior)
|
||||||
|
zstyle ':omz:alpha:lib:git' async-prompt force
|
||||||
|
|
||||||
|
# Option 2: disable async-prompt entirely (simpler, but prompt may feel slower in large repos)
|
||||||
|
zstyle ':omz:alpha:lib:git' async-prompt no
|
||||||
|
```
|
||||||
|
|
||||||
|
See [#13555](https://github.com/ohmyzsh/ohmyzsh/issues/13555) for details.
|
||||||
|
|
||||||
## See Also
|
## See Also
|
||||||
|
|
||||||
- [martinvonz/jj](https://github.com/martinvonz/jj)
|
- [martinvonz/jj](https://github.com/martinvonz/jj)
|
||||||
|
|||||||
@@ -34,7 +34,9 @@ function jj_prompt_template() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Aliases (sorted alphabetically)
|
# Aliases (sorted alphabetically)
|
||||||
|
alias jja='jj abandon'
|
||||||
alias jjb='jj bookmark'
|
alias jjb='jj bookmark'
|
||||||
|
alias jjba='jj bookmark advance'
|
||||||
alias jjbc='jj bookmark create'
|
alias jjbc='jj bookmark create'
|
||||||
alias jjbd='jj bookmark delete'
|
alias jjbd='jj bookmark delete'
|
||||||
alias jjbf='jj bookmark forget'
|
alias jjbf='jj bookmark forget'
|
||||||
|
|||||||
@@ -1,10 +1,9 @@
|
|||||||
# kube-ps1: Kubernetes prompt for bash and zsh
|
# kube-ps1: Kubernetes prompt for bash, zsh, and fish
|
||||||
|
|
||||||

|

|
||||||
[](https://github.com/jonmosco/kube-ps1/actions/workflows/ci.yml)
|
[](https://github.com/jonmosco/kube-ps1/actions/workflows/ci.yml)
|
||||||
|
|
||||||
A script that lets you add the current Kubernetes context and namespace
|
A script that lets you add the current Kubernetes context and namespace configured on `kubectl` to your Bash, Zsh, or Fish prompt.
|
||||||
configured on `kubectl` to your Bash/Zsh prompt strings (i.e. the `$PS1`).
|
|
||||||
|
|
||||||
Inspired by several tools used to simplify usage of `kubectl`.
|
Inspired by several tools used to simplify usage of `kubectl`.
|
||||||
|
|
||||||
@@ -77,6 +76,21 @@ source /path/to/kube-ps1.sh
|
|||||||
PS1='[\u@\h \W $(kube_ps1)]\$ '
|
PS1='[\u@\h \W $(kube_ps1)]\$ '
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### Fish
|
||||||
|
|
||||||
|
Add this to `~/.config/fish/config.fish`:
|
||||||
|
|
||||||
|
```fish
|
||||||
|
source /path/to/kube-ps1.fish
|
||||||
|
|
||||||
|
function fish_prompt
|
||||||
|
echo -n (kube_ps1) ' '
|
||||||
|
# your existing prompt here
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
> Note: Fish users should source `kube-ps1.fish` instead of `kube-ps1.sh`.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
The default prompt assumes you have the `kubectl` command line utility installed.
|
The default prompt assumes you have the `kubectl` command line utility installed.
|
||||||
@@ -184,8 +198,7 @@ If the font is not properly installed, and the glyph is not available, it will d
|
|||||||
|
|
||||||
## Customization
|
## Customization
|
||||||
|
|
||||||
The default settings can be overridden in `~/.bashrc` or `~/.zshrc` by setting
|
The default settings can be overridden in `~/.bashrc`, `~/.zshrc`, or `~/.config/fish/config.fish` by setting the following variables:
|
||||||
the following variables:
|
|
||||||
|
|
||||||
| Variable | Default | Meaning |
|
| Variable | Default | Meaning |
|
||||||
| :------- | :-----: | ------- |
|
| :------- | :-----: | ------- |
|
||||||
|
|||||||
@@ -49,13 +49,32 @@ _kube_ps1_shell_type() {
|
|||||||
elif [ "${BASH_VERSION-}" ]; then
|
elif [ "${BASH_VERSION-}" ]; then
|
||||||
_KUBE_PS1_SHELL_TYPE="bash"
|
_KUBE_PS1_SHELL_TYPE="bash"
|
||||||
fi
|
fi
|
||||||
echo $_KUBE_PS1_SHELL_TYPE
|
echo "$_KUBE_PS1_SHELL_TYPE"
|
||||||
}
|
}
|
||||||
|
|
||||||
_kube_ps1_init() {
|
_kube_ps1_init() {
|
||||||
[[ -f "${_KUBE_PS1_DISABLE_PATH}" ]] && KUBE_PS1_ENABLED=off
|
[[ -f "${_KUBE_PS1_DISABLE_PATH}" ]] && KUBE_PS1_ENABLED=off
|
||||||
|
|
||||||
case "$(_kube_ps1_shell_type)" in
|
# Detect shell type once and cache it
|
||||||
|
_KUBE_PS1_SHELL="$(_kube_ps1_shell_type)"
|
||||||
|
|
||||||
|
# Check tput availability once
|
||||||
|
if tput setaf 1 &> /dev/null; then
|
||||||
|
_KUBE_PS1_TPUT_AVAILABLE=true
|
||||||
|
else
|
||||||
|
_KUBE_PS1_TPUT_AVAILABLE=false
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Detect stat type once (not needed for zsh which uses zstat builtin)
|
||||||
|
if [[ "${_KUBE_PS1_SHELL}" != "zsh" ]]; then
|
||||||
|
if stat -c "%s" /dev/null &> /dev/null; then
|
||||||
|
_KUBE_PS1_STAT_TYPE="gnu"
|
||||||
|
else
|
||||||
|
_KUBE_PS1_STAT_TYPE="bsd"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "${_KUBE_PS1_SHELL}" in
|
||||||
"zsh")
|
"zsh")
|
||||||
_KUBE_PS1_OPEN_ESC="%{"
|
_KUBE_PS1_OPEN_ESC="%{"
|
||||||
_KUBE_PS1_CLOSE_ESC="%}"
|
_KUBE_PS1_CLOSE_ESC="%}"
|
||||||
@@ -88,20 +107,20 @@ _kube_ps1_color_fg() {
|
|||||||
magenta) _KUBE_PS1_FG_CODE=5;;
|
magenta) _KUBE_PS1_FG_CODE=5;;
|
||||||
cyan) _KUBE_PS1_FG_CODE=6;;
|
cyan) _KUBE_PS1_FG_CODE=6;;
|
||||||
white) _KUBE_PS1_FG_CODE=7;;
|
white) _KUBE_PS1_FG_CODE=7;;
|
||||||
# 256
|
# 256 colors
|
||||||
[0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-6]) _KUBE_PS1_FG_CODE="${1}";;
|
[0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]) _KUBE_PS1_FG_CODE="${1}";;
|
||||||
*) _KUBE_PS1_FG_CODE=default
|
*) _KUBE_PS1_FG_CODE=default
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [[ "${_KUBE_PS1_FG_CODE}" == "default" ]]; then
|
if [[ "${_KUBE_PS1_FG_CODE}" == "default" ]]; then
|
||||||
_KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}"
|
_KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}"
|
||||||
return
|
return
|
||||||
elif [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
elif [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||||
_KUBE_PS1_FG_CODE="%F{$_KUBE_PS1_FG_CODE}"
|
_KUBE_PS1_FG_CODE="%F{$_KUBE_PS1_FG_CODE}"
|
||||||
elif [[ "$(_kube_ps1_shell_type)" == "bash" ]]; then
|
elif [[ "${_KUBE_PS1_SHELL}" == "bash" ]]; then
|
||||||
if tput setaf 1 &> /dev/null; then
|
if [[ "${_KUBE_PS1_TPUT_AVAILABLE}" == "true" ]]; then
|
||||||
_KUBE_PS1_FG_CODE="$(tput setaf "${_KUBE_PS1_FG_CODE}")"
|
_KUBE_PS1_FG_CODE="$(tput setaf "${_KUBE_PS1_FG_CODE}")"
|
||||||
elif [[ $_KUBE_PS1_FG_CODE -ge 0 ]] && [[ $_KUBE_PS1_FG_CODE -le 256 ]]; then
|
elif [[ $_KUBE_PS1_FG_CODE -ge 0 ]] && [[ $_KUBE_PS1_FG_CODE -le 255 ]]; then
|
||||||
_KUBE_PS1_FG_CODE="\033[38;5;${_KUBE_PS1_FG_CODE}m"
|
_KUBE_PS1_FG_CODE="\033[38;5;${_KUBE_PS1_FG_CODE}m"
|
||||||
else
|
else
|
||||||
_KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}"
|
_KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_FG}"
|
||||||
@@ -121,30 +140,30 @@ _kube_ps1_color_bg() {
|
|||||||
magenta) _KUBE_PS1_BG_CODE=5;;
|
magenta) _KUBE_PS1_BG_CODE=5;;
|
||||||
cyan) _KUBE_PS1_BG_CODE=6;;
|
cyan) _KUBE_PS1_BG_CODE=6;;
|
||||||
white) _KUBE_PS1_BG_CODE=7;;
|
white) _KUBE_PS1_BG_CODE=7;;
|
||||||
# 256
|
# 256 colors
|
||||||
[0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-6]) _KUBE_PS1_BG_CODE="${1}";;
|
[0-9]|[1-9][0-9]|[1][0-9][0-9]|[2][0-4][0-9]|[2][5][0-5]) _KUBE_PS1_BG_CODE="${1}";;
|
||||||
*) _KUBE_PS1_BG_CODE=$'\033[0m';;
|
*) _KUBE_PS1_BG_CODE=default
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [[ "${_KUBE_PS1_BG_CODE}" == "default" ]]; then
|
if [[ "${_KUBE_PS1_BG_CODE}" == "default" ]]; then
|
||||||
_KUBE_PS1_FG_CODE="${_KUBE_PS1_DEFAULT_BG}"
|
_KUBE_PS1_BG_CODE="${_KUBE_PS1_DEFAULT_BG}"
|
||||||
return
|
return
|
||||||
elif [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
elif [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||||
_KUBE_PS1_BG_CODE="%K{$_KUBE_PS1_BG_CODE}"
|
_KUBE_PS1_BG_CODE="%K{$_KUBE_PS1_BG_CODE}"
|
||||||
elif [[ "$(_kube_ps1_shell_type)" == "bash" ]]; then
|
elif [[ "${_KUBE_PS1_SHELL}" == "bash" ]]; then
|
||||||
if tput setaf 1 &> /dev/null; then
|
if [[ "${_KUBE_PS1_TPUT_AVAILABLE}" == "true" ]]; then
|
||||||
_KUBE_PS1_BG_CODE="$(tput setab "${_KUBE_PS1_BG_CODE}")"
|
_KUBE_PS1_BG_CODE="$(tput setab "${_KUBE_PS1_BG_CODE}")"
|
||||||
elif [[ $_KUBE_PS1_BG_CODE -ge 0 ]] && [[ $_KUBE_PS1_BG_CODE -le 256 ]]; then
|
elif [[ $_KUBE_PS1_BG_CODE -ge 0 ]] && [[ $_KUBE_PS1_BG_CODE -le 255 ]]; then
|
||||||
_KUBE_PS1_BG_CODE="\033[48;5;${_KUBE_PS1_BG_CODE}m"
|
_KUBE_PS1_BG_CODE="\033[48;5;${_KUBE_PS1_BG_CODE}m"
|
||||||
else
|
else
|
||||||
_KUBE_PS1_BG_CODE="${DEFAULT_BG}"
|
_KUBE_PS1_BG_CODE="${_KUBE_PS1_DEFAULT_BG}"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
echo "${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_BG_CODE}${_KUBE_PS1_CLOSE_ESC}"
|
echo "${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_BG_CODE}${_KUBE_PS1_CLOSE_ESC}"
|
||||||
}
|
}
|
||||||
|
|
||||||
_kube_ps1_binary_check() {
|
_kube_ps1_binary_check() {
|
||||||
command -v $1 >/dev/null
|
command -v "$1" >/dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
_kube_ps1_symbol() {
|
_kube_ps1_symbol() {
|
||||||
@@ -161,6 +180,7 @@ _kube_ps1_symbol() {
|
|||||||
local oc_glyph=$'\ue7b7'
|
local oc_glyph=$'\ue7b7'
|
||||||
local oc_symbol_color=red
|
local oc_symbol_color=red
|
||||||
local custom_symbol_color="${KUBE_PS1_SYMBOL_COLOR:-$k8s_symbol_color}"
|
local custom_symbol_color="${KUBE_PS1_SYMBOL_COLOR:-$k8s_symbol_color}"
|
||||||
|
local KUBE_PS1_RESET_COLOR="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_FG}${_KUBE_PS1_CLOSE_ESC}"
|
||||||
|
|
||||||
# Choose the symbol based on the provided argument or environment variable
|
# Choose the symbol based on the provided argument or environment variable
|
||||||
case "${symbol_arg}" in
|
case "${symbol_arg}" in
|
||||||
@@ -174,7 +194,7 @@ _kube_ps1_symbol() {
|
|||||||
symbol="$(_kube_ps1_color_fg ${oc_symbol_color})${oc_glyph}${KUBE_PS1_RESET_COLOR}"
|
symbol="$(_kube_ps1_color_fg ${oc_symbol_color})${oc_glyph}${KUBE_PS1_RESET_COLOR}"
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
case "$(_kube_ps1_shell_type)" in
|
case "${_KUBE_PS1_SHELL}" in
|
||||||
bash)
|
bash)
|
||||||
if ((BASH_VERSINFO[0] >= 4)) && [[ $'\u2388' != "\\u2388" ]]; then
|
if ((BASH_VERSINFO[0] >= 4)) && [[ $'\u2388' != "\\u2388" ]]; then
|
||||||
symbol="$(_kube_ps1_color_fg $custom_symbol_color)${symbol_default}${KUBE_PS1_RESET_COLOR}"
|
symbol="$(_kube_ps1_color_fg $custom_symbol_color)${symbol_default}${KUBE_PS1_RESET_COLOR}"
|
||||||
@@ -212,18 +232,30 @@ _kube_ps1_file_newer_than() {
|
|||||||
local file=$1
|
local file=$1
|
||||||
local check_time=$2
|
local check_time=$2
|
||||||
|
|
||||||
if [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
if [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||||
# Use zstat '-F %s.%s' to make it compatible with low zsh version (eg: 5.0.2)
|
# Use zstat '-F %s.%s' to make it compatible with low zsh version (eg: 5.0.2)
|
||||||
mtime=$(zstat -L +mtime -F %s.%s "${file}")
|
mtime=$(zstat -L +mtime -F %s.%s "${file}")
|
||||||
elif stat -c "%s" /dev/null &> /dev/null; then
|
elif [[ "${_KUBE_PS1_STAT_TYPE}" == "gnu" ]]; then
|
||||||
# GNU stat
|
|
||||||
mtime=$(stat -L -c %Y "${file}")
|
mtime=$(stat -L -c %Y "${file}")
|
||||||
else
|
else
|
||||||
# BSD stat
|
|
||||||
mtime=$(stat -L -f %m "$file")
|
mtime=$(stat -L -f %m "$file")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
[[ "${mtime}" -gt "${check_time}" ]]
|
[[ "${mtime}" -gt "${check_time}" ]] && return 0
|
||||||
|
|
||||||
|
# If the path is a symlink, also check the symlink's own mtime
|
||||||
|
if [[ -L "${file}" ]]; then
|
||||||
|
if [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||||
|
mtime=$(zstat +mtime -F %s.%s "${file}")
|
||||||
|
elif [[ "${_KUBE_PS1_STAT_TYPE}" == "gnu" ]]; then
|
||||||
|
mtime=$(stat -c %Y "${file}")
|
||||||
|
else
|
||||||
|
mtime=$(stat -f %m "$file")
|
||||||
|
fi
|
||||||
|
[[ "${mtime}" -gt "${check_time}" ]] && return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
return 1
|
||||||
}
|
}
|
||||||
|
|
||||||
_kube_ps1_prompt_update() {
|
_kube_ps1_prompt_update() {
|
||||||
@@ -270,7 +302,6 @@ _kube_ps1_prompt_update() {
|
|||||||
_kube_ps1_get_context() {
|
_kube_ps1_get_context() {
|
||||||
if [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then
|
if [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]]; then
|
||||||
KUBE_PS1_CONTEXT="$(${KUBE_PS1_BINARY} config current-context 2>/dev/null)"
|
KUBE_PS1_CONTEXT="$(${KUBE_PS1_BINARY} config current-context 2>/dev/null)"
|
||||||
# Set namespace to 'N/A' if it is not defined
|
|
||||||
KUBE_PS1_CONTEXT="${KUBE_PS1_CONTEXT:-N/A}"
|
KUBE_PS1_CONTEXT="${KUBE_PS1_CONTEXT:-N/A}"
|
||||||
|
|
||||||
if [[ -n "${KUBE_PS1_CLUSTER_FUNCTION}" ]]; then
|
if [[ -n "${KUBE_PS1_CLUSTER_FUNCTION}" ]]; then
|
||||||
@@ -292,19 +323,16 @@ _kube_ps1_get_ns() {
|
|||||||
|
|
||||||
_kube_ps1_get_context_ns() {
|
_kube_ps1_get_context_ns() {
|
||||||
# Set the command time
|
# Set the command time
|
||||||
if [[ "$(_kube_ps1_shell_type)" == "bash" ]]; then
|
if [[ "${_KUBE_PS1_SHELL}" == "bash" ]]; then
|
||||||
if ((BASH_VERSINFO[0] >= 4 && BASH_VERSINFO[1] >= 2)); then
|
if ((BASH_VERSINFO[0] > 4 || (BASH_VERSINFO[0] == 4 && BASH_VERSINFO[1] >= 2))); then
|
||||||
_KUBE_PS1_LAST_TIME=$(printf '%(%s)T')
|
_KUBE_PS1_LAST_TIME=$(printf '%(%s)T')
|
||||||
else
|
else
|
||||||
_KUBE_PS1_LAST_TIME=$(date +%s)
|
_KUBE_PS1_LAST_TIME=$(date +%s)
|
||||||
fi
|
fi
|
||||||
elif [[ "$(_kube_ps1_shell_type)" == "zsh" ]]; then
|
elif [[ "${_KUBE_PS1_SHELL}" == "zsh" ]]; then
|
||||||
_KUBE_PS1_LAST_TIME=$EPOCHREALTIME
|
_KUBE_PS1_LAST_TIME=$EPOCHREALTIME
|
||||||
fi
|
fi
|
||||||
|
|
||||||
KUBE_PS1_CONTEXT="${KUBE_PS1_CONTEXT:-N/A}"
|
|
||||||
KUBE_PS1_NAMESPACE="${KUBE_PS1_NAMESPACE:-N/A}"
|
|
||||||
|
|
||||||
# Cache which cfgfiles we can read in case they change.
|
# Cache which cfgfiles we can read in case they change.
|
||||||
local conf
|
local conf
|
||||||
_KUBE_PS1_CFGFILES_READ_CACHE=
|
_KUBE_PS1_CFGFILES_READ_CACHE=
|
||||||
@@ -325,7 +353,7 @@ Toggle kube-ps1 prompt on
|
|||||||
|
|
||||||
Usage: kubeon [-g | --global] [-h | --help]
|
Usage: kubeon [-g | --global] [-h | --help]
|
||||||
|
|
||||||
With no arguments, turn oon kube-ps1 status for this shell instance (default).
|
With no arguments, turn on kube-ps1 status for this shell instance (default).
|
||||||
|
|
||||||
-g --global turn on kube-ps1 status globally
|
-g --global turn on kube-ps1 status globally
|
||||||
-h --help print this message
|
-h --help print this message
|
||||||
@@ -348,12 +376,13 @@ EOF
|
|||||||
kubeon() {
|
kubeon() {
|
||||||
if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
|
if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
|
||||||
_kubeon_usage
|
_kubeon_usage
|
||||||
|
return 0
|
||||||
elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then
|
elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then
|
||||||
rm -f -- "${_KUBE_PS1_DISABLE_PATH}"
|
rm -f -- "${_KUBE_PS1_DISABLE_PATH}"
|
||||||
elif [[ "$#" -ne 0 ]]; then
|
elif [[ "$#" -ne 0 ]]; then
|
||||||
echo -e "error: unrecognized flag ${1}\\n"
|
echo -e "error: unrecognized flag ${1}\\n" >&2
|
||||||
_kubeon_usage
|
_kubeon_usage
|
||||||
return
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
KUBE_PS1_ENABLED=on
|
KUBE_PS1_ENABLED=on
|
||||||
@@ -362,13 +391,14 @@ kubeon() {
|
|||||||
kubeoff() {
|
kubeoff() {
|
||||||
if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
|
if [[ "${1}" == '-h' || "${1}" == '--help' ]]; then
|
||||||
_kubeoff_usage
|
_kubeoff_usage
|
||||||
|
return 0
|
||||||
elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then
|
elif [[ "${1}" == '-g' || "${1}" == '--global' ]]; then
|
||||||
mkdir -p -- "$(dirname "${_KUBE_PS1_DISABLE_PATH}")"
|
mkdir -p -- "$(dirname "${_KUBE_PS1_DISABLE_PATH}")"
|
||||||
touch -- "${_KUBE_PS1_DISABLE_PATH}"
|
touch -- "${_KUBE_PS1_DISABLE_PATH}"
|
||||||
elif [[ $# -ne 0 ]]; then
|
elif [[ $# -ne 0 ]]; then
|
||||||
echo "error: unrecognized flag ${1}" >&2
|
echo -e "error: unrecognized flag ${1}\\n" >&2
|
||||||
_kubeoff_usage
|
_kubeoff_usage
|
||||||
return
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
KUBE_PS1_ENABLED=off
|
KUBE_PS1_ENABLED=off
|
||||||
@@ -380,15 +410,9 @@ kube_ps1() {
|
|||||||
[[ -z "${KUBE_PS1_CONTEXT}" ]] && [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]] && return
|
[[ -z "${KUBE_PS1_CONTEXT}" ]] && [[ "${KUBE_PS1_CONTEXT_ENABLE}" == true ]] && return
|
||||||
[[ "${KUBE_PS1_CONTEXT}" == "N/A" ]] && [[ ${KUBE_PS1_HIDE_IF_NOCONTEXT} == true ]] && return
|
[[ "${KUBE_PS1_CONTEXT}" == "N/A" ]] && [[ ${KUBE_PS1_HIDE_IF_NOCONTEXT} == true ]] && return
|
||||||
|
|
||||||
|
|
||||||
local KUBE_PS1
|
local KUBE_PS1
|
||||||
local KUBE_PS1_RESET_COLOR="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_FG}${_KUBE_PS1_CLOSE_ESC}"
|
local KUBE_PS1_RESET_COLOR="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_FG}${_KUBE_PS1_CLOSE_ESC}"
|
||||||
|
|
||||||
# If background color is set, reset color should also reset the background
|
|
||||||
if [[ -n "${KUBE_PS1_BG_COLOR}" ]]; then
|
|
||||||
KUBE_PS1_RESET_COLOR="${_KUBE_PS1_OPEN_ESC}${_KUBE_PS1_DEFAULT_FG}${_KUBE_PS1_DEFAULT_BG}${_KUBE_PS1_CLOSE_ESC}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Background Color
|
# Background Color
|
||||||
[[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="$(_kube_ps1_color_bg "${KUBE_PS1_BG_COLOR}")"
|
[[ -n "${KUBE_PS1_BG_COLOR}" ]] && KUBE_PS1+="$(_kube_ps1_color_bg "${KUBE_PS1_BG_COLOR}")"
|
||||||
|
|
||||||
|
|||||||
@@ -35,13 +35,16 @@ plugins=(... kubectl)
|
|||||||
| kgpl | `kgp -l` | Get pods by label. Example: `kgpl "app=myapp" -n myns` |
|
| kgpl | `kgp -l` | Get pods by label. Example: `kgpl "app=myapp" -n myns` |
|
||||||
| kgpn | `kgp -n` | Get pods by namespace. Example: `kgpn kube-system` |
|
| kgpn | `kgp -n` | Get pods by namespace. Example: `kgpn kube-system` |
|
||||||
| kgpsl | `kubectl get pods --show-labels` | List all pods in ps output format with labels |
|
| kgpsl | `kubectl get pods --show-labels` | List all pods in ps output format with labels |
|
||||||
|
| kgpa | `kubectl get pods --all-namespaces` | List all pods in ps output format across all namespaces |
|
||||||
| kgpw | `kgp --watch` | After listing/getting the requested object, watch for changes |
|
| kgpw | `kgp --watch` | After listing/getting the requested object, watch for changes |
|
||||||
| kgpwide | `kgp -o wide` | Output in plain-text format with any additional information. For pods, the node name is included |
|
| kgpwide | `kgp -o wide` | Output in plain-text format with any additional information. For pods, the node name is included |
|
||||||
|
| kgpall | `kubectl get pods --all-namespaces -o wide` | List all pods across all namespaces in wide output format (including node name) |
|
||||||
| kep | `kubectl edit pods` | Edit pods from the default editor |
|
| kep | `kubectl edit pods` | Edit pods from the default editor |
|
||||||
| kdp | `kubectl describe pods` | Describe all pods |
|
| kdp | `kubectl describe pods` | Describe all pods |
|
||||||
| kdelp | `kubectl delete pods` | Delete all pods matching passed arguments |
|
| kdelp | `kubectl delete pods` | Delete all pods matching passed arguments |
|
||||||
| | | **Service management** |
|
| | | **Service management** |
|
||||||
| kgs | `kubectl get svc` | List all services in ps output format |
|
| kgs | `kubectl get svc` | List all services in ps output format |
|
||||||
|
| kgsa | `kubectl get svc --all-namespaces` | List all services across all namespaces |
|
||||||
| kgsw | `kgs --watch` | After listing all services, watch for changes |
|
| kgsw | `kgs --watch` | After listing all services, watch for changes |
|
||||||
| kgswide | `kgs -o wide` | After listing all services, output in plain-text format with any additional information |
|
| kgswide | `kgs -o wide` | After listing all services, output in plain-text format with any additional information |
|
||||||
| kes | `kubectl edit svc` | Edit services(svc) from the default editor |
|
| kes | `kubectl edit svc` | Edit services(svc) from the default editor |
|
||||||
@@ -49,6 +52,7 @@ plugins=(... kubectl)
|
|||||||
| kdels | `kubectl delete svc` | Delete all services matching passed argument |
|
| kdels | `kubectl delete svc` | Delete all services matching passed argument |
|
||||||
| | | **Ingress management** |
|
| | | **Ingress management** |
|
||||||
| kgi | `kubectl get ingress` | List ingress resources in ps output format |
|
| kgi | `kubectl get ingress` | List ingress resources in ps output format |
|
||||||
|
| kgia | `kubectl get ingress --all-namespaces` | List ingress resources across all namespaces |
|
||||||
| kei | `kubectl edit ingress` | Edit ingress resource from the default editor |
|
| kei | `kubectl edit ingress` | Edit ingress resource from the default editor |
|
||||||
| kdi | `kubectl describe ingress` | Describe ingress resource in detail |
|
| kdi | `kubectl describe ingress` | Describe ingress resource in detail |
|
||||||
| kdeli | `kubectl delete ingress` | Delete ingress resources matching passed argument |
|
| kdeli | `kubectl delete ingress` | Delete ingress resources matching passed argument |
|
||||||
@@ -60,15 +64,18 @@ plugins=(... kubectl)
|
|||||||
| kdelns | `kubectl delete namespace` | Delete the namespace. WARNING! This deletes everything in the namespace |
|
| kdelns | `kubectl delete namespace` | Delete the namespace. WARNING! This deletes everything in the namespace |
|
||||||
| | | **ConfigMap management** |
|
| | | **ConfigMap management** |
|
||||||
| kgcm | `kubectl get configmaps` | List the configmaps in ps output format |
|
| kgcm | `kubectl get configmaps` | List the configmaps in ps output format |
|
||||||
|
| kgcma | `kubectl get configmaps --all-namespaces` | List configmaps across all namespaces |
|
||||||
| kecm | `kubectl edit configmap` | Edit configmap resource from the default editor |
|
| kecm | `kubectl edit configmap` | Edit configmap resource from the default editor |
|
||||||
| kdcm | `kubectl describe configmap` | Describe configmap resource in detail |
|
| kdcm | `kubectl describe configmap` | Describe configmap resource in detail |
|
||||||
| kdelcm | `kubectl delete configmap` | Delete the configmap |
|
| kdelcm | `kubectl delete configmap` | Delete the configmap |
|
||||||
| | | **Secret management** |
|
| | | **Secret management** |
|
||||||
| kgsec | `kubectl get secret` | Get secret for decoding |
|
| kgsec | `kubectl get secret` | Get secret for decoding |
|
||||||
|
| kgseca | `kubectl get secret --all-namespaces` | List secrets across all namespaces |
|
||||||
| kdsec | `kubectl describe secret` | Describe secret resource in detail |
|
| kdsec | `kubectl describe secret` | Describe secret resource in detail |
|
||||||
| kdelsec | `kubectl delete secret` | Delete the secret |
|
| kdelsec | `kubectl delete secret` | Delete the secret |
|
||||||
| | | **Deployment management** |
|
| | | **Deployment management** |
|
||||||
| kgd | `kubectl get deployment` | Get the deployment |
|
| kgd | `kubectl get deployment` | Get the deployment |
|
||||||
|
| kgda | `kubectl get deployment --all-namespaces` | List deployments across all namespaces |
|
||||||
| kgdw | `kgd --watch` | After getting the deployment, watch for changes |
|
| kgdw | `kgd --watch` | After getting the deployment, watch for changes |
|
||||||
| kgdwide | `kgd -o wide` | After getting the deployment, output in plain-text format with any additional information |
|
| kgdwide | `kgd -o wide` | After getting the deployment, output in plain-text format with any additional information |
|
||||||
| ked | `kubectl edit deployment` | Edit deployment resource from the default editor |
|
| ked | `kubectl edit deployment` | Edit deployment resource from the default editor |
|
||||||
@@ -91,7 +98,13 @@ plugins=(... kubectl)
|
|||||||
| kgaa | `kubectl get all --all-namespaces` | List the requested object(s) across all namespaces |
|
| kgaa | `kubectl get all --all-namespaces` | List the requested object(s) across all namespaces |
|
||||||
| | | **Logs** |
|
| | | **Logs** |
|
||||||
| kl | `kubectl logs` | Print the logs for a container or resource |
|
| kl | `kubectl logs` | Print the logs for a container or resource |
|
||||||
|
| kl1h | `kubectl logs --since 1h` | Print logs from the last hour for a container or resource |
|
||||||
|
| kl1m | `kubectl logs --since 1m` | Print logs from the last minute for a container or resource |
|
||||||
|
| kl1s | `kubectl logs --since 1s` | Print logs from the last second for a container or resource |
|
||||||
| klf | `kubectl logs -f` | Stream the logs for a container or resource (follow) |
|
| klf | `kubectl logs -f` | Stream the logs for a container or resource (follow) |
|
||||||
|
| klf1h | `kubectl logs --since 1h -f` | Stream logs from the last hour for a container or resource (follow) |
|
||||||
|
| klf1m | `kubectl logs --since 1m -f` | Stream logs from the last minute for a container or resource (follow) |
|
||||||
|
| klf1s | `kubectl logs --since 1s -f` | Stream logs from the last second for a container or resource (follow) |
|
||||||
| | | **File copy** |
|
| | | **File copy** |
|
||||||
| kcp | `kubectl cp` | Copy files and directories to and from containers |
|
| kcp | `kubectl cp` | Copy files and directories to and from containers |
|
||||||
| | | **Node management** |
|
| | | **Node management** |
|
||||||
@@ -102,12 +115,14 @@ plugins=(... kubectl)
|
|||||||
| kdelno | `kubectl delete node` | Delete the node |
|
| kdelno | `kubectl delete node` | Delete the node |
|
||||||
| | | **Persistent Volume Claim management** |
|
| | | **Persistent Volume Claim management** |
|
||||||
| kgpvc | `kubectl get pvc` | List all PVCs |
|
| kgpvc | `kubectl get pvc` | List all PVCs |
|
||||||
|
| kgpvca | `kubectl get pvc --all-namespaces` | List all PVCs across all namespaces |
|
||||||
| kgpvcw | `kgpvc --watch` | After listing/getting the requested object, watch for changes |
|
| kgpvcw | `kgpvc --watch` | After listing/getting the requested object, watch for changes |
|
||||||
| kepvc | `kubectl edit pvc` | Edit pvcs from the default editor |
|
| kepvc | `kubectl edit pvc` | Edit pvcs from the default editor |
|
||||||
| kdpvc | `kubectl describe pvc` | Describe all pvcs |
|
| kdpvc | `kubectl describe pvc` | Describe all pvcs |
|
||||||
| kdelpvc | `kubectl delete pvc` | Delete all pvcs matching passed arguments |
|
| kdelpvc | `kubectl delete pvc` | Delete all pvcs matching passed arguments |
|
||||||
| | | **StatefulSets management** |
|
| | | **StatefulSets management** |
|
||||||
| kgss | `kubectl get statefulset` | List the statefulsets in ps format |
|
| kgss | `kubectl get statefulset` | List the statefulsets in ps format |
|
||||||
|
| kgssa | `kubectl get statefulset --all-namespaces` | List statefulsets across all namespaces |
|
||||||
| kgssw | `kgss --watch` | After getting the list of statefulsets, watch for changes |
|
| kgssw | `kgss --watch` | After getting the list of statefulsets, watch for changes |
|
||||||
| kgsswide | `kgss -o wide` | After getting the statefulsets, output in plain-text format with any additional information |
|
| kgsswide | `kgss -o wide` | After getting the statefulsets, output in plain-text format with any additional information |
|
||||||
| kess | `kubectl edit statefulset` | Edit statefulset resource from the default editor |
|
| kess | `kubectl edit statefulset` | Edit statefulset resource from the default editor |
|
||||||
@@ -121,6 +136,7 @@ plugins=(... kubectl)
|
|||||||
| kdelsa | `kubectl delete sa` | Delete the service account |
|
| kdelsa | `kubectl delete sa` | Delete the service account |
|
||||||
| | | **DaemonSet management** |
|
| | | **DaemonSet management** |
|
||||||
| kgds | `kubectl get daemonset` | List all DaemonSets in ps output format |
|
| kgds | `kubectl get daemonset` | List all DaemonSets in ps output format |
|
||||||
|
| kgdsa | `kubectl get daemonset --all-namespaces` | List all DaemonSets across all namespaces |
|
||||||
| kgdsw | `kgds --watch` | After listing all DaemonSets, watch for changes |
|
| kgdsw | `kgds --watch` | After listing all DaemonSets, watch for changes |
|
||||||
| keds | `kubectl edit daemonset` | Edit DaemonSets from the default editor |
|
| keds | `kubectl edit daemonset` | Edit DaemonSets from the default editor |
|
||||||
| kdds | `kubectl describe daemonset` | Describe all DaemonSets in detail |
|
| kdds | `kubectl describe daemonset` | Describe all DaemonSets in detail |
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ lwd() {
|
|||||||
#
|
#
|
||||||
# - This isn't the first time the plugin is loaded
|
# - This isn't the first time the plugin is loaded
|
||||||
# - We're not in the $HOME directory (e.g. if terminal opened a different folder)
|
# - We're not in the $HOME directory (e.g. if terminal opened a different folder)
|
||||||
[[ -z "$ZSH_LAST_WORKING_DIRECTORY" ]] || return
|
[[ -z "$ZSH_LAST_WORKING_DIRECTORY" ]] || return 0
|
||||||
[[ "$PWD" == "$HOME" ]] || return
|
[[ "$PWD" == "$HOME" ]] || return 0
|
||||||
|
|
||||||
if lwd 2>/dev/null; then
|
if lwd 2>/dev/null; then
|
||||||
ZSH_LAST_WORKING_DIRECTORY=1
|
ZSH_LAST_WORKING_DIRECTORY=1
|
||||||
|
|||||||
@@ -1,27 +1,17 @@
|
|||||||
# TODO: 2024-01-03 remove rtx support
|
|
||||||
local __mise=mise
|
|
||||||
if (( ! $+commands[mise] )); then
|
if (( ! $+commands[mise] )); then
|
||||||
if (( $+commands[rtx] )); then
|
|
||||||
__mise=rtx
|
|
||||||
else
|
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Load mise hooks
|
# Load mise hooks
|
||||||
eval "$($__mise activate zsh)"
|
eval "$(mise activate zsh)"
|
||||||
|
|
||||||
# Hook mise into current environment
|
|
||||||
eval "$($__mise hook-env -s zsh)"
|
|
||||||
|
|
||||||
# If the completion file doesn't exist yet, we need to autoload it and
|
# If the completion file doesn't exist yet, we need to autoload it and
|
||||||
# bind it to `mise`. Otherwise, compinit will have already done that.
|
# bind it to `mise`. Otherwise, compinit will have already done that.
|
||||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_$__mise" ]]; then
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_mise" ]]; then
|
||||||
typeset -g -A _comps
|
typeset -g -A _comps
|
||||||
autoload -Uz _$__mise
|
autoload -Uz _mise
|
||||||
_comps[$__mise]=_$__mise
|
_comps[mise]=_mise
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate and load mise completion
|
# Generate and load mise completion
|
||||||
$__mise completion zsh >| "$ZSH_CACHE_DIR/completions/_$__mise" &|
|
mise completion zsh >| "$ZSH_CACHE_DIR/completions/_mise" &|
|
||||||
unset __mise
|
|
||||||
|
|||||||
20
plugins/molecule/README.md
Normal file
20
plugins/molecule/README.md
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
# Molecule plugin
|
||||||
|
|
||||||
|
This plugin adds aliases and completion for [Molecule](https://ansible.readthedocs.io/projects/molecule/), the
|
||||||
|
project designed to aid in the development and testing of Ansible roles..
|
||||||
|
|
||||||
|
To use it, add `molecule` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
plugins=(... molecule)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
| Alias | Command | Description |
|
||||||
|
| :---- | :---------------- | ---------------------------------------------------------------------------------- |
|
||||||
|
| mol | molecule | Molecule aids in the development and testing of Ansible roles. |
|
||||||
|
| mcr | molecule create | Use the provisioner to start the instances. |
|
||||||
|
| mcon | molecule converge | Use the provisioner to configure instances (dependency, create, prepare converge). |
|
||||||
|
| mls | molecule list | List status of instances. |
|
||||||
|
| mvf | molecule verify | Run automated tests against instances. |
|
||||||
22
plugins/molecule/molecule.plugin.zsh
Normal file
22
plugins/molecule/molecule.plugin.zsh
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
# Completion
|
||||||
|
if (( ! $+commands[molecule] )); then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the completion file doesn't exist yet, we need to autoload it and
|
||||||
|
# bind it to `molecule`. Otherwise, compinit will have already done that.
|
||||||
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_molecule" ]]; then
|
||||||
|
typeset -g -A _comps
|
||||||
|
autoload -Uz _molecule
|
||||||
|
_comps[molecule]=_molecule
|
||||||
|
fi
|
||||||
|
|
||||||
|
_MOLECULE_COMPLETE=zsh_source molecule >| "$ZSH_CACHE_DIR/completions/_molecule" &|
|
||||||
|
|
||||||
|
# Alias
|
||||||
|
# molecule: https://docs.ansible.com/projects/molecule/
|
||||||
|
alias mol='molecule'
|
||||||
|
alias mcr='molecule create'
|
||||||
|
alias mcon='molecule converge'
|
||||||
|
alias mls='molecule list'
|
||||||
|
alias mvf='molecule verify'
|
||||||
@@ -30,14 +30,20 @@ function tofu_version_prompt_info() {
|
|||||||
alias tt='tofu'
|
alias tt='tofu'
|
||||||
alias tta='tofu apply'
|
alias tta='tofu apply'
|
||||||
alias tta!='tofu apply -auto-approve'
|
alias tta!='tofu apply -auto-approve'
|
||||||
|
alias ttap='tofu apply -parallelism=1'
|
||||||
|
alias ttapp='tofu apply tfplan'
|
||||||
alias ttc='tofu console'
|
alias ttc='tofu console'
|
||||||
alias ttd='tofu destroy'
|
alias ttd='tofu destroy'
|
||||||
alias ttd!='tofu destroy -auto-approve'
|
alias ttd!='tofu destroy -auto-approve'
|
||||||
alias ttf='tofu fmt'
|
alias ttf='tofu fmt'
|
||||||
alias ttfr='tofu fmt -recursive'
|
alias ttfr='tofu fmt -recursive'
|
||||||
alias tti='tofu init'
|
alias tti='tofu init'
|
||||||
|
alias ttir='tofu init -reconfigure'
|
||||||
|
alias ttiu='tofu init -upgrade'
|
||||||
|
alias ttiur='tofu init -upgrade -reconfigure'
|
||||||
alias tto='tofu output'
|
alias tto='tofu output'
|
||||||
alias ttp='tofu plan'
|
alias ttp='tofu plan'
|
||||||
|
alias ttpo='tofu plan -out tfplan'
|
||||||
alias ttv='tofu validate'
|
alias ttv='tofu validate'
|
||||||
alias tts='tofu state'
|
alias tts='tofu state'
|
||||||
alias ttsh='tofu show'
|
alias ttsh='tofu show'
|
||||||
|
|||||||
11
plugins/pass-cli/README.md
Normal file
11
plugins/pass-cli/README.md
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# Proton Pass CLI plugin
|
||||||
|
|
||||||
|
This plugin adds completions for [Proton Pass CLI](https://protonpass.github.io/pass-cli/).
|
||||||
|
|
||||||
|
To use it, add `pass-cli` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
plugins=(... pass-cli)
|
||||||
|
```
|
||||||
|
|
||||||
|
This plugin does not add any aliases.
|
||||||
14
plugins/pass-cli/pass-cli.plugin.zsh
Normal file
14
plugins/pass-cli/pass-cli.plugin.zsh
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# Autocompletion for Proton Pass CLI (pass-cli)
|
||||||
|
if (( ! $+commands[pass-cli] )); then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If the completion file doesn't exist yet, we need to autoload it and
|
||||||
|
# bind it to `pass-cli`. Otherwise, compinit will have already done that.
|
||||||
|
if [[ ! -f "$ZSH_CACHE_DIR/completions/_pass-cli" ]]; then
|
||||||
|
typeset -g -A _comps
|
||||||
|
autoload -Uz _pass-cli
|
||||||
|
_comps[pass-cli]=_pass-cli
|
||||||
|
fi
|
||||||
|
|
||||||
|
pass-cli completions zsh >| "$ZSH_CACHE_DIR/completions/_pass-cli" &|
|
||||||
@@ -15,7 +15,12 @@ _togglePoetryShell() {
|
|||||||
# Activate the environment if in a Poetry directory and no environment is currently active
|
# Activate the environment if in a Poetry directory and no environment is currently active
|
||||||
if [[ $in_poetry_dir -eq 1 ]] && [[ $poetry_active -ne 1 ]]; then
|
if [[ $in_poetry_dir -eq 1 ]] && [[ $poetry_active -ne 1 ]]; then
|
||||||
venv_dir=$(poetry env info --path 2>/dev/null)
|
venv_dir=$(poetry env info --path 2>/dev/null)
|
||||||
if [[ -n "$venv_dir" ]]; then
|
# Handle case where poetry returns "." for in-project virtual environments
|
||||||
|
if [[ "$venv_dir" == "." ]]; then
|
||||||
|
venv_dir="$PWD/.venv"
|
||||||
|
fi
|
||||||
|
# Only proceed if venv_dir is set and the activate script exists
|
||||||
|
if [[ -n "$venv_dir" && -f "${venv_dir}/bin/activate" ]]; then
|
||||||
export poetry_active=1
|
export poetry_active=1
|
||||||
export poetry_dir="$PWD"
|
export poetry_dir="$PWD"
|
||||||
source "${venv_dir}/bin/activate"
|
source "${venv_dir}/bin/activate"
|
||||||
|
|||||||
@@ -10,27 +10,27 @@ plugins=(... poetry)
|
|||||||
|
|
||||||
## Aliases
|
## Aliases
|
||||||
|
|
||||||
| Alias | Command | Description
|
| Alias | Command | Description |
|
||||||
|:----- |--------------------------------------------------- |:--------------------------------------------------------------------------------------- |
|
|:----- |--------------------------------------------------- |:--------------------------------------------------------------------------------------- |
|
||||||
| pad | `poetry add` | Add packages to `pyproject.toml` and install them |
|
| pad | `poetry add` | Add packages to `pyproject.toml` and install them |
|
||||||
| pbld | `poetry build` | Build the source and wheels archives |
|
| pbld | `poetry build` | Build the source and wheels archives |
|
||||||
| pch | `poetry check` | Validate the content of the `pyproject.toml` and its consistency with the `poetry.lock` |
|
| pch | `poetry check` | Validate the content of the `pyproject.toml` and its consistency with the `poetry.lock` |
|
||||||
| pcmd | `poetry list` | Display all the available Poetry commands |
|
| pcmd | `poetry list` | Display all the available Poetry commands |
|
||||||
| pconf | `poetry config --list` | Allow you to edit poetry config settings and repositories |
|
| pconf | `poetry config --list` | Allow you to edit poetry config settings and repositories |
|
||||||
| pexp | `poetry export --without-hashes > requirements.txt | Export the lock file to `requirements.txt` |
|
| pexp | `poetry export --without-hashes > requirements.txt` | Export the lock file to `requirements.txt` |
|
||||||
| pin | `poetry init` | Create a `pyproject.toml` interactively |
|
| pin | `poetry init` | Create a `pyproject.toml` interactively |
|
||||||
| pinst | `poetry install` | Read the `pyproject.toml`, resolve the dependencies, and install them |
|
| pinst | `poetry install` | Read the `pyproject.toml`, resolve the dependencies, and install them |
|
||||||
| plck | `poetry lock` | Lock the dependencies in `pyproject.toml` without installing |
|
| plck | `poetry lock` | Lock the dependencies in `pyproject.toml` without installing |
|
||||||
| pnew | `poetry new` | Create a directory structure suitable for most Python projects |
|
| pnew | `poetry new` | Create a directory structure suitable for most Python projects |
|
||||||
| ppath | `poetry env info --path` | Get the path of the currently activated virtualenv` |
|
| ppath | `poetry env info --path` | Get the path of the currently activated virtualenv |
|
||||||
| pplug | `poetry self show plugins` | List all the installed Poetry plugins |
|
| pplug | `poetry self show plugins` | List all the installed Poetry plugins |
|
||||||
| ppub | `poetry publish` | Publish the builded (`poetry build` command) package to the remote repository |
|
| ppub | `poetry publish` | Publish the built (`poetry build` command) package to the remote repository |
|
||||||
| prm | `poetry remove` | Remove packages from `pyproject.toml` and uninstall them |
|
| prm | `poetry remove` | Remove packages from `pyproject.toml` and uninstall them |
|
||||||
| prun | `poetry run` | Executes the given command inside the project’s virtualenv |
|
| prun | `poetry run` | Executes the given command inside the project’s virtualenv |
|
||||||
| psad | `poetry self add` | Add the Poetry plugin and install dependencies to make it work |
|
| psad | `poetry self add` | Add the Poetry plugin and install dependencies to make it work |
|
||||||
| psh | `poetry shell` | Spawns a shell within the virtual environment. If one doesn’t exist, it will be created |
|
| psh | `poetry shell` | Spawns a shell within the virtual environment. If one doesn’t exist, it will be created |
|
||||||
| pshw | `poetry show` | List all the available dependencies |
|
| pshw | `poetry show` | List all the available dependencies |
|
||||||
| pslt | `poetry show --latest` | List lastest version of the dependencies |
|
| pslt | `poetry show --latest` | List latest version of the dependencies |
|
||||||
| psup | `poetry self update` | Update Poetry to the latest version (default) or to the specified version |
|
| psup | `poetry self update` | Update Poetry to the latest version (default) or to the specified version |
|
||||||
| psync | `poetry install --sync` | Synchronize your environment with the `poetry.lock` |
|
| psync | `poetry install --sync` | Synchronize your environment with the `poetry.lock` |
|
||||||
| ptree | `poetry show --tree` | List the dependencies as tree |
|
| ptree | `poetry show --tree` | List the dependencies as tree |
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
# Pre-commit plugin
|
# Pre-commit plugin
|
||||||
|
|
||||||
This plugin adds aliases for common commands of [pre-commit](https://pre-commit.com/).
|
This plugin adds aliases for common commands of [pre-commit](https://pre-commit.com/).
|
||||||
|
It also supports [prek](https://github.com/prek/prek) as a drop-in replacement.
|
||||||
|
If `prek` is available, it will be used; otherwise, `pre-commit` is used as fallback.
|
||||||
|
|
||||||
To use this plugin, add it to the plugins array in your zshrc file:
|
To use this plugin, add it to the plugins array in your zshrc file:
|
||||||
|
|
||||||
@@ -11,9 +13,10 @@ plugins=(... pre-commit)
|
|||||||
## Aliases
|
## Aliases
|
||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
| ------- | -------------------------------------- | ------------------------------------------------------ |
|
| ----- | ------------------------------------------------------ | --------------------------------------------- |
|
||||||
| prc | `pre-commit` | The `pre-commit` command |
|
| prc | `prek` or `pre-commit` | The pre-commit command |
|
||||||
| prcau | `pre-commit autoupdate` | Update hooks automatically |
|
| prcau | `prek auto-update` or `pre-commit autoupdate` | Update hooks automatically |
|
||||||
| prcr | `pre-commit run` | The `pre-commit run` command |
|
| prcr | `prek run` or `pre-commit run` | The pre-commit run command |
|
||||||
| prcra | `pre-commit run --all-files` | Run pre-commit hooks on all files |
|
| prcra | `prek run --all-files` or `pre-commit run --all-files` | Run pre-commit hooks on all files |
|
||||||
| prcrf | `pre-commit run --files` | Run pre-commit hooks on a given list of files |
|
| prcrf | `prek run --files` or `pre-commit run --files` | Run pre-commit hooks on a given list of files |
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,17 @@
|
|||||||
# Aliases for pre-commit
|
# Aliases for pre-commit (uses prek if available, else pre-commit)
|
||||||
alias prc='pre-commit'
|
if command -v prek &> /dev/null; then
|
||||||
|
_prc_cmd='prek'
|
||||||
|
_prc_autoupdate='auto-update'
|
||||||
|
else
|
||||||
|
_prc_cmd='pre-commit'
|
||||||
|
_prc_autoupdate='autoupdate'
|
||||||
|
fi
|
||||||
|
|
||||||
alias prcau='pre-commit autoupdate'
|
alias prc="$_prc_cmd"
|
||||||
|
|
||||||
|
alias prcau="$_prc_cmd $_prc_autoupdate"
|
||||||
|
|
||||||
|
alias prcr="$_prc_cmd run"
|
||||||
|
alias prcra="$_prc_cmd run --all-files"
|
||||||
|
alias prcrf="$_prc_cmd run --files"
|
||||||
|
|
||||||
alias prcr='pre-commit run'
|
|
||||||
alias prcra='pre-commit run --all-files'
|
|
||||||
alias prcrf='pre-commit run --files'
|
|
||||||
|
|||||||
@@ -14,11 +14,11 @@ function tf_version_prompt_info() {
|
|||||||
echo "${ZSH_THEME_TF_VERSION_PROMPT_PREFIX-[}${terraform_version:gs/%/%%}${ZSH_THEME_TF_VERSION_PROMPT_SUFFIX-]}"
|
echo "${ZSH_THEME_TF_VERSION_PROMPT_PREFIX-[}${terraform_version:gs/%/%%}${ZSH_THEME_TF_VERSION_PROMPT_SUFFIX-]}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
alias tf='terraform'
|
alias tf='terraform'
|
||||||
alias tfa='terraform apply'
|
alias tfa='terraform apply'
|
||||||
alias tfa!='terraform apply -auto-approve'
|
alias tfa!='terraform apply -auto-approve'
|
||||||
alias tfap='terraform apply -parallelism=1'
|
alias tfap='terraform apply -parallelism=1'
|
||||||
|
alias tfapp='terraform apply tfplan'
|
||||||
alias tfc='terraform console'
|
alias tfc='terraform console'
|
||||||
alias tfd='terraform destroy'
|
alias tfd='terraform destroy'
|
||||||
alias tfd!='terraform destroy -auto-approve'
|
alias tfd!='terraform destroy -auto-approve'
|
||||||
@@ -31,6 +31,7 @@ alias tfiu='terraform init -upgrade'
|
|||||||
alias tfiur='terraform init -upgrade -reconfigure'
|
alias tfiur='terraform init -upgrade -reconfigure'
|
||||||
alias tfo='terraform output'
|
alias tfo='terraform output'
|
||||||
alias tfp='terraform plan'
|
alias tfp='terraform plan'
|
||||||
|
alias tfpo='terraform plan -out tfplan'
|
||||||
alias tfv='terraform validate'
|
alias tfv='terraform validate'
|
||||||
alias tfs='terraform state'
|
alias tfs='terraform state'
|
||||||
alias tft='terraform test'
|
alias tft='terraform test'
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ if [[ -z $commands[thefuck] ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Register alias
|
# Register alias
|
||||||
[[ ! -a $ZSH_CACHE_DIR/thefuck ]] && thefuck --alias > $ZSH_CACHE_DIR/thefuck
|
[[ ! -a "$ZSH_CACHE_DIR/thefuck" ]] && thefuck --alias > "$ZSH_CACHE_DIR/thefuck"
|
||||||
source $ZSH_CACHE_DIR/thefuck
|
source "$ZSH_CACHE_DIR/thefuck"
|
||||||
|
|
||||||
fuck-command-line() {
|
fuck-command-line() {
|
||||||
local FUCK="$(THEFUCK_REQUIRE_CONFIRMATION=0 thefuck $(fc -ln -1 | tail -n 1) 2> /dev/null)"
|
local FUCK="$(THEFUCK_REQUIRE_CONFIRMATION=0 thefuck $(fc -ln -1 | tail -n 1) 2> /dev/null)"
|
||||||
|
|||||||
@@ -87,8 +87,8 @@ _build_tmux_alias "tkss" "kill-session" "-t"
|
|||||||
|
|
||||||
unfunction _build_tmux_alias
|
unfunction _build_tmux_alias
|
||||||
|
|
||||||
# Determine if the terminal supports 256 colors
|
# Determine if the terminal supports at least 256 colors
|
||||||
if [[ $terminfo[colors] == 256 ]]; then
|
if (( ${+terminfo[colors]} )) && [[ $terminfo[colors] -ge 256 ]]; then
|
||||||
export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITH_256COLOR
|
export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITH_256COLOR
|
||||||
else
|
else
|
||||||
export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITHOUT_256COLOR
|
export ZSH_TMUX_TERM=$ZSH_TMUX_FIXTERM_WITHOUT_256COLOR
|
||||||
@@ -183,7 +183,10 @@ function _tmux_directory_session() {
|
|||||||
# human friendly unique session name for this directory
|
# human friendly unique session name for this directory
|
||||||
local session_name="${dir}-${md5:0:6}"
|
local session_name="${dir}-${md5:0:6}"
|
||||||
# create or attach to the session
|
# create or attach to the session
|
||||||
tmux new -As "$session_name"
|
local -a tmux_cmd
|
||||||
|
tmux_cmd=(command tmux)
|
||||||
|
[[ "$ZSH_TMUX_UNICODE" == "true" ]] && tmux_cmd+=(-u)
|
||||||
|
$tmux_cmd new -As "$session_name"
|
||||||
}
|
}
|
||||||
|
|
||||||
alias tds=_tmux_directory_session
|
alias tds=_tmux_directory_session
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ function {
|
|||||||
$commands[virtualenvwrapper.sh] \
|
$commands[virtualenvwrapper.sh] \
|
||||||
/usr/share/virtualenvwrapper/virtualenvwrapper{_lazy,}.sh \
|
/usr/share/virtualenvwrapper/virtualenvwrapper{_lazy,}.sh \
|
||||||
/usr/local/bin/virtualenvwrapper{_lazy,}.sh \
|
/usr/local/bin/virtualenvwrapper{_lazy,}.sh \
|
||||||
|
/usr/bin/virtualenvwrapper{_lazy,}.sh \
|
||||||
/etc/bash_completion.d/virtualenvwrapper \
|
/etc/bash_completion.d/virtualenvwrapper \
|
||||||
/usr/share/bash-completion/completions/virtualenvwrapper \
|
/usr/share/bash-completion/completions/virtualenvwrapper \
|
||||||
$HOME/.local/bin/virtualenvwrapper.sh
|
$HOME/.local/bin/virtualenvwrapper.sh
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# VS Code
|
# VS Code
|
||||||
|
|
||||||
This plugin provides useful aliases to simplify the interaction between the command line and VS Code, VSCodium, or Cursor editor.
|
This plugin provides useful aliases to simplify interaction between the command line and VS Code, VSCodium, or Cursor.
|
||||||
|
|
||||||
To start using it, add the `vscode` plugin to your `plugins` array in `~/.zshrc`:
|
To start using it, add the `vscode` plugin to your `plugins` array in `~/.zshrc`:
|
||||||
|
|
||||||
@@ -10,46 +10,45 @@ plugins=(... vscode)
|
|||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
This plugin requires to have a flavour of VS Code installed and it's executable available in PATH.
|
This plugin requires one of the supported editors to be installed and its executable to be available in `PATH`.
|
||||||
|
|
||||||
You can install either:
|
You can install one of the following:
|
||||||
|
|
||||||
- VS Code (code)
|
- VS Code (`code`)
|
||||||
- VS Code Insiders (code-insiders)
|
- VS Code Insiders (`code-insiders`)
|
||||||
- VSCodium (codium)
|
- VSCodium (`codium`)
|
||||||
- Cursor (cursor)
|
- Cursor (`cursor`)
|
||||||
|
|
||||||
### MacOS
|
### macOS
|
||||||
|
|
||||||
While Linux installations will add the executable to PATH, MacOS users might still have to do this manually:
|
While Linux installations usually add the executable to `PATH`, macOS users might still have to do this manually:
|
||||||
|
|
||||||
[For VS Code and VS Code Insiders](https://code.visualstudio.com/docs/setup/mac#_launching-from-the-command-line),
|
[For VS Code and VS Code Insiders](https://code.visualstudio.com/docs/setup/mac#_launching-from-the-command-line),
|
||||||
open the Command Palette via (F1 or ⇧⌘P) and type shell command to find the Shell Command:
|
open the Command Palette with `F1` or `Shift+Cmd+P`, then search for the following command:
|
||||||
|
|
||||||
> Shell Command: Install 'code' command in PATH
|
> Shell Command: Install 'code' command in PATH
|
||||||
|
|
||||||
[For VSCodium](https://github.com/VSCodium/vscodium/blob/master/DOCS.md#how-do-i-open-vscodium-from-the-terminal),
|
[For VSCodium](https://github.com/VSCodium/vscodium/blob/master/DOCS.md#how-do-i-open-vscodium-from-the-terminal),
|
||||||
open the Command Palette via (F1 or ⇧⌘P) and type shell command to find the Shell Command:
|
open the Command Palette with `F1` or `Shift+Cmd+P`, then search for the following command:
|
||||||
|
|
||||||
> Shell Command: Install 'codium' command in PATH
|
> Shell Command: Install 'codium' command in PATH
|
||||||
|
|
||||||
For Cursor, open the Command Palette via (F1 or ⌘⇧P) and type shell command to find the Shell Command:
|
For Cursor, open the Command Palette with `F1` or `Cmd+Shift+P`, then search for the following command:
|
||||||
|
|
||||||
> Shell Command: Install 'cursor' command in PATH
|
> Shell Command: Install 'cursor' command in PATH
|
||||||
|
|
||||||
## Using multiple flavours
|
## Choosing an editor
|
||||||
|
|
||||||
If for any reason, you ever require to use multiple flavours of VS Code i.e. VS Code (stable) and VS Code
|
If you have multiple supported editors installed, e.g., VS Code (stable) and VS Code Insiders, you can manually
|
||||||
Insiders, you can manually specify the flavour's executable. Add the following line to the .zshrc file
|
specify which executable the plugin should use. Add the following line to `~/.zshrc` between the `ZSH_THEME`
|
||||||
(between the `ZSH_THEME` and the `plugins=()` lines). This will make the plugin use your manually defined
|
and `plugins=()` lines. This makes the plugin use your manually defined executable.
|
||||||
executable.
|
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
ZSH_THEME=...
|
ZSH_THEME=...
|
||||||
|
|
||||||
# Choose between one [code, code-insiders, codium, or cursor]
|
# Choose one of `code`, `code-insiders`, `codium`, or `cursor`.
|
||||||
# The following line will make the plugin to open VS Code Insiders
|
# The following line makes the plugin open VS Code Insiders.
|
||||||
# Invalid entries will be ignored, no aliases will be added
|
# Invalid entries are ignored and no aliases are added.
|
||||||
VSCODE=code-insiders
|
VSCODE=code-insiders
|
||||||
|
|
||||||
plugins=(... vscode)
|
plugins=(... vscode)
|
||||||
@@ -61,29 +60,29 @@ source $ZSH/oh-my-zsh.sh
|
|||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
| ----------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------- |
|
| ----------------------- | ------------------------------ | ----------------------------------------------------------------------------------------------------------- |
|
||||||
| vsc | code . | Open the current folder in VS code |
|
| vsc | code . | Open the current folder in VS Code |
|
||||||
| vsc `dir` | code `dir` | Open passed folder in VS code |
|
| vsc `[args ...]` | code `[args ...]` | Pass arguments through to VS Code, e.g., a file, folder, or CLI flags. |
|
||||||
| vsca `dir` | code --add `dir` | Add folder(s) to the last active window |
|
| vsca `dir` | code --add `dir` | Add one or more folders to the last active window. |
|
||||||
| vscd `file` `file` | code --diff `file` `file` | Compare two files with each other. |
|
| vscd `file` `file` | code --diff `file` `file` | Compare two files with each other. |
|
||||||
| vscg `file:line[:char]` | code --goto `file:line[:char]` | Open a file at the path on the specified line and character position. |
|
| vscg `file:line[:char]` | code --goto `file:line[:char]` | Open a file at the path on the specified line and character position. |
|
||||||
| vscn | code --new-window | Force to open a new window. |
|
| vscn | code --new-window | Force opening in a new window. |
|
||||||
| vscr | code --reuse-window | Force to open a file or folder in the last active window. |
|
| vscr | code --reuse-window | Force opening a file or folder in the last active window. |
|
||||||
| vscw | code --wait | Wait for the files to be closed before returning. |
|
| vscw | code --wait | Wait for the files to be closed before returning. |
|
||||||
| vscu `dir` | code --user-data-dir `dir` | Specifies the directory that user data is kept in. Can be used to open multiple distinct instances of Code. |
|
| vscu `dir` | code --user-data-dir `dir` | Specifies the directory where user data is stored. Can be used to open multiple distinct instances of Code. |
|
||||||
| vscp `profile` | code --profile `profile` | Specifies the profile to open Code with. |
|
| vscp `profile` | code --profile `profile` | Specifies the profile to open Code with. |
|
||||||
|
|
||||||
## Extensions aliases
|
## Extension aliases
|
||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
| ----------------------- | ---------------------------------------------------------------- | --------------------------------- |
|
| --------------------------- | ---------------------------------------------- | -------------------------------------- |
|
||||||
| vsced `dir` | code --extensions-dir `dir` | Set the root path for extensions. |
|
| vsced `dir` | code --extensions-dir `dir` | Set the root directory for extensions. |
|
||||||
| vscie `id or vsix-path` | code --install-extension `extension-id> or <extension-vsix-path` | Installs an extension. |
|
| vscie `ext-id or vsix-path` | code --install-extension `ext-id or vsix-path` | Installs or updates an extension. |
|
||||||
| vscue `id or vsix-path` | code --uninstall-extension `id or vsix-path` | Uninstalls an extension. |
|
| vscue `ext-id` | code --uninstall-extension `ext-id` | Uninstalls an extension. |
|
||||||
|
|
||||||
## Other options:
|
## Other options
|
||||||
|
|
||||||
| Alias | Command | Description |
|
| Alias | Command | Description |
|
||||||
| ------------ | ------------------------- | --------------------------------------------------------------------------------------------------------------------- |
|
| ------------ | ------------------------- | ---------------------------------------- |
|
||||||
| vscv | code --verbose | Print verbose output (implies --wait). |
|
| vscv | code --verbose | Print verbose output (implies `--wait`). |
|
||||||
| vscl `level` | code --log `level` | Log level to use. Default is 'info'. Allowed values are 'critical', 'error', 'warn', 'info', 'debug', 'trace', 'off'. |
|
| vscl `level` | code --log `level` | Log level to use. Default is `info`. |
|
||||||
| vscde | code --disable-extensions | Disable all installed extensions. |
|
| vscde | code --disable-extensions | Disable all installed extensions. |
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ _yarn_commands_scripts() {
|
|||||||
packageJson=$(_yarn_find_package_json $opt_args[--cwd])
|
packageJson=$(_yarn_find_package_json $opt_args[--cwd])
|
||||||
binaries=($(builtin cd $opt_args[--cwd] && echo node_modules/.bin/*(x:t)))
|
binaries=($(builtin cd $opt_args[--cwd] && echo node_modules/.bin/*(x:t)))
|
||||||
else
|
else
|
||||||
packageJson=$(_yarn_find_package_json $pwd)
|
packageJson=$(_yarn_find_package_json $PWD)
|
||||||
binaries=($(echo node_modules/.bin/*(x:t)))
|
binaries=($(echo node_modules/.bin/*(x:t)))
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ _yarn_scripts() {
|
|||||||
binaries=($(builtin cd $_yarn_run_cwd && yarn bin | perl -wln -e 'm{^[^:]+: (\S+)$} and print $1'))
|
binaries=($(builtin cd $_yarn_run_cwd && yarn bin | perl -wln -e 'm{^[^:]+: (\S+)$} and print $1'))
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
packageJson=$(_yarn_find_package_json $pwd)
|
packageJson=$(_yarn_find_package_json $PWD)
|
||||||
if [[ -d node_modules ]]; then
|
if [[ -d node_modules ]]; then
|
||||||
binaries=($(echo node_modules/.bin/*(x:t)))
|
binaries=($(echo node_modules/.bin/*(x:t)))
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -22,6 +22,6 @@ plugins=(... yum)
|
|||||||
| yi | `sudo yum install` | Install package |
|
| yi | `sudo yum install` | Install package |
|
||||||
| ygi | `sudo yum groupinstall` | Install package group |
|
| ygi | `sudo yum groupinstall` | Install package group |
|
||||||
| yr | `sudo yum remove` | Remove package |
|
| yr | `sudo yum remove` | Remove package |
|
||||||
| ygr | `sudo yum groupremove` | Remove pagage group |
|
| ygr | `sudo yum groupremove` | Remove package group |
|
||||||
| yrl | `sudo yum remove --remove-leaves` | Remove package and leaves |
|
| yrl | `sudo yum remove --remove-leaves` | Remove package and leaves |
|
||||||
| yc | `sudo yum clean all` | Clean yum cache |
|
| yc | `sudo yum clean all` | Clean yum cache |
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2018-2025 Alexandros Kozak
|
Copyright (c) 2018-2026 Alexandros Kozak
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -24,16 +24,23 @@ Zsh-z is a drop-in replacement for `rupa/z` and will, by default, use the same d
|
|||||||
- [Case Sensitivity](#case-sensitivity)
|
- [Case Sensitivity](#case-sensitivity)
|
||||||
- [`ZSHZ_UNCOMMON`](#zshz_uncommon)
|
- [`ZSHZ_UNCOMMON`](#zshz_uncommon)
|
||||||
- [Making `--add` work for you](#making---add-work-for-you)
|
- [Making `--add` work for you](#making---add-work-for-you)
|
||||||
- [Other Improvements and Fixes](#other-improvements-and-fixes)
|
- [Other Improvements to the Original Functionality of `rupa/z`](#other-improvements-to-the-original-functionality-of-rupa-z)
|
||||||
- [Migrating from Other Tools](#migrating-from-other-tools)
|
- [Migrating from Other Tools](#migrating-from-other-tools)
|
||||||
- [`COMPLETE_ALIASES`](#complete_aliases)
|
- [`COMPLETE_ALIASES`](#complete_aliases)
|
||||||
- [Known Bugs](#known-bugs)
|
|
||||||
|
|
||||||
## News
|
## News
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Here are the latest features and updates.</summary>
|
<summary>Here are the latest features and updates.</summary>
|
||||||
|
|
||||||
|
- May 1, 2026
|
||||||
|
+ Various tab completion bugs resolved.
|
||||||
|
- April 27, 2026
|
||||||
|
+ Fixes a bug where re-sourcing the script caused an infinite loop when tab was pressed. Props to @maheshpec for [successfully diagnosing the problem](https://github.com/ohmyzsh/ohmyzsh/pull/13715).
|
||||||
|
+ Fixes a bug where the completion widget was not identifying options correctly.
|
||||||
|
- March 31, 2026
|
||||||
|
+ When the user hits tab after entering a command-line argument that uses spaces as wildcards (e.g., `z us lo bi`), the command line is clear of detritus (i.e., it looks like `z /usr/local/bin` instead of `z us lo /usr/local/bin`).
|
||||||
|
+ Improved test for Docker containers.
|
||||||
- August 24, 2023
|
- August 24, 2023
|
||||||
+ Zsh-z will now run when `setopt NO_UNSET` has been enabled (props @ntninja).
|
+ Zsh-z will now run when `setopt NO_UNSET` has been enabled (props @ntninja).
|
||||||
- August 23, 2023
|
- August 23, 2023
|
||||||
@@ -50,7 +57,7 @@ Zsh-z is a drop-in replacement for `rupa/z` and will, by default, use the same d
|
|||||||
+ A bug was fixed which was preventing paths with spaces in them from being updated ([#61](https://github.com/agkozak/zsh-z/issues/61)).
|
+ A bug was fixed which was preventing paths with spaces in them from being updated ([#61](https://github.com/agkozak/zsh-z/issues/61)).
|
||||||
+ If writing to the temporary database file fails, the database will not be clobbered (props @mafredri).
|
+ If writing to the temporary database file fails, the database will not be clobbered (props @mafredri).
|
||||||
- December 19, 2021
|
- December 19, 2021
|
||||||
+ ZSH-z will now display tildes for `HOME` during completion when `ZSHZ_TILDE=1` has been set.
|
+ Zsh-z will now display tildes for `HOME` during completion when `ZSHZ_TILDE=1` has been set.
|
||||||
- November 11, 2021
|
- November 11, 2021
|
||||||
+ A bug was fixed which was preventing ranks from being incremented.
|
+ A bug was fixed which was preventing ranks from being incremented.
|
||||||
+ `--add` has been made to work with relative paths and has been documented for the user.
|
+ `--add` has been made to work with relative paths and has been documented for the user.
|
||||||
@@ -71,7 +78,7 @@ Zsh-z is a drop-in replacement for `rupa/z` and will, by default, use the same d
|
|||||||
- July 29, 2021
|
- July 29, 2021
|
||||||
+ Temporarily disabling the use of `print -v`, which was mangling CJK multibyte strings.
|
+ Temporarily disabling the use of `print -v`, which was mangling CJK multibyte strings.
|
||||||
- July 27, 2021
|
- July 27, 2021
|
||||||
+ Internal escaping of path names now works with older versions of ZSH.
|
+ Internal escaping of path names now works with older versions of Zsh.
|
||||||
+ Zsh-z now detects and discards any incomplete or incorrectly formatted database entries.
|
+ Zsh-z now detects and discards any incomplete or incorrectly formatted database entries.
|
||||||
- July 10, 2021
|
- July 10, 2021
|
||||||
+ Setting `ZSHZ_TRAILING_SLASH=1` makes it so that a search pattern ending in `/` can match the end of a path; e.g. `z foo/` can match `/path/to/foo`.
|
+ Setting `ZSHZ_TRAILING_SLASH=1` makes it so that a search pattern ending in `/` can match the end of a path; e.g. `z foo/` can match `/path/to/foo`.
|
||||||
@@ -79,12 +86,12 @@ Zsh-z is a drop-in replacement for `rupa/z` and will, by default, use the same d
|
|||||||
+ Setting `ZSHZ_TILDE=1` displays the `HOME` directory as `~`.
|
+ Setting `ZSHZ_TILDE=1` displays the `HOME` directory as `~`.
|
||||||
- May 7, 2021
|
- May 7, 2021
|
||||||
+ Setting `ZSHZ_ECHO=1` will cause Zsh-z to display the new path when you change directories.
|
+ Setting `ZSHZ_ECHO=1` will cause Zsh-z to display the new path when you change directories.
|
||||||
+ Better escaping of path names to deal paths containing the characters ``\`()[]``.
|
+ Better escaping of path names to deal with paths containing the characters ``\`()[]``.
|
||||||
- February 15, 2021
|
- February 15, 2021
|
||||||
+ Ranks are displayed the way `rupa/z` now displays them, i.e. as large integers. This should help Zsh-z to integrate with other tools.
|
+ Ranks are displayed the way `rupa/z` now displays them, i.e. as large integers. This should help Zsh-z to integrate with other tools.
|
||||||
- January 31, 2021
|
- January 31, 2021
|
||||||
+ Zsh-z is now efficient enough that, on MSYS2 and Cygwin, it is faster to run it in the foreground than it is to fork a subshell for it.
|
+ Zsh-z is now efficient enough that, on MSYS2 and Cygwin, it is faster to run it in the foreground than it is to fork a subshell for it.
|
||||||
+ `_zshz_precmd` simply returns if `PWD` is `HOME` or in `ZSH_EXCLUDE_DIRS`, rather than waiting for `zshz` to do that.
|
+ `_zshz_precmd` simply returns if `PWD` is `HOME` or in `ZSHZ_EXCLUDE_DIRS`, rather than waiting for `zshz` to do that.
|
||||||
- January 17, 2021
|
- January 17, 2021
|
||||||
+ Made sure that the `PUSHD_IGNORE_DUPS` option is respected.
|
+ Made sure that the `PUSHD_IGNORE_DUPS` option is respected.
|
||||||
- January 14, 2021
|
- January 14, 2021
|
||||||
@@ -171,7 +178,7 @@ is uncommented. Then find the section that specifies which modules are to be loa
|
|||||||
'completion' \
|
'completion' \
|
||||||
'prompt'
|
'prompt'
|
||||||
|
|
||||||
Add a backslash to the end of the last line add `'zsh-z'` to the list, e.g.,
|
Add a backslash to the end of the last line and add `'zsh-z'` to the list, e.g.,
|
||||||
|
|
||||||
zstyle ':prezto:load' pmodule \
|
zstyle ':prezto:load' pmodule \
|
||||||
'environment' \
|
'environment' \
|
||||||
@@ -279,7 +286,7 @@ Zsh-z has environment variables (they all begin with `ZSHZ_`) that change its be
|
|||||||
* `ZSHZ_OWNER` allows usage when in `sudo -s` mode (default: empty)
|
* `ZSHZ_OWNER` allows usage when in `sudo -s` mode (default: empty)
|
||||||
* `ZSHZ_TILDE` displays the name of the `HOME` directory as a `~` (default: `0`)
|
* `ZSHZ_TILDE` displays the name of the `HOME` directory as a `~` (default: `0`)
|
||||||
* `ZSHZ_TRAILING_SLASH` makes it so that a search pattern ending in `/` can match the final element in a path; e.g., `z foo/` can match `/path/to/foo` (default: `0`)
|
* `ZSHZ_TRAILING_SLASH` makes it so that a search pattern ending in `/` can match the final element in a path; e.g., `z foo/` can match `/path/to/foo` (default: `0`)
|
||||||
* `ZSHZ_UNCOMMON` changes the logic used to calculate the directory jumped to; [see below](#zshz_uncommon`) (default: `0`)
|
* `ZSHZ_UNCOMMON` changes the logic used to calculate the directory jumped to; [see below](#zshz_uncommon) (default: `0`)
|
||||||
|
|
||||||
## Case sensitivity
|
## Case sensitivity
|
||||||
|
|
||||||
@@ -324,7 +331,7 @@ A good example might involve a directory tree that has Git repositories within i
|
|||||||
|
|
||||||
(As a Zsh user, I tend to use `**` instead of `find`, but it is good to see how deep your directory trees go before doing that.)
|
(As a Zsh user, I tend to use `**` instead of `find`, but it is good to see how deep your directory trees go before doing that.)
|
||||||
|
|
||||||
## Other Improvements and Fixes
|
## Other Improvements to the Original Functionality of `rupa/z`
|
||||||
|
|
||||||
* `z -x` works, with the help of `chpwd_functions`.
|
* `z -x` works, with the help of `chpwd_functions`.
|
||||||
* Zsh-z is compatible with Solaris.
|
* Zsh-z is compatible with Solaris.
|
||||||
@@ -336,6 +343,7 @@ A good example might involve a directory tree that has Git repositories within i
|
|||||||
* Completions now work with options `-c`, `-r`, and `-t`.
|
* Completions now work with options `-c`, `-r`, and `-t`.
|
||||||
* If `~/foo` and `~/foob` are matches, `~/foo` is no longer considered the common root. Only a common parent directory can be a common root.
|
* If `~/foo` and `~/foob` are matches, `~/foo` is no longer considered the common root. Only a common parent directory can be a common root.
|
||||||
* `z -x` and the new, recursive `z -xR` can now accept an argument so that you can remove directories other than `PWD` from the database.
|
* `z -x` and the new, recursive `z -xR` can now accept an argument so that you can remove directories other than `PWD` from the database.
|
||||||
|
* Zsh-z inherits `rupa/z`'s behavior of allowing spaces as wildcards (e.g., `z us lo bi` might take you to `/usr/local/bin`), but now completion of such command lines does not result in visual detritus.
|
||||||
|
|
||||||
## Migrating from Other Tools
|
## Migrating from Other Tools
|
||||||
|
|
||||||
@@ -347,7 +355,7 @@ If you are coming to Zsh-z (or even to the original `rupa/z`, for that matter) f
|
|||||||
|
|
||||||
## `COMPLETE_ALIASES`
|
## `COMPLETE_ALIASES`
|
||||||
|
|
||||||
`z`, or any alternative you set up using `$ZSH_CMD` or `$_Z_CMD`, is an alias. `setopt COMPLETE_ALIASES` divorces the tab completion for aliases from the underlying commands they invoke, so if you enable `COMPLETE_ALIASES`, tab completion for Zsh-z will be broken. You can get it working again, however, by adding under
|
`z`, or any alternative you set up using `$ZSHZ_CMD` or `$_Z_CMD`, is an alias. `setopt COMPLETE_ALIASES` divorces the tab completion for aliases from the underlying commands they invoke, so if you enable `COMPLETE_ALIASES`, tab completion for Zsh-z will be broken. You can get it working again, however, by adding under
|
||||||
|
|
||||||
setopt COMPLETE_ALIASES
|
setopt COMPLETE_ALIASES
|
||||||
|
|
||||||
@@ -356,10 +364,3 @@ the line
|
|||||||
compdef _zshz ${ZSHZ_CMD:-${_Z_CMD:-z}}
|
compdef _zshz ${ZSHZ_CMD:-${_Z_CMD:-z}}
|
||||||
|
|
||||||
That will re-bind `z` or the command of your choice to the underlying Zsh-z function.
|
That will re-bind `z` or the command of your choice to the underlying Zsh-z function.
|
||||||
|
|
||||||
## Known Bug
|
|
||||||
It is possible to run a completion on a string with spaces in it, e.g., `z us bi<TAB>` might take you to `/usr/local/bin`. This works, but as things stand, after the completion the command line reads
|
|
||||||
|
|
||||||
z us /usr/local/bin.
|
|
||||||
|
|
||||||
You get where you want to go, but the detritus on the command line is annoying. This is also a problem in `rupa/z`, but I am keen on eventually eliminating this glitch. Advice is welcome.
|
|
||||||
|
|||||||
19
plugins/z/_z
19
plugins/z/_z
@@ -5,7 +5,7 @@
|
|||||||
#
|
#
|
||||||
# https://github.com/agkozak/zsh-z
|
# https://github.com/agkozak/zsh-z
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018-2023 Alexandros Kozak
|
# Copyright (c) 2018-2026 Alexandros Kozak
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -37,25 +37,10 @@ emulate -L zsh
|
|||||||
(( ZSHZ_DEBUG )) &&
|
(( ZSHZ_DEBUG )) &&
|
||||||
setopt LOCAL_OPTIONS WARN_CREATE_GLOBAL NO_WARN_NESTED_VAR 2> /dev/null
|
setopt LOCAL_OPTIONS WARN_CREATE_GLOBAL NO_WARN_NESTED_VAR 2> /dev/null
|
||||||
|
|
||||||
# TODO: This routine currently reproduces z's feature of allowing spaces to be
|
|
||||||
# used as wildcards in completions, so that
|
|
||||||
#
|
|
||||||
# z us lo bi
|
|
||||||
#
|
|
||||||
# can expand to
|
|
||||||
#
|
|
||||||
# z /usr/local/bin
|
|
||||||
#
|
|
||||||
# but it also reproduces z's buggy display on the commandline, viz.
|
|
||||||
#
|
|
||||||
# z us lo /usr/local/bin
|
|
||||||
#
|
|
||||||
# Address.
|
|
||||||
|
|
||||||
local completions expl completion
|
local completions expl completion
|
||||||
local -a completion_list
|
local -a completion_list
|
||||||
|
|
||||||
completions=$(zshz --complete ${(@)words:1})
|
completions=$(zshz --complete "${(@)words:1}")
|
||||||
[[ -z $completions ]] && return 1
|
[[ -z $completions ]] && return 1
|
||||||
|
|
||||||
for completion in ${(f)completions[@]}; do
|
for completion in ${(f)completions[@]}; do
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
#
|
#
|
||||||
# https://github.com/agkozak/zsh-z
|
# https://github.com/agkozak/zsh-z
|
||||||
#
|
#
|
||||||
# Copyright (c) 2018-2025 Alexandros Kozak
|
# Copyright (c) 2018-2026 Alexandros Kozak
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
# of this software and associated documentation files (the "Software"), to deal
|
# of this software and associated documentation files (the "Software"), to deal
|
||||||
@@ -96,7 +96,7 @@ With no ARGUMENT, list the directory history in ascending rank.
|
|||||||
-t Match by recent access
|
-t Match by recent access
|
||||||
-x Remove a directory from the database (by default, the current directory)
|
-x Remove a directory from the database (by default, the current directory)
|
||||||
-xR Remove a directory and its subdirectories from the database (by default, the current directory)" |
|
-xR Remove a directory and its subdirectories from the database (by default, the current directory)" |
|
||||||
fold -s -w $COLUMNS >&2
|
fold -s -w $(( COLUMNS > 0 ? COLUMNS : 80 )) >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
# Load zsh/datetime module, if necessary
|
# Load zsh/datetime module, if necessary
|
||||||
@@ -251,7 +251,7 @@ zshz() {
|
|||||||
if (( ${ZSHZ_NO_RESOLVE_SYMLINKS:-${_Z_NO_RESOLVE_SYMLINKS}} )); then
|
if (( ${ZSHZ_NO_RESOLVE_SYMLINKS:-${_Z_NO_RESOLVE_SYMLINKS}} )); then
|
||||||
[[ -d ${${*:-${PWD}}:a} ]] && xdir=${${*:-${PWD}}:a}
|
[[ -d ${${*:-${PWD}}:a} ]] && xdir=${${*:-${PWD}}:a}
|
||||||
else
|
else
|
||||||
[[ -d ${${*:-${PWD}}:A} ]] && xdir=${${*:-${PWD}}:a}
|
[[ -d ${${*:-${PWD}}:A} ]] && xdir=${${*:-${PWD}}:A}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local -a lines_to_keep
|
local -a lines_to_keep
|
||||||
@@ -294,9 +294,9 @@ zshz() {
|
|||||||
owner=${ZSHZ_OWNER:-${_Z_OWNER}}
|
owner=${ZSHZ_OWNER:-${_Z_OWNER}}
|
||||||
|
|
||||||
if (( ZSHZ[USE_FLOCK] )); then
|
if (( ZSHZ[USE_FLOCK] )); then
|
||||||
# An unsual case: if inside Docker container where datafile could be bind
|
# An unusual case: if inside Docker container where datafile could be bind
|
||||||
# mounted
|
# mounted
|
||||||
if [[ -r '/proc/1/cgroup' && "$(< '/proc/1/cgroup')" == *docker* ]]; then
|
if [[ -f '/.dockerenv' || ( -r '/proc/1/cgroup' && "$(< '/proc/1/cgroup')" == *docker* ) ]]; then
|
||||||
print "$(< "$tempfile")" > "$datafile" 2> /dev/null
|
print "$(< "$tempfile")" > "$datafile" 2> /dev/null
|
||||||
${ZSHZ[RM]} -f "$tempfile"
|
${ZSHZ[RM]} -f "$tempfile"
|
||||||
# All other cases
|
# All other cases
|
||||||
@@ -741,6 +741,9 @@ zshz() {
|
|||||||
for opt in ${(k)opts}; do
|
for opt in ${(k)opts}; do
|
||||||
case $opt in
|
case $opt in
|
||||||
--add)
|
--add)
|
||||||
|
# Don't change the database when invoked via --complete (e.g., from
|
||||||
|
# tab completion).
|
||||||
|
(( ${+opts[--complete]} )) && continue
|
||||||
[[ ! -d $* ]] && return 1
|
[[ ! -d $* ]] && return 1
|
||||||
local dir
|
local dir
|
||||||
# Cygwin and MSYS2 have a hard time with relative paths expressed from /
|
# Cygwin and MSYS2 have a hard time with relative paths expressed from /
|
||||||
@@ -764,6 +767,7 @@ zshz() {
|
|||||||
;;
|
;;
|
||||||
-c) [[ $* == ${PWD}/* || $PWD == '/' ]] || prefix="$PWD " ;;
|
-c) [[ $* == ${PWD}/* || $PWD == '/' ]] || prefix="$PWD " ;;
|
||||||
-h|--help)
|
-h|--help)
|
||||||
|
(( ${+opts[--complete]} )) && continue
|
||||||
_zshz_usage
|
_zshz_usage
|
||||||
return
|
return
|
||||||
;;
|
;;
|
||||||
@@ -771,6 +775,7 @@ zshz() {
|
|||||||
-r) method='rank' ;;
|
-r) method='rank' ;;
|
||||||
-t) method='time' ;;
|
-t) method='time' ;;
|
||||||
-x)
|
-x)
|
||||||
|
(( ${+opts[--complete]} )) && continue
|
||||||
# Cygwin and MSYS2 have a hard time with relative paths expressed from /
|
# Cygwin and MSYS2 have a hard time with relative paths expressed from /
|
||||||
if [[ $OSTYPE == (cygwin|msys) && $PWD == '/' && $* != /* ]]; then
|
if [[ $OSTYPE == (cygwin|msys) && $PWD == '/' && $* != /* ]]; then
|
||||||
set -- "/$*"
|
set -- "/$*"
|
||||||
@@ -844,7 +849,8 @@ zshz() {
|
|||||||
|
|
||||||
# New experimental "uncommon" behavior
|
# New experimental "uncommon" behavior
|
||||||
#
|
#
|
||||||
# If the best choice at this point is something like /foo/bar/foo/bar, and the # search pattern is `bar', go to /foo/bar/foo/bar; but if the search pattern
|
# If the best choice at this point is something like /foo/bar/foo/bar, and the
|
||||||
|
# search pattern is `bar', go to /foo/bar/foo/bar; but if the search pattern
|
||||||
# is `foo', go to /foo/bar/foo
|
# is `foo', go to /foo/bar/foo
|
||||||
if (( ZSHZ_UNCOMMON )) && [[ -n $cd ]]; then
|
if (( ZSHZ_UNCOMMON )) && [[ -n $cd ]]; then
|
||||||
if [[ -n $cd ]]; then
|
if [[ -n $cd ]]; then
|
||||||
@@ -960,6 +966,75 @@ add-zsh-hook chpwd _zshz_chpwd
|
|||||||
|
|
||||||
(( ${fpath[(ie)${0:A:h}]} <= ${#fpath} )) || fpath=( "${0:A:h}" "${fpath[@]}" )
|
(( ${fpath[(ie)${0:A:h}]} <= ${#fpath} )) || fpath=( "${0:A:h}" "${fpath[@]}" )
|
||||||
|
|
||||||
|
|
||||||
|
# Save the existing Tab binding so that the completion widget can invoke it,
|
||||||
|
# but being careful not to create a situation where the widget ends up calling
|
||||||
|
# itself and causing infinite recursion if this script is re-sourced.
|
||||||
|
if (( ! ${+widgets[_zshz_zle_completion_widget]} )); then
|
||||||
|
ZSHZ[TAB_BINDING]="${$(bindkey -M main '^I')##* }"
|
||||||
|
fi
|
||||||
|
|
||||||
|
############################################################
|
||||||
|
# ZLE widget to fix spaces-as-wildcards completion
|
||||||
|
#
|
||||||
|
# When completing a Zsh-z command with multiple search terms
|
||||||
|
# (e.g. `z us lo bi'), collapse the terms into a single
|
||||||
|
# wildcard-joined word (e.g. `z us*lo*bi') before triggering
|
||||||
|
# completion. This causes compadd to replace the whole query
|
||||||
|
# with the matched path rather than just the last word.
|
||||||
|
#
|
||||||
|
# Globals:
|
||||||
|
# ZSHZ_CMD
|
||||||
|
############################################################
|
||||||
|
_zshz_zle_completion_widget() {
|
||||||
|
|
||||||
|
setopt LOCAL_OPTIONS EXTENDED_GLOB NO_KSH_ARRAYS NO_SH_WORD_SPLIT
|
||||||
|
|
||||||
|
local cmd=${ZSHZ_CMD:-${_Z_CMD:-z}}
|
||||||
|
|
||||||
|
# If a trailing space was added after an already-completed absolute path
|
||||||
|
# (e.g. `z /usr/local/bin '), a second Tab would otherwise re-trigger
|
||||||
|
# completion on an empty word and insert a duplicate. Bail out early.
|
||||||
|
if [[ $LBUFFER[-1] == ' ' && ${${LBUFFER% }##* } == [/~]* ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Only act when there are at least two words after the command
|
||||||
|
if [[ $LBUFFER == ${cmd}\ *\ * ]]; then
|
||||||
|
local after=${LBUFFER#${cmd} }
|
||||||
|
local -a parts option_parts search_parts
|
||||||
|
local p past_options=0
|
||||||
|
|
||||||
|
parts=( ${(z)after} )
|
||||||
|
for p in $parts; do
|
||||||
|
if (( ! past_options )) && [[ $p == (--|-[cehlrRtx]##|--add|--complete|--help) ]]; then
|
||||||
|
option_parts+=( $p )
|
||||||
|
# `--' terminates option parsing; subsequent tokens are positional,
|
||||||
|
# even if they happen to look like options.
|
||||||
|
[[ $p == -- ]] && past_options=1
|
||||||
|
else
|
||||||
|
past_options=1
|
||||||
|
search_parts+=( $p )
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if (( ${#search_parts} > 1 )); then
|
||||||
|
LBUFFER="${cmd}${option_parts:+ ${(j: :)option_parts}} ${(j:*:)search_parts}"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# If Tab had a non-default binding, continue to use it; otherwise the default
|
||||||
|
# expand-or-complete gets used.
|
||||||
|
zle ${ZSHZ[TAB_BINDING]:-expand-or-complete}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Register the widget and bind to Tab, but only if this script has not already
|
||||||
|
# been sourced -- avoid infinite recursion.
|
||||||
|
if (( ! ${+widgets[_zshz_zle_completion_widget]} )); then
|
||||||
|
zle -N _zshz_zle_completion_widget
|
||||||
|
bindkey -M main '^I' _zshz_zle_completion_widget
|
||||||
|
fi
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# zsh-z functions
|
# zsh-z functions
|
||||||
############################################################
|
############################################################
|
||||||
@@ -974,7 +1049,8 @@ ZSHZ[FUNCTIONS]='_zshz_usage
|
|||||||
zshz
|
zshz
|
||||||
_zshz_precmd
|
_zshz_precmd
|
||||||
_zshz_chpwd
|
_zshz_chpwd
|
||||||
_zshz'
|
_zshz
|
||||||
|
_zshz_zle_completion_widget'
|
||||||
|
|
||||||
############################################################
|
############################################################
|
||||||
# Enable WARN_NESTED_VAR for functions listed in
|
# Enable WARN_NESTED_VAR for functions listed in
|
||||||
@@ -1004,6 +1080,16 @@ zsh-z_plugin_unload() {
|
|||||||
add-zsh-hook -D precmd _zshz_precmd
|
add-zsh-hook -D precmd _zshz_precmd
|
||||||
add-zsh-hook -d chpwd _zshz_chpwd
|
add-zsh-hook -d chpwd _zshz_chpwd
|
||||||
|
|
||||||
|
zle -D _zshz_zle_completion_widget
|
||||||
|
|
||||||
|
# Only restore Tab binding if it is still bound to our widget; otherwise
|
||||||
|
# leave it alone.
|
||||||
|
local _zshz_current_tab
|
||||||
|
_zshz_current_tab="$(bindkey -M main '^I' 2>/dev/null || true)"
|
||||||
|
if [[ ${_zshz_current_tab##* } == _zshz_zle_completion_widget ]]; then
|
||||||
|
bindkey -M main '^I' "${ZSHZ[TAB_BINDING]:-expand-or-complete}"
|
||||||
|
fi
|
||||||
|
|
||||||
local x
|
local x
|
||||||
for x in ${=ZSHZ[FUNCTIONS]}; do
|
for x in ${=ZSHZ[FUNCTIONS]}; do
|
||||||
(( ${+functions[$x]} )) && unfunction $x
|
(( ${+functions[$x]} )) && unfunction $x
|
||||||
|
|||||||
@@ -55,9 +55,9 @@ _nlist_cursor_visibility() {
|
|||||||
[ "$1" = "1" ] && { tput cvvis; tput cnorm }
|
[ "$1" = "1" ] && { tput cvvis; tput cnorm }
|
||||||
[ "$1" = "0" ] && tput civis
|
[ "$1" = "0" ] && tput civis
|
||||||
elif [ "$_nlist_has_terminfo" = "1" ]; then
|
elif [ "$_nlist_has_terminfo" = "1" ]; then
|
||||||
[ "$1" = "1" ] && { [ -n $terminfo[cvvis] ] && echo -n $terminfo[cvvis];
|
[ "$1" = "1" ] && { [ -n "$terminfo[cvvis]" ] && echo -n "$terminfo[cvvis]";
|
||||||
[ -n $terminfo[cnorm] ] && echo -n $terminfo[cnorm] }
|
[ -n "$terminfo[cnorm]" ] && echo -n "$terminfo[cnorm]" }
|
||||||
[ "$1" = "0" ] && [ -n $terminfo[civis] ] && echo -n $terminfo[civis]
|
[ "$1" = "0" ] && [ -n "$terminfo[civis]" ] && echo -n "$terminfo[civis]"
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,7 @@
|
|||||||
if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi
|
if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi
|
||||||
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
|
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
|
||||||
|
|
||||||
PROMPT='%{$fg[$NCOLOR]%}%n%{$reset_color%}@%{$fg[cyan]%}%m\
|
PROMPT='%{$fg[$NCOLOR]%}%n%{$reset_color%}@%{$fg[cyan]%}%m%{$reset_color%}:%{$fg[magenta]%}%~$(git_prompt_info) %{$fg[red]%}%(!.#.»)%{$reset_color%} '
|
||||||
%{$reset_color%}:%{$fg[magenta]%}%~\
|
|
||||||
$(git_prompt_info) \
|
|
||||||
%{$fg[red]%}%(!.#.»)%{$reset_color%} '
|
|
||||||
PROMPT2='%{$fg[red]%}\ %{$reset_color%}'
|
PROMPT2='%{$fg[red]%}\ %{$reset_color%}'
|
||||||
RPS1='${return_code}'
|
RPS1='${return_code}'
|
||||||
|
|
||||||
|
|||||||
@@ -60,7 +60,14 @@ ZSH_THEME_GIT_PROMPT_UNMERGED="%{$fg[yellow]%} %{%G═%}"
|
|||||||
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} %{%G✭%}"
|
ZSH_THEME_GIT_PROMPT_UNTRACKED="%{$fg[cyan]%} %{%G✭%}"
|
||||||
|
|
||||||
# Use extended characters to look nicer if supported.
|
# Use extended characters to look nicer if supported.
|
||||||
if [[ "${langinfo[CODESET]}" = UTF-8 ]]; then
|
if [[ "${TERM_PROGRAM:-}" = ghostty ]]; then
|
||||||
|
PR_SET_CHARSET=""
|
||||||
|
PR_HBAR="-"
|
||||||
|
PR_ULCORNER="-"
|
||||||
|
PR_LLCORNER="-"
|
||||||
|
PR_LRCORNER="-"
|
||||||
|
PR_URCORNER="-"
|
||||||
|
elif [[ "${langinfo[CODESET]}" = UTF-8 ]]; then
|
||||||
PR_SET_CHARSET=""
|
PR_SET_CHARSET=""
|
||||||
PR_HBAR="─"
|
PR_HBAR="─"
|
||||||
PR_ULCORNER="┌"
|
PR_ULCORNER="┌"
|
||||||
|
|||||||
@@ -473,7 +473,8 @@ EOF
|
|||||||
# be prompted for the password either way, so this shouldn't cause any issues.
|
# be prompted for the password either way, so this shouldn't cause any issues.
|
||||||
#
|
#
|
||||||
if user_can_sudo; then
|
if user_can_sudo; then
|
||||||
sudo -k chsh -s "$zsh" "$USER" # -k forces the password prompt
|
sudo -k >/dev/null 2>&1 # -k forces the password prompt
|
||||||
|
sudo chsh -s "$zsh" "$USER"
|
||||||
else
|
else
|
||||||
chsh -s "$zsh" "$USER" # run chsh normally
|
chsh -s "$zsh" "$USER" # run chsh normally
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user