mirror of
https://github.com/ohmyzsh/ohmyzsh.git
synced 2025-12-11 15:23:41 +08:00
Compare commits
45 Commits
8b93e29f98
...
f4a610771f
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f4a610771f | ||
|
|
92aed2e936 | ||
|
|
72acd2ca90 | ||
|
|
ddec79ad43 | ||
|
|
0ebeae78d0 | ||
|
|
3b66f643e4 | ||
|
|
953f526dea | ||
|
|
1b4497fc8f | ||
|
|
a98a9f7122 | ||
|
|
5f7f419759 | ||
|
|
e9fc134236 | ||
|
|
977c4f93a6 | ||
|
|
ee30bc535a | ||
|
|
ca5c467db1 | ||
|
|
a449c0247d | ||
|
|
343c5a83cb | ||
|
|
beadd56dd7 | ||
|
|
0116e7a5af | ||
|
|
441299ca77 | ||
|
|
fc2d0f8848 | ||
|
|
b04e01d418 | ||
|
|
15bcada010 | ||
|
|
b52dd1a425 | ||
|
|
8a4d6fc0a2 | ||
|
|
73d79fe137 | ||
|
|
8c5a60644a | ||
|
|
9d93dfaa60 | ||
|
|
5a282b9b30 | ||
|
|
dca16e8f9a | ||
|
|
a0576348d0 | ||
|
|
18d0a63df8 | ||
|
|
e70086a76a | ||
|
|
90a22b61e6 | ||
|
|
423e9aef52 | ||
|
|
43e880ba45 | ||
|
|
1dc87da9e6 | ||
|
|
136298e110 | ||
|
|
829b8fdea4 | ||
|
|
279e91e132 | ||
|
|
969cd28e0d | ||
|
|
99017b8eac | ||
|
|
55aa4c40e2 | ||
|
|
38423b4b5c | ||
|
|
bd295c014f | ||
|
|
15cd818cd1 |
6
.github/FUNDING.yml
vendored
6
.github/FUNDING.yml
vendored
@ -1,2 +1,6 @@
|
||||
github: [ohmyzsh, robbyrussell, mcornella, larson-carter, carlosala]
|
||||
github:
|
||||
- ohmyzsh
|
||||
- robbyrussell
|
||||
- mcornella
|
||||
- carlosala
|
||||
open_collective: ohmyzsh
|
||||
|
||||
2
.github/dependencies.yml
vendored
2
.github/dependencies.yml
vendored
@ -12,7 +12,7 @@ dependencies:
|
||||
plugins/gradle:
|
||||
repo: gradle/gradle-completion
|
||||
branch: master
|
||||
version: 25da917cf5a88f3e58f05be3868a7b2748c8afe6
|
||||
version: a9d7c822e42cc6a5b028b59e46cffcc8e7bc1134
|
||||
precopy: |
|
||||
set -e
|
||||
find . ! -name _gradle ! -name LICENSE -delete
|
||||
|
||||
13
.github/workflows/dependencies.yml
vendored
13
.github/workflows/dependencies.yml
vendored
@ -4,32 +4,31 @@ on:
|
||||
schedule:
|
||||
- cron: "0 6 * * 0"
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
check:
|
||||
name: Check for updates
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||
permissions:
|
||||
contents: write # this is needed to push commits and branches
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
|
||||
uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Authenticate as @ohmyzsh
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
|
||||
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||
with:
|
||||
app-id: ${{ secrets.OHMYZSH_APP_ID }}
|
||||
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}
|
||||
- name: Setup Python
|
||||
uses: actions/setup-python@e797f83bcb11b83ae66e0230d6156d7c80228e7c # v6.0.0
|
||||
uses: actions/setup-python@83679a892e2d95755f2dac6acb0bfd1e9ac5d548 # v6.1.0
|
||||
with:
|
||||
python-version: "3.12"
|
||||
cache: "pip"
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
certifi==2025.10.5
|
||||
certifi==2025.11.12
|
||||
charset-normalizer==3.4.4
|
||||
idna==3.11
|
||||
PyYAML==6.0.3
|
||||
requests==2.32.5
|
||||
semver==3.0.4
|
||||
urllib3==2.5.0
|
||||
urllib3==2.6.0
|
||||
|
||||
72
.github/workflows/dependencies/updater.py
vendored
72
.github/workflows/dependencies/updater.py
vendored
@ -219,32 +219,33 @@ class Dependency:
|
||||
# Create new branch
|
||||
branch = Git.checkout_or_create_branch(branch_name)
|
||||
|
||||
# Update dependencies.yml file
|
||||
self.__update_yaml(
|
||||
f"tag:{new_version}" if is_tag else status["version"]
|
||||
)
|
||||
|
||||
# Update dependency files
|
||||
self.__apply_upstream_changes()
|
||||
|
||||
# Add all changes and commit
|
||||
has_new_commit = Git.add_and_commit(self.name, new_version)
|
||||
|
||||
if has_new_commit:
|
||||
# Push changes to remote
|
||||
Git.push(branch)
|
||||
|
||||
# Create GitHub PR
|
||||
GitHub.create_pr(
|
||||
branch,
|
||||
f"feat({self.name}): update to version {new_version}",
|
||||
f"""## Description
|
||||
|
||||
Update for **{self.desc}**: update to version [{new_version}]({status['head_url']}).
|
||||
Check out the [list of changes]({status['compare_url']}).
|
||||
""",
|
||||
if not Git.repo_is_clean():
|
||||
# Update dependencies.yml file
|
||||
self.__update_yaml(
|
||||
f"tag:{new_version}" if is_tag else status["version"]
|
||||
)
|
||||
|
||||
# Add all changes and commit
|
||||
has_new_commit = Git.add_and_commit(self.name, new_version)
|
||||
|
||||
if has_new_commit:
|
||||
# Push changes to remote
|
||||
Git.push(branch)
|
||||
|
||||
# Create GitHub PR
|
||||
GitHub.create_pr(
|
||||
branch,
|
||||
f"chore({self.name}): update to version {new_version}",
|
||||
f"""## Description
|
||||
|
||||
Update for **{self.desc}**: update to version [{new_version}]({status["head_url"]}).
|
||||
Check out the [list of changes]({status["compare_url"]}).
|
||||
""",
|
||||
)
|
||||
|
||||
# Clean up repository
|
||||
Git.clean_repo()
|
||||
except (CommandRunner.Exception, shutil.Error) as e:
|
||||
@ -275,8 +276,8 @@ Check out the [list of changes]({status['compare_url']}).
|
||||
|
||||
There is a new version of `{self.name}` {self.kind} available.
|
||||
|
||||
New version: [{new_version}]({status['head_url']})
|
||||
Check out the [list of changes]({status['compare_url']}).
|
||||
New version: [{new_version}]({status["head_url"]})
|
||||
Check out the [list of changes]({status["compare_url"]}).
|
||||
"""
|
||||
|
||||
print("Creating GitHub issue", file=sys.stderr)
|
||||
@ -377,21 +378,28 @@ class Git:
|
||||
)
|
||||
return branch_name
|
||||
|
||||
@staticmethod
|
||||
def repo_is_clean() -> bool:
|
||||
"""
|
||||
Returns `True` if the repo is clean.
|
||||
Returns `False` if the repo is dirty.
|
||||
"""
|
||||
try:
|
||||
CommandRunner.run_or_fail(
|
||||
["git", "diff", "--exit-code"], stage="CheckRepoClean"
|
||||
)
|
||||
return True
|
||||
except CommandRunner.Exception:
|
||||
return False
|
||||
|
||||
@staticmethod
|
||||
def add_and_commit(scope: str, version: str) -> bool:
|
||||
"""
|
||||
Returns `True` if there were changes and were indeed commited.
|
||||
Returns `False` if the repo was clean and no changes were commited.
|
||||
"""
|
||||
# check if repo is clean (clean => no error, no commit)
|
||||
try:
|
||||
CommandRunner.run_or_fail(
|
||||
["git", "diff", "--exit-code"], stage="CheckRepoClean"
|
||||
)
|
||||
if Git.repo_is_clean():
|
||||
return False
|
||||
except CommandRunner.Exception:
|
||||
# if it's other kind of error just throw!
|
||||
pass
|
||||
|
||||
user_name = os.environ.get("GIT_APP_NAME")
|
||||
user_email = os.environ.get("GIT_APP_EMAIL")
|
||||
@ -415,7 +423,7 @@ class Git:
|
||||
f"user.email={user_email}",
|
||||
"commit",
|
||||
"-m",
|
||||
f"feat({scope}): update to {version}",
|
||||
f"chore({scope}): update to {version}",
|
||||
],
|
||||
stage="CreateCommit",
|
||||
env=clean_env,
|
||||
|
||||
8
.github/workflows/installer.yml
vendored
8
.github/workflows/installer.yml
vendored
@ -26,12 +26,12 @@ jobs:
|
||||
- macos-latest
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
|
||||
uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Set up git repository
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- name: Install zsh
|
||||
if: runner.os == 'Linux'
|
||||
run: sudo apt-get update; sudo apt-get install zsh
|
||||
@ -47,12 +47,12 @@ jobs:
|
||||
- test
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
|
||||
uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- name: Install Vercel CLI
|
||||
run: npm install -g vercel
|
||||
- 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'
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
|
||||
uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: Set up git repository
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
- name: Install zsh
|
||||
run: sudo apt-get update; sudo apt-get install zsh
|
||||
- name: Check syntax
|
||||
|
||||
4
.github/workflows/project.yml
vendored
4
.github/workflows/project.yml
vendored
@ -17,12 +17,12 @@ jobs:
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
|
||||
uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
|
||||
with:
|
||||
egress-policy: audit
|
||||
- name: Authenticate as @ohmyzsh
|
||||
id: generate-token
|
||||
uses: actions/create-github-app-token@67018539274d69449ef7c02e8e71183d1719ab42 # v2.1.4
|
||||
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
|
||||
with:
|
||||
app-id: ${{ secrets.OHMYZSH_APP_ID }}
|
||||
private-key: ${{ secrets.OHMYZSH_APP_PRIVATE_KEY }}
|
||||
|
||||
8
.github/workflows/scorecard.yml
vendored
8
.github/workflows/scorecard.yml
vendored
@ -36,12 +36,12 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@f4a75cfd619ee5ce8d5b864b0d183aff3c69b55a # v2.13.1
|
||||
uses: step-security/harden-runner@df199fb7be9f65074067a9eb93f12bb4c5547cf2 # v2.13.3
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
- name: "Checkout code"
|
||||
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
|
||||
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8 # v6.0.1
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
@ -53,13 +53,13 @@ jobs:
|
||||
publish_results: true
|
||||
|
||||
- name: "Upload artifact"
|
||||
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
|
||||
uses: actions/upload-artifact@330a01c490aca151604b8cf639adc76d48f6c5d4 # v5.0.0
|
||||
with:
|
||||
name: SARIF file
|
||||
path: results.sarif
|
||||
retention-days: 5
|
||||
|
||||
- name: "Upload to code-scanning"
|
||||
uses: github/codeql-action/upload-sarif@16140ae1a102900babc80a33c44059580f687047 # v4.30.9
|
||||
uses: github/codeql-action/upload-sarif@cf1bb45a277cb3c205638b2cd5c984db1c46a412 # v4.31.7
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
@ -18,6 +18,7 @@ To learn more, visit [ohmyz.sh](https://ohmyz.sh), follow [@ohmyzsh](https://x.c
|
||||
Twitter), and join us on [Discord](https://discord.gg/ohmyzsh).
|
||||
|
||||
[](https://github.com/ohmyzsh/ohmyzsh/actions?query=workflow%3ACI)
|
||||
[](https://www.bestpractices.dev/projects/10713)
|
||||
[](https://twitter.com/intent/follow?screen_name=ohmyzsh)
|
||||
[](https://mstdn.social/@ohmyzsh)
|
||||
[](https://discord.gg/ohmyzsh)
|
||||
@ -547,7 +548,7 @@ We're on social media:
|
||||
## Merchandise
|
||||
|
||||
We have
|
||||
[stickers, shirts, and coffee mugs available](https://shop.planetargon.com/collections/oh-my-zsh?utm_source=github)
|
||||
[stickers, shirts, and coffee mugs available](https://commitgoods.com/collections/oh-my-zsh?utm_source=github)
|
||||
for you to show off your love of Oh My Zsh. Again, you will become the talk of the town!
|
||||
|
||||
## License
|
||||
|
||||
11
lib/cli.zsh
11
lib/cli.zsh
@ -28,6 +28,7 @@ function _omz {
|
||||
'plugin:Manage plugins'
|
||||
'pr:Manage Oh My Zsh Pull Requests'
|
||||
'reload:Reload the current zsh session'
|
||||
'shop:Open the Oh My Zsh shop'
|
||||
'theme:Manage themes'
|
||||
'update:Update Oh My Zsh'
|
||||
'version:Show the version'
|
||||
@ -173,6 +174,7 @@ Available commands:
|
||||
plugin <command> Manage plugins
|
||||
pr <command> Manage Oh My Zsh Pull Requests
|
||||
reload Reload the current zsh session
|
||||
shop Open the Oh My Zsh shop
|
||||
theme <command> Manage themes
|
||||
update Update Oh My Zsh
|
||||
version Show the version
|
||||
@ -721,6 +723,15 @@ function _omz::pr::test {
|
||||
)
|
||||
}
|
||||
|
||||
function _omz::shop {
|
||||
local shop_url="https://commitgoods.com/collections/oh-my-zsh"
|
||||
|
||||
_omz::log info "Opening Oh My Zsh shop in your browser..."
|
||||
_omz::log info "$shop_url"
|
||||
|
||||
open_command "$shop_url"
|
||||
}
|
||||
|
||||
function _omz::reload {
|
||||
# Delete current completion cache
|
||||
command rm -f $_comp_dumpfile $ZSH_COMPDUMP
|
||||
|
||||
@ -112,7 +112,7 @@ bindkey -M vicmd '^[[1;5D' backward-word
|
||||
|
||||
|
||||
bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark
|
||||
bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls
|
||||
bindkey -s '\el' '^q ls\n' # [Esc-l] - run command: ls
|
||||
bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line.
|
||||
bindkey ' ' magic-space # [Space] - don't do history expansion
|
||||
|
||||
|
||||
@ -2,6 +2,8 @@
|
||||
|
||||
This plugin provides completion for [docker-compose](https://docs.docker.com/compose/) as well as some
|
||||
aliases for frequent docker-compose commands.
|
||||
This plugin chooses automatically between the legacy `docker-compose` command and the modern
|
||||
`docker compose` subcommand, preferring `docker-compose` when both are available.
|
||||
|
||||
To use it, add docker-compose to the plugins array of your zshrc file:
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
# .NET Core CLI plugin
|
||||
# .NET CLI plugin
|
||||
|
||||
This plugin provides completion and useful aliases for [.NET Core CLI](https://dotnet.microsoft.com/).
|
||||
This plugin provides completion and useful aliases for [.NET CLI](https://dotnet.microsoft.com/).
|
||||
|
||||
To use it, add `dotnet` to the plugins array in your zshrc file.
|
||||
|
||||
@ -23,4 +23,4 @@ plugins=(... dotnet)
|
||||
| dp | dotnet pack | Create a NuGet package. |
|
||||
| dng | dotnet nuget | Provides additional NuGet commands. |
|
||||
| db | dotnet build | Build a .NET project |
|
||||
| dres | dotnet restore | Restore dependencies and project-specific tools for a project. |
|
||||
| dres | dotnet restore | Restore dependencies and project-specific tools for a project. |
|
||||
|
||||
@ -77,7 +77,15 @@ EOF
|
||||
(*.lzma) unlzma "$full_path" ;;
|
||||
(*.z) uncompress "$full_path" ;;
|
||||
(*.zip|*.war|*.jar|*.ear|*.sublime-package|*.ipa|*.ipsw|*.xpi|*.apk|*.aar|*.whl|*.vsix|*.crx|*.pk3|*.pk4) unzip "$full_path" ;;
|
||||
(*.rar) unrar x -ad "$full_path" ;;
|
||||
(*.rar)
|
||||
if (( $+commands[unrar] )); then
|
||||
unrar x -ad "$full_path"
|
||||
elif (( $+commands[unar] )); then
|
||||
unar -o . "$full_path"
|
||||
else
|
||||
echo "extract: cannot extract RAR files: install unrar or unar" >&2
|
||||
success=1
|
||||
fi ;;
|
||||
(*.rpm)
|
||||
rpm2cpio "$full_path" | cpio --quiet -id ;;
|
||||
(*.7z | *.7z.[0-9]* | *.pk7) 7za x "$full_path" ;;
|
||||
|
||||
@ -1,9 +0,0 @@
|
||||
# Fig plugin
|
||||
|
||||
This plugin sets up completion for [Fig](https://fig.io/).
|
||||
|
||||
To use it, add `fig` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... fig)
|
||||
```
|
||||
@ -1,13 +0,0 @@
|
||||
if ! (( $+commands[fig] )); then
|
||||
return
|
||||
fi
|
||||
|
||||
# If the completion file doesn't exist yet, we need to autoload it and
|
||||
# bind it to `fig`. Otherwise, compinit will have already done that
|
||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_fig" ]]; then
|
||||
autoload -Uz _fig
|
||||
typeset -g -A _comps
|
||||
_comps[fig]=_fig
|
||||
fi
|
||||
|
||||
fig completion zsh >| "$ZSH_CACHE_DIR/completions/_fig" &|
|
||||
@ -102,7 +102,7 @@ function work_in_progress() {
|
||||
alias grt='cd "$(git rev-parse --show-toplevel || echo .)"'
|
||||
|
||||
function ggpnp() {
|
||||
if [[ "$#" == 0 ]]; then
|
||||
if [[ $# == 0 ]]; then
|
||||
ggl && ggp
|
||||
else
|
||||
ggl "${*}" && ggp "${*}"
|
||||
@ -281,7 +281,7 @@ alias gprav='git pull --rebase --autostash -v'
|
||||
|
||||
function ggu() {
|
||||
local b
|
||||
[[ "$#" != 1 ]] && b="$(git_current_branch)"
|
||||
[[ $# != 1 ]] && b="$(git_current_branch)"
|
||||
git pull --rebase origin "${b:-$1}"
|
||||
}
|
||||
compdef _git ggu=git-pull
|
||||
@ -293,11 +293,11 @@ alias gprumi='git pull --rebase=interactive upstream $(git_main_branch)'
|
||||
alias ggpull='git pull origin "$(git_current_branch)"'
|
||||
|
||||
function ggl() {
|
||||
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||
if [[ $# != 0 ]] && [[ $# != 1 ]]; then
|
||||
git pull origin "${*}"
|
||||
else
|
||||
local b
|
||||
[[ "$#" == 0 ]] && b="$(git_current_branch)"
|
||||
[[ $# == 0 ]] && b="$(git_current_branch)"
|
||||
git pull origin "${b:-$1}"
|
||||
fi
|
||||
}
|
||||
@ -310,7 +310,7 @@ alias gpd='git push --dry-run'
|
||||
|
||||
function ggf() {
|
||||
local b
|
||||
[[ "$#" != 1 ]] && b="$(git_current_branch)"
|
||||
[[ $# != 1 ]] && b="$(git_current_branch)"
|
||||
git push --force origin "${b:-$1}"
|
||||
}
|
||||
compdef _git ggf=git-push
|
||||
@ -322,7 +322,7 @@ is-at-least 2.30 "$git_version" \
|
||||
|
||||
function ggfl() {
|
||||
local b
|
||||
[[ "$#" != 1 ]] && b="$(git_current_branch)"
|
||||
[[ $# != 1 ]] && b="$(git_current_branch)"
|
||||
git push --force-with-lease origin "${b:-$1}"
|
||||
}
|
||||
compdef _git ggfl=git-push
|
||||
@ -337,11 +337,11 @@ alias gpod='git push origin --delete'
|
||||
alias ggpush='git push origin "$(git_current_branch)"'
|
||||
|
||||
function ggp() {
|
||||
if [[ "$#" != 0 ]] && [[ "$#" != 1 ]]; then
|
||||
if [[ $# != 0 ]] && [[ $# != 1 ]]; then
|
||||
git push origin "${*}"
|
||||
else
|
||||
local b
|
||||
[[ "$#" == 0 ]] && b="$(git_current_branch)"
|
||||
[[ $# == 0 ]] && b="$(git_current_branch)"
|
||||
git push origin "${b:-$1}"
|
||||
fi
|
||||
}
|
||||
|
||||
@ -19,18 +19,18 @@ __gradle-init-cache-dir() {
|
||||
}
|
||||
|
||||
__gradle-set-settings-file() {
|
||||
# In order of precedence: --settings-file=filename, settings.gradle, settings.gradle.kts
|
||||
# In order of precedence: settings.gradle, settings.gradle.kts
|
||||
|
||||
local default_gradle_settings_file="$project_root_dir/settings.gradle"
|
||||
if [[ ! -f $default_gradle_settings_file ]]; then
|
||||
default_gradle_settings_file="$project_root_dir/settings.gradle.kts"
|
||||
fi
|
||||
gradle_settings_file=${${(v)opt_args[(i)-c|--settings-file]}:-$default_gradle_settings_file}
|
||||
gradle_settings_file=$default_gradle_settings_file
|
||||
}
|
||||
|
||||
__gradle-set-build-file() {
|
||||
__gradle-set-settings-file
|
||||
# In order of precedence: --build-file=filename, rootProject.buildFileName, build.gradle, build.gradle.kts
|
||||
# In order of precedence: rootProject.buildFileName, build.gradle, build.gradle.kts
|
||||
|
||||
local default_gradle_build_file_name="build.gradle"
|
||||
if [[ -r $gradle_settings_file ]]; then
|
||||
@ -45,8 +45,7 @@ __gradle-set-build-file() {
|
||||
default_gradle_build_file="$project_root_dir/build.gradle.kts"
|
||||
fi
|
||||
|
||||
# If a build file is specified after '-b' or '--build-file', use this file.
|
||||
gradle_build_file=${${(v)opt_args[(i)-b|--build-file]}:-$default_gradle_build_file}
|
||||
gradle_build_file=$default_gradle_build_file
|
||||
}
|
||||
|
||||
__gradle-set-cache-name() {
|
||||
@ -94,10 +93,11 @@ __gradle-generate-tasks-cache() {
|
||||
# Reuse Gradle Daemon if IDLE but don't start a new one.
|
||||
local gradle_tasks_output
|
||||
if [[ ! -z "$($gradle_cmd --status 2>/dev/null | grep IDLE)" ]]; then
|
||||
gradle_tasks_output="$($gradle_cmd --daemon --no-scan --build-file $gradle_build_file --console=plain -q tasks --all 2>/dev/null)"
|
||||
gradle_tasks_output="$(cd "$project_root_dir" && "$gradle_cmd" --daemon --no-scan --console=plain -q tasks --all 2>/dev/null)"
|
||||
else
|
||||
gradle_tasks_output="$($gradle_cmd --no-daemon --no-scan --build-file $gradle_build_file --console=plain -q tasks --all 2>/dev/null)"
|
||||
gradle_tasks_output="$(cd "$project_root_dir" && "$gradle_cmd" --no-daemon --no-scan --console=plain -q tasks --all 2>/dev/null)"
|
||||
fi
|
||||
|
||||
local gradle_all_tasks="" root_tasks="" subproject_tasks="" output_line
|
||||
local -a match
|
||||
for output_line in ${(f)"$(printf "%s\n" "${gradle_tasks_output[@]}")"}; do
|
||||
@ -199,106 +199,158 @@ __gradle_subcommand() {
|
||||
;;
|
||||
(dependencyInsight)
|
||||
_arguments \
|
||||
'--all-variants[Show all variants of each dependency]' \
|
||||
'--configuration=[Looks for the dependency in given configuration.]:dependency configuration:_gradle_dependency_configurations' \
|
||||
'--dependency=[Shows the details of given dependency.]' \
|
||||
'--configuration=[Looks for the dependency in given configuration.]:dependency configuration:_gradle_dependency_configurations' && ret=0
|
||||
'--single-path[Show at most one path to each dependency]' && ret=0
|
||||
;;
|
||||
(help)
|
||||
_arguments \
|
||||
'--task[The task to show help for.]' && ret=0
|
||||
'--task=[The task to show help for.]' && ret=0
|
||||
;;
|
||||
(init)
|
||||
_arguments \
|
||||
'--dsl=[DSL to be used in generated scripts.]:dsl:(groovy kotlin)' \
|
||||
'--package=[Package for the generated source.]' \
|
||||
'--project-name=[Name of the generated project.]' \
|
||||
'--test-framework=[Test framework to be used.]:test framework:(junit kotlintest scalatest spock testng)' \
|
||||
'--type=[Project type to generate.]:project type:(basic cpp-application cpp-library groovy-application groovy-library java-application java-library kotlin-application kotlin-library pom scala-library)' && ret=0
|
||||
'--comments[Include clarifying comments in files.]' \
|
||||
'--dsl=[Set the build script DSL to be used in generated scripts.]' \
|
||||
'--incubating[Allow the generated build to use new features and APIs.]' \
|
||||
'--insecure-protocol=[How to handle insecure URLs used for Maven Repositories.]' \
|
||||
'--java-version=[Provides java version to use in the project.]' \
|
||||
'--overwrite[Allow existing files in the build directory to be overwritten?]' \
|
||||
'--package=[Set the package for source files.]' \
|
||||
'--project-name=[Set the project name.]' \
|
||||
'--split-project[Split functionality across multiple subprojects?]' \
|
||||
'--test-framework=[Set the test framework to be used.]' \
|
||||
'--type=[Set the type of project to generate.]' \
|
||||
'--use-defaults[Use default values for options not configured explicitly]' && ret=0
|
||||
;;
|
||||
(tasks)
|
||||
_arguments \
|
||||
'--all[List all tasks, including subproject tasks.]' \
|
||||
'--group=[Show tasks only from given task group.]' && ret=0
|
||||
'--all[Show additional tasks and detail.]' \
|
||||
'--group=[Show tasks for a specific group.]' \
|
||||
'--groups=[Show tasks for specific groups (can be used multiple times to specify multiple groups).]' \
|
||||
'--types[Show task class types]' && ret=0
|
||||
;;
|
||||
(test)
|
||||
_arguments -C \
|
||||
'--debug-jvm[Enable debugging for the test process. The process is started suspended and listening on port 5005. Requires the "java" plugin.]' \
|
||||
'--fail-fast[Stops test execution after the first failed test. Requires the "java" plugin.]' \
|
||||
'--tests=[Sets test class or method name to be included, * is supported. Requires the "java" plugin.]' \
|
||||
'--debug-jvm[Enable debugging for the test process. The process is started suspended and listening on port 5005.]' \
|
||||
'--fail-fast[Stops test execution after the first failed test.]' \
|
||||
'--test-dry-run[Simulate test execution.]' \
|
||||
'--tests=[Sets test class or method name to be included (in addition to the test task filters), '*' is supported.]' \
|
||||
'(-)*:: :->task-or-option' && ret=0
|
||||
;;
|
||||
(wrapper)
|
||||
_arguments \
|
||||
'--distribution-type=[Binary-only or all with docs and sources]:*:distribution type:(bin all)' \
|
||||
'--gradle-version=[Set Gradle version for wrapper]' \
|
||||
'--gradle-distribution-sha256-sum=[SHA-256 checksum]' \
|
||||
'--gradle-distribution-url=[Set Gradle distribution URL]' && ret=0
|
||||
'--distribution-type=[The type of the Gradle distribution to be used by the wrapper.]:*:distribution type:(bin all)' \
|
||||
'--gradle-distribution-sha256-sum=[The SHA-256 hash sum of the gradle distribution.]' \
|
||||
'--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.]' \
|
||||
'--network-timeout=[Timeout in ms to use when the wrapper is performing network operations.]' \
|
||||
'--validate-url[Sets task to validate the configured distribution url.]' && ret=0
|
||||
;;
|
||||
(*)
|
||||
_arguments -C \
|
||||
{-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
|
||||
'(--no-build-cache)--build-cache[Enable the Gradle build cache.]' \
|
||||
{-b,--build-file}'[Specifies the build file.]:build script:_files -g \*.gradle' \
|
||||
{-C,--cache}'[Specifies how compiled build scripts should be cached.]:cache policy:(on rebuild)' \
|
||||
{-c,--settings-file}'[Specifies the settings file.]:settings file:_files -g \*.gradle' \
|
||||
'(--configuration-cache)--no-configuration-cache[Disables the configuration cache. Gradle will not reuse the build configuration from previous builds.]' \
|
||||
'--configuration-cache-problems=[Configures how the configuration cache handles problems]:problem handling:(fail warn)' \
|
||||
'(--no-configure-on-demand)--configure-on-demand[Only relevant projects are configured in this build run.]' \
|
||||
'(--no-configuration-cache)--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
||||
'--console=[Specifies which type of console output to generate.]:console output type:(plain auto rich verbose)' \
|
||||
'--continue[Continues task execution after a task failure.]' \
|
||||
'-Dorg.gradle.cache.reserved.mb=[Reserve Gradle Daemon memory for operations.]' \
|
||||
'-Dorg.gradle.caching=[Set true to enable Gradle build cache.]:enable build cache:(true false)' \
|
||||
'-Dorg.gradle.console=[Set type of console output to generate.]:console output type:(plain auto rich verbose)' \
|
||||
'-Dorg.gradle.daemon.debug=[Set true to debug Gradle Daemon.]:enable daemon debug:(true false)' \
|
||||
'-Dorg.gradle.daemon.idletimeout=[Kill Gradle Daemon after # idle millis.]' \
|
||||
'-Dorg.gradle.debug=[Set true to debug Gradle Client.]' \
|
||||
'-Dorg.gradle.jvmargs=[Set JVM arguments.]' \
|
||||
'-Dorg.gradle.java.home=[Set JDK home dir.]' \
|
||||
'-Dorg.gradle.logging.level=[Set default Gradle log level.]:log level:(quiet warn lifecycle info debug)' \
|
||||
'-Dorg.gradle.parallel=[Set true to enable parallel project builds.]:enable parallel build:(true false)' \
|
||||
'-Dorg.gradle.priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \
|
||||
'-Dorg.gradle.unsafe.watch-fs=[Set true to enable Gradle file watcher.]:enable watcher:(true false)' \
|
||||
'-Dorg.gradle.warning.mode=[Set types of warnings to log.]:warning level:(all summary none)' \
|
||||
'-Dorg.gradle.workers.max=[Set the number of workers Gradle is allowed to use.]' \
|
||||
'(-i --info -w --warn -q --quiet)'{-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
|
||||
'(--no-daemon)--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
|
||||
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
||||
{-g,--gradle-user-home}'[Specifies the gradle user home directory.]:file:_directories' \
|
||||
\*--include-build'[Includes the specified build in the composite.]:file:_directories' \
|
||||
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle' \
|
||||
'(-d --debug -w --warn -q --quiet)'{-i,--info}'[Set log level to info.]' \
|
||||
'--max-workers[Set the maximum number of concurrent workers that Gradle may use.]:number workers' \
|
||||
{-m,--dry-run}'[Runs the builds with all task actions disabled.]' \
|
||||
'--no-color[Do not use color in the console output. (Removed in Gradle 3.0)]' \
|
||||
'(--build-cache)--no-build-cache[Do not use the Gradle build cache.]' \
|
||||
'(--configure-on-demand)--no-configure-on-demand[Disables configuration on demand.]' \
|
||||
'(--daemon)--no-daemon[Do not use the Gradle daemon to run the build.]' \
|
||||
'(--parallel)--no-parallel[Disables parallel execution to build projects.]' \
|
||||
'(--scan)--no-scan[Do not create a build scan.]' \
|
||||
'--offline[The build should operate without accessing network resources.]' \
|
||||
\*{-P+,--project-prop}'[Set project property for the build script (e.g. -Pmyprop=myvalue).]:project property (prop=val):' \
|
||||
{-p,--project-dir}'[Specifies the start directory for Gradle.]:start directory:_directories' \
|
||||
'(--no-parallel)--parallel[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
|
||||
'--profile[Profiles build execution time and generates a report in the <build_dir>/reports/profile directory.]' \
|
||||
'--priority[Set priority for Gradle worker processes.]:priority:(low normal)' \
|
||||
'--project-cache-dir[Specifies the project-specific cache directory.]:cache directory:_directories' \
|
||||
'(-d --debug -w --warn -i --info)'{-q,--quiet}'[Log errors only.]' \
|
||||
'--recompile-scripts[Force build script recompiling.]' \
|
||||
'--refresh[Refresh the state of resources of the type(s) specified.]:refresh policy:(dependencies)' \
|
||||
'--refresh-dependencies[Refresh the state of dependencies.]' \
|
||||
'--rerun-tasks[Ignore previously cached task results.]' \
|
||||
'(--no-scan)--scan[Create a build scan.]' \
|
||||
'(-S --full-stacktrace)'{-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
|
||||
'(-s --stacktrace)'{-S,--full-stacktrace}'[Print out the full (very verbose) stacktrace for all exceptions.]' \
|
||||
'--system-prop[system property (prop=val)]' \
|
||||
'-Dgradle.user.home=[Specifies the Gradle user home directory. Defaults to ~/.gradle]:gradle.user.home:_directories' \
|
||||
'-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.configuration-cache.entries-per-key=[]' \
|
||||
'-Dorg.gradle.configuration-cache.fine-grained-property-tracking=[]' \
|
||||
'-Dorg.gradle.configuration-cache.heap-dump-dir=[]:org.gradle.configuration cache.heap dump dir:_directories' \
|
||||
'-Dorg.gradle.configuration-cache.inputs.unsafe.ignore.file-system-checks=[]' \
|
||||
'-Dorg.gradle.configuration-cache.inputs.unsafe.ignore.in-serialization=[]' \
|
||||
'-Dorg.gradle.configuration-cache.integrity-check=[]' \
|
||||
'-Dorg.gradle.configuration-cache.max-problems=[]' \
|
||||
'-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.read-only=[]' \
|
||||
'-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.configureondemand=[Configure 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.continue=[Continue task execution after a task failure.]' \
|
||||
'-Dorg.gradle.continuous.quietperiod=[]' \
|
||||
'-Dorg.gradle.daemon.healthcheckinterval=[]' \
|
||||
'-Dorg.gradle.daemon.idletimeout=[]' \
|
||||
'-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.debug.host=[]' \
|
||||
'-Dorg.gradle.debug.port=[]' \
|
||||
'-Dorg.gradle.debug.server=[]' \
|
||||
'-Dorg.gradle.debug.suspend=[]' \
|
||||
'-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.java.home=[]:org.gradle.java.home:_directories' \
|
||||
'-Dorg.gradle.java.installations.auto-detect=[]' \
|
||||
'-Dorg.gradle.java.installations.auto-download=[]' \
|
||||
'-Dorg.gradle.java.installations.fromEnv=[]' \
|
||||
'-Dorg.gradle.java.installations.idea-jdks-directory=[]:org.gradle.java.installations.idea jdks directory:_directories' \
|
||||
'-Dorg.gradle.java.installations.paths=[]:org.gradle.java.installations.paths:_directories' \
|
||||
'-Dorg.gradle.jvmargs=[]' \
|
||||
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug)' \
|
||||
'-Dorg.gradle.logging.stacktrace=[]' \
|
||||
'-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.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.problems.report=[(Experimental) enables 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.unsafe.isolated-projects=[]' \
|
||||
'-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.warning.mode=[Specifies which mode of warnings to generate. Values are 'all', 'fail', 'summary'(default) or 'none']' \
|
||||
'-Dorg.gradle.welcome=[]:org.gradle.welcome:(once never)' \
|
||||
'-Dorg.gradle.workers.max=[Configure the 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-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)' \
|
||||
(--no-configure-on-demand)'--configure-on-demand[Configure 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)' \
|
||||
(--no-continue)'--continue[Continue 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.]' \
|
||||
{-u,--no-search-upward}"[Don't search in parent folders for a settings.gradle file.]" \
|
||||
'(--write-locks)--update-locks[Perform a partial update of the dependency lock.]' \
|
||||
'(-d --debug -q --quiet -i --info)'{-w,--warn}'[Log warnings and errors only.]' \
|
||||
'--warning-mode=[Set types of warnings to log.]:warning mode:(all summary none)' \
|
||||
'(--no-watch-fs)--watch-fs[Gradle watches filesystem for incremental builds.]' \
|
||||
'(--update-locks)--write-locks[Persists dependency resolution for locked configurations.]' \
|
||||
{-x,--exclude-task}'[Specify a task to be excluded from execution.]' && ret=0
|
||||
(--no-daemon)'--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
|
||||
(--quiet,-q,--warn,-w,--info,-i){-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
|
||||
{-F,--dependency-verification}'[Configures the dependency verification mode. Values are 'strict', 'lenient' or 'off'.]:dependency verification:(strict lenient off)' \
|
||||
{-m,--dry-run}'[Run the builds with all task actions disabled.]' \
|
||||
\*{-x,--exclude-task}'[Specify a task to be excluded from execution.]' \
|
||||
'--export-keys[Exports the public keys used for dependency verification.]' \
|
||||
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
||||
(--stacktrace,-s){-S,--full-stacktrace}'[Print out 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' \
|
||||
\*'--include-build[Include the specified build in the composite.]:include build:_directories' \
|
||||
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Set log level to info.]' \
|
||||
\*{-I,--init-script}'[Specify an initialization script.]:init script:_files -g \*.gradle(|.kts)' \
|
||||
'--max-workers[Configure the number of concurrent workers Gradle is allowed to use.]' \
|
||||
(--build-cache)'--no-build-cache[Disables the Gradle build 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)]' \
|
||||
(--continue)'--no-continue[Stop 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.]' \
|
||||
(--parallel)'--no-parallel[Disables parallel execution to build projects.]' \
|
||||
(--problems-report)'--no-problems-report[(Experimental) disables HTML problems report]' \
|
||||
{-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
|
||||
(--scan)'--no-scan[Disables the creation of a Build Scan.]' \
|
||||
(--watch-fs)'--no-watch-fs[Disables watching the file system.]' \
|
||||
'--offline[Execute 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.]' \
|
||||
'--priority[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Values are 'normal' (default) or 'low']' \
|
||||
(--no-problems-report)'--problems-report[(Experimental) enables HTML problems report]' \
|
||||
'--profile[Profile build execution time and 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' \
|
||||
{-p,--project-dir}'[Specifies the start directory for Gradle. Defaults to current directory.]:project dir:_directories' \
|
||||
'--property-upgrade-report[(Experimental) Runs build with experimental property upgrade report.]' \
|
||||
(--warn,-w,--info,-i,--debug,-d){-q,--quiet}'[Log errors only.]' \
|
||||
{-U,--refresh-dependencies}'[Refresh the state of dependencies.]' \
|
||||
'--refresh-keys[Refresh the public keys used for dependency verification.]' \
|
||||
'--rerun[Causes the task to be re-run even if up-to-date.]' \
|
||||
'--rerun-tasks[Ignore previously cached task results.]' \
|
||||
(--no-scan)'--scan[Generate a Build Scan (powered by Develocity).]' \
|
||||
{-V,--show-version}'[Print version info and continue.]' \
|
||||
(--full-stacktrace,-S){-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
|
||||
'--task-graph[(Experimental) Print task graph instead of executing tasks.]' \
|
||||
\*'--update-locks[Perform a partial update of the dependency lock, letting passed in module notations change version. (incubating)]' \
|
||||
(--quiet,-q,--info,-i,--debug,-d){-w,--warn}'[Set 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)' \
|
||||
(--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.]' \
|
||||
'--write-locks[Persists dependency resolution for locked configurations, ignoring existing locking information if it exists]' \
|
||||
{-M,--write-verification-metadata}'[Generates checksums for dependencies used in the project (comma-separated list)]' && ret=0
|
||||
;;
|
||||
esac
|
||||
|
||||
@ -324,76 +376,113 @@ _gradle() {
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C \
|
||||
'(-)'{-\?,-h,--help}'[Shows a help message.]' \
|
||||
{-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
|
||||
'(--no-build-cache)--build-cache[Enable the Gradle build cache.]' \
|
||||
{-b,--build-file}'[Specifies the build file.]:build script:_files -g \*.gradle' \
|
||||
{-C,--cache}'[Specifies how compiled build scripts should be cached.]:cache policy:(on rebuild)' \
|
||||
{-c,--settings-file}'[Specifies the settings file.]:settings file:_files -g \*.gradle:->argument-expected' \
|
||||
'(--no-configuration-cache)--configuration-cache[Enables the configuration cache. Gradle will try to reuse the build configuration from previous builds.]' \
|
||||
'(--configuration-cache)--no-configuration-cache[Disables the configuration cache. Gradle will not reuse the build configuration from previous builds.]' \
|
||||
'--configuration-cache-problems=[Configures how the configuration cache handles problems]:problem handling:(fail warn)' \
|
||||
'(--no-configure-on-demand)--configure-on-demand[Only relevant projects are configured in this build run.]' \
|
||||
'--console=[Specifies which type of console output to generate.]:console output type:(plain auto rich verbose)' \
|
||||
'--continue[Continues task execution after a task failure.]' \
|
||||
'-Dorg.gradle.cache.reserved.mb=[Reserve Gradle Daemon memory for operations.]' \
|
||||
'-Dorg.gradle.caching=[Set true to enable Gradle build cache.]' \
|
||||
'-Dorg.gradle.console=[Set type of console output to generate.]:console output type:(plain auto rich verbose)' \
|
||||
'-Dorg.gradle.daemon.debug=[Set true to debug Gradle Daemon.]' \
|
||||
'-Dorg.gradle.daemon.idletimeout=[Kill Gradle Daemon after # idle millis.]' \
|
||||
'-Dorg.gradle.debug=[Set true to debug Gradle Client.]' \
|
||||
'-Dorg.gradle.jvmargs=[Set JVM arguments.]' \
|
||||
'-Dorg.gradle.java.home=[Set JDK home dir.]' \
|
||||
'-Dorg.gradle.logging.level=[Set default Gradle log level.]:log level:(quiet warn lifecycle info debug)' \
|
||||
'-Dorg.gradle.parallel=[Set true to enable parallel project builds.]:(true false)' \
|
||||
'-Dorg.gradle.priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \
|
||||
'-Dorg.gradle.unsafe.watch-fs=[Set true to enable Gradle file watcher.]:enable watcher:(true false)' \
|
||||
'-Dorg.gradle.warning.mode=[Set types of warnings to log.]:warning level:(all summary none)' \
|
||||
'-Dorg.gradle.workers.max=[Set the number of workers Gradle is allowed to use.]' \
|
||||
'(-i --info -w --warn -q --quiet)'{-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
|
||||
'(--no-daemon)--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
|
||||
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
||||
{-g,--gradle-user-home}'[Specifies the gradle user home directory.]:home directory:_directories:->argument-expected' \
|
||||
'(-)--gui[Launches the Gradle GUI. (Removed in Gradle 4.0)]' \
|
||||
\*--include-build'[Includes the specified build in the composite.]:file:_directories:->argument-expected' \
|
||||
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle:->argument-expected' \
|
||||
'(-d --debug -w --warn -q --quiet)'{-i,--info}'[Set log level to info.]' \
|
||||
'--max-workers[Set the maximum number of concurrent workers that Gradle may use.]:number workers:->argument-expected' \
|
||||
{-m,--dry-run}'[Runs the builds with all task actions disabled.]' \
|
||||
'--no-color[Do not use color in the console output. (Removed in Gradle 3.0)]' \
|
||||
'(--build-cache)--no-build-cache[Do not use the Gradle build cache.]' \
|
||||
'(--configure-on-demand)--no-configure-on-demand[Disables configuration on demand.]' \
|
||||
'(--daemon)--no-daemon[Do not use the Gradle daemon to run the build.]' \
|
||||
'(--parallel)--no-parallel[Disables parallel execution to build projects.]' \
|
||||
'(--scan)--no-scan[Do not create a build scan.]' \
|
||||
'--offline[The build should operate without accessing network resources.]' \
|
||||
\*{-P+,--project-prop}'[Set project property for the build script (e.g. -Pmyprop=myvalue).]:project property (prop=val):->argument-expected' \
|
||||
{-p,--project-dir}'[Specifies the start directory for Gradle.]:start directory:_directories:->argument-expected' \
|
||||
'(--no-parallel)--parallel[Build projects in parallel. Gradle will attempt to determine the optimal number of executor threads to use.]' \
|
||||
'--priority=[Set priority for Gradle worker processes.]:priority:(low normal)' \
|
||||
'--profile[Profiles build execution time and generates a report in the <build_dir>/reports/profile directory.]' \
|
||||
'--project-cache-dir=[Specifies the project-specific cache directory.]:cache directory:_directories:->argument-expected' \
|
||||
'(-d --debug -w --warn -i --info)'{-q,--quiet}'[Log errors only.]' \
|
||||
'--recompile-scripts[Force build script recompiling.]' \
|
||||
'--refresh[Refresh the state of resources of the type(s) specified.]:refresh policy:(dependencies)' \
|
||||
'--refresh-dependencies[Refresh the state of dependencies.]' \
|
||||
'--rerun-tasks[Ignore previously cached task results.]' \
|
||||
'(--no-scan)--scan[Create a build scan.]' \
|
||||
'(-S --full-stacktrace)'{-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
|
||||
'(-s --stacktrace)'{-S,--full-stacktrace}'[Print out the full (very verbose) stacktrace for all exceptions.]' \
|
||||
'(-)--status[Shows status of running and recently stopped Gradle Daemons.]' \
|
||||
'(-)--stop[Stops all Gradle daemons.]' \
|
||||
'--system-prop[system property (prop=val)]' \
|
||||
'-Dgradle.user.home=[Specifies the Gradle user home directory. Defaults to ~/.gradle]:gradle.user.home:_directories:->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.configuration-cache.entries-per-key=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.fine-grained-property-tracking=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.heap-dump-dir=[]:org.gradle.configuration cache.heap dump dir:_directories:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.inputs.unsafe.ignore.file-system-checks=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.inputs.unsafe.ignore.in-serialization=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.integrity-check=[]:->argument-expected' \
|
||||
'-Dorg.gradle.configuration-cache.max-problems=[]:->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.read-only=[]:->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.configureondemand=[Configure 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.continue=[Continue task execution after a task failure.]:->argument-expected' \
|
||||
'-Dorg.gradle.continuous.quietperiod=[]:->argument-expected' \
|
||||
'-Dorg.gradle.daemon.healthcheckinterval=[]:->argument-expected' \
|
||||
'-Dorg.gradle.daemon.idletimeout=[]:->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.debug.host=[]:->argument-expected' \
|
||||
'-Dorg.gradle.debug.port=[]:->argument-expected' \
|
||||
'-Dorg.gradle.debug.server=[]:->argument-expected' \
|
||||
'-Dorg.gradle.debug.suspend=[]:->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.java.home=[]:org.gradle.java.home:_directories:->argument-expected' \
|
||||
'-Dorg.gradle.java.installations.auto-detect=[]:->argument-expected' \
|
||||
'-Dorg.gradle.java.installations.auto-download=[]:->argument-expected' \
|
||||
'-Dorg.gradle.java.installations.fromEnv=[]:->argument-expected' \
|
||||
'-Dorg.gradle.java.installations.idea-jdks-directory=[]:org.gradle.java.installations.idea jdks directory:_directories:->argument-expected' \
|
||||
'-Dorg.gradle.java.installations.paths=[]:org.gradle.java.installations.paths:_directories:->argument-expected' \
|
||||
'-Dorg.gradle.jvmargs=[]:->argument-expected' \
|
||||
'-Dorg.gradle.logging.level=[]:org.gradle.logging.level:(quiet warn info debug):->argument-expected' \
|
||||
'-Dorg.gradle.logging.stacktrace=[]:->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.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.problems.report=[(Experimental) enables 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.unsafe.isolated-projects=[]:->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.warning.mode=[Specifies which mode of warnings to generate. Values are 'all', 'fail', 'summary'(default) or 'none']:->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' \
|
||||
(--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.]' \
|
||||
'--configuration-cache-problems[Configures how the configuration cache handles problems (fail or warn). Defaults to fail.]: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)]' \
|
||||
'--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' \
|
||||
(--no-continue)'--continue[Continue 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.]' \
|
||||
{-u,--no-search-upward}"[Don't search in parent folders for a settings.gradle file.]" \
|
||||
'(--write-locks)--update-locks[Perform a partial update of the dependency lock.]' \
|
||||
'(-)'{-v,--version}'[Print version info.]' \
|
||||
'(-d --debug -q --quiet -i --info)'{-w,--warn}'[Log warnings and errors only.]' \
|
||||
'--warning-mode=[Set types of warnings to log.]:warning mode:(all summary none)' \
|
||||
'(--update-locks)--write-locks[Persists dependency resolution for locked configurations.]' \
|
||||
'(--no-watch-fs)--watch-fs[Gradle watches filesystem for incremental builds.]' \
|
||||
{-x,--exclude-task}'[Specify a task to be excluded from execution.]' \
|
||||
'(-)*:: :->task-or-option' && ret=0
|
||||
(--no-daemon)'--daemon[Uses the Gradle daemon to run the build. Starts the daemon if not running.]' \
|
||||
(--quiet,-q,--warn,-w,--info,-i){-d,--debug}'[Log in debug mode (includes normal stacktrace).]' \
|
||||
{-F,--dependency-verification}'[Configures the dependency verification mode. Values are 'strict', 'lenient' or 'off'.]:dependency verification:(strict lenient off):->argument-expected' \
|
||||
{-m,--dry-run}'[Run the builds with all task actions disabled.]' \
|
||||
\*{-x,--exclude-task}'[Specify a task to be excluded from execution.]' \
|
||||
'--export-keys[Exports the public keys used for dependency verification.]' \
|
||||
'--foreground[Starts the Gradle daemon in the foreground.]' \
|
||||
(--stacktrace,-s){-S,--full-stacktrace}'[Print out 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' \
|
||||
{-h,--help}'[Shows a help message.]' \
|
||||
\*'--include-build[Include the specified build in the composite.]:include build:_directories:->argument-expected' \
|
||||
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Set log level to info.]' \
|
||||
\*{-I,--init-script}'[Specify 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' \
|
||||
(--build-cache)'--no-build-cache[Disables the Gradle build 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)]' \
|
||||
(--continue)'--no-continue[Stop 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.]' \
|
||||
(--parallel)'--no-parallel[Disables parallel execution to build projects.]' \
|
||||
(--problems-report)'--no-problems-report[(Experimental) disables HTML problems report]' \
|
||||
{-a,--no-rebuild}'[Do not rebuild project dependencies.]' \
|
||||
(--scan)'--no-scan[Disables the creation of a Build Scan.]' \
|
||||
(--watch-fs)'--no-watch-fs[Disables watching the file system.]' \
|
||||
'--offline[Execute 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.]' \
|
||||
'--priority[Specifies the scheduling priority for the Gradle daemon and all processes launched by it. Values are 'normal' (default) or 'low']:->argument-expected' \
|
||||
(--no-problems-report)'--problems-report[(Experimental) enables HTML problems report]' \
|
||||
'--profile[Profile build execution time and 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' \
|
||||
{-p,--project-dir}'[Specifies the start directory for Gradle. Defaults to current directory.]:project dir:_directories:->argument-expected' \
|
||||
'--property-upgrade-report[(Experimental) Runs build with experimental property upgrade report.]' \
|
||||
(--warn,-w,--info,-i,--debug,-d){-q,--quiet}'[Log errors only.]' \
|
||||
{-U,--refresh-dependencies}'[Refresh the state of dependencies.]' \
|
||||
'--refresh-keys[Refresh the public keys used for dependency verification.]' \
|
||||
'--rerun[Causes the task to be re-run even if up-to-date.]' \
|
||||
'--rerun-tasks[Ignore previously cached task results.]' \
|
||||
(--no-scan)'--scan[Generate a Build Scan (powered by Develocity).]' \
|
||||
{-V,--show-version}'[Print version info and continue.]' \
|
||||
(--full-stacktrace,-S){-s,--stacktrace}'[Print out the stacktrace for all exceptions.]' \
|
||||
'--status[Shows status of running and recently stopped Gradle daemon(s).]' \
|
||||
'--stop[Stops the Gradle daemon if it is running.]' \
|
||||
'--task-graph[(Experimental) Print task graph instead of executing tasks.]' \
|
||||
\*'--update-locks[Perform a partial update of the dependency lock, letting passed in module notations change version. (incubating)]' \
|
||||
{-v,--version}'[Print version info and exit.]' \
|
||||
(--quiet,-q,--info,-i,--debug,-d){-w,--warn}'[Set 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' \
|
||||
(--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.]' \
|
||||
'--write-locks[Persists dependency resolution for locked configurations, ignoring existing locking information if it exists]' \
|
||||
{-M,--write-verification-metadata}'[Generates checksums for dependencies used in the project (comma-separated list)]:->argument-expected' \
|
||||
'(-)*:: :->task-or-option' && ret=0
|
||||
|
||||
if [[ $words[CURRENT] != -* && $state != "argument-expected" ]]; then
|
||||
__gradle_tasks && ret=0
|
||||
|
||||
@ -12,6 +12,16 @@ plugins=(... jj)
|
||||
|
||||
| Alias | Command |
|
||||
| ------ | ----------------------------- |
|
||||
| jjb | `jj bookmark` |
|
||||
| jjbc | `jj bookmark create` |
|
||||
| jjbd | `jj bookmark delete` |
|
||||
| jjbf | `jj bookmark forget` |
|
||||
| jjbl | `jj bookmark list` |
|
||||
| jjbm | `jj bookmark move` |
|
||||
| jjbr | `jj bookmark rename` |
|
||||
| jjbs | `jj bookmark set` |
|
||||
| jjbt | `jj bookmark track` |
|
||||
| jjbu | `jj bookmark untrack` |
|
||||
| jjc | `jj commit` |
|
||||
| jjcmsg | `jj commit --message` |
|
||||
| jjd | `jj diff` |
|
||||
@ -22,14 +32,20 @@ plugins=(... jj)
|
||||
| jjgf | `jj git fetch` |
|
||||
| jjgfa | `jj git fetch --all-remotes` |
|
||||
| jjgp | `jj git push` |
|
||||
| jjgpa | `jj git push --all` |
|
||||
| jjgpd | `jj git push --deleted` |
|
||||
| jjgpt | `jj git push --tracked` |
|
||||
| jjl | `jj log` |
|
||||
| jjla | `jj log -r "all()"` |
|
||||
| jjn | `jj new` |
|
||||
| jjnt | `jj new "trunk()"` |
|
||||
| jjrb | `jj rebase` |
|
||||
| jjrbm | `jj rebase -d "trunk()"` |
|
||||
| jjrs | `jj restore` |
|
||||
| jjrt | `cd "$(jj root \|\| echo .)"` |
|
||||
| jjsp | `jj split` |
|
||||
| jjsq | `jj squash` |
|
||||
| jjst | `jj status` |
|
||||
|
||||
## Prompt usage
|
||||
|
||||
@ -88,3 +104,4 @@ that.
|
||||
## Contributors
|
||||
|
||||
- [nasso](https://github.com/nasso) - Plugin Author
|
||||
- [imp](https://github.com/imp) - Occasional Alias Contributor
|
||||
|
||||
@ -34,6 +34,16 @@ function jj_prompt_template() {
|
||||
}
|
||||
|
||||
# Aliases (sorted alphabetically)
|
||||
alias jjb='jj bookmark'
|
||||
alias jjbc='jj bookmark create'
|
||||
alias jjbd='jj bookmark delete'
|
||||
alias jjbf='jj bookmark forget'
|
||||
alias jjbl='jj bookmark list'
|
||||
alias jjbm='jj bookmark move'
|
||||
alias jjbr='jj bookmark rename'
|
||||
alias jjbs='jj bookmark set'
|
||||
alias jjbt='jj bookmark track'
|
||||
alias jjbu='jj bookmark untrack'
|
||||
alias jjc='jj commit'
|
||||
alias jjcmsg='jj commit --message'
|
||||
alias jjd='jj diff'
|
||||
@ -44,11 +54,17 @@ alias jjgcl='jj git clone'
|
||||
alias jjgf='jj git fetch'
|
||||
alias jjgfa='jj git fetch --all-remotes'
|
||||
alias jjgp='jj git push'
|
||||
alias jjgpa='jj git push --all'
|
||||
alias jjgpd='jj git push --deleted'
|
||||
alias jjgpt='jj git push --tracked'
|
||||
alias jjl='jj log'
|
||||
alias jjla='jj log -r "all()"'
|
||||
alias jjn='jj new'
|
||||
alias jjnt='jj new "trunk()"'
|
||||
alias jjrb='jj rebase'
|
||||
alias jjrbm='jj rebase -d "trunk()"'
|
||||
alias jjrs='jj restore'
|
||||
alias jjrt='cd "$(jj root || echo .)"'
|
||||
alias jjsp='jj split'
|
||||
alias jjsq='jj squash'
|
||||
alias jjst='jj status'
|
||||
|
||||
@ -20,10 +20,11 @@ function {
|
||||
zstyle -a :omz:plugins:keychain options options
|
||||
|
||||
# Check keychain version to decide whether to use --agents
|
||||
local version_string=$(keychain --version 2>&1 | head -n 2 | tail -n 1 | cut -d ' ' -f 4)
|
||||
local version_string=$(keychain --version 2>&1)
|
||||
# start keychain, only use --agents for versions below 2.9.0
|
||||
autoload -Uz is-at-least
|
||||
if is-at-least 2.9 "$version_string"; then
|
||||
if [[ "$version_string" =~ 'keychain ([0-9]+\.[0-9]+)' ]] && \
|
||||
is-at-least 2.9 "$match[1]"; then
|
||||
keychain ${^options:-} ${^identities} --host $SHORT_HOST
|
||||
else
|
||||
keychain ${^options:-} --agents ${agents:-gpg} ${^identities} --host $SHORT_HOST
|
||||
|
||||
@ -27,7 +27,7 @@ plugins=(... kubectl)
|
||||
| kdel | `kubectl delete` | Delete resources by filenames, stdin, resources and names, or by resources and label selector |
|
||||
| kdelf | `kubectl delete -f` | Delete a pod using the type and name specified in -f argument |
|
||||
| kge | `kubectl get events --sort-by=".lastTimestamp"` | Get events (sorted by timestamp) |
|
||||
| kgew | `kubectl get events --watch --sort-by=".lastTimestamp"` | Get events and watch as they occur (sorted by timestamp) |
|
||||
| kgew | `kubectl get events --watch --sort-by=".lastTimestamp"` | Get events and watch as they occur (sorted by timestamp) |
|
||||
| | | **Pod management** |
|
||||
| kgp | `kubectl get pods` | List all pods in ps output format |
|
||||
| kgpl | `kgp -l` | Get pods by label. Example: `kgpl "app=myapp" -n myns` |
|
||||
@ -74,6 +74,7 @@ plugins=(... kubectl)
|
||||
| kdeld | `kubectl delete deployment` | Delete the deployment |
|
||||
| ksd | `kubectl scale deployment` | Scale a deployment |
|
||||
| krsd | `kubectl rollout status deployment` | Check the rollout status of a deployment |
|
||||
| krrd | `kubectl rollout restart deployment` | Rollout restart a deployment |
|
||||
| kres | `kubectl set env $@ REFRESHED_AT=...` | Recreate all pods in deployment with zero-downtime |
|
||||
| | | **Rollout management** |
|
||||
| kgrs | `kubectl get replicaset` | List all ReplicaSets `rs` created by the deployment |
|
||||
@ -112,6 +113,7 @@ plugins=(... kubectl)
|
||||
| kdelss | `kubectl delete statefulset` | Delete the statefulset |
|
||||
| ksss | `kubectl scale statefulset` | Scale a statefulset |
|
||||
| krsss | `kubectl rollout status statefulset` | Check the rollout status of a deployment |
|
||||
| krrss | `kubectl rollout restart statefulset` | Rollout restart a statefulset |
|
||||
| | | **Service Accounts management** |
|
||||
| kdsa | `kubectl describe sa` | Describe a service account in details |
|
||||
| kdelsa | `kubectl delete sa` | Delete the service account |
|
||||
|
||||
@ -98,6 +98,7 @@ alias kdd='kubectl describe deployment'
|
||||
alias kdeld='kubectl delete deployment'
|
||||
alias ksd='kubectl scale deployment'
|
||||
alias krsd='kubectl rollout status deployment'
|
||||
alias krrd='kubectl rollout restart deployment'
|
||||
|
||||
function kres(){
|
||||
kubectl set env $@ REFRESHED_AT=$(date +%Y%m%d%H%M%S)
|
||||
@ -120,6 +121,7 @@ alias kdss='kubectl describe statefulset'
|
||||
alias kdelss='kubectl delete statefulset'
|
||||
alias ksss='kubectl scale statefulset'
|
||||
alias krsss='kubectl rollout status statefulset'
|
||||
alias krrss='kubectl rollout restart statefulset'
|
||||
|
||||
# Port forwarding
|
||||
alias kpf="kubectl port-forward"
|
||||
|
||||
52
plugins/nestjs/README.md
Normal file
52
plugins/nestjs/README.md
Normal file
@ -0,0 +1,52 @@
|
||||
# NestJS Plugin for Oh My Zsh
|
||||
|
||||
This plugin provides aliases for common [NestJS CLI](https://docs.nestjs.com/cli/overview) commands.
|
||||
|
||||
## Requirements
|
||||
|
||||
- [NestJS CLI](https://docs.nestjs.com/cli/overview#installation) installed globally:
|
||||
`npm install -g @nestjs/cli`
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
| :------ | :--------------------------- | :------------------------------------------ |
|
||||
| `nnew` | `nest new` | Create a new NestJS project |
|
||||
| `nb` | `nest build` | Build the NestJS application |
|
||||
| `ns` | `nest start` | Start the application |
|
||||
| `nsw` | `nest start --watch` | Start the application in watch mode |
|
||||
| `nsd` | `nest start --dev` | Start the application in dev mode |
|
||||
| `nsdbg` | `nest start --debug --watch` | Start the application in debug & watch mode |
|
||||
| `ng` | `nest generate` | Generate a NestJS element |
|
||||
| `ngm` | `nest generate module` | Generate a module |
|
||||
| `ngc` | `nest generate controller` | Generate a controller |
|
||||
| `ngs` | `nest generate service` | Generate a service |
|
||||
| `ngg` | `nest generate guard` | Generate a guard |
|
||||
| `ngp` | `nest generate pipe` | Generate a pipe |
|
||||
| `ngf` | `nest generate filter` | Generate a filter |
|
||||
| `ngr` | `nest generate resolver` | Generate a GraphQL resolver |
|
||||
| `ngcl` | `nest generate class` | Generate a class |
|
||||
| `ngi` | `nest generate interface` | Generate an interface |
|
||||
| `ngit` | `nest generate interceptor` | Generate an interceptor |
|
||||
| `ngmi` | `nest generate middleware` | Generate a middleware |
|
||||
| `ngd` | `nest generate decorator` | Generate a custom decorator |
|
||||
| `ngres` | `nest generate resource` | Generate a CRUD resource |
|
||||
| `nglib` | `nest generate library` | Generate a new library |
|
||||
| `ngsub` | `nest generate sub-app` | Generate a new sub-application (monorepo) |
|
||||
| `na` | `nest add` | Add a library to the project |
|
||||
| `ni` | `nest info` | Display NestJS project information |
|
||||
| `nu` | `nest update` | Update NestJS dependencies |
|
||||
|
||||
## Usage
|
||||
|
||||
1. Add `nestjs` to the `plugins` array in your `~/.zshrc` file:
|
||||
|
||||
```zsh
|
||||
plugins=(... nestjs)
|
||||
```
|
||||
|
||||
2. Restart your terminal or source your `~/.zshrc` file:
|
||||
|
||||
```zsh
|
||||
source ~/.zshrc
|
||||
```
|
||||
41
plugins/nestjs/nestjs.plugin.zsh
Normal file
41
plugins/nestjs/nestjs.plugin.zsh
Normal file
@ -0,0 +1,41 @@
|
||||
# Oh My Zsh plugin for NestJS CLI
|
||||
|
||||
# Check if nest command exists
|
||||
if ! command -v nest &>/dev/null; then
|
||||
return
|
||||
fi
|
||||
|
||||
# Project creation
|
||||
alias nnew='nest new'
|
||||
|
||||
# Basic development
|
||||
alias nb='nest build'
|
||||
alias ns='nest start'
|
||||
alias nsw='nest start --watch'
|
||||
alias nsd='nest start --dev' # Alias for start --watch
|
||||
alias nsdbg='nest start --debug --watch'
|
||||
|
||||
# Code generation (short aliases)
|
||||
alias ng='nest generate'
|
||||
alias ngm='nest generate module'
|
||||
alias ngc='nest generate controller'
|
||||
alias ngs='nest generate service'
|
||||
alias ngg='nest generate guard'
|
||||
alias ngp='nest generate pipe'
|
||||
alias ngf='nest generate filter'
|
||||
alias ngr='nest generate resolver'
|
||||
alias ngcl='nest generate class'
|
||||
alias ngi='nest generate interface'
|
||||
alias ngit='nest generate interceptor'
|
||||
alias ngmi='nest generate middleware'
|
||||
alias ngd='nest generate decorator'
|
||||
alias ngres='nest generate resource'
|
||||
alias nglib='nest generate library'
|
||||
alias ngsub='nest generate sub-app'
|
||||
|
||||
# Other commands
|
||||
alias na='nest add'
|
||||
alias ni='nest info'
|
||||
alias nu='nest update'
|
||||
|
||||
# You can add more aliases or functions here as needed.
|
||||
41
plugins/pulumi/README.md
Normal file
41
plugins/pulumi/README.md
Normal file
@ -0,0 +1,41 @@
|
||||
# Pulumi
|
||||
|
||||
This is an **Oh My Zsh plugin** for the [**Pulumi CLI**](https://www.pulumi.com/docs/iac/cli/),
|
||||
an Infrastructure as Code (IaC) tool for building, deploying and managing cloud infrastucture.
|
||||
|
||||
This plugin provides:
|
||||
|
||||
- 🚀 Short, intuitive aliases for common Pulumi commands
|
||||
- 🎯 Auto-completion support for Pulumi
|
||||
|
||||
To use it, add `pulumi` to the plugins array in your `.zshrc` file:
|
||||
|
||||
```zsh
|
||||
plugins=(... pulumi)
|
||||
```
|
||||
|
||||
## ⚡ Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
| -------- | ---------------------- | ----------------------------- |
|
||||
| `pul` | `pulumi` | Shortcut for Pulumi CLI |
|
||||
| `pulcs` | `pulumi config set` | Set Pulumi configuration |
|
||||
| `puld` | `pulumi destroy` | Destroy all resources |
|
||||
| `pullog` | `pulumi logs -f` | Tail Pulumi logs in real-time |
|
||||
| `pulp` | `pulumi preview` | Show planned changes |
|
||||
| `pulr` | `pulumi refresh` | Refresh state from cloud |
|
||||
| `puls` | `pulumi stack` | Show stack details |
|
||||
| `pulsh` | `pulumi stack history` | Show stack history |
|
||||
| `pulsi` | `pulumi stack init` | Initialize a new stack |
|
||||
| `pulsl` | `pulumi stack ls` | List available stacks |
|
||||
| `pulso` | `pulumi stack output` | Show stack outputs |
|
||||
| `pulss` | `pulumi stack select` | Switch stack |
|
||||
| `pulu` | `pulumi up` | Deploy infrastructure |
|
||||
|
||||
## 🎯 Autocompletion
|
||||
|
||||
If `pulumi gen-completion zsh` is available, this plugin **automatically loads Pulumi auto-completion**.
|
||||
|
||||
## 🛠️ Contribution
|
||||
|
||||
Feel free to open an issue or PR for improvements! 🚀
|
||||
28
plugins/pulumi/pulumi.plugin.zsh
Normal file
28
plugins/pulumi/pulumi.plugin.zsh
Normal file
@ -0,0 +1,28 @@
|
||||
if (( ! $+commands[pulumi] )); then
|
||||
return
|
||||
fi
|
||||
|
||||
# If the completion file doesn't exist yet, we need to autoload it and
|
||||
# bind it to `pulumi`. Otherwise, compinit will have already done that.
|
||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_pulumi" ]]; then
|
||||
typeset -g -A _comps
|
||||
autoload -Uz _pulumi
|
||||
_comps[pulumi]=_pulumi
|
||||
fi
|
||||
|
||||
pulumi gen-completion zsh >| "$ZSH_CACHE_DIR/completions/_pulumi" &|
|
||||
|
||||
# Aliases
|
||||
alias pul='pulumi'
|
||||
alias pulcs='pulumi config set'
|
||||
alias puld='pulumi destroy'
|
||||
alias pullog='pulumi logs -f'
|
||||
alias pulp='pulumi preview'
|
||||
alias pulr='pulumi refresh'
|
||||
alias puls='pulumi stack'
|
||||
alias pulsh='pulumi stack history'
|
||||
alias pulsi='pulumi stack init'
|
||||
alias pulsl='pulumi stack ls'
|
||||
alias pulso='pulumi stack output'
|
||||
alias pulss='pulumi stack select'
|
||||
alias pulu='pulumi up'
|
||||
@ -1,18 +0,0 @@
|
||||
# rbfu plugin
|
||||
|
||||
This plugin starts [rbfu](https://github.com/hmans/rbfu), a minimal Ruby version
|
||||
manager, and adds some useful functions.
|
||||
|
||||
To use it, add `rbfu` to the plugins array in your zshrc file:
|
||||
|
||||
```zsh
|
||||
plugins=(... rbfu)
|
||||
```
|
||||
|
||||
**Note: `rbfu` is deprecated and should no longer be used.**
|
||||
|
||||
## Functions
|
||||
|
||||
- `rbfu-rubies`: lists all installed rubies available to rbfu.
|
||||
|
||||
- `rvm_prompt_info`: shows the Ruby version being used with rbfu.
|
||||
@ -1,49 +0,0 @@
|
||||
# Enables rbfu with --auto option, if available.
|
||||
#
|
||||
# Also provides a command to list all installed/available
|
||||
# rubies. To ensure compatibility with themes, creates the
|
||||
# rvm_prompt_info function to return the $RBFU_RUBY_VERSION
|
||||
# version.
|
||||
|
||||
command -v rbfu &>/dev/null || return
|
||||
|
||||
eval "$(rbfu --init --auto)"
|
||||
|
||||
# Internal: Print ruby version details, if it's currently active, etc.
|
||||
function _rbfu_rubies_print() {
|
||||
# 1: path to ruby file
|
||||
# 2: active ruby
|
||||
local rb rb_out
|
||||
rb="${$1:t}"
|
||||
rb_out="$rb"
|
||||
|
||||
# If the ruby is a symlink, add @ to the name.
|
||||
if [[ -h "$1" ]]; then
|
||||
rb_out="${rb_out}${fg[green]}@${reset_color}"
|
||||
fi
|
||||
|
||||
# If the ruby is active, add * to the name and show it in red.
|
||||
if [[ "$rb" = "$2" ]]; then
|
||||
rb_out="${fg[red]}${rb_out} ${fg[red]}*${reset_color}"
|
||||
fi
|
||||
|
||||
echo $rb_out
|
||||
}
|
||||
|
||||
# Public: Provide a list with all available rubies, this basically depends
|
||||
# on ~/.rfbu/rubies. Highlights the currently active ruby version and aliases.
|
||||
function rbfu-rubies() {
|
||||
local rbfu_dir active_rb
|
||||
rbfu_dir="${RBFU_RUBIES:-${HOME}/.rbfu/rubies}"
|
||||
active_rb="${RBFU_RUBY_VERSION:-system}"
|
||||
|
||||
_rbfu_rubies_print "${rbfu_dir}/system" "$active_rb"
|
||||
for rb in ${rbfu_dir}/*(N); do
|
||||
_rbfu_rubies_print "$rb" "$active_rb"
|
||||
done
|
||||
}
|
||||
|
||||
# Public: Create rvm_prompt_info command for themes compatibility, unless
|
||||
# it has already been defined.
|
||||
(( ${+functions[rvm_prompt_info]} )) || \
|
||||
function rvm_prompt_info() { echo "${${RBFU_RUBY_VERSION:=system}:gs/%/%%}" }
|
||||
90
plugins/terraform-workspace-prompt/README.md
Normal file
90
plugins/terraform-workspace-prompt/README.md
Normal file
@ -0,0 +1,90 @@
|
||||
# Terraform plugin to display workspace in prompt
|
||||
|
||||
Plugin for Terraform from Hashicorp, an infrastructure as code tool that allows for multi-cloud support, modularity,
|
||||
and the ability to plan and apply changes, making it easier to manage and provision infrastructure resources.
|
||||
|
||||
## Features:
|
||||
- Completion for `terraform`
|
||||
- aliases
|
||||
- prompt function
|
||||
- Support for agnoster template
|
||||
|
||||
## Structure:
|
||||
```sh
|
||||
.
|
||||
├── README.md
|
||||
├── plugins
|
||||
├── _terraform
|
||||
└── terraform-workspace.plugin.zsh
|
||||
```
|
||||
|
||||
## Requirements
|
||||
* [zsh](http://www.zsh.org/)
|
||||
* [Terraform](https://terraform.io/)
|
||||
* [oh-my-zsh](https://github.com/ohmyzsh/ohmyzsh)
|
||||
* [terraform-workspace plugin](https://github.com/ocontant/terraform-workspace)
|
||||
* [terraform-workspace themes](https://github.com/ocontant/terraform-agnoster)
|
||||
|
||||
# Installation:
|
||||
## Manual
|
||||
1. Clone the repository to your localspace
|
||||
- `git clone https://github.com/ocontant/terraform-workspace.git`
|
||||
2. Copy the plugins folder to ~/.oh-my-zsh/custom/plugins/terraform-workspace
|
||||
- `cp -r plugins/terraform-workspace ~/.oh-my-zsh/custom/plugins/terraform-workspace`
|
||||
3. Copy the themes folder to ~/.oh-my-zsh/custom/themes/agnoster
|
||||
- `cp -r themes/agnoster ~/.oh-my-zsh/custom/themes/agnoster`
|
||||
4. Add the plugin `terraform-workspace` to your plugins array section of your `~/.zshrc` file
|
||||
- `plugins=(... terraform-workspace)`
|
||||
5. Add the theme `terraform-agnoster` to your theme section of your `~/.zshrc` file
|
||||
|
||||
## With Antigen
|
||||
1. Install Antigen:
|
||||
- `curl -L git.io/antigen > ~/antigen.zsh`
|
||||
2. Add antigen requirements to your `~/.zshrc` file
|
||||
```sh
|
||||
source ~/antigen.zsh
|
||||
# Load Antigen configurations
|
||||
antigen init ~/.antigenrc
|
||||
```
|
||||
3. Create the file ~/.antigenrc and add the following content (I included my favorite bundle, feel free to add/remove):
|
||||
```sh
|
||||
# Load oh-my-zsh library
|
||||
antigen use oh-my-zsh
|
||||
|
||||
# Load bundles from the default repo (oh-my-zsh)
|
||||
antigen bundle git
|
||||
antigen bundle command-not-found
|
||||
antigen bundle docker
|
||||
|
||||
# Load bundles from external repos
|
||||
antigen bundle zsh-users/zsh-completions
|
||||
antigen bundle zsh-users/zsh-autosuggestions
|
||||
antigen bundle zsh-users/zsh-syntax-highlighting
|
||||
antigen bundle zsh-users/zsh-history-substring-search
|
||||
|
||||
# Load the terraform plugins and theme
|
||||
antigen bundle ocontant/terraform-workspace
|
||||
antigen theme ocontant/terraform-agnoster
|
||||
|
||||
# Tell Antigen that you're done.
|
||||
antigen apply
|
||||
```
|
||||
4. Add the theme `terraform-agnoster` to your theme section of your `~/.zshrc` file
|
||||
5. Add the plugin `terraform-workspace` to your plugins array section of your `~/.zshrc` file
|
||||
- `plugins=(... terraform-workspace)`
|
||||
|
||||
|
||||
# Prompt function
|
||||
## If you don't want to use oh-my-zsh agnoster theme, you can use this prompt to display the current Terraform workspace in your prompt.
|
||||
|
||||
1. Create a bloc in your `~/.zshrc` file:
|
||||
```sh
|
||||
# Terraform prompt
|
||||
## Create 2 variables (feel free to customize the colors)
|
||||
ZSH_THEME_TF_PROMPT_PREFIX="%{$fg[white]%}"
|
||||
ZSH_THEME_TF_PROMPT_SUFFIX="%{$reset_color%}"
|
||||
|
||||
## Add the current Terraform workspace in your prompt by adding `"TF: ${__TERRAFORM_WORKSPACE_CACHE:gs/%/%%}"` to your `PROMPT` or `RPROMPT` variable.
|
||||
## Example:
|
||||
PROMPT="${PROMPT}>${ZSH_THEME_TF_PROMPT_PREFIX-[}${__TERRAFORM_WORKSPACE_CACHE:gs/%/%%}${ZSH_THEME_TF_PROMPT_SUFFIX-]}"
|
||||
```
|
||||
411
plugins/terraform-workspace-prompt/_terraform
Normal file
411
plugins/terraform-workspace-prompt/_terraform
Normal file
@ -0,0 +1,411 @@
|
||||
#compdef terraform
|
||||
|
||||
local -a _terraform_cmds opt_args
|
||||
_terraform_cmds=(
|
||||
'apply:Builds or changes infrastructure'
|
||||
'console:Interactive console for Terraform interpolations'
|
||||
'destroy:Destroy Terraform-managed infrastructure'
|
||||
'fmt:Rewrites config files to canonical format'
|
||||
'force-unlock:Manually unlock the terraform state'
|
||||
'get:Download and install modules for the configuration'
|
||||
'graph:Create a visual graph of Terraform resources'
|
||||
'import:Import existing infrastructure into Terraform'
|
||||
'init:Initialize a Terraform working directory'
|
||||
'login:Obtain and save credentials for a remote host'
|
||||
'logout:Remove locally-stored credentials for a remote host'
|
||||
'output:Read an output from a state file'
|
||||
'plan:Generate and show an execution plan'
|
||||
'providers:Prints a tree of the providers used in the configuration'
|
||||
'refresh:Update local state file against real resources'
|
||||
'show:Inspect Terraform state or plan'
|
||||
'state:Advanced state management'
|
||||
'taint:Manually mark a resource for recreation'
|
||||
'untaint:Manually unmark a resource as tainted'
|
||||
'validate:Validates the Terraform files'
|
||||
'version:Prints the Terraform version'
|
||||
'workspace:Workspace management'
|
||||
'0.12upgrade:Rewrites pre-0.12 module source code for v0.12'
|
||||
'0.13upgrade:Rewrites pre-0.13 module source code for v0.13'
|
||||
)
|
||||
|
||||
__012upgrade() {
|
||||
_arguments \
|
||||
'-yes[Skip the initial introduction messages and interactive confirmation. This can be used to run this command in batch from a script.]' \
|
||||
'-force[ Override the heuristic that attempts to detect if a configuration is already written for v0.12 or later. Some of the transformations made by this command are not idempotent, so re-running against the same module may change the meanings expressions in the module.]'
|
||||
}
|
||||
|
||||
__013upgrade() {
|
||||
_arguments \
|
||||
'-yes[Skip the initial introduction messages and interactive confirmation. This can be used to run this command in batch from a script.]'
|
||||
}
|
||||
|
||||
__apply() {
|
||||
_arguments \
|
||||
'-auto-approve[Skip interactive approval of plan before applying.]' \
|
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \
|
||||
'-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-input=[(true) Ask for input for variables if not directly set.]' \
|
||||
'-no-color[If specified, output will be colorless.]' \
|
||||
'-parallelism=[(10) Limit the number of parallel resource operations.]' \
|
||||
'-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \
|
||||
'-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]:statefile:_files -g "*.tfstate"' \
|
||||
'-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \
|
||||
'*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \
|
||||
'*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \
|
||||
'*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"'
|
||||
}
|
||||
|
||||
__console() {
|
||||
_arguments \
|
||||
'-state=[(terraform.tfstate) Path to read state.]' \
|
||||
'*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \
|
||||
'*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"'
|
||||
}
|
||||
|
||||
__destroy() {
|
||||
_arguments \
|
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \
|
||||
'-auto-approve[Skip interactive approval before destroying.]' \
|
||||
'-force[Deprecated: same as auto-approve.]' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-no-color[If specified, output will contain no color.]' \
|
||||
'-parallelism=[(10) Limit the number of concurrent operations.]' \
|
||||
'-refresh=[(true) Update state prior to checking for differences. This has no effect if a plan file is given to apply.]' \
|
||||
'-state=[(terraform.tfstate) Path to read and save state (unless state-out is specified).]:statefile:_files -g "*.tfstate"' \
|
||||
'-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \
|
||||
'*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \
|
||||
'*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \
|
||||
'*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"'
|
||||
}
|
||||
|
||||
__fmt() {
|
||||
_arguments \
|
||||
'-list=[(true) List files whose formatting differs (always false if using STDIN)]' \
|
||||
'-write=[(true) Write result to source file instead of STDOUT (always false if using STDIN or -check)]' \
|
||||
'-diff=[(false) Display diffs of formatting changes]' \
|
||||
'-check=[(false) Check if the input is formatted. Exit status will be 0 if all input is properly formatted and non-zero otherwise.]' \
|
||||
'-recursive=[(false) Also process files in subdirectories. By default, only the given directory (or current directory) is processed.]'
|
||||
}
|
||||
|
||||
__force_unlock() {
|
||||
_arguments \
|
||||
"-force[Don't ask for input for unlock confirmation.]"
|
||||
}
|
||||
|
||||
__get() {
|
||||
_arguments \
|
||||
'-update=[(false) If true, modules already downloaded will be checked for updates and updated if necessary.]' \
|
||||
'-no-color[Disable text coloring in the output.]'
|
||||
}
|
||||
|
||||
__graph() {
|
||||
_arguments \
|
||||
'-draw-cycles[Highlight any cycles in the graph with colored edges. This helps when diagnosing cycle errors.]' \
|
||||
'-type=[(plan) Type of graph to output. Can be: plan, plan-destroy, apply, validate, input, refresh.]'
|
||||
}
|
||||
|
||||
__import() {
|
||||
_arguments \
|
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \
|
||||
'-config=[(path) Path to a directory of Terraform configuration files to use to configure the provider. Defaults to pwd. If no config files are present, they must be provided via the input prompts or env vars.]' \
|
||||
'-allow-missing-config[Allow import when no resource configuration block exists.]' \
|
||||
'-input=[(true) Ask for input for variables if not directly set.]' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-no-color[If specified, output will contain no color.]' \
|
||||
'-state=[(PATH) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \
|
||||
'-state-out=[(PATH) Path to the destination state file to write to. If this is not specified, the source state file will be used. This can be a new or existing path.]:statefile:_files -g "*.tfstate"' \
|
||||
'*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times. This is only useful with the "-config" flag.]' \
|
||||
'*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"'
|
||||
}
|
||||
|
||||
__init() {
|
||||
_arguments \
|
||||
'-backend=[(true) Configure the backend for this configuration.]' \
|
||||
'-backend-config=[This can be either a path to an HCL file with key/value assignments (same format as terraform.tfvars) or a 'key=value' format. This is merged with what is in the configuration file. This can be specified multiple times. The backend type must be in the configuration itself.]' \
|
||||
'-force-copy[Suppress prompts about copying state data. This is equivalent to providing a "yes" to all confirmation prompts.]' \
|
||||
'-from-module=[(SOURCE) Copy the contents of the given module into the target directory before initialization.]' \
|
||||
'-get=[(true) Download any modules for this configuration.]' \
|
||||
'-get-plugins=[(true) Download any missing plugins for this configuration.]' \
|
||||
'-input=[(true) Ask for input if necessary. If false, will error if input was required.]' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-no-color[If specified, output will contain no color.]' \
|
||||
'-plugin-dir[Directory containing plugin binaries. This overrides all default search paths for plugins, and prevents the automatic installation of plugins. This flag can be used multiple times.]:plugin_dir:_files -/' \
|
||||
'-reconfigure[Reconfigure the backend, ignoring any saved configuration.]' \
|
||||
'-upgrade=[(false) If installing modules (-get) or plugins (-get-plugins), ignore previously-downloaded objects and install the latest version allowed within configured constraints.]' \
|
||||
'-verify-plugins=[(true) Verify the authenticity and integrity of automatically downloaded plugins.]'
|
||||
}
|
||||
|
||||
__login() {
|
||||
_arguments \
|
||||
|
||||
}
|
||||
|
||||
__logout() {
|
||||
_arguments \
|
||||
|
||||
}
|
||||
|
||||
__output() {
|
||||
_arguments \
|
||||
'-state=[(path) Path to the state file to read. Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \
|
||||
'-no-color[If specified, output will contain no color.]' \
|
||||
'-json[If specified, machine readable output will be printed in JSON format]'
|
||||
}
|
||||
|
||||
__plan() {
|
||||
_arguments \
|
||||
'-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \
|
||||
'-destroy[If set, a plan will be generated to destroy all resources managed by the given configuration and state.]' \
|
||||
'-detailed-exitcode[() Return detailed exit codes when the command exits. This will change the meaning of exit codes to: 0 - Succeeded, diff is empty (no changes); 1 - Errored, 2 - Succeeded; there is a diff]' \
|
||||
'-input=[(true) Ask for input for variables if not directly set.]' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-no-color[() If specified, output will contain no color.]' \
|
||||
'-out=[(path) Write a plan file to the given path. This can be used as input to the "apply" command.]' \
|
||||
'-parallelism=[(10) Limit the number of concurrent operations.]' \
|
||||
'-refresh=[(true) Update state prior to checking for differences.]' \
|
||||
'-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]:statefile:_files -g "*.tfstate"' \
|
||||
'*-target=[(resource) Resource to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \
|
||||
'*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \
|
||||
'*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"'
|
||||
}
|
||||
|
||||
__providers() {
|
||||
local -a __providers_cmds
|
||||
__providers_cmds=(
|
||||
'mirror:Mirrors the provider plugins needed for the current configuration'
|
||||
'schema:Prints the schemas of the providers used in the configuration'
|
||||
)
|
||||
_describe -t providers "providers commands" __providers_cmds
|
||||
|
||||
}
|
||||
|
||||
__providers_mirror() {
|
||||
_arguments \
|
||||
'-platform=[(os_arch) Choose which target platform to build a mirror for.]' \
|
||||
"*:target_dir:_files -/"
|
||||
}
|
||||
|
||||
__providers_schema() {
|
||||
_arguments \
|
||||
'-json[]' \
|
||||
'::'
|
||||
}
|
||||
|
||||
__refresh() {
|
||||
_arguments \
|
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]::backupfile:_files -g "*.backup"' \
|
||||
'-compact-warnings[If Terraform produces any warnings that are not accompanied by errors, show them in a more compact form that includes only the summary messages.]' \
|
||||
'-input=[(true) Ask for input for variables if not directly set.]' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-no-color[If specified, output will not contain any color.]' \
|
||||
'-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \
|
||||
'-state-out=[(path) Path to write state to that is different than "-state". This can be used to preserve the old state.]:statefile:_files -g "*.tfstate"' \
|
||||
'*-target=[(resource) A Resource Address to target. Operation will be limited to this resource and its dependencies. This flag can be used multiple times.]:target:__statelist' \
|
||||
'*-var[("foo=bar") Set a variable in the Terraform configuration. This flag can be set multiple times.]' \
|
||||
'*-var-file=[(foo) Set variables in the Terraform configuration from a file. If "terraform.tfvars" or any ".auto.tfvars" files are present, they will be automatically loaded.]:file:_files -g "*.tfvars{,.json}"'
|
||||
}
|
||||
|
||||
__show() {
|
||||
_arguments \
|
||||
'-json[If specified, output the Terraform plan or state in a machine-readable form.]' \
|
||||
'-no-color[If specified, output will not contain any color.]'
|
||||
}
|
||||
|
||||
__state() {
|
||||
local -a __state_cmds
|
||||
__state_cmds=(
|
||||
'list:List resources in the state'
|
||||
'mv:Move an item in the state'
|
||||
'pull:Pull current state and output to stdout'
|
||||
'push:Update remote state from a local state file'
|
||||
'replace-provider:Replace provider for resources in the Terraform state'
|
||||
'rm:Remove instances from the state'
|
||||
'show:Show a resource in the state'
|
||||
)
|
||||
_describe -t state "state commands" __state_cmds
|
||||
}
|
||||
|
||||
__state_list() {
|
||||
_arguments \
|
||||
'-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default, Terraform will consult the state of the currently-selected workspace.]' \
|
||||
'-id=[(id) Filters the results to include only instances whose resource types have an attribute named id whose value equals the given id string.]' \
|
||||
"*:address:__statelist"
|
||||
}
|
||||
|
||||
__state_mv() {
|
||||
_arguments \
|
||||
"-dry-run[If set, prints out what would've been moved but doesn't actually move anything.]" \
|
||||
'-backup=[(PATH) Path where Terraform should write the backup for the original state. This can"t be disabled. If not set, Terraform will write it to the same path as the statefile with a ".backup" extension.]:backupfile:_files -g "*.backup"' \
|
||||
'-backup-out=[(PATH) Path where Terraform should write the backup for the destination state. This can"t be disabled. If not set, Terraform will write it to the same path as the destination state file with a backup extension. This only needs to be specified if -state-out is set to a different path than -state.]:backupfile:_files -g "*.backup"' \
|
||||
"-lock=[(true) Lock the state files when locking is supported.]:lock:(true false)" \
|
||||
"-lock-timeout=[(0s) Duration to retry a state lock.]" \
|
||||
'-state=[(path) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \
|
||||
'-state-out=[(path) Path to the destination state file to write to. If this isn"t specified, the source state file will be used. This can be a new or existing path.]:statefile:_files -g "*.tfstate"' \
|
||||
"::" \
|
||||
":source:__statelist" \
|
||||
":destination: "
|
||||
}
|
||||
|
||||
__state_push() {
|
||||
_arguments \
|
||||
"-force[Write the state even if lineages don't match or the remote serial is higher.]" \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
"-lock-timeout=[(0s) Duration to retry a state lock.]" \
|
||||
"::" \
|
||||
":destination:_files"
|
||||
}
|
||||
|
||||
__state_replace_provider() {
|
||||
_arguments \
|
||||
'-auto-approve[Skip interactive approval.]' \
|
||||
'-backup=[(PATH) Path where Terraform should write the backup for the state file. This can"t be disabled. If not set, Terraform will write it to the same path as the state file with a ".backup" extension.]:backupfile:_files -g "*.backup"' \
|
||||
"-lock=[(true) Lock the state files when locking is supported.]:lock:(true false)" \
|
||||
"-lock-timeout=[(0s) Duration to retry a state lock.]" \
|
||||
'-state=[(PATH) Path to the source state file. Defaults to the configured backend, or "terraform.tfstate"]:statefile:_files -g "*.tfstate"' \
|
||||
":from_provider_fqn:" \
|
||||
":to_provider_fqn:"
|
||||
}
|
||||
|
||||
__state_rm() {
|
||||
_arguments \
|
||||
"-dry-run[If set, prints out what would've been removed but doesn't actually remove anything.]" \
|
||||
'-backup=[(PATH) Path where Terraform should write the backup for the original state.]::backupfile:_files -g "*.backup"' \
|
||||
"-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)" \
|
||||
"-lock-timeout=[(0s) Duration to retry a state lock.]" \
|
||||
'-state=[(PATH) Path to the state file to update. Defaults to the current workspace state.]:statefile:_files -g "*.tfstate"' \
|
||||
"*:address:__statelist"
|
||||
}
|
||||
|
||||
|
||||
__state_show() {
|
||||
_arguments \
|
||||
'-state=[(statefile) Path to a Terraform state file to use to look up Terraform-managed resources. By default it will use the state "terraform.tfstate" if it exists.]:statefile:_files -g "*.tfstate"' \
|
||||
"*:address:__statelist"
|
||||
}
|
||||
|
||||
__statelist() {
|
||||
compadd $(terraform state list $opt_args[-state])
|
||||
}
|
||||
|
||||
__taint() {
|
||||
_arguments \
|
||||
'-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \
|
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \
|
||||
'-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \
|
||||
'-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]:statefile:_files -g "*.tfstate"' \
|
||||
"*:address:__statelist"
|
||||
}
|
||||
|
||||
__untaint() {
|
||||
_arguments \
|
||||
'-allow-missing[If specified, the command will succeed (exit code 0) even if the resource is missing.]' \
|
||||
'-backup=[(path) Path to backup the existing state file before modifying. Defaults to the "-state-out" path with ".backup" extension. Set to "-" to disable backup.]:backupfile:_files -g "*.backup"' \
|
||||
'-lock=[(true) Lock the state file when locking is supported.]:lock:(true false)' \
|
||||
'-lock-timeout=[(0s) Duration to retry a state lock.]' \
|
||||
'-module=[(path) The module path where the resource lives. By default this will be root. Child modules can be specified by names. Ex. "consul" or "consul.vpc" (nested modules).]' \
|
||||
'-state=[(path) Path to read and save state (unless state-out is specified). Defaults to "terraform.tfstate".]:statefile:_files -g "*.tfstate"' \
|
||||
'-state-out=[(path) Path to write updated state file. By default, the "-state" path will be used.]:statefile:_files -g "*.tfstate"'
|
||||
}
|
||||
|
||||
__validate() {
|
||||
_arguments \
|
||||
'-no-color[If specified, output will not contain any color.]' \
|
||||
'-json[Produce output in a machine-readable JSON format, suitable for use in text editor integrations and other automated systems.]' \
|
||||
':dir:_files -/'
|
||||
}
|
||||
|
||||
__version() {
|
||||
_arguments \
|
||||
'-json[Output the version information as a JSON object.]'
|
||||
}
|
||||
|
||||
__workspace() {
|
||||
local -a __workspace_cmds
|
||||
__workspace_cmds=(
|
||||
'delete:Delete a workspace'
|
||||
'list:List Workspaces'
|
||||
'new:Create a new workspace'
|
||||
'select:Select a workspace'
|
||||
'show:Show the name of the current workspace'
|
||||
)
|
||||
_describe -t workspace "workspace commands" __workspace_cmds
|
||||
}
|
||||
|
||||
_arguments '*:: :->command'
|
||||
|
||||
if (( CURRENT == 1 )); then
|
||||
_describe -t commands "terraform command" _terraform_cmds
|
||||
return
|
||||
fi
|
||||
|
||||
local -a _command_args
|
||||
case "$words[1]" in
|
||||
0.12upgrade)
|
||||
__012upgrade ;;
|
||||
0.13upgrade)
|
||||
__013upgrade ;;
|
||||
apply)
|
||||
__apply ;;
|
||||
console)
|
||||
__console;;
|
||||
destroy)
|
||||
__destroy ;;
|
||||
fmt)
|
||||
__fmt;;
|
||||
force-unlock)
|
||||
__force_unlock;;
|
||||
get)
|
||||
__get ;;
|
||||
graph)
|
||||
__graph ;;
|
||||
import)
|
||||
__import;;
|
||||
init)
|
||||
__init ;;
|
||||
login)
|
||||
__login ;;
|
||||
logout)
|
||||
__logout ;;
|
||||
output)
|
||||
__output ;;
|
||||
plan)
|
||||
__plan ;;
|
||||
providers)
|
||||
test $CURRENT -lt 3 && __providers
|
||||
[[ $words[2] = "mirror" ]] && __providers_mirror
|
||||
[[ $words[2] = "schema" ]] && __providers_schema
|
||||
;;
|
||||
refresh)
|
||||
__refresh ;;
|
||||
show)
|
||||
__show ;;
|
||||
state)
|
||||
test $CURRENT -lt 3 && __state
|
||||
[[ $words[2] = "list" ]] && __state_list
|
||||
[[ $words[2] = "mv" ]] && __state_mv
|
||||
[[ $words[2] = "push" ]] && __state_push
|
||||
[[ $words[2] = "replace-provider" ]] && __state_replace_provider
|
||||
[[ $words[2] = "rm" ]] && __state_rm
|
||||
[[ $words[2] = "show" ]] && __state_show
|
||||
;;
|
||||
taint)
|
||||
__taint ;;
|
||||
untaint)
|
||||
__untaint ;;
|
||||
validate)
|
||||
__validate ;;
|
||||
version)
|
||||
__version ;;
|
||||
workspace)
|
||||
test $CURRENT -lt 3 && __workspace ;;
|
||||
esac
|
||||
@ -0,0 +1,35 @@
|
||||
# Global variables to cache the last known .terraform directory and its corresponding workspace name
|
||||
__TERRAFORM_WORKSPACE_CACHE=""
|
||||
__TERRAFORM_DIRECTORY_CACHE=""
|
||||
|
||||
# Function to find the .terraform directory in the current or any parent directory
|
||||
__find_terraform_directory() {
|
||||
local current_dir="$PWD"
|
||||
while [[ "$current_dir" != "/" ]]; do
|
||||
if [[ -d "${current_dir}/.terraform" ]]; then
|
||||
echo "${current_dir}/.terraform"
|
||||
return
|
||||
fi
|
||||
current_dir="$(dirname "$current_dir")"
|
||||
done
|
||||
}
|
||||
|
||||
# Function to update the Terraform workspace prompt based on the current working directory, utilizing the global cache variables
|
||||
__update_terraform_workspace_prompt() {
|
||||
local terraform_dir="$(__find_terraform_directory)"
|
||||
if [[ -n "$terraform_dir" && "$terraform_dir" != "$__TERRAFORM_DIRECTORY_CACHE" ]]; then
|
||||
__TERRAFORM_DIRECTORY_CACHE="$terraform_dir"
|
||||
local workspace="$(terraform -chdir="$(dirname "${terraform_dir%/}")" workspace show 2>/dev/null)"
|
||||
__TERRAFORM_WORKSPACE_CACHE="$workspace"
|
||||
elif [[ -z "$terraform_dir" ]]; then
|
||||
__TERRAFORM_DIRECTORY_CACHE=""
|
||||
__TERRAFORM_WORKSPACE_CACHE=""
|
||||
fi
|
||||
}
|
||||
|
||||
# Hooks to call the update function when the working directory changes or before each prompt is displayed
|
||||
autoload -Uz add-zsh-hook
|
||||
add-zsh-hook chpwd __update_terraform_workspace_prompt
|
||||
add-zsh-hook precmd __update_terraform_workspace_prompt
|
||||
|
||||
complete -o nospace -C $(which terraform) terraform
|
||||
@ -35,6 +35,9 @@ plugins=(... terraform)
|
||||
| `tfs` | `terraform state` |
|
||||
| `tft` | `terraform test` |
|
||||
| `tfsh` | `terraform show` |
|
||||
| `tfw` | `terraform workspace` |
|
||||
| `tfwl` | `terraform workspace list` |
|
||||
| `tfws` | `terraform workspace select` |
|
||||
|
||||
## Prompt function
|
||||
|
||||
|
||||
@ -33,3 +33,6 @@ alias tfv='terraform validate'
|
||||
alias tfs='terraform state'
|
||||
alias tft='terraform test'
|
||||
alias tfsh='terraform show'
|
||||
alias tfw='terraform workspace'
|
||||
alias tfwl='terraform workspace list'
|
||||
alias tfws='terraform workspace select'
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
# uv plugin
|
||||
|
||||
This plugin automatically installs [uv](https://github.com/astral-sh/uv)'s completions for you, and keeps them up to date. It also adds convenient aliases for common usage.
|
||||
This plugin automatically installs [uv](https://github.com/astral-sh/uv)'s completions for you,
|
||||
and keeps them up to date. It also adds convenient aliases for common usage.
|
||||
|
||||
To use it, add `uv` to the plugins array in your zshrc file:
|
||||
|
||||
@ -10,19 +11,26 @@ plugins=(... uv)
|
||||
|
||||
## Aliases
|
||||
|
||||
| Alias | Command | Description |
|
||||
|:----- |------------------------------------------------------------------------ |:-------------------------------------------------------------------- |
|
||||
| uva | `uv add` | Add packages to the project |
|
||||
| uvexp | `uv export --format requirements-txt --no-hashes --output-file requirements.txt --quiet` | Export the lock file to `requirements.txt` |
|
||||
| uvl | `uv lock` | Lock the dependencies |
|
||||
| uvlr | `uv lock --refresh` | Rebuild the lock file without upgrading dependencies |
|
||||
| uvlu | `uv lock --upgrade` | Lock the dependencies to the newest compatible versions |
|
||||
| uvp | `uv pip` | Manage pip packages |
|
||||
| uvpy | `uv python` | Manage Python installs |
|
||||
| uvr | `uv run` | Run commands within the project's environment |
|
||||
| uvrm | `uv remove` | Remove packages from the project |
|
||||
| uvs | `uv sync` | Sync the environment with the lock file |
|
||||
| uvsr | `uv sync --refresh` | "Force" sync the environment with the lock file (ignore cache) |
|
||||
| uvsu | `uv sync --upgrade` | Sync the environment, allowing upgrades and ignoring the lock file |
|
||||
| uvup | `uv self update` | Update the UV tool to the latest version |
|
||||
| uvv | `uv venv` | Manage virtual environments |
|
||||
| Alias | Command | Description |
|
||||
| :---- | ---------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- |
|
||||
| uva | `uv add` | Add packages to the project |
|
||||
| uvexp | `uv export --format requirements-txt --no-hashes --output-file requirements.txt --quiet` | Export the lock file to `requirements.txt` |
|
||||
| uvi | `uv init` | Initialize a new project in current workspace and environment. |
|
||||
| uvinw | `uv init --no-workspace` | Initialize a new project in a new workspace and environment |
|
||||
| uvl | `uv lock` | Lock the dependencies |
|
||||
| uvlr | `uv lock --refresh` | Rebuild the lock file without upgrading dependencies |
|
||||
| uvlu | `uv lock --upgrade` | Lock the dependencies to the newest compatible versions |
|
||||
| uvp | `uv pip` | Manage pip packages |
|
||||
| uvpi | `uv python install` | Install a specific version of python |
|
||||
| uvpl | `uv python list` | Lists all python version installed |
|
||||
| uvpp | `uv python pin` | Pin the current project to use a specific Python version |
|
||||
| uvpu | `uv python uninstall` | Remove a specific version of python |
|
||||
| uvpy | `uv python` | Manage Python installs |
|
||||
| uvr | `uv run` | Run commands within the project's environment |
|
||||
| uvrm | `uv remove` | Remove packages from the project |
|
||||
| uvs | `uv sync` | Sync the environment with the lock file |
|
||||
| uvsr | `uv sync --refresh` | "Force" sync the environment with the lock file (ignore cache) |
|
||||
| uvsu | `uv sync --upgrade` | Sync the environment, allowing upgrades and ignoring the lock file |
|
||||
| uvtr | `uv tree` | Displays the full dependency tree for the current project environment |
|
||||
| uvup | `uv self update` | Update the UV tool to the latest version |
|
||||
| uvv | `uv venv` | Manage virtual environments |
|
||||
|
||||
@ -7,16 +7,23 @@ alias uv="noglob uv"
|
||||
|
||||
alias uva='uv add'
|
||||
alias uvexp='uv export --format requirements-txt --no-hashes --output-file requirements.txt --quiet'
|
||||
alias uvi='uv init'
|
||||
alias uvinw='uv init --no-workspace'
|
||||
alias uvl='uv lock'
|
||||
alias uvlr='uv lock --refresh'
|
||||
alias uvlu='uv lock --upgrade'
|
||||
alias uvp='uv pip'
|
||||
alias uvpi='uv python install'
|
||||
alias uvpl='uv python list'
|
||||
alias uvpu='uv python uninstall'
|
||||
alias uvpy='uv python'
|
||||
alias uvpp='uv python pin'
|
||||
alias uvr='uv run'
|
||||
alias uvrm='uv remove'
|
||||
alias uvs='uv sync'
|
||||
alias uvsr='uv sync --refresh'
|
||||
alias uvsu='uv sync --upgrade'
|
||||
alias uvtr='uv tree'
|
||||
alias uvup='uv self update'
|
||||
alias uvv='uv venv'
|
||||
|
||||
|
||||
@ -1,7 +1,6 @@
|
||||
# VS Code
|
||||
|
||||
This plugin provides useful aliases to simplify the interaction between the command line and VS Code or
|
||||
VSCodium editor.
|
||||
This plugin provides useful aliases to simplify the interaction between the command line and VS Code, VSCodium, or Cursor editor.
|
||||
|
||||
To start using it, add the `vscode` plugin to your `plugins` array in `~/.zshrc`:
|
||||
|
||||
@ -18,6 +17,7 @@ You can install either:
|
||||
- VS Code (code)
|
||||
- VS Code Insiders (code-insiders)
|
||||
- VSCodium (codium)
|
||||
- Cursor (cursor)
|
||||
|
||||
### MacOS
|
||||
|
||||
@ -33,6 +33,10 @@ open the Command Palette via (F1 or ⇧⌘P) and type shell command to find the
|
||||
|
||||
> 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:
|
||||
|
||||
> Shell Command: Install 'cursor' command in PATH
|
||||
|
||||
## Using multiple flavours
|
||||
|
||||
If for any reason, you ever require to use multiple flavours of VS Code i.e. VS Code (stable) and VS Code
|
||||
@ -43,7 +47,7 @@ executable.
|
||||
```zsh
|
||||
ZSH_THEME=...
|
||||
|
||||
# Choose between one [code, code-insiders or codium]
|
||||
# Choose between one [code, code-insiders, codium, or cursor]
|
||||
# The following line will make the plugin to open VS Code Insiders
|
||||
# Invalid entries will be ignored, no aliases will be added
|
||||
VSCODE=code-insiders
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
# VS Code (stable / insiders) / VSCodium zsh plugin
|
||||
# VS Code (stable / insiders) / VSCodium / Cursor zsh plugin
|
||||
# Authors:
|
||||
# https://github.com/MarsiBarsi (original author)
|
||||
# https://github.com/babakks
|
||||
@ -19,6 +19,8 @@ if [[ -z "$VSCODE" ]]; then
|
||||
VSCODE=code-insiders
|
||||
elif which codium &>/dev/null; then
|
||||
VSCODE=codium
|
||||
elif which cursor &>/dev/null; then
|
||||
VSCODE=cursor
|
||||
else
|
||||
return
|
||||
fi
|
||||
|
||||
@ -505,7 +505,7 @@ print_success() {
|
||||
printf '\n'
|
||||
printf '%s\n' "• Follow us on X: $(fmt_link @ohmyzsh https://x.com/ohmyzsh)"
|
||||
printf '%s\n' "• Join our Discord community: $(fmt_link "Discord server" https://discord.gg/ohmyzsh)"
|
||||
printf '%s\n' "• Get stickers, t-shirts, coffee mugs and more: $(fmt_link "Planet Argon Shop" https://shop.planetargon.com/collections/oh-my-zsh)"
|
||||
printf '%s\n' "• Get stickers, t-shirts, coffee mugs and more: $(fmt_link "CommitGoods Shop" https://commitgoods.com/collections/oh-my-zsh)"
|
||||
printf '%s\n' $FMT_RESET
|
||||
}
|
||||
|
||||
|
||||
@ -273,7 +273,7 @@ if LANG= git pull --quiet --rebase $remote $branch; then
|
||||
printf "${BLUE}%s${RESET}\n\n" "$message"
|
||||
printf "${BLUE}${BOLD}%s %s${RESET}\n" "To keep up with the latest news and updates, follow us on X:" "$(fmt_link @ohmyzsh https://x.com/ohmyzsh)"
|
||||
printf "${BLUE}${BOLD}%s %s${RESET}\n" "Want to get involved in the community? Join our Discord:" "$(fmt_link "Discord server" https://discord.gg/ohmyzsh)"
|
||||
printf "${BLUE}${BOLD}%s %s${RESET}\n" "Get your Oh My Zsh swag at:" "$(fmt_link "Planet Argon Shop" https://shop.planetargon.com/collections/oh-my-zsh)"
|
||||
printf "${BLUE}${BOLD}%s %s${RESET}\n" "Get your Oh My Zsh swag at:" "$(fmt_link "CommitGoods Shop" https://commitgoods.com/collections/oh-my-zsh)"
|
||||
elif [[ $verbose_mode == minimal ]]; then
|
||||
printf "${BLUE}%s${RESET}\n" "$message"
|
||||
fi
|
||||
|
||||
Loading…
Reference in New Issue
Block a user