mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-09-27 21:46:08 +02:00
Compare commits
2
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
419fc5e9b5 | ||
|
|
338a1131c8 |
@@ -12,7 +12,7 @@ dependencies:
|
|||||||
plugins/gradle:
|
plugins/gradle:
|
||||||
repo: gradle/gradle-completion
|
repo: gradle/gradle-completion
|
||||||
branch: master
|
branch: master
|
||||||
version: e7c881dbef7462bc35ad05328397e1582fe25cb8
|
version: 63578c9bc56134b80766e88957ba0239e6be2343
|
||||||
precopy: |
|
precopy: |
|
||||||
set -e
|
set -e
|
||||||
find . ! -name _gradle ! -name LICENSE -delete
|
find . ! -name _gradle ! -name LICENSE -delete
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ jobs:
|
|||||||
contents: write # this is needed to push commits and branches
|
contents: write # this is needed to push commits and branches
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
- macos-latest
|
- macos-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
@@ -47,7 +47,7 @@ jobs:
|
|||||||
- test
|
- test
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ jobs:
|
|||||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ jobs:
|
|||||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
- name: Authenticate as @ohmyzsh
|
- name: Authenticate as @ohmyzsh
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ jobs:
|
|||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: Harden the runner (Audit all outbound calls)
|
- name: Harden the runner (Audit all outbound calls)
|
||||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
uses: step-security/harden-runner@05e31511f85b41b11d1cf0ef85d0992719546e2c # v2.21.0
|
||||||
with:
|
with:
|
||||||
egress-policy: audit
|
egress-policy: audit
|
||||||
|
|
||||||
|
|||||||
@@ -23,14 +23,6 @@ Twitter), and join us on [Discord](https://discord.gg/ohmyzsh).
|
|||||||
[](https://mstdn.social/@ohmyzsh)
|
[](https://mstdn.social/@ohmyzsh)
|
||||||
[](https://discord.gg/ohmyzsh)
|
[](https://discord.gg/ohmyzsh)
|
||||||
|
|
||||||
<a href="https://commitgoods.com/collections/oh-my-zsh?utm_source=github">
|
|
||||||
<picture>
|
|
||||||
<source media="(prefers-color-scheme: dark)" srcset="https://cdn.shopify.com/s/files/1/0101/8752/files/commitgoods-badge-stacked-navy-dark.svg">
|
|
||||||
<img src="https://cdn.shopify.com/s/files/1/0101/8752/files/commitgoods-badge-stacked-navy.svg" height="28" alt="Official merch on commitgoods.com">
|
|
||||||
</picture>
|
|
||||||
</a>
|
|
||||||
|
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
<summary>Table of Contents</summary>
|
<summary>Table of Contents</summary>
|
||||||
|
|
||||||
|
|||||||
@@ -21,7 +21,6 @@ function chruby_prompt_info \
|
|||||||
azure_prompt_info \
|
azure_prompt_info \
|
||||||
tf_prompt_info \
|
tf_prompt_info \
|
||||||
conda_prompt_info \
|
conda_prompt_info \
|
||||||
go_prompt_info \
|
|
||||||
{
|
{
|
||||||
return 1
|
return 1
|
||||||
}
|
}
|
||||||
|
|||||||
+7
-17
@@ -64,7 +64,7 @@ if [[ ! -w "$ZSH_CACHE_DIR" ]]; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Create cache and completions dir and add to $fpath
|
# Create cache and completions dir and add to $fpath
|
||||||
[[ -d "$ZSH_CACHE_DIR/completions" ]] || mkdir -p "$ZSH_CACHE_DIR/completions"
|
mkdir -p "$ZSH_CACHE_DIR/completions"
|
||||||
(( ${fpath[(Ie)$ZSH_CACHE_DIR/completions]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
|
(( ${fpath[(Ie)$ZSH_CACHE_DIR/completions]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
|
||||||
|
|
||||||
# Check for updates on initial load...
|
# Check for updates on initial load...
|
||||||
@@ -114,17 +114,9 @@ fi
|
|||||||
zcompdump_revision="#omz revision: $(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)"
|
zcompdump_revision="#omz revision: $(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)"
|
||||||
zcompdump_fpath="#omz fpath: $fpath"
|
zcompdump_fpath="#omz fpath: $fpath"
|
||||||
|
|
||||||
# Check whether the zcompdump file carries the current OMZ metadata lines
|
|
||||||
_omz_compdump_has_metadata() {
|
|
||||||
local -a lines
|
|
||||||
[[ -r "$ZSH_COMPDUMP" ]] || return 1
|
|
||||||
lines=("${(@f)$(<"$ZSH_COMPDUMP")}")
|
|
||||||
(( ${lines[(Ie)$zcompdump_revision]} && ${lines[(Ie)$zcompdump_fpath]} ))
|
|
||||||
}
|
|
||||||
|
|
||||||
# Delete the zcompdump file if OMZ zcompdump metadata changed
|
# Delete the zcompdump file if OMZ zcompdump metadata changed
|
||||||
zcompdump_refresh=0
|
if ! command grep -q -Fx "$zcompdump_revision" "$ZSH_COMPDUMP" 2>/dev/null \
|
||||||
if ! _omz_compdump_has_metadata; then
|
|| ! command grep -q -Fx "$zcompdump_fpath" "$ZSH_COMPDUMP" 2>/dev/null; then
|
||||||
command rm -f "$ZSH_COMPDUMP"
|
command rm -f "$ZSH_COMPDUMP"
|
||||||
zcompdump_refresh=1
|
zcompdump_refresh=1
|
||||||
fi
|
fi
|
||||||
@@ -142,8 +134,9 @@ else
|
|||||||
compinit -u -d "$ZSH_COMPDUMP"
|
compinit -u -d "$ZSH_COMPDUMP"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Append zcompdump metadata if missing (compinit may have regenerated the file)
|
# Append zcompdump metadata if missing
|
||||||
if (( zcompdump_refresh )) || ! _omz_compdump_has_metadata; then
|
if (( $zcompdump_refresh )) \
|
||||||
|
|| ! command grep -q -Fx "$zcompdump_revision" "$ZSH_COMPDUMP" 2>/dev/null; then
|
||||||
# Use `tee` in case the $ZSH_COMPDUMP filename is invalid, to silence the error
|
# Use `tee` in case the $ZSH_COMPDUMP filename is invalid, to silence the error
|
||||||
# See https://github.com/ohmyzsh/ohmyzsh/commit/dd1a7269#commitcomment-39003489
|
# See https://github.com/ohmyzsh/ohmyzsh/commit/dd1a7269#commitcomment-39003489
|
||||||
tee -a "$ZSH_COMPDUMP" &>/dev/null <<EOF
|
tee -a "$ZSH_COMPDUMP" &>/dev/null <<EOF
|
||||||
@@ -153,12 +146,9 @@ $zcompdump_fpath
|
|||||||
EOF
|
EOF
|
||||||
fi
|
fi
|
||||||
unset zcompdump_revision zcompdump_fpath zcompdump_refresh
|
unset zcompdump_revision zcompdump_fpath zcompdump_refresh
|
||||||
unset -f _omz_compdump_has_metadata
|
|
||||||
|
|
||||||
# zcompile the completion dump file if the .zwc is older or missing.
|
# zcompile the completion dump file if the .zwc is older or missing.
|
||||||
# Test that first so the lock directory and zrecompile are skipped when it's fresh.
|
if command mkdir "${ZSH_COMPDUMP}.lock" 2>/dev/null; then
|
||||||
if [[ ! "${ZSH_COMPDUMP}.zwc" -nt "$ZSH_COMPDUMP" ]] \
|
|
||||||
&& command mkdir "${ZSH_COMPDUMP}.lock" 2>/dev/null; then
|
|
||||||
zrecompile -q -p "$ZSH_COMPDUMP"
|
zrecompile -q -p "$ZSH_COMPDUMP"
|
||||||
command rm -rf "$ZSH_COMPDUMP.zwc.old" "${ZSH_COMPDUMP}.lock"
|
command rm -rf "$ZSH_COMPDUMP.zwc.old" "${ZSH_COMPDUMP}.lock"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ function asr() {
|
|||||||
local -a available_regions
|
local -a available_regions
|
||||||
available_regions=($(aws_regions))
|
available_regions=($(aws_regions))
|
||||||
if [[ -z "${available_regions[(r)$1]}" ]]; then
|
if [[ -z "${available_regions[(r)$1]}" ]]; then
|
||||||
echo "${fg[red]}Available regions: \n$(aws_regions)${reset_color}" >&2
|
echo "${fg[red]}Available regions: \n$(aws_regions)"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
# Grafana CLI plugin
|
|
||||||
|
|
||||||
This plugin adds completion for the [Grafana CLI (gcx)](https://github.com/grafana/gcx).
|
|
||||||
|
|
||||||
To use it, add `gcx` to the plugins array in your zshrc file:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
plugins=(... gcx)
|
|
||||||
```
|
|
||||||
|
|
||||||
This plugin does not add any aliases.
|
|
||||||
|
|
||||||
## Cache
|
|
||||||
|
|
||||||
This plugin caches the completion script and automatically updates it when the
|
|
||||||
plugin is loaded, which is usually when you start a new terminal emulator.
|
|
||||||
|
|
||||||
The cache is stored at `$ZSH_CACHE_DIR/completions/_gcx`.
|
|
||||||
@@ -1,18 +0,0 @@
|
|||||||
# Autocompletion for the Grafana CLI (gcx).
|
|
||||||
if (( ! $+commands[gcx] )); then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# If the completion file doesn't exist yet, we need to autoload it and
|
|
||||||
# bind it to `gcx`. Otherwise, compinit will have already done that.
|
|
||||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_gcx" ]]; then
|
|
||||||
typeset -g -A _comps
|
|
||||||
autoload -Uz _gcx
|
|
||||||
_comps[gcx]=_gcx
|
|
||||||
fi
|
|
||||||
|
|
||||||
zmodload -F zsh/files b:zf_mv
|
|
||||||
() {
|
|
||||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_gcx"
|
|
||||||
zf_mv -f -- =( gcx completion zsh ) "$TMPPREFIX"
|
|
||||||
} &|
|
|
||||||
@@ -39,18 +39,3 @@ plugins=(... golang)
|
|||||||
| gov | `go vet` | Vet examines Go source code and reports suspicious constructs |
|
| gov | `go vet` | Vet examines Go source code and reports suspicious constructs |
|
||||||
| gove | `go version` | Prints Go version |
|
| gove | `go version` | Prints Go version |
|
||||||
| gow | `go work` | Work provides access to operations on workspaces |
|
| gow | `go work` | Work provides access to operations on workspaces |
|
||||||
|
|
||||||
## Prompt
|
|
||||||
|
|
||||||
This plugin provides the `go_prompt_info` function to add the installed Go
|
|
||||||
version to your prompt.
|
|
||||||
|
|
||||||
For example:
|
|
||||||
```
|
|
||||||
PROMPT="%~$ "
|
|
||||||
RPROMPT='$(go_prompt_info)'
|
|
||||||
```
|
|
||||||
changes your prompt to:
|
|
||||||
```
|
|
||||||
~/go/project$ ▋ 1.22.3
|
|
||||||
```
|
|
||||||
|
|||||||
@@ -36,12 +36,3 @@ alias gotofx='go tool fix'
|
|||||||
alias gov='go vet'
|
alias gov='go vet'
|
||||||
alias gove='go version'
|
alias gove='go version'
|
||||||
alias gow='go work'
|
alias gow='go work'
|
||||||
|
|
||||||
## prompt
|
|
||||||
function go_prompt_info() {
|
|
||||||
(( $+commands[go] )) || return
|
|
||||||
local go_prompt
|
|
||||||
go_prompt=$(go version | awk '{ print substr($3, 3) }')
|
|
||||||
[[ -z "${go_prompt}" ]] && return
|
|
||||||
echo "${ZSH_THEME_GO_PROMPT_PREFIX}${go_prompt:gs/%/%%}${ZSH_THEME_GO_PROMPT_SUFFIX}"
|
|
||||||
}
|
|
||||||
|
|||||||
+4
-10
@@ -284,9 +284,6 @@ __gradle_subcommand() {
|
|||||||
'-Dorg.gradle.debug.suspend=[]' \
|
'-Dorg.gradle.debug.suspend=[]' \
|
||||||
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false)' \
|
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false)' \
|
||||||
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:org.gradle.dependency.verification:(strict lenient off)' \
|
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:org.gradle.dependency.verification:(strict lenient off)' \
|
||||||
'-Dorg.gradle.isolated-projects.dangerously-ignore-problems=[]' \
|
|
||||||
'-Dorg.gradle.isolated-projects.diagnostics=[]' \
|
|
||||||
'-Dorg.gradle.isolated-projects=[Enables Isolated Projects. Projects are configured in parallel. Implies `--configuration-cache`.]' \
|
|
||||||
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories' \
|
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories' \
|
||||||
'-Dorg.gradle.java.installations.auto-detect=[]' \
|
'-Dorg.gradle.java.installations.auto-detect=[]' \
|
||||||
'-Dorg.gradle.java.installations.auto-download=[]' \
|
'-Dorg.gradle.java.installations.auto-download=[]' \
|
||||||
@@ -302,6 +299,8 @@ __gradle_subcommand() {
|
|||||||
'-Dorg.gradle.problems.report=[Enables the HTML problems report.]' \
|
'-Dorg.gradle.problems.report=[Enables the HTML problems report.]' \
|
||||||
'-Dorg.gradle.projectcachedir=[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:org.gradle.projectcachedir:_directories' \
|
'-Dorg.gradle.projectcachedir=[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:org.gradle.projectcachedir:_directories' \
|
||||||
'-Dorg.gradle.tooling.parallel=[]' \
|
'-Dorg.gradle.tooling.parallel=[]' \
|
||||||
|
'-Dorg.gradle.unsafe.isolated-projects.diagnostics=[]' \
|
||||||
|
'-Dorg.gradle.unsafe.isolated-projects=[]' \
|
||||||
'-Dorg.gradle.vfs.verbose=[]' \
|
'-Dorg.gradle.vfs.verbose=[]' \
|
||||||
'-Dorg.gradle.vfs.watch=[Enables file system watching. Reuses file system data for subsequent builds.]:org.gradle.vfs.watch:(true false)' \
|
'-Dorg.gradle.vfs.watch=[Enables file system watching. Reuses file system data for subsequent builds.]:org.gradle.vfs.watch:(true false)' \
|
||||||
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]' \
|
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]' \
|
||||||
@@ -329,14 +328,12 @@ __gradle_subcommand() {
|
|||||||
\*'--include-build[Includes the specified build in the composite.]:include build:_directories' \
|
\*'--include-build[Includes the specified build in the composite.]:include build:_directories' \
|
||||||
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Sets the log level to info.]' \
|
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Sets the log level to info.]' \
|
||||||
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle(|.kts)' \
|
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle(|.kts)' \
|
||||||
(--no-isolated-projects)'--isolated-projects[Enables Isolated Projects. Projects are configured in parallel. Implies `--configuration-cache`. (incubating)]' \
|
|
||||||
'--max-workers[Configures the maximum number of concurrent workers Gradle is allowed to use.]' \
|
'--max-workers[Configures the maximum number of concurrent workers Gradle is allowed to use.]' \
|
||||||
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
||||||
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
||||||
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
||||||
(--continue)'--no-continue[Stops task execution after a task failure.]' \
|
(--continue)'--no-continue[Stops task execution after a task failure.]' \
|
||||||
(--daemon)'--no-daemon[Runs the build without the Gradle daemon. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
(--daemon)'--no-daemon[Runs the build without the Gradle daemon. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
||||||
(--isolated-projects)'--no-isolated-projects[Disables Isolated Projects. (incubating)]' \
|
|
||||||
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
||||||
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
||||||
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
||||||
@@ -424,9 +421,6 @@ _gradle() {
|
|||||||
'-Dorg.gradle.debug.suspend=[]:->argument-expected' \
|
'-Dorg.gradle.debug.suspend=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false):->argument-expected' \
|
'-Dorg.gradle.debug=[]:org.gradle.debug:(true false):->argument-expected' \
|
||||||
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:org.gradle.dependency.verification:(strict lenient off):->argument-expected' \
|
'-Dorg.gradle.dependency.verification=[Configures the dependency verification mode. Supported values are 'strict', 'lenient', or 'off'.]:org.gradle.dependency.verification:(strict lenient off):->argument-expected' \
|
||||||
'-Dorg.gradle.isolated-projects.dangerously-ignore-problems=[]:->argument-expected' \
|
|
||||||
'-Dorg.gradle.isolated-projects.diagnostics=[]:->argument-expected' \
|
|
||||||
'-Dorg.gradle.isolated-projects=[Enables Isolated Projects. Projects are configured in parallel. Implies `--configuration-cache`.]:->argument-expected' \
|
|
||||||
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories:->argument-expected' \
|
'-Dorg.gradle.java.home=[]:org.gradle.java.home:_directories:->argument-expected' \
|
||||||
'-Dorg.gradle.java.installations.auto-detect=[]:->argument-expected' \
|
'-Dorg.gradle.java.installations.auto-detect=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.java.installations.auto-download=[]:->argument-expected' \
|
'-Dorg.gradle.java.installations.auto-download=[]:->argument-expected' \
|
||||||
@@ -442,6 +436,8 @@ _gradle() {
|
|||||||
'-Dorg.gradle.problems.report=[Enables the HTML problems report.]:->argument-expected' \
|
'-Dorg.gradle.problems.report=[Enables the HTML problems report.]:->argument-expected' \
|
||||||
'-Dorg.gradle.projectcachedir=[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:org.gradle.projectcachedir:_directories:->argument-expected' \
|
'-Dorg.gradle.projectcachedir=[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:org.gradle.projectcachedir:_directories:->argument-expected' \
|
||||||
'-Dorg.gradle.tooling.parallel=[]:->argument-expected' \
|
'-Dorg.gradle.tooling.parallel=[]:->argument-expected' \
|
||||||
|
'-Dorg.gradle.unsafe.isolated-projects.diagnostics=[]:->argument-expected' \
|
||||||
|
'-Dorg.gradle.unsafe.isolated-projects=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.vfs.verbose=[]:->argument-expected' \
|
'-Dorg.gradle.vfs.verbose=[]:->argument-expected' \
|
||||||
'-Dorg.gradle.vfs.watch=[Enables file system watching. Reuses file system data for subsequent builds.]:org.gradle.vfs.watch:(true false):->argument-expected' \
|
'-Dorg.gradle.vfs.watch=[Enables file system watching. Reuses file system data for subsequent builds.]:org.gradle.vfs.watch:(true false):->argument-expected' \
|
||||||
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]:->argument-expected' \
|
'-Dorg.gradle.warning.mode=[Specifies which mode of warnings to generate. Supported values are 'all', 'fail', 'summary' (default), or 'none'.]:->argument-expected' \
|
||||||
@@ -470,14 +466,12 @@ _gradle() {
|
|||||||
\*'--include-build[Includes the specified build in the composite.]:include build:_directories:->argument-expected' \
|
\*'--include-build[Includes the specified build in the composite.]:include build:_directories:->argument-expected' \
|
||||||
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Sets the log level to info.]' \
|
(--quiet,-q,--warn,-w,--debug,-d){-i,--info}'[Sets the log level to info.]' \
|
||||||
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle(|.kts):->argument-expected' \
|
\*{-I,--init-script}'[Specifies an initialization script.]:init script:_files -g \*.gradle(|.kts):->argument-expected' \
|
||||||
(--no-isolated-projects)'--isolated-projects[Enables Isolated Projects. Projects are configured in parallel. Implies `--configuration-cache`. (incubating)]' \
|
|
||||||
'--max-workers[Configures the maximum number of concurrent workers Gradle is allowed to use.]:->argument-expected' \
|
'--max-workers[Configures the maximum number of concurrent workers Gradle is allowed to use.]:->argument-expected' \
|
||||||
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
(--build-cache)'--no-build-cache[Disables the Gradle build cache.]' \
|
||||||
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
(--configuration-cache)'--no-configuration-cache[Disables the configuration cache.]' \
|
||||||
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
(--configure-on-demand)'--no-configure-on-demand[Disables the use of configuration on demand. (incubating)]' \
|
||||||
(--continue)'--no-continue[Stops task execution after a task failure.]' \
|
(--continue)'--no-continue[Stops task execution after a task failure.]' \
|
||||||
(--daemon)'--no-daemon[Runs the build without the Gradle daemon. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
(--daemon)'--no-daemon[Runs the build without the Gradle daemon. Useful occasionally if you have configured Gradle to always run with the daemon by default.]' \
|
||||||
(--isolated-projects)'--no-isolated-projects[Disables Isolated Projects. (incubating)]' \
|
|
||||||
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
||||||
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
||||||
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
||||||
|
|||||||
@@ -19,54 +19,35 @@ plugins=(... jj)
|
|||||||
| jjbd | `jj bookmark delete` |
|
| jjbd | `jj bookmark delete` |
|
||||||
| jjbf | `jj bookmark forget` |
|
| jjbf | `jj bookmark forget` |
|
||||||
| jjbl | `jj bookmark list` |
|
| jjbl | `jj bookmark list` |
|
||||||
| jjblt | `jj bookmark list --tracked` |
|
|
||||||
| jjbm | `jj bookmark move` |
|
| jjbm | `jj bookmark move` |
|
||||||
| jjbr | `jj bookmark rename` |
|
| jjbr | `jj bookmark rename` |
|
||||||
| jjbs | `jj bookmark set` |
|
| jjbs | `jj bookmark set` |
|
||||||
| jjbt | `jj bookmark track` |
|
| jjbt | `jj bookmark track` |
|
||||||
| jjbu | `jj bookmark untrack` |
|
| jjbu | `jj bookmark untrack` |
|
||||||
| jjc | `jj commit` |
|
| jjc | `jj commit` |
|
||||||
| jjcfg | `jj config` |
|
|
||||||
| jjcfgl | `jj config list` |
|
|
||||||
| jjcmsg | `jj commit --message` |
|
| jjcmsg | `jj commit --message` |
|
||||||
| jjd | `jj diff` |
|
| jjd | `jj diff` |
|
||||||
| jjdmsg | `jj desc --message` |
|
| jjdmsg | `jj desc --message` |
|
||||||
| jjds | `jj desc` |
|
| jjds | `jj desc` |
|
||||||
| jjdst | `jj diff --stat` |
|
|
||||||
| jje | `jj edit` |
|
| jje | `jj edit` |
|
||||||
| jjev | `jj evolog` |
|
|
||||||
| jjf | `jj file` |
|
|
||||||
| jjfl | `jj file list` |
|
|
||||||
| jjg | `jj git` |
|
|
||||||
| jjgcl | `jj git clone` |
|
| jjgcl | `jj git clone` |
|
||||||
| jjgf | `jj git fetch` |
|
| jjgf | `jj git fetch` |
|
||||||
| jjgfa | `jj git fetch --all-remotes` |
|
| jjgfa | `jj git fetch --all-remotes` |
|
||||||
| jjgi | `jj git init` |
|
|
||||||
| jjgp | `jj git push` |
|
| jjgp | `jj git push` |
|
||||||
| jjgpa | `jj git push --all` |
|
| jjgpa | `jj git push --all` |
|
||||||
| jjgpd | `jj git push --deleted` |
|
| jjgpd | `jj git push --deleted` |
|
||||||
| jjgpt | `jj git push --tracked` |
|
| jjgpt | `jj git push --tracked` |
|
||||||
| jjgrl | `jj git remote list` |
|
|
||||||
| jjl | `jj log` |
|
| jjl | `jj log` |
|
||||||
| jjla | `jj log -r "all()"` |
|
| jjla | `jj log -r "all()"` |
|
||||||
| jjn | `jj new` |
|
| jjn | `jj new` |
|
||||||
| jjnt | `jj new "trunk()"` |
|
| jjnt | `jj new "trunk()"` |
|
||||||
| jjop | `jj op` |
|
|
||||||
| jjopl | `jj op log` |
|
|
||||||
| jjor | `jj op restore` |
|
|
||||||
| jjrb | `jj rebase` |
|
| jjrb | `jj rebase` |
|
||||||
| jjrbm | `jj rebase -d "trunk()"` |
|
| jjrbm | `jj rebase -d "trunk()"` |
|
||||||
| jjrs | `jj restore` |
|
| jjrs | `jj restore` |
|
||||||
| jjrt | `cd "$(jj root \|\| echo .)"` |
|
| jjrt | `cd "$(jj root \|\| echo .)"` |
|
||||||
| jjs | `jj show` |
|
|
||||||
| jjsp | `jj split` |
|
| jjsp | `jj split` |
|
||||||
| jjsq | `jj squash` |
|
| jjsq | `jj squash` |
|
||||||
| jjst | `jj status` |
|
| jjst | `jj status` |
|
||||||
| jju | `jj undo` |
|
|
||||||
| jjw | `jj workspace` |
|
|
||||||
| jjwa | `jj workspace add` |
|
|
||||||
| jjwf | `jj workspace forget` |
|
|
||||||
| jjwl | `jj workspace list` |
|
|
||||||
|
|
||||||
## Prompt usage
|
## Prompt usage
|
||||||
|
|
||||||
|
|||||||
@@ -45,51 +45,34 @@ alias jjbc='jj bookmark create'
|
|||||||
alias jjbd='jj bookmark delete'
|
alias jjbd='jj bookmark delete'
|
||||||
alias jjbf='jj bookmark forget'
|
alias jjbf='jj bookmark forget'
|
||||||
alias jjbl='jj bookmark list'
|
alias jjbl='jj bookmark list'
|
||||||
alias jjblt='jj bookmark list --tracked'
|
|
||||||
alias jjbm='jj bookmark move'
|
alias jjbm='jj bookmark move'
|
||||||
alias jjbr='jj bookmark rename'
|
alias jjbr='jj bookmark rename'
|
||||||
alias jjbs='jj bookmark set'
|
alias jjbs='jj bookmark set'
|
||||||
alias jjbt='jj bookmark track'
|
alias jjbt='jj bookmark track'
|
||||||
alias jjbu='jj bookmark untrack'
|
alias jjbu='jj bookmark untrack'
|
||||||
alias jjc='jj commit'
|
alias jjc='jj commit'
|
||||||
alias jjcfg='jj config'
|
|
||||||
alias jjcfgl='jj config list'
|
|
||||||
alias jjcmsg='jj commit --message'
|
alias jjcmsg='jj commit --message'
|
||||||
alias jjd='jj diff'
|
alias jjd='jj diff'
|
||||||
alias jjdmsg='jj desc --message'
|
alias jjdmsg='jj desc --message'
|
||||||
alias jjds='jj desc'
|
alias jjds='jj desc'
|
||||||
alias jjdst='jj diff --stat'
|
|
||||||
alias jje='jj edit'
|
alias jje='jj edit'
|
||||||
alias jjev='jj evolog'
|
|
||||||
alias jjf='jj file'
|
|
||||||
alias jjfl='jj file list'
|
|
||||||
alias jjg='jj git'
|
|
||||||
alias jjgcl='jj git clone'
|
alias jjgcl='jj git clone'
|
||||||
alias jjgf='jj git fetch'
|
alias jjgf='jj git fetch'
|
||||||
alias jjgfa='jj git fetch --all-remotes'
|
alias jjgfa='jj git fetch --all-remotes'
|
||||||
alias jjgi='jj git init'
|
|
||||||
alias jjgp='jj git push'
|
alias jjgp='jj git push'
|
||||||
alias jjgpa='jj git push --all'
|
alias jjgpa='jj git push --all'
|
||||||
alias jjgpd='jj git push --deleted'
|
alias jjgpd='jj git push --deleted'
|
||||||
alias jjgpt='jj git push --tracked'
|
alias jjgpt='jj git push --tracked'
|
||||||
alias jjgrl='jj git remote list'
|
|
||||||
alias jjl='jj log'
|
alias jjl='jj log'
|
||||||
alias jjla='jj log -r "all()"'
|
alias jjla='jj log -r "all()"'
|
||||||
alias jjn='jj new'
|
alias jjn='jj new'
|
||||||
alias jjnt='jj new "trunk()"'
|
alias jjnt='jj new "trunk()"'
|
||||||
alias jjop='jj op'
|
|
||||||
alias jjopl='jj op log'
|
|
||||||
alias jjor='jj op restore'
|
|
||||||
alias jjrb='jj rebase'
|
alias jjrb='jj rebase'
|
||||||
alias jjrbm='jj rebase -d "trunk()"'
|
alias jjrbm='jj rebase -d "trunk()"'
|
||||||
alias jjrs='jj restore'
|
alias jjrs='jj restore'
|
||||||
alias jjrt='cd "$(jj root || echo .)"'
|
alias jjrt='cd "$(jj root || echo .)"'
|
||||||
alias jjs='jj show'
|
|
||||||
alias jjsp='jj split'
|
alias jjsp='jj split'
|
||||||
alias jjsq='jj squash'
|
alias jjsq='jj squash'
|
||||||
alias jjst='jj status'
|
alias jjst='jj status'
|
||||||
alias jju='jj undo'
|
|
||||||
alias jjw='jj workspace'
|
|
||||||
alias jjwa='jj workspace add'
|
alias jjwa='jj workspace add'
|
||||||
alias jjwf='jj workspace forget'
|
alias jjwf='jj workspace forget'
|
||||||
alias jjwl='jj workspace list'
|
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ alias jdlr='juju debug-log --ms --replay'
|
|||||||
alias jcon='juju consume'
|
alias jcon='juju consume'
|
||||||
alias jeb='juju export-bundle'
|
alias jeb='juju export-bundle'
|
||||||
alias jex='juju expose'
|
alias jex='juju expose'
|
||||||
alias junex='juju unexpose'
|
|
||||||
alias jh='juju help'
|
alias jh='juju help'
|
||||||
alias jkc='juju kill-controller -y -t 0'
|
alias jkc='juju kill-controller -y -t 0'
|
||||||
alias jm='juju models'
|
alias jm='juju models'
|
||||||
|
|||||||
@@ -71,7 +71,6 @@ plugins=(... kubectl)
|
|||||||
| | | **Secret management** |
|
| | | **Secret management** |
|
||||||
| kgsec | `kubectl get secret` | Get secret for decoding |
|
| kgsec | `kubectl get secret` | Get secret for decoding |
|
||||||
| kgseca | `kubectl get secret --all-namespaces` | List secrets across all namespaces |
|
| kgseca | `kubectl get secret --all-namespaces` | List secrets across all namespaces |
|
||||||
| kesec | `kubectl edit secret` | Edit secret resource |
|
|
||||||
| kdsec | `kubectl describe secret` | Describe secret resource in detail |
|
| kdsec | `kubectl describe secret` | Describe secret resource in detail |
|
||||||
| kdelsec | `kubectl delete secret` | Delete the secret |
|
| kdelsec | `kubectl delete secret` | Delete the secret |
|
||||||
| | | **Deployment management** |
|
| | | **Deployment management** |
|
||||||
|
|||||||
@@ -93,7 +93,6 @@ alias kdelcm='kubectl delete configmap'
|
|||||||
# Secret management
|
# Secret management
|
||||||
alias kgsec='kubectl get secret'
|
alias kgsec='kubectl get secret'
|
||||||
alias kgseca='kubectl get secret --all-namespaces'
|
alias kgseca='kubectl get secret --all-namespaces'
|
||||||
alias kesec='kubectl edit secret'
|
|
||||||
alias kdsec='kubectl describe secret'
|
alias kdsec='kubectl describe secret'
|
||||||
alias kdelsec='kubectl delete secret'
|
alias kdelsec='kubectl delete secret'
|
||||||
|
|
||||||
|
|||||||
@@ -42,8 +42,6 @@ plugins=(... laravel)
|
|||||||
| `pamen` | `php artisan make:enum` |
|
| `pamen` | `php artisan make:enum` |
|
||||||
| `pami` | `php artisan make:interface` |
|
| `pami` | `php artisan make:interface` |
|
||||||
| `pamtr` | `php artisan make:trait` |
|
| `pamtr` | `php artisan make:trait` |
|
||||||
| `pamv` | `php artisan make:view` |
|
|
||||||
| `pammig` | `php artisan make:migration` |
|
|
||||||
|
|
||||||
## Clears
|
## Clears
|
||||||
|
|
||||||
|
|||||||
@@ -31,8 +31,6 @@ alias pamcl='php artisan make:class'
|
|||||||
alias pamen='php artisan make:enum'
|
alias pamen='php artisan make:enum'
|
||||||
alias pami='php artisan make:interface'
|
alias pami='php artisan make:interface'
|
||||||
alias pamtr='php artisan make:trait'
|
alias pamtr='php artisan make:trait'
|
||||||
alias pamv='php artisan make:view'
|
|
||||||
alias pammig='php artisan make:migration'
|
|
||||||
|
|
||||||
|
|
||||||
# Clears
|
# Clears
|
||||||
|
|||||||
@@ -1,111 +0,0 @@
|
|||||||
# opencode plugin
|
|
||||||
|
|
||||||
This plugin adds completion and aliases for the [OpenCode](https://opencode.ai) CLI.
|
|
||||||
Install OpenCode using its [installation instructions](https://opencode.ai/docs/#install),
|
|
||||||
and make sure `opencode` is available on your `$PATH`.
|
|
||||||
|
|
||||||
To enable it, add `opencode` to the plugins array in your `.zshrc`:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
plugins=(... opencode)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Learning OpenCode from the terminal
|
|
||||||
|
|
||||||
Use tab completion to explore commands and their descriptions without leaving the
|
|
||||||
shell. For example, these are some of the candidates shown by the CLI:
|
|
||||||
|
|
||||||
```text
|
|
||||||
$ opencode <TAB>
|
|
||||||
agent -- manage agents
|
|
||||||
models -- list all available models
|
|
||||||
run -- run opencode with a message
|
|
||||||
session -- manage sessions
|
|
||||||
stats -- show token usage and cost statistics
|
|
||||||
...
|
|
||||||
|
|
||||||
$ opencode session <TAB>
|
|
||||||
delete -- delete a session
|
|
||||||
list -- list sessions
|
|
||||||
|
|
||||||
$ opencode run --<TAB>
|
|
||||||
--agent -- agent to use
|
|
||||||
--continue -- continue the last session
|
|
||||||
--file -- file(s) to attach to message
|
|
||||||
--model -- model to use in the format of provider/model
|
|
||||||
...
|
|
||||||
```
|
|
||||||
|
|
||||||
Completion works through the aliases too. Type a partial command or option and
|
|
||||||
press Tab to finish it:
|
|
||||||
|
|
||||||
```text
|
|
||||||
$ opc session li<TAB>
|
|
||||||
$ opc session list
|
|
||||||
|
|
||||||
$ opcr --att<TAB>
|
|
||||||
$ opcr --attach
|
|
||||||
|
|
||||||
$ opcc --log-l<TAB>
|
|
||||||
$ opcc --log-level
|
|
||||||
```
|
|
||||||
|
|
||||||
Candidates depend on your installed OpenCode version. In OpenCode 1.18.29, the
|
|
||||||
CLI's completion output omits top-level TUI flags such as `--model` and `--fork`,
|
|
||||||
even though those flags work when typed. Use `opencode --help` or
|
|
||||||
`opencode run --help` for the full options, and see the
|
|
||||||
[CLI reference](https://opencode.ai/docs/cli/) for more workflows.
|
|
||||||
|
|
||||||
## Aliases
|
|
||||||
|
|
||||||
| Alias | Command | Description |
|
|
||||||
| ------ | --------------------- | ----------------------------------- |
|
|
||||||
| `opc` | `opencode` | Launch the terminal UI |
|
|
||||||
| `opcc` | `opencode --continue` | Continue the last session |
|
|
||||||
| `opcr` | `opencode run` | Run a prompt without opening the UI |
|
|
||||||
|
|
||||||
To keep completion but skip the aliases, set this in your `.zshrc`, above the line
|
|
||||||
that sources Oh My Zsh:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
# ~/.zshrc
|
|
||||||
zstyle ':omz:plugins:opencode' aliases no
|
|
||||||
|
|
||||||
plugins=(... opencode)
|
|
||||||
|
|
||||||
source $ZSH/oh-my-zsh.sh
|
|
||||||
```
|
|
||||||
|
|
||||||
## Common workflows
|
|
||||||
|
|
||||||
All aliases accept additional arguments:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
# Open a project
|
|
||||||
opc ~/projects/my-app
|
|
||||||
|
|
||||||
# Explore a different approach by forking the last session
|
|
||||||
opcc --fork
|
|
||||||
|
|
||||||
# Ask a question without entering the terminal UI
|
|
||||||
opcr "Explain the test setup in this project"
|
|
||||||
|
|
||||||
# Reuse an already running backend to avoid MCP server cold starts
|
|
||||||
opcr --attach http://localhost:4096 "Explain this project's architecture"
|
|
||||||
```
|
|
||||||
|
|
||||||
## Completion
|
|
||||||
|
|
||||||
Completion queries the installed OpenCode CLI on demand for commands and options,
|
|
||||||
including through the aliases above. It falls back to Zsh's default completion when
|
|
||||||
the CLI returns no candidates. No OpenCode process is started at shell startup,
|
|
||||||
and no generated completion cache is needed.
|
|
||||||
|
|
||||||
## Credits
|
|
||||||
|
|
||||||
Based on the OpenCode plugin proposals by
|
|
||||||
[pranavavva](https://github.com/pranavavva) in
|
|
||||||
[#13545](https://github.com/ohmyzsh/ohmyzsh/pull/13545) and
|
|
||||||
[mskadu](https://github.com/mskadu) in
|
|
||||||
[#13794](https://github.com/ohmyzsh/ohmyzsh/pull/13794).
|
|
||||||
The completion adapter is derived from OpenCode's `opencode completion` output.
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
#compdef opencode
|
|
||||||
|
|
||||||
# Adapted from `opencode completion`, using the CLI's live Yargs completions.
|
|
||||||
local -a reply
|
|
||||||
reply=("${(@f)$(COMP_CWORD="$((CURRENT-1))" COMP_LINE="$BUFFER" COMP_POINT="$CURSOR" \
|
|
||||||
command opencode --get-yargs-completions "${words[@]}" < /dev/null 2> /dev/null)}")
|
|
||||||
|
|
||||||
if [[ -n "${reply[1]}" ]]; then
|
|
||||||
_describe 'values' reply
|
|
||||||
else
|
|
||||||
_default
|
|
||||||
fi
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
if (( ! $+commands[opencode] )); then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
alias opc='opencode'
|
|
||||||
alias opcc='opencode --continue'
|
|
||||||
alias opcr='opencode run'
|
|
||||||
@@ -56,28 +56,21 @@ if zstyle -T ':omz:plugins:pipenv' auto-shell; then
|
|||||||
# deactivate shell if Pipfile doesn't exist and not in a subdir
|
# deactivate shell if Pipfile doesn't exist and not in a subdir
|
||||||
if [[ ! -f "$PWD/Pipfile" ]]; then
|
if [[ ! -f "$PWD/Pipfile" ]]; then
|
||||||
if [[ "$PIPENV_ACTIVE" == 1 ]]; then
|
if [[ "$PIPENV_ACTIVE" == 1 ]]; then
|
||||||
# Compare whole path components: `$pipfile_dir"*` also matches unrelated
|
if [[ "$PWD" != "$pipfile_dir"* ]]; then
|
||||||
# siblings that merely start with the same text (…/proj -> …/proj-docs),
|
|
||||||
# which would keep the virtualenv active outside the project.
|
|
||||||
local project_dir="${pipfile_dir%/}"
|
|
||||||
if [[ "$PWD" != "$project_dir" && "$PWD" != "$project_dir"/* ]]; then
|
|
||||||
unset PIPENV_ACTIVE pipfile_dir
|
unset PIPENV_ACTIVE pipfile_dir
|
||||||
deactivate
|
deactivate
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# activate the shell if Pipfile exists and its virtualenv is usable
|
# activate the shell if Pipfile exists
|
||||||
if [[ "$PIPENV_ACTIVE" != 1 ]]; then
|
if [[ "$PIPENV_ACTIVE" != 1 ]]; then
|
||||||
if [[ -f "$PWD/Pipfile" ]]; then
|
if [[ -f "$PWD/Pipfile" ]]; then
|
||||||
local venv_path
|
|
||||||
if venv_path="$(pipenv --venv 2>/dev/null)" && [[ -n "$venv_path" && -f "$venv_path/bin/activate" ]]; then
|
|
||||||
export pipfile_dir="$PWD"
|
export pipfile_dir="$PWD"
|
||||||
source "$venv_path/bin/activate"
|
source "$(pipenv --venv)/bin/activate"
|
||||||
export PIPENV_ACTIVE=1
|
export PIPENV_ACTIVE=1
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
autoload -U add-zsh-hook
|
autoload -U add-zsh-hook
|
||||||
|
|||||||
@@ -1,9 +1,7 @@
|
|||||||
# Poetry Environment Plugin
|
# Poetry Environment Plugin
|
||||||
|
|
||||||
This plugin automatically activates a Poetry environment when you enter a
|
This plugin automatically changes poetry environment when you cd into or out of the project directory.
|
||||||
directory containing both `pyproject.toml` and `poetry.lock`. It keeps the
|
Note: Script looks for pyproject.toml file to determine poetry if its a poetry environment
|
||||||
environment active in project subdirectories, switches to nested Poetry
|
|
||||||
projects, and deactivates it when you leave the project tree.
|
|
||||||
|
|
||||||
To use it, add `poetry-env` to the plugins array in your zshrc file:
|
To use it, add `poetry-env` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
|
|||||||
@@ -1,29 +1,20 @@
|
|||||||
_togglePoetryShell() {
|
_togglePoetryShell() {
|
||||||
# Determine if currently in a Poetry-managed directory
|
# Determine if currently in a Poetry-managed directory
|
||||||
local in_poetry_dir=0
|
local in_poetry_dir=0
|
||||||
local in_active_poetry_dir=0
|
|
||||||
if [[ -f "$PWD/pyproject.toml" && -f "$PWD/poetry.lock" ]]; then
|
if [[ -f "$PWD/pyproject.toml" && -f "$PWD/poetry.lock" ]]; then
|
||||||
in_poetry_dir=1
|
in_poetry_dir=1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Deactivate when leaving the active project or entering a nested project
|
# Deactivate the current environment if moving out of a Poetry directory or into a different Poetry directory
|
||||||
if [[ $poetry_active -eq 1 ]]; then
|
if [[ $poetry_active -eq 1 ]] && { [[ $in_poetry_dir -eq 0 ]] || [[ "$PWD" != "$poetry_dir"* ]]; }; then
|
||||||
local project_dir="${poetry_dir%/}"
|
|
||||||
if [[ "$PWD" == "$project_dir" || "$PWD" == "$project_dir"/* ]]; then
|
|
||||||
in_active_poetry_dir=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $in_active_poetry_dir -eq 0 ]] ||
|
|
||||||
{ [[ $in_poetry_dir -eq 1 ]] && [[ "$PWD" != "$poetry_dir" ]]; }; then
|
|
||||||
export poetry_active=0
|
export poetry_active=0
|
||||||
unset poetry_dir
|
unset poetry_dir
|
||||||
(( $+functions[deactivate] )) && deactivate
|
(( $+functions[deactivate] )) && deactivate
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
|
|
||||||
# Activate the environment if in a Poetry directory and no environment is currently active
|
# Activate the environment if in a Poetry directory and no environment is currently active
|
||||||
if [[ $in_poetry_dir -eq 1 ]] && [[ $poetry_active -ne 1 ]]; then
|
if [[ $in_poetry_dir -eq 1 ]] && [[ $poetry_active -ne 1 ]]; then
|
||||||
local venv_dir=$(poetry env info --path 2>/dev/null)
|
venv_dir=$(poetry env info --path 2>/dev/null)
|
||||||
# Handle case where poetry returns "." for in-project virtual environments
|
# Handle case where poetry returns "." for in-project virtual environments
|
||||||
if [[ "$venv_dir" == "." ]]; then
|
if [[ "$venv_dir" == "." ]]; then
|
||||||
venv_dir="$PWD/.venv"
|
venv_dir="$PWD/.venv"
|
||||||
|
|||||||
@@ -1,22 +0,0 @@
|
|||||||
# ruff plugin
|
|
||||||
|
|
||||||
This plugin automatically installs [ruff](https://github.com/astral-sh/ruff)'s completions for you,
|
|
||||||
and keeps them up to date. It also adds convenient aliases for common usage.
|
|
||||||
|
|
||||||
To use it, add `ruff` to the plugins array in your zshrc file:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
plugins=(... ruff)
|
|
||||||
```
|
|
||||||
|
|
||||||
## Aliases
|
|
||||||
|
|
||||||
| Alias | Command | Description |
|
|
||||||
| :---- | -------------------- | :----------------------------------------------------------- |
|
|
||||||
| ruc | `ruff check` | Run Ruff linter on the given files or directories |
|
|
||||||
| rucf | `ruff check --fix` | Run Ruff linter and fix auto-fixable issues |
|
|
||||||
| ruf | `ruff format` | Run the Ruff formatter on the given files or directories |
|
|
||||||
| rufc | `ruff format --check`| Check if files are already formatted without making changes |
|
|
||||||
| rur | `ruff rule` | Explain a rule (or all rules) |
|
|
||||||
| rul | `ruff linter` | List all supported upstream linters |
|
|
||||||
| rucl | `ruff clean` | Clear any caches in the current directory and subdirectories |
|
|
||||||
@@ -1,27 +0,0 @@
|
|||||||
# Return immediately if ruff is not found
|
|
||||||
if (( ! ${+commands[ruff]} )); then
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
alias ruc='ruff check'
|
|
||||||
alias rucf='ruff check --fix'
|
|
||||||
alias ruf='ruff format'
|
|
||||||
alias rufc='ruff format --check'
|
|
||||||
alias rur='ruff rule'
|
|
||||||
alias rul='ruff linter'
|
|
||||||
alias rucl='ruff clean'
|
|
||||||
|
|
||||||
# If the completion file doesn't exist yet, we need to autoload it and
|
|
||||||
# bind it. Otherwise, compinit will have already done that.
|
|
||||||
if [[ ! -f "$ZSH_CACHE_DIR/completions/_ruff" ]]; then
|
|
||||||
typeset -g -A _comps
|
|
||||||
autoload -Uz _ruff
|
|
||||||
_comps[ruff]=_ruff
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Overwrites the file each time as completions might change with ruff versions.
|
|
||||||
zmodload -F zsh/files b:zf_mv
|
|
||||||
() {
|
|
||||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_ruff"
|
|
||||||
zf_mv -f -- =( ruff generate-shell-completion zsh ) "$TMPPREFIX"
|
|
||||||
} &|
|
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
# Shopify CLI plugin
|
||||||
|
|
||||||
|
This plugin adds aliases, helper functions and completion for the
|
||||||
|
[Shopify CLI](https://shopify.dev/docs/api/shopify-cli).
|
||||||
|
|
||||||
|
To use it, add `shopify` to the plugins array in your zshrc file:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
plugins=(... shopify)
|
||||||
|
```
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
[Shopify CLI](https://shopify.dev/docs/api/shopify-cli) 4.0 or newer, installed
|
||||||
|
and on your `PATH`. The plugin does nothing if it is not:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
npm install -g @shopify/cli
|
||||||
|
# or
|
||||||
|
brew tap shopify/shopify && brew install shopify-cli
|
||||||
|
```
|
||||||
|
|
||||||
|
## Aliases
|
||||||
|
|
||||||
|
| Alias | Command | Description |
|
||||||
|
| :----- | :-------- | :--------------------- |
|
||||||
|
| `shop` | `shopify` | The Shopify CLI itself |
|
||||||
|
|
||||||
|
## Functions
|
||||||
|
|
||||||
|
| Function | Description |
|
||||||
|
| :------------- | :--------------------------------------------------------------------------------- |
|
||||||
|
| `shopd` | Runs `theme dev`, `app dev` or `hydrogen dev`, whichever fits the current project |
|
||||||
|
| `shopi` | Shows what the current project is connected to |
|
||||||
|
| `shopify_here` | Prints the kind of Shopify project you are in and the commands worth running in it |
|
||||||
|
| `shopify` | Wraps the CLI to confirm before irreversible commands. See Settings |
|
||||||
|
|
||||||
|
`shopd` and `shopi` work out which topic applies by looking at the project you
|
||||||
|
are standing in, so you do not have to remember whether this directory is a
|
||||||
|
theme, an app or a Hydrogen storefront. They complete like the command they
|
||||||
|
stand in for, so in a theme `shopd --<TAB>` offers the flags of
|
||||||
|
`shopify theme dev`.
|
||||||
|
|
||||||
|
## Completion
|
||||||
|
|
||||||
|
Every command completes with a description of what it does, at every level, and
|
||||||
|
so do their flags, short forms and allowed values. `--environment` completes
|
||||||
|
from the `[environments.*]` sections of your local `shopify.theme.toml` or
|
||||||
|
`shopify.app.toml`.
|
||||||
|
|
||||||
|
The Shopify CLI ships no completion generator of its own, so `_shopify` is
|
||||||
|
generated from `shopify commands --json` and kept in this repository. It targets
|
||||||
|
Shopify CLI 4.x.
|
||||||
|
|
||||||
|
## Settings
|
||||||
|
|
||||||
|
Set these with `zstyle` in your zshrc, before Oh My Zsh is sourced.
|
||||||
|
|
||||||
|
### Confirming destructive commands
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
zstyle ':omz:plugins:shopify' confirm-destructive no
|
||||||
|
```
|
||||||
|
|
||||||
|
By default the plugin asks for confirmation before three irreversible
|
||||||
|
operations:
|
||||||
|
|
||||||
|
- `shopify theme push` with `--live`/`-l` or `--publish`/`-p`, which overwrites
|
||||||
|
or publishes the live storefront
|
||||||
|
- `shopify theme delete`, which the CLI's own help describes as impossible to
|
||||||
|
undo
|
||||||
|
- `shopify app deploy --allow-deletes`, which can permanently remove extensions
|
||||||
|
|
||||||
|
Nothing else is intercepted, and the prompt is skipped when the command already
|
||||||
|
carries `--force`/`-f` or when stdin is not a terminal, so scripts, pipelines
|
||||||
|
and CI are unaffected. Set the style to `no` to turn the prompt off entirely.
|
||||||
|
|
||||||
|
### Completing theme IDs
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
zstyle ':omz:plugins:shopify' dynamic-theme-completion yes
|
||||||
|
```
|
||||||
|
|
||||||
|
Off by default. When enabled, `--theme` is completed from
|
||||||
|
`shopify theme list --json`, showing each theme's name and role next to its ID
|
||||||
|
instead of making you copy IDs by hand. It is opt-in because it runs the CLI and
|
||||||
|
makes a network call when you press <kbd>Tab</kbd>, and because it needs you to
|
||||||
|
be authenticated. Results are cached for five minutes.
|
||||||
|
|
||||||
|
### Disabling the aliases
|
||||||
|
|
||||||
|
This works for every Oh My Zsh plugin:
|
||||||
|
|
||||||
|
```zsh
|
||||||
|
zstyle ':omz:plugins:shopify' aliases no
|
||||||
|
```
|
||||||
|
|
||||||
|
## Caveats
|
||||||
|
|
||||||
|
- `shopify` is a shell function here. Run `command shopify` to reach the binary
|
||||||
|
directly.
|
||||||
|
- When a project has its own copy of the CLI in `node_modules/.bin/shopify`,
|
||||||
|
that one is used in preference to the global install. App and Hydrogen
|
||||||
|
projects normally pin the CLI in `package.json`, and running a different
|
||||||
|
global version against them is a common source of confusing errors.
|
||||||
|
- `--password` and `--store-password` are unrelated, and you often need both.
|
||||||
|
`--password` is the CLI's own authentication token, from the Theme Access app
|
||||||
|
or the Admin API. `--store-password` is the password for a
|
||||||
|
password-protected storefront.
|
||||||
|
- `shopify theme push` deletes remote files that are missing locally, and
|
||||||
|
`shopify theme pull` deletes local files that are missing remotely, unless you
|
||||||
|
pass `--nodelete`/`-n`. The plugin does not prompt for these.
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,204 @@
|
|||||||
|
# Shopify CLI: completion, aliases and guard rails.
|
||||||
|
# https://shopify.dev/docs/api/shopify-cli
|
||||||
|
|
||||||
|
if (( ! $+commands[shopify] )); then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Prefer a project-local CLI: app and Hydrogen projects pin their own version.
|
||||||
|
# The walk stops at $HOME so a stray ~/node_modules cannot hijack every project.
|
||||||
|
# $commands avoids resolving back to the wrapper function below.
|
||||||
|
function _shopify_bin() {
|
||||||
|
local dir="$PWD"
|
||||||
|
while [[ -n "$dir" && "$dir" != "/" && "$dir" != "$HOME" ]]; do
|
||||||
|
if [[ -x "$dir/node_modules/.bin/shopify" ]]; then
|
||||||
|
print -r -- "$dir/node_modules/.bin/shopify"
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
dir="${dir:h}"
|
||||||
|
done
|
||||||
|
print -r -- "$commands[shopify]"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Print the project type in $PWD: hydrogen, app or theme.
|
||||||
|
# Hydrogen is tested first because those projects usually carry a
|
||||||
|
# shopify.app.toml too. shopify.theme.toml is not a theme marker: it only
|
||||||
|
# exists once environments are configured.
|
||||||
|
function _shopify_project_type() {
|
||||||
|
local dir="$PWD"
|
||||||
|
local -a app_config
|
||||||
|
|
||||||
|
while [[ -n "$dir" && "$dir" != "/" && "$dir" != "$HOME" ]]; do
|
||||||
|
if [[ -x "$dir/node_modules/.bin/h2" ]] ||
|
||||||
|
[[ -f "$dir/package.json" && "$(<"$dir/package.json")" == *'"@shopify/hydrogen"'* ]]; then
|
||||||
|
print -r -- hydrogen
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
app_config=("$dir"/shopify.app*.toml(N))
|
||||||
|
if (( $#app_config )); then
|
||||||
|
print -r -- app
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ -f "$dir/config/settings_schema.json" && -f "$dir/layout/theme.liquid" ]]; then
|
||||||
|
print -r -- theme
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
dir="${dir:h}"
|
||||||
|
done
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Does this invocation need confirming? Sets REPLY to the reason.
|
||||||
|
function _shopify_is_destructive() {
|
||||||
|
zstyle -T ':omz:plugins:shopify' confirm-destructive || return 1
|
||||||
|
|
||||||
|
# Nobody to answer: CI and pipelines are unaffected.
|
||||||
|
[[ -t 0 ]] || return 1
|
||||||
|
|
||||||
|
local topic="$1" subcommand="$2" arg
|
||||||
|
local -a long
|
||||||
|
local short=""
|
||||||
|
|
||||||
|
# Short flags can be bundled, so collect them as characters: -al counts as l.
|
||||||
|
for arg in "${@[3,-1]}"; do
|
||||||
|
[[ "$arg" == "--" ]] && break
|
||||||
|
case "$arg" in
|
||||||
|
--*) long+=("${arg%%=*}") ;;
|
||||||
|
-?*) short+="${${arg%%=*}#-}" ;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
# An explicit force flag states the intent already.
|
||||||
|
if (( long[(I)--force] )) || [[ "$short" == *f* ]]; then
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$topic $subcommand" in
|
||||||
|
"theme push")
|
||||||
|
if (( long[(I)--live] || long[(I)--publish] )) || [[ "$short" == *[lp]* ]]; then
|
||||||
|
REPLY="this overwrites or publishes the live theme on the storefront."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
"theme delete")
|
||||||
|
REPLY="deleting a theme cannot be undone."
|
||||||
|
return 0
|
||||||
|
;;
|
||||||
|
"app deploy")
|
||||||
|
if (( long[(I)--allow-deletes] )); then
|
||||||
|
REPLY="this can permanently remove app extensions."
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Adds a confirmation prompt before irreversible operations. Everything else
|
||||||
|
# passes straight through, so `theme dev` stays interactive and pipes stay clean.
|
||||||
|
function shopify() {
|
||||||
|
local REPLY
|
||||||
|
if _shopify_is_destructive "$@"; then
|
||||||
|
print -u2 -- "shopify: $REPLY"
|
||||||
|
if ! read -q "?Continue? [y/N] "; then
|
||||||
|
print -u2 -- ""
|
||||||
|
return 130
|
||||||
|
fi
|
||||||
|
print -u2 -- ""
|
||||||
|
fi
|
||||||
|
|
||||||
|
"$(_shopify_bin)" "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Print the commands worth running in the current directory.
|
||||||
|
function shopify_here() {
|
||||||
|
local project_type
|
||||||
|
project_type="$(_shopify_project_type)"
|
||||||
|
|
||||||
|
case "$project_type" in
|
||||||
|
theme)
|
||||||
|
print -- "Shopify theme project."
|
||||||
|
print -- " shopify theme dev Preview locally with live reload"
|
||||||
|
print -- " shopify theme check Lint the theme"
|
||||||
|
print -- " shopify theme list List the themes on the store"
|
||||||
|
print -- " shopify theme pull Download a remote theme into this folder"
|
||||||
|
print -- " shopify theme push Upload this folder to a remote theme"
|
||||||
|
;;
|
||||||
|
app)
|
||||||
|
print -- "Shopify app project."
|
||||||
|
print -- " shopify app dev Run the app against a development store"
|
||||||
|
print -- " shopify app info Show how the app is configured"
|
||||||
|
print -- " shopify app deploy Deploy the app and its extensions"
|
||||||
|
print -- " shopify app logs Stream app logs"
|
||||||
|
;;
|
||||||
|
hydrogen)
|
||||||
|
print -- "Hydrogen storefront."
|
||||||
|
print -- " shopify hydrogen dev Run the storefront locally"
|
||||||
|
print -- " shopify hydrogen build Build for production"
|
||||||
|
print -- " shopify hydrogen deploy Deploy to Oxygen"
|
||||||
|
print -- " shopify hydrogen link Link this project to a storefront"
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
print -- "No Shopify project found here."
|
||||||
|
print -- " shopify theme init Start a new theme"
|
||||||
|
print -- " shopify app init Start a new app"
|
||||||
|
print -- " shopify hydrogen init Start a new Hydrogen storefront"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Run the dev server for whichever kind of project this is.
|
||||||
|
function shopd() {
|
||||||
|
local project_type
|
||||||
|
if ! project_type="$(_shopify_project_type)"; then
|
||||||
|
print -u2 -- "shopd: not inside a Shopify theme, app or Hydrogen project."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
shopify "$project_type" dev "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Show what the current project is connected to.
|
||||||
|
function shopi() {
|
||||||
|
local project_type
|
||||||
|
if ! project_type="$(_shopify_project_type)"; then
|
||||||
|
print -u2 -- "shopi: not inside a Shopify theme, app or Hydrogen project."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
case "$project_type" in
|
||||||
|
hydrogen) shopify hydrogen list "$@" ;;
|
||||||
|
*) shopify "$project_type" info "$@" ;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
# Complete the helpers like the commands they stand in for.
|
||||||
|
if (( $+functions[compdef] )); then
|
||||||
|
_shopd() {
|
||||||
|
local project_type
|
||||||
|
project_type="$(_shopify_project_type)" || return 1
|
||||||
|
words=(shopify "$project_type" dev ${words[2,-1]})
|
||||||
|
(( CURRENT += 2 ))
|
||||||
|
_shopify
|
||||||
|
}
|
||||||
|
|
||||||
|
_shopi() {
|
||||||
|
local project_type
|
||||||
|
project_type="$(_shopify_project_type)" || return 1
|
||||||
|
if [[ "$project_type" == hydrogen ]]; then
|
||||||
|
words=(shopify hydrogen list ${words[2,-1]})
|
||||||
|
else
|
||||||
|
words=(shopify "$project_type" info ${words[2,-1]})
|
||||||
|
fi
|
||||||
|
(( CURRENT += 2 ))
|
||||||
|
_shopify
|
||||||
|
}
|
||||||
|
|
||||||
|
compdef _shopd shopd
|
||||||
|
compdef _shopi shopi
|
||||||
|
fi
|
||||||
|
|
||||||
|
alias shop='shopify'
|
||||||
@@ -19,7 +19,6 @@
|
|||||||
ssm_run_sudo() {sudo $_sublime_merge_path "$@" >/dev/null 2>&1}
|
ssm_run_sudo() {sudo $_sublime_merge_path "$@" >/dev/null 2>&1}
|
||||||
alias ssm=ssm_run_sudo
|
alias ssm=ssm_run_sudo
|
||||||
alias sm=sm_run
|
alias sm=sm_run
|
||||||
alias smerge="'$_sublime_merge_path'"
|
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -34,7 +33,6 @@
|
|||||||
if [[ -a $_sublime_merge_path ]]; then
|
if [[ -a $_sublime_merge_path ]]; then
|
||||||
subm () { "$_sublime_merge_path" "$@" }
|
subm () { "$_sublime_merge_path" "$@" }
|
||||||
alias sm=subm
|
alias sm=subm
|
||||||
alias smerge="'$_sublime_merge_path'"
|
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
@@ -47,7 +45,6 @@
|
|||||||
if [[ -a $_sublime_merge_path ]]; then
|
if [[ -a $_sublime_merge_path ]]; then
|
||||||
subm () { "$_sublime_merge_path" "$@" }
|
subm () { "$_sublime_merge_path" "$@" }
|
||||||
alias sm=subm
|
alias sm=subm
|
||||||
alias smerge="'$_sublime_merge_path'"
|
|
||||||
break
|
break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|||||||
@@ -15,8 +15,8 @@
|
|||||||
# - https://github.com/symfony/symfony/blob/5.4/src/Symfony/Component/Console/Resources/completion.bash
|
# - https://github.com/symfony/symfony/blob/5.4/src/Symfony/Component/Console/Resources/completion.bash
|
||||||
#
|
#
|
||||||
_sf_console() {
|
_sf_console() {
|
||||||
local lastParam out comp sf_cmd
|
local lastParam flagPrefix requestComp out comp
|
||||||
local -a completions flagPrefix requestComp inputs
|
local -a completions
|
||||||
|
|
||||||
# The user could have moved the cursor backwards on the command-line.
|
# The user could have moved the cursor backwards on the command-line.
|
||||||
# We need to trigger completion from the $CURRENT location, so we need
|
# We need to trigger completion from the $CURRENT location, so we need
|
||||||
@@ -29,20 +29,11 @@ _sf_console() {
|
|||||||
setopt local_options BASH_REMATCH
|
setopt local_options BASH_REMATCH
|
||||||
if [[ "${lastParam}" =~ '-.*=' ]]; then
|
if [[ "${lastParam}" =~ '-.*=' ]]; then
|
||||||
# We are dealing with a flag with an =
|
# We are dealing with a flag with an =
|
||||||
flagPrefix=(-P "${BASH_REMATCH}")
|
flagPrefix="-P ${BASH_REMATCH}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Prepare the command to obtain completions. An alias is resolved here,
|
# Prepare the command to obtain completions
|
||||||
# because the request is no longer read again by the shell.
|
requestComp="${words[0]} ${words[1]} _complete --no-interaction -szsh -a1 -c$((CURRENT-1))" i=""
|
||||||
sf_cmd="${words[1]}"
|
|
||||||
if [[ -n "${aliases[$sf_cmd]}" ]]; then
|
|
||||||
requestComp=(${(z)aliases[$sf_cmd]})
|
|
||||||
else
|
|
||||||
requestComp=(${~sf_cmd})
|
|
||||||
fi
|
|
||||||
|
|
||||||
requestComp+=(_complete --no-interaction -szsh -a1 "-c$((CURRENT-1))")
|
|
||||||
|
|
||||||
for w in ${words[@]}; do
|
for w in ${words[@]}; do
|
||||||
w=$(printf -- '%b' "$w")
|
w=$(printf -- '%b' "$w")
|
||||||
# remove quotes from typed values
|
# remove quotes from typed values
|
||||||
@@ -56,18 +47,19 @@ _sf_console() {
|
|||||||
fi
|
fi
|
||||||
# empty values are ignored
|
# empty values are ignored
|
||||||
if [ ! -z "$w" ]; then
|
if [ ! -z "$w" ]; then
|
||||||
inputs+=("-i$w")
|
i="${i}-i${w} "
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
# Ensure at least 1 input
|
# Ensure at least 1 input
|
||||||
if (( ! $#inputs )); then
|
if [ "${i}" = "" ]; then
|
||||||
inputs=(-i' ')
|
requestComp="${requestComp} -i\" \""
|
||||||
|
else
|
||||||
|
requestComp="${requestComp} ${i}"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# The request is run without being read again by the shell, so that a
|
# Use eval to handle any environment variables and such
|
||||||
# "$(...)" or a backtick typed on the command line is not executed
|
out=$(eval ${requestComp} 2>/dev/null)
|
||||||
out=$(SHELL_VERBOSITY=0 "${requestComp[@]}" "${inputs[@]}" 2>/dev/null)
|
|
||||||
|
|
||||||
while IFS='\n' read -r comp; do
|
while IFS='\n' read -r comp; do
|
||||||
if [ -n "$comp" ]; then
|
if [ -n "$comp" ]; then
|
||||||
@@ -83,7 +75,7 @@ _sf_console() {
|
|||||||
done < <(printf "%s\n" "${out[@]}")
|
done < <(printf "%s\n" "${out[@]}")
|
||||||
|
|
||||||
# Let inbuilt _describe handle completions
|
# Let inbuilt _describe handle completions
|
||||||
_describe "completions" completions "${flagPrefix[@]}"
|
eval _describe "completions" completions $flagPrefix
|
||||||
return $?
|
return $?
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +0,0 @@
|
|||||||
# uv Environment Plugin
|
|
||||||
|
|
||||||
This plugin automatically activates the uv virtual environment when you cd into a project directory, and deactivates it when you cd out.
|
|
||||||
Note: Script looks for pyproject.toml and uv.lock files to determine if it's a uv project
|
|
||||||
|
|
||||||
To use it, add `uv-env` to the plugins array in your zshrc file:
|
|
||||||
|
|
||||||
```zsh
|
|
||||||
plugins=(... uv-env)
|
|
||||||
```
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
_toggleUvShell() {
|
|
||||||
local in_uv_dir=0
|
|
||||||
if [[ -f "$PWD/pyproject.toml" && -f "$PWD/uv.lock" ]]; then
|
|
||||||
in_uv_dir=1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $uv_active -eq 1 ]] && { [[ $in_uv_dir -eq 0 ]] || [[ "$PWD" != "$uv_dir" && "$PWD" != "$uv_dir"/* ]]; }; then
|
|
||||||
typeset -g uv_active=0
|
|
||||||
unset uv_dir
|
|
||||||
(( $+functions[deactivate] )) && deactivate
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ $in_uv_dir -eq 1 ]] && [[ $uv_active -ne 1 ]]; then
|
|
||||||
local venv_dir="${UV_PROJECT_ENVIRONMENT:-$PWD/.venv}"
|
|
||||||
[[ "$venv_dir" != /* ]] && venv_dir="$PWD/$venv_dir"
|
|
||||||
|
|
||||||
if [[ -f "${venv_dir}/bin/activate" ]]; then
|
|
||||||
typeset -g uv_active=1
|
|
||||||
typeset -g uv_dir="$PWD"
|
|
||||||
source "${venv_dir}/bin/activate"
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
autoload -Uz add-zsh-hook
|
|
||||||
add-zsh-hook chpwd _toggleUvShell
|
|
||||||
_toggleUvShell
|
|
||||||
@@ -47,7 +47,6 @@ _box_arguments=(
|
|||||||
'help:COMMAND List subcommands'
|
'help:COMMAND List subcommands'
|
||||||
'list:Lists all installed boxes'
|
'list:Lists all installed boxes'
|
||||||
'outdated:Checks if a box has newer version'
|
'outdated:Checks if a box has newer version'
|
||||||
'prune:Removes old versions of installed boxes'
|
|
||||||
'remove:NAME Removes a box from the system'
|
'remove:NAME Removes a box from the system'
|
||||||
'repackage:NAME PROVIDER VERSION Repackages an installed box into a `.box` file'
|
'repackage:NAME PROVIDER VERSION Repackages an installed box into a `.box` file'
|
||||||
'update:Updates box to a newer version, if available'
|
'update:Updates box to a newer version, if available'
|
||||||
@@ -127,7 +126,7 @@ case $state in
|
|||||||
(box)
|
(box)
|
||||||
__vagrant-box
|
__vagrant-box
|
||||||
;;
|
;;
|
||||||
(up|provision|port|package|destroy|reload|ssh|ssh-config|halt|resume|status|suspend|rdp)
|
(up|provision|port|package|destroy|reload|ssh|ssh-config|halt|resume|status)
|
||||||
_arguments ':feature:__vm_list'
|
_arguments ':feature:__vm_list'
|
||||||
esac
|
esac
|
||||||
;;
|
;;
|
||||||
|
|||||||
@@ -51,11 +51,6 @@ Available search contexts are:
|
|||||||
| `npmpkg` | `https://www.npmjs.com/search?q=` |
|
| `npmpkg` | `https://www.npmjs.com/search?q=` |
|
||||||
| `packagist` | `https://packagist.org/?query=` |
|
| `packagist` | `https://packagist.org/?query=` |
|
||||||
| `gopkg` | `https://pkg.go.dev/search?m=package&q=` |
|
| `gopkg` | `https://pkg.go.dev/search?m=package&q=` |
|
||||||
| `maven` | `https://central.sonatype.com/search?q=` |
|
|
||||||
| `pypi` | `https://pypi.org/search/?q=` |
|
|
||||||
| `aur` | `https://aur.archlinux.org/packages?O=0&K=` |
|
|
||||||
| `archwiki` | `https://wiki.archlinux.org/index.php?search=` |
|
|
||||||
| `wikipedia` | `https://en.wikipedia.org/w/index.php?search=` |
|
|
||||||
| `chatgpt` | `https://chatgpt.com/?q=` |
|
| `chatgpt` | `https://chatgpt.com/?q=` |
|
||||||
| `claudeai` | `https://claude.ai/new?q=` |
|
| `claudeai` | `https://claude.ai/new?q=` |
|
||||||
| `grokcom` | `https://grok.com/?q=` |
|
| `grokcom` | `https://grok.com/?q=` |
|
||||||
|
|||||||
@@ -32,11 +32,6 @@ function web_search() {
|
|||||||
npmpkg "https://www.npmjs.com/search?q="
|
npmpkg "https://www.npmjs.com/search?q="
|
||||||
packagist "https://packagist.org/?query="
|
packagist "https://packagist.org/?query="
|
||||||
gopkg "https://pkg.go.dev/search?m=package&q="
|
gopkg "https://pkg.go.dev/search?m=package&q="
|
||||||
maven "https://central.sonatype.com/search?q="
|
|
||||||
pypi "https://pypi.org/search/?q="
|
|
||||||
aur "https://aur.archlinux.org/packages?O=0&K="
|
|
||||||
archwiki "https://wiki.archlinux.org/index.php?search="
|
|
||||||
wikipedia "https://en.wikipedia.org/w/index.php?search="
|
|
||||||
chatgpt "https://chatgpt.com/?q="
|
chatgpt "https://chatgpt.com/?q="
|
||||||
grok "https://grok.com/?q="
|
grok "https://grok.com/?q="
|
||||||
claudeai "https://claude.ai/new?q="
|
claudeai "https://claude.ai/new?q="
|
||||||
@@ -97,11 +92,6 @@ alias gems='web_search gems'
|
|||||||
alias npmpkg='web_search npmpkg'
|
alias npmpkg='web_search npmpkg'
|
||||||
alias packagist='web_search packagist'
|
alias packagist='web_search packagist'
|
||||||
alias gopkg='web_search gopkg'
|
alias gopkg='web_search gopkg'
|
||||||
alias maven='web_search maven'
|
|
||||||
alias pypi='web_search pypi'
|
|
||||||
alias aur='web_search aur'
|
|
||||||
alias archwiki='web_search archwiki'
|
|
||||||
alias wikipedia='web_search wikipedia'
|
|
||||||
alias chatgpt='web_search chatgpt'
|
alias chatgpt='web_search chatgpt'
|
||||||
alias grokcom='web_search grok'
|
alias grokcom='web_search grok'
|
||||||
alias claudeai='web_search claudeai'
|
alias claudeai='web_search claudeai'
|
||||||
@@ -126,3 +116,4 @@ if [[ ${#ZSH_WEB_SEARCH_ENGINES} -gt 0 ]]; then
|
|||||||
done
|
done
|
||||||
unset engines key
|
unset engines key
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ export LSCOLORS=dxFxCxDxBxegedabagacad
|
|||||||
|
|
||||||
local git_branch='$(git_prompt_info)%{$reset_color%}$(git_remote_status)'
|
local git_branch='$(git_prompt_info)%{$reset_color%}$(git_remote_status)'
|
||||||
|
|
||||||
PROMPT="%{%(#~$fg[red]~$fg[green])%}╭─%n@%m %{$reset_color%}%{$fg[yellow]%}in %~ %{$reset_color%}${git_branch}
|
PROMPT="%{$fg[green]%}╭─%n@%m %{$reset_color%}%{$fg[yellow]%}in %~ %{$reset_color%}${git_branch}
|
||||||
%{%(#~$fg[red]~$fg[green])%}╰%(#~#~\$) %{$reset_color%}"
|
%{$fg[green]%}╰\$ %{$reset_color%}"
|
||||||
|
|
||||||
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[yellow]%}on "
|
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[yellow]%}on "
|
||||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
|
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
|
||||||
|
|||||||
@@ -23,32 +23,12 @@ zstyle -s ':omz:update' mode update_mode || {
|
|||||||
# - the automatic update is disabled
|
# - the automatic update is disabled
|
||||||
# - the current user doesn't have write permissions nor owns the $ZSH directory
|
# - the current user doesn't have write permissions nor owns the $ZSH directory
|
||||||
# - is not run from a tty
|
# - is not run from a tty
|
||||||
if [[ "$update_mode" = disabled ]] \
|
|
||||||
|| [[ ! -w "$ZSH" || ! -O "$ZSH" ]] \
|
|
||||||
|| [[ ! -t 1 && ${POWERLEVEL9K_INSTANT_PROMPT:-off} == off ]]; then
|
|
||||||
unset update_mode
|
|
||||||
return
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Cancel update if it's not time to check yet. This runs before the git checks
|
|
||||||
# below because those fork on every startup. Skipped when a background update
|
|
||||||
# left a result that still needs to be reported (EXIT_STATUS is set).
|
|
||||||
() {
|
|
||||||
local LAST_EPOCH EXIT_STATUS ERROR epoch_target
|
|
||||||
zmodload zsh/datetime
|
|
||||||
source "${ZSH_CACHE_DIR}/.zsh-update" 2>/dev/null || return 1
|
|
||||||
[[ -n "$LAST_EPOCH" && -z "$EXIT_STATUS" ]] || return 1
|
|
||||||
zstyle -s ':omz:update' frequency epoch_target || epoch_target=${UPDATE_ZSH_DAYS:-13}
|
|
||||||
(( ( EPOCHSECONDS / 60 / 60 / 24 - LAST_EPOCH ) < epoch_target ))
|
|
||||||
} && {
|
|
||||||
unset update_mode
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
# Cancel update if:
|
|
||||||
# - git is unavailable on the system
|
# - git is unavailable on the system
|
||||||
# - $ZSH is not a git repository
|
# - $ZSH is not a git repository
|
||||||
if ! command git --version >/dev/null 2>&1 \
|
if [[ "$update_mode" = disabled ]] \
|
||||||
|
|| [[ ! -w "$ZSH" || ! -O "$ZSH" ]] \
|
||||||
|
|| [[ ! -t 1 && ${POWERLEVEL9K_INSTANT_PROMPT:-off} == off ]] \
|
||||||
|
|| ! command git --version >/dev/null 2>&1 \
|
||||||
|| (builtin cd -q "$ZSH"; ! command git rev-parse --is-inside-work-tree &>/dev/null); then
|
|| (builtin cd -q "$ZSH"; ! command git rev-parse --is-inside-work-tree &>/dev/null); then
|
||||||
unset update_mode
|
unset update_mode
|
||||||
return
|
return
|
||||||
|
|||||||
+3
-4
@@ -528,10 +528,9 @@ print_success() {
|
|||||||
"$(fmt_code "$(fmt_link ".zshrc" "file://$zdot/.zshrc" --text)")" \
|
"$(fmt_code "$(fmt_link ".zshrc" "file://$zdot/.zshrc" --text)")" \
|
||||||
"file to select plugins, themes, and options."
|
"file to select plugins, themes, and options."
|
||||||
printf '\n'
|
printf '\n'
|
||||||
printf '%s\n' "• Follow along on X ($(fmt_link @ohmyzsh https://x.com/ohmyzsh)) or Bluesky ($(fmt_link @ohmyz.sh https://bsky.app/profile/ohmyz.sh))"
|
printf '%s\n' "• Follow us on X: $(fmt_link @ohmyzsh https://x.com/ohmyzsh)"
|
||||||
printf '%s\n' "• Questions or ideas? Join the community on $(fmt_link Discord https://discord.gg/ohmyzsh)"
|
printf '%s\n' "• Join our Discord community: $(fmt_link "Discord server" https://discord.gg/ohmyzsh)"
|
||||||
printf '%s\n' "• Help support the project: sponsor us on $(fmt_link "Open Collective" https://opencollective.com/ohmyzsh),"
|
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' " or grab stickers, shirts, and swag from $(fmt_link CommitGoods https://commitgoods.com/ohmyzsh)"
|
|
||||||
printf '%s\n' $FMT_RESET
|
printf '%s\n' $FMT_RESET
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-12
@@ -271,18 +271,9 @@ if LANG= git pull --quiet --rebase $remote $branch; then
|
|||||||
printf '%s %s %s %s /____/ %s %s %s %s\n' $RAINBOW $RESET
|
printf '%s %s %s %s /____/ %s %s %s %s\n' $RAINBOW $RESET
|
||||||
printf '\n'
|
printf '\n'
|
||||||
printf "${BLUE}%s${RESET}\n\n" "$message"
|
printf "${BLUE}%s${RESET}\n\n" "$message"
|
||||||
printf "${BLUE}${BOLD}%s %s %s %s${RESET}\n" \
|
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)"
|
||||||
"Follow along 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)"
|
||||||
"or Bluesky" "($(fmt_link @ohmyz.sh https://bsky.app/profile/ohmyz.sh))"
|
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)"
|
||||||
printf "${BLUE}${BOLD}%s %s${RESET}\n" \
|
|
||||||
"Questions or ideas? Join the community on" \
|
|
||||||
"$(fmt_link Discord https://discord.gg/ohmyzsh)"
|
|
||||||
printf "${BLUE}${BOLD}%s %s,${RESET}\n" \
|
|
||||||
"Help support the project: sponsor us on" \
|
|
||||||
"$(fmt_link "Open Collective" https://opencollective.com/ohmyzsh)"
|
|
||||||
printf "${BLUE}${BOLD}%s %s${RESET}\n" \
|
|
||||||
"or grab stickers, shirts, and swag from" \
|
|
||||||
"$(fmt_link CommitGoods https://commitgoods.com/ohmyzsh)"
|
|
||||||
elif [[ $verbose_mode == minimal ]]; then
|
elif [[ $verbose_mode == minimal ]]; then
|
||||||
printf "${BLUE}%s${RESET}\n" "$message"
|
printf "${BLUE}%s${RESET}\n" "$message"
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user