mirror of
https://github.com/robbyrussell/oh-my-zsh.git
synced 2026-09-21 18:46:06 +02:00
Compare commits
7
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78c871176f | ||
|
|
1595e00f7c | ||
|
|
eb62826522 | ||
|
|
c15b32baa4 | ||
|
|
ffd4c95a4f | ||
|
|
4cdd45338c | ||
|
|
8e5be2cb3a |
@@ -12,7 +12,7 @@ dependencies:
|
||||
plugins/gradle:
|
||||
repo: gradle/gradle-completion
|
||||
branch: master
|
||||
version: e7c881dbef7462bc35ad05328397e1582fe25cb8
|
||||
version: 63578c9bc56134b80766e88957ba0239e6be2343
|
||||
precopy: |
|
||||
set -e
|
||||
find . ! -name _gradle ! -name LICENSE -delete
|
||||
|
||||
@@ -16,7 +16,7 @@ jobs:
|
||||
contents: write # this is needed to push commits and branches
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
||||
uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
certifi==2026.7.22
|
||||
charset-normalizer==3.5.1
|
||||
idna==3.19
|
||||
charset-normalizer==3.5.0
|
||||
idna==3.18
|
||||
PyYAML==6.0.3
|
||||
requests==2.34.2
|
||||
semver==3.0.4
|
||||
|
||||
@@ -26,7 +26,7 @@ jobs:
|
||||
- macos-latest
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
||||
uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
@@ -47,7 +47,7 @@ jobs:
|
||||
- test
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
||||
uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ jobs:
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
||||
uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
@@ -41,3 +41,49 @@ jobs:
|
||||
./themes/*.zsh-theme; do
|
||||
zsh -n "$file" || return 1
|
||||
done
|
||||
|
||||
- name: Focused syntax check for bootstrap-adjacent touched files
|
||||
if: github.event_name == 'pull_request'
|
||||
run: |
|
||||
mapfile -t touched < <(
|
||||
git diff --name-only "${{ github.event.pull_request.base.sha }}" "${{ github.sha }}" \
|
||||
| grep -E '^(lib/bootstrap\.zsh|lib/tests/bootstrap.*\.zsh|oh-my-zsh\.sh|lib/(completion|compfix|functions|theme-and-appearance)\.zsh|plugins/.+/.+\.plugin\.zsh|themes/.+\.zsh-theme)$' \
|
||||
|| true
|
||||
)
|
||||
|
||||
if [ "${#touched[@]}" -eq 0 ]; then
|
||||
echo "No bootstrap-adjacent files touched"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
for file in "${touched[@]}"; do
|
||||
echo "Syntax checking $file"
|
||||
zsh -n "$file"
|
||||
done
|
||||
|
||||
- name: Run bootstrap unit test
|
||||
if: github.event_name == 'pull_request'
|
||||
run: zsh ./lib/tests/bootstrap.test.zsh
|
||||
|
||||
- name: Run inline bootstrap invariants smoke test
|
||||
if: github.event_name == 'pull_request'
|
||||
run: zsh ./lib/tests/bootstrap-inline-ci.test.zsh
|
||||
|
||||
plugin-manager-smoke:
|
||||
name: Plugin manager smoke (${{ matrix.manager }}:${{ matrix.scenario }})
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh' && github.event_name == 'pull_request'
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
manager: [antigen, zinit]
|
||||
scenario: [positive, negative]
|
||||
steps:
|
||||
- name: Set up git repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- name: Install zsh
|
||||
run: sudo apt-get update; sudo apt-get install zsh
|
||||
|
||||
- name: Run plugin-manager bootstrap integration
|
||||
run: zsh ./lib/tests/plugin-manager-bootstrap-integration.test.zsh "${{ matrix.manager }}" "${{ matrix.scenario }}"
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
name: Plugin manager integration (advisory)
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 6 * * *'
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
plugin-manager-matrix:
|
||||
name: ${{ matrix.manager }}:${{ matrix.scenario }}
|
||||
runs-on: ubuntu-latest
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||
continue-on-error: true
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
manager: [antigen, zinit, zgen, zplug, antibody, zulu]
|
||||
scenario: [positive, negative]
|
||||
|
||||
steps:
|
||||
- name: Set up git repository
|
||||
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||
|
||||
- name: Install zsh and go
|
||||
run: sudo apt-get update; sudo apt-get install zsh golang
|
||||
|
||||
- name: Run plugin-manager bootstrap integration
|
||||
run: zsh ./lib/tests/plugin-manager-bootstrap-integration.test.zsh "${{ matrix.manager }}" "${{ matrix.scenario }}"
|
||||
|
||||
- name: Rollout note
|
||||
if: always()
|
||||
run: |
|
||||
echo "Phase 2 active: full manager matrix is advisory/nightly."
|
||||
echo "Phase 3 target: promote full matrix to required after stability window."
|
||||
@@ -17,7 +17,7 @@ jobs:
|
||||
if: github.repository == 'ohmyzsh/ohmyzsh'
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
||||
uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
- name: Authenticate as @ohmyzsh
|
||||
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Harden the runner (Audit all outbound calls)
|
||||
uses: step-security/harden-runner@e14015d583714f6e62063499dc959a02595150a1 # v2.21.1
|
||||
uses: step-security/harden-runner@b09bb98e06d4d774595224525879c09bc6e98c40 # v2.20.1
|
||||
with:
|
||||
egress-policy: audit
|
||||
|
||||
@@ -60,6 +60,6 @@ jobs:
|
||||
retention-days: 5
|
||||
|
||||
- name: "Upload to code-scanning"
|
||||
uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9
|
||||
uses: github/codeql-action/upload-sarif@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7
|
||||
with:
|
||||
sarif_file: results.sarif
|
||||
|
||||
@@ -23,6 +23,7 @@ you would make is not already covered.
|
||||
- [A note on AI-assisted contributions](#a-note-on-ai-assisted-contributions)
|
||||
- [Use the Search, Luke](#use-the-search-luke)
|
||||
- [Commit Guidelines](#commit-guidelines)
|
||||
- [Plugin And Theme Bootstrap Compatibility](#plugin-and-theme-bootstrap-compatibility)
|
||||
- [Format](#format)
|
||||
- [Style](#style)
|
||||
- [Volunteer](#volunteer)
|
||||
@@ -176,6 +177,24 @@ specification. The automatic changelog tool uses these to automatically generate
|
||||
a changelog based on the commit messages. Here's a guide to writing a commit message
|
||||
to allow this:
|
||||
|
||||
### Plugin And Theme Bootstrap Compatibility
|
||||
|
||||
Oh My Zsh now provides a shared bootstrap entrypoint at `lib/bootstrap.zsh` for plugin-manager setups that don't
|
||||
source `oh-my-zsh.sh`.
|
||||
|
||||
When working on plugins/themes:
|
||||
|
||||
- assume bootstrap has already run in manager-driven setups
|
||||
- rely on bootstrap guarantees (`ZSH*` defaults, cache/completions setup, required `fpath` entries)
|
||||
- avoid adding per-plugin/per-theme copies of common setup unless truly plugin-specific
|
||||
|
||||
Common patterns we should migrate away from over time:
|
||||
|
||||
- repeated cache setup logic (`mkdir -p "$ZSH_CACHE_DIR/completions"`)
|
||||
- repeated base `fpath` bootstrapping for OMZ core/custom directories
|
||||
|
||||
If your plugin/theme still needs custom initialization, keep it scoped to that plugin/theme behavior only.
|
||||
|
||||
### Format
|
||||
|
||||
```
|
||||
|
||||
@@ -23,14 +23,6 @@ Twitter), and join us on [Discord](https://discord.gg/ohmyzsh).
|
||||
[](https://mstdn.social/@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>
|
||||
<summary>Table of Contents</summary>
|
||||
|
||||
@@ -54,6 +46,7 @@ Twitter), and join us on [Discord](https://discord.gg/ohmyzsh).
|
||||
- [Manual Installation](#manual-installation)
|
||||
- [Installation Problems](#installation-problems)
|
||||
- [Custom Plugins And Themes](#custom-plugins-and-themes)
|
||||
- [Using Plugin Managers Without `oh-my-zsh.sh`](#using-plugin-managers-without-oh-my-zshsh)
|
||||
- [Enable GNU ls In macOS And FreeBSD Systems](#enable-gnu-ls-in-macos-and-freebsd-systems)
|
||||
- [Skip Aliases](#skip-aliases)
|
||||
- [Async git prompt](#async-git-prompt)
|
||||
@@ -171,19 +164,6 @@ adds any) and extra goodies that are included in that particular plugin.
|
||||
|
||||
### Themes
|
||||
|
||||
Preview installed themes in your current directory without changing your prompt or `.zshrc`:
|
||||
|
||||
```zsh
|
||||
omz theme browse # Interactive browser
|
||||
omz theme browse agn # Start with a theme-name filter
|
||||
omz theme preview agnoster # Print one isolated static preview
|
||||
```
|
||||
|
||||
In the browser, type to filter, use Up/Down or Ctrl-P/Ctrl-N to navigate, and press Enter
|
||||
for explicit use/save actions. Esc or Ctrl-C cancels without applying a theme.
|
||||
See the [theme browser guide](tools/theme-browser/README.md) for shortcuts, preview limitations,
|
||||
and local testing instructions.
|
||||
|
||||
We'll admit it. Early in the Oh My Zsh world, we may have gotten a bit too theme-happy. We have over one
|
||||
hundred and fifty themes now bundled. Most of them have
|
||||
[screenshots](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes) on the wiki (We are working on updating this!).
|
||||
@@ -370,6 +350,120 @@ If you have many functions that go well together, you can put them as a `XYZ.plu
|
||||
If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the
|
||||
same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`.
|
||||
|
||||
### Using Plugin Managers Without `oh-my-zsh.sh`
|
||||
|
||||
Some plugin managers load individual OMZ plugins/themes directly and do not source `oh-my-zsh.sh`.
|
||||
For those setups, source this bootstrap entrypoint before loading any OMZ plugin or theme:
|
||||
|
||||
```zsh
|
||||
source "$ZSH/lib/bootstrap.zsh"
|
||||
```
|
||||
|
||||
#### Bootstrap compatibility contract
|
||||
|
||||
`lib/bootstrap.zsh` is idempotent and is the only required pre-load step for plugin-manager setups.
|
||||
It guarantees:
|
||||
|
||||
- `ZSH`, `ZSH_CUSTOM`, and `ZSH_CACHE_DIR` defaults
|
||||
- writable cache fallback to `${XDG_CACHE_HOME:-$HOME/.cache}/oh-my-zsh`
|
||||
- `$ZSH_CACHE_DIR/completions` directory creation
|
||||
- required OMZ `fpath` entries for plugins/themes:
|
||||
- `$ZSH/functions`
|
||||
- `$ZSH/completions`
|
||||
- `$ZSH_CUSTOM/functions`
|
||||
- `$ZSH_CUSTOM/completions`
|
||||
- `$ZSH_CACHE_DIR/completions`
|
||||
- public signal: `OMZ_IS_BOOTSTRAPPED=true` (for one-time hook guards)
|
||||
|
||||
What still requires `oh-my-zsh.sh`:
|
||||
|
||||
- update checks
|
||||
- plugin auto-discovery from the `plugins=(...)` list
|
||||
- `compinit`/`compfix` orchestration and zcompdump metadata refresh
|
||||
- alias filtering via `:omz:*` zstyles during file sourcing
|
||||
- final full-init signal: `OMZ_IS_LOADED=true`
|
||||
|
||||
#### Plugin manager hook guidance
|
||||
|
||||
Run bootstrap once, before any OMZ plugin/theme load:
|
||||
|
||||
```zsh
|
||||
[[ -n "${OMZ_IS_BOOTSTRAPPED:-}" ]] || source "$ZSH/lib/bootstrap.zsh"
|
||||
```
|
||||
|
||||
- **Antigen** (pre-bundle hook pattern):
|
||||
|
||||
```zsh
|
||||
omz_preload() { [[ -n "${OMZ_IS_BOOTSTRAPPED:-}" ]] || source "$ZSH/lib/bootstrap.zsh"; }
|
||||
omz_preload
|
||||
antigen bundle OMZ::plugins/git
|
||||
antigen apply
|
||||
```
|
||||
|
||||
- **Zinit** (`atinit` pre-load hook):
|
||||
|
||||
```zsh
|
||||
zinit ice atinit'[[ -n "${OMZ_IS_BOOTSTRAPPED:-}" ]] || source "$ZSH/lib/bootstrap.zsh"'
|
||||
zinit snippet OMZ::plugins/git/git.plugin.zsh
|
||||
```
|
||||
|
||||
- **zgen** (pre-load hook function called before OMZ loads):
|
||||
|
||||
```zsh
|
||||
omz_preload() { [[ -n "${OMZ_IS_BOOTSTRAPPED:-}" ]] || source "$ZSH/lib/bootstrap.zsh"; }
|
||||
omz_preload
|
||||
zgen load ohmyzsh/ohmyzsh plugins/git
|
||||
```
|
||||
|
||||
- **zplug** (run pre-load hook immediately before OMZ entries):
|
||||
|
||||
```zsh
|
||||
omz_preload() { [[ -n "${OMZ_IS_BOOTSTRAPPED:-}" ]] || source "$ZSH/lib/bootstrap.zsh"; }
|
||||
omz_preload
|
||||
zplug "plugins/git", from:oh-my-zsh
|
||||
zplug load
|
||||
```
|
||||
|
||||
- **antibody** (run pre-load hook before `antibody bundle`/`source` output):
|
||||
|
||||
```zsh
|
||||
omz_preload() { [[ -n "${OMZ_IS_BOOTSTRAPPED:-}" ]] || source "$ZSH/lib/bootstrap.zsh"; }
|
||||
omz_preload
|
||||
source <(antibody bundle <<'EOF'
|
||||
ohmyzsh/ohmyzsh path:plugins/git
|
||||
EOF
|
||||
)
|
||||
```
|
||||
|
||||
- **zulu** (run pre-load hook before OMZ module loads):
|
||||
|
||||
```zsh
|
||||
omz_preload() { [[ -n "${OMZ_IS_BOOTSTRAPPED:-}" ]] || source "$ZSH/lib/bootstrap.zsh"; }
|
||||
omz_preload
|
||||
zulu install oh-my-zsh
|
||||
```
|
||||
|
||||
Compatibility matrix:
|
||||
|
||||
| Load mode | `OMZ_IS_BOOTSTRAPPED` | `OMZ_IS_LOADED` | Suitable for |
|
||||
| :-- | :--: | :--: | :-- |
|
||||
| `source $ZSH/oh-my-zsh.sh` | ✅ | ✅ | Full OMZ framework features |
|
||||
| `source $ZSH/lib/bootstrap.zsh` + manager-loaded OMZ plugins/themes | ✅ | ❌ | Plugin/theme prerequisites only |
|
||||
|
||||
#### Manager entrypoints and OMZ-side auto-injection limits
|
||||
|
||||
Most plugin managers load OMZ by directly sourcing selected plugin/theme/lib entrypoints, not by sourcing
|
||||
`oh-my-zsh.sh`, so OMZ cannot universally inject bootstrap on its own.
|
||||
|
||||
| Manager | Typical OMZ entrypoint(s) it loads | Can OMZ auto-inject bootstrap without user hook? |
|
||||
| :-- | :-- | :--: |
|
||||
| Antigen | `antigen bundle ...` targets after `antigen use oh-my-zsh` | ❌ |
|
||||
| Zinit | `OMZ::`, `OMZL::`, `OMZP::`, `OMZT::` snippets | ❌ |
|
||||
| zgen | `zgen oh-my-zsh ...` selected OMZ paths | ❌ |
|
||||
| zplug | `from:oh-my-zsh` selected OMZ entries | ❌ |
|
||||
| antibody | `ohmyzsh/ohmyzsh path:...` selected OMZ paths | ❌ |
|
||||
| zulu | OMZ package/module entries selected by zulu | ❌ |
|
||||
|
||||
### Enable GNU ls In macOS And FreeBSD Systems
|
||||
|
||||
<a name="enable-gnu-ls"></a>
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#
|
||||
# Shared Oh My Zsh bootstrap entrypoint.
|
||||
#
|
||||
# This file can be sourced by plugin managers that don't source `oh-my-zsh.sh`.
|
||||
# It is safe to source multiple times.
|
||||
#
|
||||
|
||||
# Keep source path for callers that invoke omz_bootstrap again later.
|
||||
typeset -g _OMZ_BOOTSTRAP_SOURCE="${${(%):-%x}:a}"
|
||||
|
||||
omz_bootstrap() {
|
||||
# If ZSH is not defined, infer from this file location.
|
||||
[[ -n "${ZSH:-}" ]] || export ZSH="${_OMZ_BOOTSTRAP_SOURCE:h:h}"
|
||||
|
||||
# Set ZSH_CUSTOM to the path where custom config files and plugins exist.
|
||||
[[ -n "${ZSH_CUSTOM:-}" ]] || ZSH_CUSTOM="$ZSH/custom"
|
||||
|
||||
# Set cache directory.
|
||||
[[ -n "${ZSH_CACHE_DIR:-}" ]] || ZSH_CACHE_DIR="$ZSH/cache"
|
||||
|
||||
# Ensure cache dir is writable, otherwise fallback to a HOME-based cache.
|
||||
if [[ ! -w "$ZSH_CACHE_DIR" ]]; then
|
||||
ZSH_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/oh-my-zsh"
|
||||
fi
|
||||
|
||||
# Create cache and completions dir.
|
||||
command mkdir -p "$ZSH_CACHE_DIR/completions"
|
||||
|
||||
# Add required OMZ search paths.
|
||||
local dir
|
||||
for dir in \
|
||||
"$ZSH/functions" \
|
||||
"$ZSH/completions" \
|
||||
"$ZSH_CUSTOM/functions" \
|
||||
"$ZSH_CUSTOM/completions" \
|
||||
"$ZSH_CACHE_DIR/completions"; do
|
||||
(( ${fpath[(Ie)$dir]} )) || fpath=("$dir" $fpath)
|
||||
done
|
||||
|
||||
# Public signal: OMZ bootstrap has completed.
|
||||
typeset -g OMZ_IS_BOOTSTRAPPED=true
|
||||
}
|
||||
|
||||
omz_bootstrap "$@"
|
||||
+2
-47
@@ -51,7 +51,7 @@ function _omz {
|
||||
_describe 'command' subcmds ;;
|
||||
pr) subcmds=('clean:Delete all Pull Request branches' 'test:Test a Pull Request')
|
||||
_describe 'command' subcmds ;;
|
||||
theme) subcmds=('browse:Browse theme previews' 'preview:Preview a theme without applying it' 'list:List themes' 'set:Set a theme in your .zshrc file' 'use:Load a theme')
|
||||
theme) subcmds=('list:List themes' 'set:Set a theme in your .zshrc file' 'use:Load a theme')
|
||||
_describe 'command' subcmds ;;
|
||||
esac
|
||||
elif (( CURRENT == 4 )); then
|
||||
@@ -77,10 +77,6 @@ function _omz {
|
||||
local -a opts
|
||||
opts=('--enabled:List enabled plugins only')
|
||||
_describe -o 'options' opts ;;
|
||||
theme::(browse|preview))
|
||||
local -a themes
|
||||
themes=("${(@f)$(source "$ZSH/tools/theme-browser/preview.zsh"; _omz_theme_names)}")
|
||||
_describe 'theme' themes ;;
|
||||
theme::(set|use))
|
||||
local -aU themes
|
||||
themes=("$ZSH"/themes/*.zsh-theme(-.N:t:r) "$ZSH_CUSTOM"/**/*.zsh-theme(-.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::))
|
||||
@@ -523,7 +519,7 @@ function _omz::plugin::load {
|
||||
# Check if it has completion to reload compinit
|
||||
local -a comp_files
|
||||
comp_files=($base/_*(N))
|
||||
(( has_completion )) || has_completion=$(( $#comp_files > 0 ))
|
||||
has_completion=$(( $#comp_files > 0 ))
|
||||
|
||||
# Load the plugin
|
||||
if [[ -f "$base/$plugin.plugin.zsh" ]]; then
|
||||
@@ -753,8 +749,6 @@ Usage: ${(j: :)${(s.::.)0#_}} <command> [options]
|
||||
|
||||
Available commands:
|
||||
|
||||
browse [filter] Browse installed themes without applying them
|
||||
preview <theme> Preview a theme in the current directory
|
||||
list List all available Oh My Zsh themes
|
||||
set <theme> Set a theme in your .zshrc file
|
||||
use <theme> Load a theme
|
||||
@@ -769,45 +763,6 @@ EOF
|
||||
$0::$command "$@"
|
||||
}
|
||||
|
||||
function _omz::theme::preview {
|
||||
if (( $# != 1 )); then
|
||||
print -u2 -r -- 'Usage: omz theme preview <theme>'
|
||||
return 1
|
||||
fi
|
||||
source "$ZSH/tools/theme-browser/preview.zsh"
|
||||
_omz_theme_preview "$1"
|
||||
}
|
||||
|
||||
function _omz::theme::browse {
|
||||
if (( $# > 1 )); then
|
||||
print -u2 -r -- 'Usage: omz theme browse [filter]'
|
||||
return 1
|
||||
fi
|
||||
if [[ ! -o interactive || ! -t 0 || ! -t 1 ]]; then
|
||||
print -u2 -r -- 'omz theme browse requires an interactive terminal; use omz theme preview <theme> instead.'
|
||||
return 1
|
||||
fi
|
||||
source "$ZSH/tools/theme-browser/preview.zsh"
|
||||
source "$ZSH/tools/theme-browser/browser.zsh"
|
||||
local selection action name
|
||||
selection=$(_omz_theme_browser "$1") || return $?
|
||||
[[ -n $selection ]] || return 0
|
||||
action=${selection%%$'\n'*}
|
||||
name=${selection#*$'\n'}
|
||||
_omz_theme_resolve "$name" >/dev/null || return 1
|
||||
case $action in
|
||||
use) _omz::theme::use "$name" ;;
|
||||
set)
|
||||
# The existing set command interpolates the name into shell and awk text.
|
||||
[[ $name != *[^a-zA-Z0-9_./-]* ]] || {
|
||||
print -u2 -r -- 'Cannot save this theme name safely; set ZSH_THEME manually.'
|
||||
return 1
|
||||
}
|
||||
_omz::theme::set "$name" ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
function _omz::theme::list {
|
||||
local -a custom_themes builtin_themes
|
||||
custom_themes=("$ZSH_CUSTOM"/**/*.zsh-theme(-.N:r:gs:"$ZSH_CUSTOM"/themes/:::gs:"$ZSH_CUSTOM"/:::))
|
||||
|
||||
+1
-1
@@ -271,7 +271,7 @@ function _omz_diag_dump_check_core_commands() {
|
||||
unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile
|
||||
zle zmodload zparseopts zregexparse zstyle )
|
||||
if is-at-least 5.1; then
|
||||
reserved_words+=( declare export integer float local readonly typeset )
|
||||
reserved_word+=( declare export integer float local readonly typeset )
|
||||
else
|
||||
builtins+=( declare export integer float local readonly typeset )
|
||||
fi
|
||||
|
||||
+12
-23
@@ -39,27 +39,16 @@ function _omz_git_prompt_info() {
|
||||
echo "${ZSH_THEME_GIT_PROMPT_PREFIX}${ref//\%/%%}${upstream//\%/%%}$(parse_git_dirty)${ZSH_THEME_GIT_PROMPT_SUFFIX}"
|
||||
}
|
||||
|
||||
# Match an extended regular expression against a subject, forcing the C locale
|
||||
# only for the duration of the call.
|
||||
#
|
||||
# OHMYZSH-13330: zsh's "=~" operator delegates to the C library regex, which
|
||||
# aborts with REG_ILLSEQ when the subject contains an invalid byte sequence
|
||||
# under a multibyte locale (e.g. a filename with non-UTF-8 bytes in `git
|
||||
# status` output). Forcing the C locale makes every byte a valid character,
|
||||
# so the regex matching never fails that way. `git status --porcelain` is
|
||||
# locale-independent, so this does not change the parsed output.
|
||||
#
|
||||
# OHMYZSH-13985: the locale must be scoped to this function and not set for
|
||||
# the whole caller. Assigning LC_ALL makes zsh re-run setlocale() right away,
|
||||
# so leaving it set while the rest of the caller runs breaks multibyte
|
||||
# handling there — most visibly, `echo` refuses to expand Unicode escapes in
|
||||
# theme prompt symbols ("character not in range").
|
||||
function _omz_git_prompt_status_match() {
|
||||
local -x LC_ALL=C
|
||||
[[ "$1" =~ "$2" ]]
|
||||
}
|
||||
|
||||
function _omz_git_prompt_status() {
|
||||
# OHMYZSH-13330: avoid "regex matching error: illegal byte sequence".
|
||||
# zsh's "=~" operator delegates to the C library regex, which aborts with
|
||||
# REG_ILLSEQ when the subject contains an invalid byte sequence under a
|
||||
# multibyte locale (e.g. a filename with non-UTF-8 bytes in `git status`
|
||||
# output). Forcing the C locale makes every byte a valid character, so the
|
||||
# regex matching below never fails that way. `git status --porcelain` is
|
||||
# locale-independent, so this does not change the parsed output.
|
||||
local -x LC_ALL=C
|
||||
|
||||
[[ "$(__git_prompt_git config --get oh-my-zsh.hide-status 2>/dev/null)" = 1 ]] && return
|
||||
|
||||
# Maps a git status prefix to an internal constant
|
||||
@@ -124,11 +113,11 @@ function _omz_git_prompt_status() {
|
||||
status_lines=("${(@f)${status_text}}")
|
||||
|
||||
# If the tracking line exists, get and parse it
|
||||
if _omz_git_prompt_status_match "$status_lines[1]" "^## [^ ]+ \[(.*)\]"; then
|
||||
if [[ "$status_lines[1]" =~ "^## [^ ]+ \[(.*)\]" ]]; then
|
||||
local branch_statuses
|
||||
branch_statuses=("${(@s/,/)match}")
|
||||
for branch_status in $branch_statuses; do
|
||||
if ! _omz_git_prompt_status_match "$branch_status" "(behind|diverged|ahead) ([0-9]+)?"; then
|
||||
if [[ ! $branch_status =~ "(behind|diverged|ahead) ([0-9]+)?" ]]; then
|
||||
continue
|
||||
fi
|
||||
local last_parsed_status=$prefix_constant_map[$match[1]]
|
||||
@@ -141,7 +130,7 @@ function _omz_git_prompt_status() {
|
||||
local status_constant="${prefix_constant_map[$status_prefix]}"
|
||||
local status_regex=$'(^|\n)'"$status_prefix"
|
||||
|
||||
if _omz_git_prompt_status_match "$status_text" "$status_regex"; then
|
||||
if [[ "$status_text" =~ $status_regex ]]; then
|
||||
statuses_seen[$status_constant]=1
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -21,7 +21,6 @@ function chruby_prompt_info \
|
||||
azure_prompt_info \
|
||||
tf_prompt_info \
|
||||
conda_prompt_info \
|
||||
go_prompt_info \
|
||||
{
|
||||
return 1
|
||||
}
|
||||
|
||||
Executable
+35
@@ -0,0 +1,35 @@
|
||||
#!/usr/bin/zsh -df
|
||||
|
||||
set -eu
|
||||
|
||||
bootstrap_file="${0:A:h:h}/bootstrap.zsh"
|
||||
|
||||
assert() {
|
||||
local condition="$1" message="$2"
|
||||
if ! eval "$condition"; then
|
||||
print -u2 "\e[31mError\e[0m: $message"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
tmp==(:)
|
||||
mkdir -p "$tmp/ohmyzsh"/{functions,completions,cache} "$tmp/ohmyzsh/custom"/{functions,completions}
|
||||
|
||||
export ZSH="$tmp/ohmyzsh"
|
||||
unset ZSH_CUSTOM ZSH_CACHE_DIR OMZ_IS_BOOTSTRAPPED
|
||||
fpath=()
|
||||
|
||||
source "$bootstrap_file"
|
||||
|
||||
assert '[[ "$OMZ_IS_BOOTSTRAPPED" == true ]]' "OMZ bootstrap signal should be true"
|
||||
assert '[[ -d "$ZSH_CACHE_DIR/completions" ]]' "cache completions directory should exist"
|
||||
assert '[[ "${fpath[(Ie)$ZSH/functions]}" -gt 0 ]]' "fpath should include OMZ functions"
|
||||
assert '[[ "${fpath[(Ie)$ZSH/completions]}" -gt 0 ]]' "fpath should include OMZ completions"
|
||||
assert '[[ "${fpath[(Ie)$ZSH_CUSTOM/functions]}" -gt 0 ]]' "fpath should include custom functions"
|
||||
assert '[[ "${fpath[(Ie)$ZSH_CUSTOM/completions]}" -gt 0 ]]' "fpath should include custom completions"
|
||||
assert '[[ "${fpath[(Ie)$ZSH_CACHE_DIR/completions]}" -gt 0 ]]' "fpath should include cache completions"
|
||||
|
||||
touch "$ZSH_CACHE_DIR/completions/_bootstrap_ci_smoke"
|
||||
assert '[[ -f "$ZSH_CACHE_DIR/completions/_bootstrap_ci_smoke" ]]' "completion cache write should succeed"
|
||||
|
||||
print -u2 "\e[32mSuccess\e[0m bootstrap inline invariants"
|
||||
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/zsh -df
|
||||
|
||||
set -u
|
||||
|
||||
bootstrap_file="${0:A:h:h}/bootstrap.zsh"
|
||||
|
||||
_assert() {
|
||||
local condition="$1" message="$2"
|
||||
if ! eval "$condition"; then
|
||||
print -u2 "\e[31mError\e[0m: $message"
|
||||
return 1
|
||||
fi
|
||||
}
|
||||
|
||||
test_bootstrap_sets_defaults_and_paths() {
|
||||
local tmp==(:)
|
||||
mkdir -p "$tmp/ohmyzsh"/{functions,completions,cache} "$tmp/ohmyzsh/custom"/{functions,completions}
|
||||
|
||||
(
|
||||
set -e
|
||||
export ZSH="$tmp/ohmyzsh"
|
||||
unset ZSH_CUSTOM ZSH_CACHE_DIR OMZ_IS_BOOTSTRAPPED
|
||||
fpath=()
|
||||
source "$bootstrap_file"
|
||||
|
||||
_assert '[[ "$ZSH_CUSTOM" == "'"$tmp/ohmyzsh/custom"'" ]]' "ZSH_CUSTOM default should be set"
|
||||
_assert '[[ "$ZSH_CACHE_DIR" == "'"$tmp/ohmyzsh/cache"'" ]]' "ZSH_CACHE_DIR default should be set"
|
||||
_assert '[[ -d "'"$tmp/ohmyzsh/cache/completions"'" ]]' "completions dir should be created"
|
||||
_assert '[[ "${fpath[(Ie)'"$tmp/ohmyzsh/functions"']}" -gt 0 ]]' "fpath should include OMZ functions dir"
|
||||
_assert '[[ "${fpath[(Ie)'"$tmp/ohmyzsh/completions"']}" -gt 0 ]]' "fpath should include OMZ completions dir"
|
||||
_assert '[[ "${fpath[(Ie)'"$tmp/ohmyzsh/custom/functions"']}" -gt 0 ]]' "fpath should include custom functions dir"
|
||||
_assert '[[ "${fpath[(Ie)'"$tmp/ohmyzsh/custom/completions"']}" -gt 0 ]]' "fpath should include custom completions dir"
|
||||
_assert '[[ "${fpath[(Ie)'"$tmp/ohmyzsh/cache/completions"']}" -gt 0 ]]' "fpath should include cache completions dir"
|
||||
_assert '[[ "$OMZ_IS_BOOTSTRAPPED" == true ]]' "bootstrap signal should be set"
|
||||
)
|
||||
}
|
||||
|
||||
test_bootstrap_is_idempotent() {
|
||||
local tmp==(:)
|
||||
mkdir -p "$tmp/ohmyzsh"/{functions,completions,cache} "$tmp/ohmyzsh/custom"/{functions,completions}
|
||||
|
||||
(
|
||||
set -e
|
||||
export ZSH="$tmp/ohmyzsh"
|
||||
unset ZSH_CUSTOM ZSH_CACHE_DIR OMZ_IS_BOOTSTRAPPED
|
||||
fpath=()
|
||||
source "$bootstrap_file"
|
||||
source "$bootstrap_file"
|
||||
omz_bootstrap
|
||||
|
||||
_assert '[[ ${#fpath} -eq ${#${(u)fpath}} ]]' "fpath entries should not duplicate after repeated bootstrap"
|
||||
_assert '[[ "$OMZ_IS_BOOTSTRAPPED" == true ]]' "bootstrap signal should remain true"
|
||||
)
|
||||
}
|
||||
|
||||
test_bootstrap_uses_writable_cache_fallback() {
|
||||
local tmp==(:)
|
||||
mkdir -p "$tmp/ohmyzsh"/{functions,completions} "$tmp/ohmyzsh/custom"/{functions,completions}
|
||||
mkdir -p "$tmp/no-write" "$tmp/xdg-cache"
|
||||
chmod 0555 "$tmp/no-write"
|
||||
|
||||
(
|
||||
set -e
|
||||
export ZSH="$tmp/ohmyzsh"
|
||||
export XDG_CACHE_HOME="$tmp/xdg-cache"
|
||||
export ZSH_CACHE_DIR="$tmp/no-write"
|
||||
unset ZSH_CUSTOM OMZ_IS_BOOTSTRAPPED
|
||||
fpath=()
|
||||
source "$bootstrap_file"
|
||||
|
||||
_assert '[[ "$ZSH_CACHE_DIR" == "'"$tmp/xdg-cache/oh-my-zsh"'" ]]' "cache dir should fallback when not writable"
|
||||
_assert '[[ -d "'"$tmp/xdg-cache/oh-my-zsh/completions"'" ]]' "fallback completions dir should be created"
|
||||
_assert '[[ "${fpath[(Ie)'"$tmp/xdg-cache/oh-my-zsh/completions"']}" -gt 0 ]]' "fpath should include fallback completions dir"
|
||||
)
|
||||
}
|
||||
|
||||
tests=(
|
||||
test_bootstrap_sets_defaults_and_paths
|
||||
test_bootstrap_is_idempotent
|
||||
test_bootstrap_uses_writable_cache_fallback
|
||||
)
|
||||
|
||||
for test_name in $tests; do
|
||||
print -u2 "Test: $test_name"
|
||||
"$test_name" || exit 1
|
||||
print -u2 "\e[32mSuccess\e[0m"
|
||||
print -u2 ""
|
||||
done
|
||||
+104
@@ -0,0 +1,104 @@
|
||||
#!/usr/bin/zsh -df
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
if (( $# != 2 )); then
|
||||
print -u2 "Usage: $0 <manager> <positive|negative>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
manager="$1"
|
||||
scenario="$2"
|
||||
|
||||
if [[ "$scenario" != "positive" && "$scenario" != "negative" ]]; then
|
||||
print -u2 "scenario must be 'positive' or 'negative'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
repo_root="${0:A:h:h:h}"
|
||||
tmp==(:)
|
||||
workspace="$tmp/workspace"
|
||||
home_dir="$tmp/home"
|
||||
cache_dir="$tmp/cache"
|
||||
zshrc="$tmp/.zshrc"
|
||||
|
||||
mkdir -p "$workspace" "$home_dir" "$cache_dir"
|
||||
|
||||
manager_install=''
|
||||
manager_source=''
|
||||
|
||||
case "$manager" in
|
||||
antigen)
|
||||
manager_install='git clone https://github.com/zsh-users/antigen.git "$MANAGER_HOME/antigen" >/dev/null 2>&1'
|
||||
manager_source='source "$MANAGER_HOME/antigen/antigen.zsh"'
|
||||
;;
|
||||
zinit)
|
||||
manager_install='git clone https://github.com/zdharma-continuum/zinit.git "$MANAGER_HOME/zinit" >/dev/null 2>&1'
|
||||
manager_source='source "$MANAGER_HOME/zinit/zinit.zsh"'
|
||||
;;
|
||||
zgen)
|
||||
manager_install='git clone https://github.com/tarjoilija/zgen.git "$MANAGER_HOME/zgen" >/dev/null 2>&1'
|
||||
manager_source='source "$MANAGER_HOME/zgen/zgen.zsh"'
|
||||
;;
|
||||
zplug)
|
||||
manager_install='git clone https://github.com/zplug/zplug "$MANAGER_HOME/zplug" >/dev/null 2>&1'
|
||||
manager_source='export ZPLUG_HOME="$MANAGER_HOME/zplug"; source "$ZPLUG_HOME/init.zsh"'
|
||||
;;
|
||||
antibody)
|
||||
manager_install='command -v go >/dev/null 2>&1; export GOBIN="$MANAGER_HOME/bin"; mkdir -p "$GOBIN"; go install github.com/getantibody/antibody@latest >/dev/null 2>&1'
|
||||
manager_source='"$MANAGER_HOME/bin/antibody" --version >/dev/null 2>&1'
|
||||
;;
|
||||
zulu)
|
||||
manager_install='git clone https://github.com/zulu-zsh/zulu.git "$MANAGER_HOME/zulu" >/dev/null 2>&1'
|
||||
manager_source='source "$MANAGER_HOME/zulu/zulu.zsh"'
|
||||
;;
|
||||
*)
|
||||
print -u2 "Unsupported manager: $manager"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
cat > "$zshrc" <<RC
|
||||
set -eo pipefail
|
||||
|
||||
export HOME="$home_dir"
|
||||
export XDG_CACHE_HOME="$cache_dir"
|
||||
export OMZ_ROOT="$repo_root"
|
||||
export ZSH="\$OMZ_ROOT"
|
||||
export MANAGER_HOME="$workspace/$manager"
|
||||
mkdir -p "\$MANAGER_HOME"
|
||||
|
||||
$manager_install
|
||||
$manager_source
|
||||
RC
|
||||
|
||||
if [[ "$scenario" == "positive" ]]; then
|
||||
cat >> "$zshrc" <<'RC'
|
||||
source "$OMZ_ROOT/lib/bootstrap.zsh"
|
||||
[[ "${OMZ_IS_BOOTSTRAPPED:-}" == true ]] || { print -u2 "bootstrap signal missing before OMZ load"; return 1; }
|
||||
RC
|
||||
else
|
||||
cat >> "$zshrc" <<'RC'
|
||||
[[ -z "${OMZ_IS_BOOTSTRAPPED:-}" ]] || { print -u2 "bootstrap signal unexpectedly set without hook"; return 1; }
|
||||
source "$OMZ_ROOT/lib/bootstrap.zsh"
|
||||
RC
|
||||
fi
|
||||
|
||||
cat >> "$zshrc" <<RC
|
||||
[[ "\${OMZ_IS_BOOTSTRAPPED:-}" == true ]] || { print -u2 "bootstrap signal not set before OMZ entrypoint sourcing"; return 1; }
|
||||
|
||||
source "\$OMZ_ROOT/lib/functions.zsh"
|
||||
source "\$OMZ_ROOT/plugins/git/git.plugin.zsh"
|
||||
autoload -Uz compinit
|
||||
compinit -i -d "\$ZSH_CACHE_DIR/.zcompdump"
|
||||
|
||||
source "\$OMZ_ROOT/themes/robbyrussell.zsh-theme"
|
||||
|
||||
[[ -d "\$ZSH_CACHE_DIR/completions" ]] || { print -u2 "completions cache directory missing"; return 1; }
|
||||
|
||||
touch "\$ZSH_CACHE_DIR/completions/_ci_${manager}_${scenario}" || { print -u2 "completion cache write failed"; return 1; }
|
||||
[[ -f "\$ZSH_CACHE_DIR/completions/_ci_${manager}_${scenario}" ]] || { print -u2 "completion cache file missing"; return 1; }
|
||||
RC
|
||||
|
||||
zsh -df "$zshrc"
|
||||
print -u2 "\e[32mSuccess\e[0m $manager $scenario"
|
||||
+11
-35
@@ -50,31 +50,14 @@ unset -f omz_f
|
||||
# If ZSH is not defined, use the current script's directory.
|
||||
[[ -n "$ZSH" ]] || export ZSH="${${(%):-%x}:a:h}"
|
||||
|
||||
# Set ZSH_CUSTOM to the path where your custom config files
|
||||
# and plugins exists, or else we will use the default custom/
|
||||
[[ -n "$ZSH_CUSTOM" ]] || ZSH_CUSTOM="$ZSH/custom"
|
||||
|
||||
# Set ZSH_CACHE_DIR to the path where cache files should be created
|
||||
# or else we will use the default cache/
|
||||
[[ -n "$ZSH_CACHE_DIR" ]] || ZSH_CACHE_DIR="$ZSH/cache"
|
||||
|
||||
# Make sure $ZSH_CACHE_DIR is writable, otherwise use a directory in $HOME
|
||||
if [[ ! -w "$ZSH_CACHE_DIR" ]]; then
|
||||
ZSH_CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/oh-my-zsh"
|
||||
fi
|
||||
|
||||
# Create cache and completions dir and add to $fpath
|
||||
[[ -d "$ZSH_CACHE_DIR/completions" ]] || mkdir -p "$ZSH_CACHE_DIR/completions"
|
||||
(( ${fpath[(Ie)$ZSH_CACHE_DIR/completions]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
|
||||
# Shared, manager-agnostic bootstrap.
|
||||
source "$ZSH/lib/bootstrap.zsh"
|
||||
|
||||
# Check for updates on initial load...
|
||||
source "$ZSH/tools/check_for_upgrade.sh"
|
||||
|
||||
# Initializes Oh My Zsh
|
||||
|
||||
# add a function path
|
||||
fpath=($ZSH/{functions,completions} $ZSH_CUSTOM/{functions,completions} $fpath)
|
||||
|
||||
# Load all stock functions (from $fpath files) called below.
|
||||
autoload -U compaudit compinit zrecompile
|
||||
|
||||
@@ -114,17 +97,9 @@ fi
|
||||
zcompdump_revision="#omz revision: $(builtin cd -q "$ZSH"; git rev-parse HEAD 2>/dev/null)"
|
||||
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
|
||||
zcompdump_refresh=0
|
||||
if ! _omz_compdump_has_metadata; then
|
||||
if ! command grep -q -Fx "$zcompdump_revision" "$ZSH_COMPDUMP" 2>/dev/null \
|
||||
|| ! command grep -q -Fx "$zcompdump_fpath" "$ZSH_COMPDUMP" 2>/dev/null; then
|
||||
command rm -f "$ZSH_COMPDUMP"
|
||||
zcompdump_refresh=1
|
||||
fi
|
||||
@@ -142,8 +117,9 @@ else
|
||||
compinit -u -d "$ZSH_COMPDUMP"
|
||||
fi
|
||||
|
||||
# Append zcompdump metadata if missing (compinit may have regenerated the file)
|
||||
if (( zcompdump_refresh )) || ! _omz_compdump_has_metadata; then
|
||||
# Append zcompdump metadata if missing
|
||||
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
|
||||
# See https://github.com/ohmyzsh/ohmyzsh/commit/dd1a7269#commitcomment-39003489
|
||||
tee -a "$ZSH_COMPDUMP" &>/dev/null <<EOF
|
||||
@@ -153,12 +129,9 @@ $zcompdump_fpath
|
||||
EOF
|
||||
fi
|
||||
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.
|
||||
# Test that first so the lock directory and zrecompile are skipped when it's fresh.
|
||||
if [[ ! "${ZSH_COMPDUMP}.zwc" -nt "$ZSH_COMPDUMP" ]] \
|
||||
&& command mkdir "${ZSH_COMPDUMP}.lock" 2>/dev/null; then
|
||||
if command mkdir "${ZSH_COMPDUMP}.lock" 2>/dev/null; then
|
||||
zrecompile -q -p "$ZSH_COMPDUMP"
|
||||
command rm -rf "$ZSH_COMPDUMP.zwc.old" "${ZSH_COMPDUMP}.lock"
|
||||
fi
|
||||
@@ -244,3 +217,6 @@ fi
|
||||
|
||||
# set completion colors to be the same as `ls`, after theme has been loaded
|
||||
[[ -z "$LS_COLORS" ]] || zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"
|
||||
|
||||
# Public signal: full Oh My Zsh init script has completed.
|
||||
typeset -g OMZ_IS_LOADED=true
|
||||
|
||||
@@ -9,11 +9,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_op" ]]; then
|
||||
_comps[op]=_op
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_op"
|
||||
zf_mv -f -- =( op completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
op completion zsh >| "$ZSH_CACHE_DIR/completions/_op" &|
|
||||
|
||||
# Load opswd function
|
||||
autoload -Uz opswd
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_arduino-cli" ]]; then
|
||||
fi
|
||||
|
||||
# Generate and load arduino-cli completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_arduino-cli"
|
||||
zf_mv -f -- =( arduino-cli completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
arduino-cli completion zsh >! "$ZSH_CACHE_DIR/completions/_arduino-cli" &|
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_argocd" ]]; then
|
||||
_comps[argocd]=_argocd
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_argocd"
|
||||
zf_mv -f -- =( argocd completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
argocd completion zsh >| "$ZSH_CACHE_DIR/completions/_argocd" &|
|
||||
|
||||
@@ -12,8 +12,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_asdf" ]]; then
|
||||
autoload -Uz _asdf
|
||||
_comps[asdf]=_asdf
|
||||
fi
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_asdf"
|
||||
zf_mv -f -- =( asdf completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
asdf completion zsh >| "$ZSH_CACHE_DIR/completions/_asdf" &|
|
||||
|
||||
@@ -69,7 +69,7 @@ function asr() {
|
||||
local -a available_regions
|
||||
available_regions=($(aws_regions))
|
||||
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
|
||||
fi
|
||||
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_buf" ]]; then
|
||||
fi
|
||||
|
||||
# Generate and load buf completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_buf"
|
||||
zf_mv -f -- =( buf completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
buf completion zsh >! "$ZSH_CACHE_DIR/completions/_buf" &|
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_bun" ]]; then
|
||||
_comps[bun]=_bun
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_bun"
|
||||
zf_mv -f -- =( SHELL=zsh bun completions ) "$TMPPREFIX"
|
||||
} &|
|
||||
SHELL=zsh bun completions >| "$ZSH_CACHE_DIR/completions/_bun" &|
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_charm" ]]; then
|
||||
_comps[charm]=_charm
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_charm"
|
||||
zf_mv -f -- =( charm completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
charm completion zsh >| "$ZSH_CACHE_DIR/completions/_charm" &|
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_chezmoi" ]]; then
|
||||
_comps[chezmoi]=_chezmoi
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_chezmoi"
|
||||
zf_mv -f -- =( chezmoi completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
chezmoi completion zsh >| "$ZSH_CACHE_DIR/completions/_chezmoi" &|
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_codex" ]]; then
|
||||
_comps[codex]=_codex
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_codex"
|
||||
zf_mv -f -- =( codex completion zsh < /dev/null 2> /dev/null ) "$TMPPREFIX"
|
||||
} &|
|
||||
codex completion zsh < /dev/null 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_codex" &|
|
||||
|
||||
@@ -25,8 +25,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_deno" ]]; then
|
||||
_comps[deno]=_deno
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_deno"
|
||||
zf_mv -f -- =( deno completions zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
deno completions zsh >| "$ZSH_CACHE_DIR/completions/_deno" &|
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
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
|
||||
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:
|
||||
@@ -17,7 +17,6 @@ plugins=(... docker-compose)
|
||||
|-----------|----------------------------------|----------------------------------------------------------------------------------|
|
||||
| dco | `docker-compose` | Docker-compose main command |
|
||||
| dcb | `docker-compose build` | Build containers |
|
||||
| dcc | `docker-compose config` | Parse, resolve and render compose file in canonical format |
|
||||
| dce | `docker-compose exec` | Execute command inside a container |
|
||||
| dcps | `docker-compose ps` | List containers |
|
||||
| dcrestart | `docker-compose restart` | Restart container |
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
|
||||
alias dco="$dccmd"
|
||||
alias dcb="$dccmd build"
|
||||
alias dcc="$dccmd config"
|
||||
alias dce="$dccmd exec"
|
||||
alias dcps="$dccmd ps"
|
||||
alias dcrestart="$dccmd restart"
|
||||
|
||||
@@ -56,19 +56,14 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_docker" ]]; then
|
||||
_comps[docker]=_docker
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
|
||||
local plugin_dir="$1"
|
||||
|
||||
{
|
||||
# `docker completion` is only available from 23.0.0 on
|
||||
# docker version returns `Docker version 24.0.2, build cb74dfcd85`
|
||||
# with `s:,:` remove the comma after the version, and select third word of it
|
||||
if zstyle -t ':omz:plugins:docker' legacy-completion || \
|
||||
! is-at-least 23.0.0 ${${(s:,:z)"$(command docker --version)"}[3]}; then
|
||||
command cp "${plugin_dir}/completions/_docker" "$ZSH_CACHE_DIR/completions/_docker"
|
||||
command cp "${0:h}/completions/_docker" "$ZSH_CACHE_DIR/completions/_docker"
|
||||
else
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_docker"
|
||||
zf_mv -f -- =( command docker completion zsh ) "$TMPPREFIX"
|
||||
command docker completion zsh | tee "$ZSH_CACHE_DIR/completions/_docker" > /dev/null
|
||||
fi
|
||||
} "${0:A:h}" &|
|
||||
} &|
|
||||
|
||||
@@ -14,8 +14,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_doctl" ]]; then
|
||||
_comps[doctl]=_doctl
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_doctl"
|
||||
zf_mv -f -- =( doctl completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
doctl completion zsh >| "$ZSH_CACHE_DIR/completions/_doctl" &|
|
||||
|
||||
@@ -52,13 +52,8 @@ function _configure_eza() {
|
||||
if [[ $_val ]]; then
|
||||
_EZA_TAIL+=("--time-style='$_val'")
|
||||
fi
|
||||
if zstyle -t ':omz:plugins:eza' 'hyperlink'; then
|
||||
# eza >= 0.23 needs an explicit WHEN value
|
||||
if command eza --hyperlink=auto --version &>/dev/null; then
|
||||
_EZA_TAIL+=("--hyperlink=auto")
|
||||
else
|
||||
_EZA_TAIL+=("--hyperlink")
|
||||
fi
|
||||
if zstyle -t ":omz:plugins:eza" "hyperlink"; then
|
||||
_EZA_TAIL+=("--hyperlink")
|
||||
fi
|
||||
}
|
||||
|
||||
|
||||
@@ -30,8 +30,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_flutter" ]]; then
|
||||
_comps[flutter]=_flutter
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_flutter"
|
||||
zf_mv -f -- =( flutter zsh-completion < /dev/null ) "$TMPPREFIX"
|
||||
} &|
|
||||
flutter zsh-completion < /dev/null >| "$ZSH_CACHE_DIR/completions/_flutter" &|
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_flux" ]]; then
|
||||
_comps[flux]=_flux
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_flux"
|
||||
zf_mv -f -- =( flux completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
flux completion zsh >| "$ZSH_CACHE_DIR/completions/_flux" &|
|
||||
|
||||
@@ -10,11 +10,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then
|
||||
_comps[fnm]=_fnm
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_fnm"
|
||||
zf_mv -f -- =( fnm completions --shell=zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &|
|
||||
|
||||
if zstyle -t ':omz:plugins:fnm' autostart; then
|
||||
local -a fnm_env_cmd
|
||||
|
||||
@@ -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"
|
||||
} &|
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_gh" ]]; then
|
||||
_comps[gh]=_gh
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_gh"
|
||||
zf_mv -f -- =( gh completion --shell zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
gh completion --shell zsh >| "$ZSH_CACHE_DIR/completions/_gh" &|
|
||||
|
||||
@@ -137,9 +137,8 @@ function gbda() {
|
||||
# Copied and modified from James Roeder (jmaroeder) under MIT License
|
||||
# https://github.com/jmaroeder/plugin-git/blob/216723ef4f9e8dde399661c39c80bdf73f4076c4/functions/gbda.fish
|
||||
function gbds() {
|
||||
local default_branch
|
||||
default_branch=$(git_main_branch) \
|
||||
|| default_branch=$(git_develop_branch)
|
||||
local default_branch=$(git_main_branch)
|
||||
(( ! $? )) || default_branch=$(git_develop_branch)
|
||||
|
||||
git for-each-ref refs/heads/ "--format=%(refname:short)" | \
|
||||
while read branch; do
|
||||
|
||||
@@ -39,18 +39,3 @@ plugins=(... golang)
|
||||
| gov | `go vet` | Vet examines Go source code and reports suspicious constructs |
|
||||
| gove | `go version` | Prints Go version |
|
||||
| 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 gove='go version'
|
||||
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=[]: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.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.installations.auto-detect=[]' \
|
||||
'-Dorg.gradle.java.installations.auto-download=[]' \
|
||||
@@ -302,6 +299,8 @@ __gradle_subcommand() {
|
||||
'-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.tooling.parallel=[]' \
|
||||
'-Dorg.gradle.unsafe.isolated-projects.diagnostics=[]' \
|
||||
'-Dorg.gradle.unsafe.isolated-projects=[]' \
|
||||
'-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.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' \
|
||||
(--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)' \
|
||||
(--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.]' \
|
||||
(--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[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.]' \
|
||||
(--isolated-projects)'--no-isolated-projects[Disables Isolated Projects. (incubating)]' \
|
||||
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
||||
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
||||
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
||||
@@ -424,9 +421,6 @@ _gradle() {
|
||||
'-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. 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.installations.auto-detect=[]:->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.projectcachedir=[Specifies the project-specific cache directory. Default is .gradle in the root project directory.]:org.gradle.projectcachedir:_directories:->argument-expected' \
|
||||
'-Dorg.gradle.tooling.parallel=[]:->argument-expected' \
|
||||
'-Dorg.gradle.unsafe.isolated-projects.diagnostics=[]:->argument-expected' \
|
||||
'-Dorg.gradle.unsafe.isolated-projects=[]:->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.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' \
|
||||
(--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' \
|
||||
(--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' \
|
||||
(--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[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.]' \
|
||||
(--isolated-projects)'--no-isolated-projects[Disables Isolated Projects. (incubating)]' \
|
||||
(--parallel)'--no-parallel[Disables parallel project execution.]' \
|
||||
(--problems-report)'--no-problems-report[Disables the HTML problems report. (incubating)]' \
|
||||
{-a,--no-rebuild}'[Disables rebuilding of project dependencies.]' \
|
||||
|
||||
@@ -9,9 +9,5 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_hasura" ]]; then
|
||||
source "$ZSH_CACHE_DIR/completions/_hasura"
|
||||
else
|
||||
source "$ZSH_CACHE_DIR/completions/_hasura"
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_hasura"
|
||||
zf_mv -f -- =( hasura completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
hasura completion zsh --file "$ZSH_CACHE_DIR/completions/_hasura" >/dev/null &|
|
||||
fi
|
||||
|
||||
@@ -13,11 +13,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_hcloud" ]]; then
|
||||
_comps[hcloud]=_hcloud
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_hcloud"
|
||||
zf_mv -f -- =( hcloud completion zsh 2> /dev/null ) "$TMPPREFIX"
|
||||
} &|
|
||||
hcloud completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_hcloud" &|
|
||||
|
||||
# Main alias
|
||||
alias hc='hcloud'
|
||||
|
||||
@@ -9,11 +9,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_helm" ]]; then
|
||||
source "$ZSH_CACHE_DIR/completions/_helm"
|
||||
else
|
||||
source "$ZSH_CACHE_DIR/completions/_helm"
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_helm"
|
||||
zf_mv -f -- =( helm completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
helm completion zsh | tee "$ZSH_CACHE_DIR/completions/_helm" >/dev/null &|
|
||||
fi
|
||||
|
||||
alias h='helm'
|
||||
|
||||
@@ -19,54 +19,35 @@ plugins=(... jj)
|
||||
| jjbd | `jj bookmark delete` |
|
||||
| jjbf | `jj bookmark forget` |
|
||||
| jjbl | `jj bookmark list` |
|
||||
| jjblt | `jj bookmark list --tracked` |
|
||||
| jjbm | `jj bookmark move` |
|
||||
| jjbr | `jj bookmark rename` |
|
||||
| jjbs | `jj bookmark set` |
|
||||
| jjbt | `jj bookmark track` |
|
||||
| jjbu | `jj bookmark untrack` |
|
||||
| jjc | `jj commit` |
|
||||
| jjcfg | `jj config` |
|
||||
| jjcfgl | `jj config list` |
|
||||
| jjcmsg | `jj commit --message` |
|
||||
| jjd | `jj diff` |
|
||||
| jjdmsg | `jj desc --message` |
|
||||
| jjds | `jj desc` |
|
||||
| jjdst | `jj diff --stat` |
|
||||
| jje | `jj edit` |
|
||||
| jjev | `jj evolog` |
|
||||
| jjf | `jj file` |
|
||||
| jjfl | `jj file list` |
|
||||
| jjg | `jj git` |
|
||||
| jjgcl | `jj git clone` |
|
||||
| jjgf | `jj git fetch` |
|
||||
| jjgfa | `jj git fetch --all-remotes` |
|
||||
| jjgi | `jj git init` |
|
||||
| jjgp | `jj git push` |
|
||||
| jjgpa | `jj git push --all` |
|
||||
| jjgpd | `jj git push --deleted` |
|
||||
| jjgpt | `jj git push --tracked` |
|
||||
| jjgrl | `jj git remote list` |
|
||||
| jjl | `jj log` |
|
||||
| jjla | `jj log -r "all()"` |
|
||||
| jjn | `jj new` |
|
||||
| jjnt | `jj new "trunk()"` |
|
||||
| jjop | `jj op` |
|
||||
| jjopl | `jj op log` |
|
||||
| jjor | `jj op restore` |
|
||||
| jjrb | `jj rebase` |
|
||||
| jjrbm | `jj rebase -d "trunk()"` |
|
||||
| jjrs | `jj restore` |
|
||||
| jjrt | `cd "$(jj root \|\| echo .)"` |
|
||||
| jjs | `jj show` |
|
||||
| jjsp | `jj split` |
|
||||
| jjsq | `jj squash` |
|
||||
| jjst | `jj status` |
|
||||
| jju | `jj undo` |
|
||||
| jjw | `jj workspace` |
|
||||
| jjwa | `jj workspace add` |
|
||||
| jjwf | `jj workspace forget` |
|
||||
| jjwl | `jj workspace list` |
|
||||
|
||||
## Prompt usage
|
||||
|
||||
|
||||
@@ -11,11 +11,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_jj" ]]; then
|
||||
_comps[jj]=_jj
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_jj"
|
||||
zf_mv -f -- =( COMPLETE=zsh jj ) "$TMPPREFIX"
|
||||
} &|
|
||||
COMPLETE=zsh jj >| "$ZSH_CACHE_DIR/completions/_jj" &|
|
||||
|
||||
function __jj_prompt_jj() {
|
||||
local -a flags
|
||||
@@ -45,51 +41,35 @@ alias jjbc='jj bookmark create'
|
||||
alias jjbd='jj bookmark delete'
|
||||
alias jjbf='jj bookmark forget'
|
||||
alias jjbl='jj bookmark list'
|
||||
alias jjblt='jj bookmark list --tracked'
|
||||
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 jjcfg='jj config'
|
||||
alias jjcfgl='jj config list'
|
||||
alias jjcmsg='jj commit --message'
|
||||
alias jjd='jj diff'
|
||||
alias jjdmsg='jj desc --message'
|
||||
alias jjds='jj desc'
|
||||
alias jjdst='jj diff --stat'
|
||||
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 jjgf='jj git fetch'
|
||||
alias jjgfa='jj git fetch --all-remotes'
|
||||
alias jjgi='jj git init'
|
||||
alias jjgp='jj git push'
|
||||
alias jjgpa='jj git push --all'
|
||||
alias jjgpd='jj git push --deleted'
|
||||
alias jjgpt='jj git push --tracked'
|
||||
alias jjgrl='jj git remote list'
|
||||
alias jjl='jj log'
|
||||
alias jjla='jj log -r "all()"'
|
||||
alias jjn='jj new'
|
||||
alias jjnt='jj new "trunk()"'
|
||||
alias jjop='jj op'
|
||||
alias jjopl='jj op log'
|
||||
alias jjor='jj op restore'
|
||||
alias jjrb='jj rebase'
|
||||
alias jjrbm='jj rebase -d "trunk()"'
|
||||
alias jjrs='jj restore'
|
||||
alias jjrt='cd "$(jj root || echo .)"'
|
||||
alias jjs='jj show'
|
||||
alias jjsp='jj split'
|
||||
alias jjsq='jj squash'
|
||||
alias jjst='jj status'
|
||||
alias jju='jj undo'
|
||||
alias jjw='jj workspace'
|
||||
alias jjwa='jj workspace add'
|
||||
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 jeb='juju export-bundle'
|
||||
alias jex='juju expose'
|
||||
alias junex='juju unexpose'
|
||||
alias jh='juju help'
|
||||
alias jkc='juju kill-controller -y -t 0'
|
||||
alias jm='juju models'
|
||||
|
||||
@@ -11,8 +11,4 @@ fi
|
||||
|
||||
# and then generate it in the background. On first completion,
|
||||
# the actual completion file will be loaded.
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_k9s"
|
||||
zf_mv -f -- =( k9s completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
k9s completion zsh >| "$ZSH_CACHE_DIR/completions/_k9s" &|
|
||||
|
||||
@@ -11,11 +11,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_kind" ]]; then
|
||||
fi
|
||||
|
||||
# Generate and load kind completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_kind"
|
||||
zf_mv -f -- =( kind completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
kind completion zsh >! "$ZSH_CACHE_DIR/completions/_kind" &|
|
||||
|
||||
# Register aliases
|
||||
alias kicc="kind create cluster"
|
||||
|
||||
@@ -71,7 +71,6 @@ plugins=(... kubectl)
|
||||
| | | **Secret management** |
|
||||
| kgsec | `kubectl get secret` | Get secret for decoding |
|
||||
| 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 |
|
||||
| kdelsec | `kubectl delete secret` | Delete the secret |
|
||||
| | | **Deployment management** |
|
||||
|
||||
@@ -10,11 +10,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
|
||||
_comps[kubectl]=_kubectl
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_kubectl"
|
||||
zf_mv -f -- =( kubectl completion zsh 2> /dev/null ) "$TMPPREFIX"
|
||||
} &|
|
||||
kubectl completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_kubectl" &|
|
||||
|
||||
# This command is used a LOT both below and in daily life
|
||||
alias k=kubectl
|
||||
@@ -93,7 +89,6 @@ alias kdelcm='kubectl delete configmap'
|
||||
# Secret management
|
||||
alias kgsec='kubectl get secret'
|
||||
alias kgseca='kubectl get secret --all-namespaces'
|
||||
alias kesec='kubectl edit secret'
|
||||
alias kdsec='kubectl describe secret'
|
||||
alias kdelsec='kubectl delete secret'
|
||||
|
||||
|
||||
@@ -42,8 +42,6 @@ plugins=(... laravel)
|
||||
| `pamen` | `php artisan make:enum` |
|
||||
| `pami` | `php artisan make:interface` |
|
||||
| `pamtr` | `php artisan make:trait` |
|
||||
| `pamv` | `php artisan make:view` |
|
||||
| `pammig` | `php artisan make:migration` |
|
||||
|
||||
## Clears
|
||||
|
||||
|
||||
@@ -31,8 +31,6 @@ alias pamcl='php artisan make:class'
|
||||
alias pamen='php artisan make:enum'
|
||||
alias pami='php artisan make:interface'
|
||||
alias pamtr='php artisan make:trait'
|
||||
alias pamv='php artisan make:view'
|
||||
alias pammig='php artisan make:migration'
|
||||
|
||||
|
||||
# Clears
|
||||
|
||||
@@ -10,8 +10,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_minikube" ]]; then
|
||||
_comps[minikube]=_minikube
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_minikube"
|
||||
zf_mv -f -- =( minikube completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
minikube completion zsh >| "$ZSH_CACHE_DIR/completions/_minikube" &|
|
||||
|
||||
@@ -1,14 +1,9 @@
|
||||
if (( $+commands[mise] )); then
|
||||
_mise_bin=mise
|
||||
elif [[ -x ~/.local/bin/mise ]]; then
|
||||
_mise_bin=~/.local/bin/mise
|
||||
else
|
||||
if (( ! $+commands[mise] )); then
|
||||
return
|
||||
fi
|
||||
|
||||
# Load mise hooks
|
||||
eval "$($_mise_bin activate zsh)"
|
||||
unset _mise_bin
|
||||
eval "$(mise activate zsh)"
|
||||
|
||||
# If the completion file doesn't exist yet, we need to autoload it and
|
||||
# bind it to `mise`. Otherwise, compinit will have already done that.
|
||||
@@ -19,8 +14,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_mise" ]]; then
|
||||
fi
|
||||
|
||||
# Generate and load mise completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_mise"
|
||||
zf_mv -f -- =( mise completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
mise completion zsh >| "$ZSH_CACHE_DIR/completions/_mise" &|
|
||||
|
||||
@@ -11,11 +11,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_molecule" ]]; then
|
||||
_comps[molecule]=_molecule
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_molecule"
|
||||
zf_mv -f -- =( _MOLECULE_COMPLETE=zsh_source molecule ) "$TMPPREFIX"
|
||||
} &|
|
||||
_MOLECULE_COMPLETE=zsh_source molecule >| "$ZSH_CACHE_DIR/completions/_molecule" &|
|
||||
|
||||
# Alias
|
||||
# molecule: https://docs.ansible.com/projects/molecule/
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_atlas" ]]; then
|
||||
_comps[atlas]=_atlas
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_atlas"
|
||||
zf_mv -f -- =( atlas completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
atlas completion zsh >| "$ZSH_CACHE_DIR/completions/atlas" &|
|
||||
|
||||
@@ -7,11 +7,7 @@ if (( $+commands[nsc] )); then
|
||||
_comps[nsc]=_nsc
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_nsc"
|
||||
zf_mv -f -- =( nsc completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
nsc completion zsh >| "$ZSH_CACHE_DIR/completions/_nsc" &|
|
||||
fi
|
||||
|
||||
if (( $+commands[nats] )); then
|
||||
@@ -23,9 +19,5 @@ if (( $+commands[nats] )); then
|
||||
_comps[nats]=_nats
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_nats"
|
||||
zf_mv -f -- =( nats --completion-script-zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
nats --completion-script-zsh >| "$ZSH_CACHE_DIR/completions/_nats" &|
|
||||
fi
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_ngrok" ]]; then
|
||||
_comps[ngrok]=_ngrok
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_ngrok"
|
||||
zf_mv -f -- =( ngrok completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
ngrok completion zsh >| "$ZSH_CACHE_DIR/completions/_ngrok" &|
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_pass-cli" ]]; then
|
||||
_comps[pass-cli]=_pass-cli
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pass-cli"
|
||||
zf_mv -f -- =( pass-cli completions zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
pass-cli completions zsh >| "$ZSH_CACHE_DIR/completions/_pass-cli" &|
|
||||
|
||||
@@ -43,11 +43,7 @@ else
|
||||
_comps[pipenv]=_pipenv
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pipenv"
|
||||
zf_mv -f -- =( _PIPENV_COMPLETE=zsh_source pipenv ) "$TMPPREFIX"
|
||||
} &|
|
||||
_PIPENV_COMPLETE=zsh_source pipenv >| "$ZSH_CACHE_DIR/completions/_pipenv" &|
|
||||
fi
|
||||
|
||||
if zstyle -T ':omz:plugins:pipenv' auto-shell; then
|
||||
@@ -56,26 +52,19 @@ if zstyle -T ':omz:plugins:pipenv' auto-shell; then
|
||||
# deactivate shell if Pipfile doesn't exist and not in a subdir
|
||||
if [[ ! -f "$PWD/Pipfile" ]]; then
|
||||
if [[ "$PIPENV_ACTIVE" == 1 ]]; then
|
||||
# Compare whole path components: `$pipfile_dir"*` also matches unrelated
|
||||
# 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
|
||||
if [[ "$PWD" != "$pipfile_dir"* ]]; then
|
||||
unset PIPENV_ACTIVE pipfile_dir
|
||||
deactivate
|
||||
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 [[ -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"
|
||||
source "$venv_path/bin/activate"
|
||||
export PIPENV_ACTIVE=1
|
||||
fi
|
||||
export pipfile_dir="$PWD"
|
||||
source "$(pipenv --venv)/bin/activate"
|
||||
export PIPENV_ACTIVE=1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -10,11 +10,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_podman" ]]; then
|
||||
_comps[podman]=_podman
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_podman"
|
||||
zf_mv -f -- =( podman completion zsh 2> /dev/null ) "$TMPPREFIX"
|
||||
} &|
|
||||
podman completion zsh 2> /dev/null >| "$ZSH_CACHE_DIR/completions/_podman" &|
|
||||
|
||||
alias pbl='podman build'
|
||||
alias pcin='podman container inspect'
|
||||
|
||||
@@ -1,9 +1,7 @@
|
||||
# Poetry Environment Plugin
|
||||
|
||||
This plugin automatically activates a Poetry environment when you enter a
|
||||
directory containing both `pyproject.toml` and `poetry.lock`. It keeps the
|
||||
environment active in project subdirectories, switches to nested Poetry
|
||||
projects, and deactivates it when you leave the project tree.
|
||||
This plugin automatically changes poetry environment when you cd into or out of the project directory.
|
||||
Note: Script looks for pyproject.toml file to determine poetry if its a poetry environment
|
||||
|
||||
To use it, add `poetry-env` to the plugins array in your zshrc file:
|
||||
|
||||
|
||||
@@ -1,29 +1,20 @@
|
||||
_togglePoetryShell() {
|
||||
# Determine if currently in a Poetry-managed directory
|
||||
local in_poetry_dir=0
|
||||
local in_active_poetry_dir=0
|
||||
if [[ -f "$PWD/pyproject.toml" && -f "$PWD/poetry.lock" ]]; then
|
||||
in_poetry_dir=1
|
||||
fi
|
||||
|
||||
# Deactivate when leaving the active project or entering a nested project
|
||||
if [[ $poetry_active -eq 1 ]]; 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
|
||||
unset poetry_dir
|
||||
(( $+functions[deactivate] )) && deactivate
|
||||
fi
|
||||
# Deactivate the current environment if moving out of a Poetry directory or into a different Poetry directory
|
||||
if [[ $poetry_active -eq 1 ]] && { [[ $in_poetry_dir -eq 0 ]] || [[ "$PWD" != "$poetry_dir"* ]]; }; then
|
||||
export poetry_active=0
|
||||
unset poetry_dir
|
||||
(( $+functions[deactivate] )) && deactivate
|
||||
fi
|
||||
|
||||
# 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
|
||||
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
|
||||
if [[ "$venv_dir" == "." ]]; then
|
||||
venv_dir="$PWD/.venv"
|
||||
|
||||
@@ -39,8 +39,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_poetry" ]]; then
|
||||
_comps[poetry]=_poetry
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_poetry"
|
||||
zf_mv -f -- =( poetry completions zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
poetry completions zsh >| "$ZSH_CACHE_DIR/completions/_poetry" &|
|
||||
|
||||
@@ -10,16 +10,12 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_procs" ]]; then
|
||||
_comps[procs]=_procs
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_procs"
|
||||
{
|
||||
autoload -Uz is-at-least
|
||||
local _version=$(procs --version)
|
||||
zf_mv -f -- =(
|
||||
if is-at-least "0.14" "${_version#procs }"; then
|
||||
procs --gen-completion-out zsh
|
||||
else
|
||||
procs --completion-out zsh
|
||||
fi
|
||||
) "$TMPPREFIX"
|
||||
if is-at-least "0.14" "${_version#procs }"; then
|
||||
procs --gen-completion-out zsh >| "$ZSH_CACHE_DIR/completions/_procs"
|
||||
else
|
||||
procs --completion-out zsh >| "$ZSH_CACHE_DIR/completions/_procs"
|
||||
fi
|
||||
} &|
|
||||
|
||||
@@ -10,11 +10,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_pulumi" ]]; then
|
||||
_comps[pulumi]=_pulumi
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_pulumi"
|
||||
zf_mv -f -- =( pulumi gen-completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
pulumi gen-completion zsh >| "$ZSH_CACHE_DIR/completions/_pulumi" &|
|
||||
|
||||
# Aliases
|
||||
alias pul='pulumi'
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_qodana" ]]; then
|
||||
_comps[qodana]=_qodana
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_qodana"
|
||||
zf_mv -f -- =( qodana completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
qodana completion zsh >| "$ZSH_CACHE_DIR/completions/_qodana" &|
|
||||
|
||||
@@ -54,33 +54,6 @@ plugins=(... rails)
|
||||
| `rta` | `rails test:all` | Runs all Rails tests, including system tests |
|
||||
| `ru` | `rails runner` | Run Ruby code in the context of Rails |
|
||||
|
||||
### Multiple databases
|
||||
|
||||
Rails applications can define more than one database (`primary`, `cache`, `cable`,
|
||||
`queue`, ...), and each one gets its own namespaced task. These commands accept an
|
||||
optional database name as the first argument:
|
||||
|
||||
`rdc`, `rdd`, `rdm`, `rdmd`, `rdmr`, `rdms`, `rdmu`, `rdr`, `rdrs`, `rdsl`
|
||||
|
||||
```zsh
|
||||
rdm # rails db:migrate
|
||||
rdm cache # rails db:migrate:cache
|
||||
rdm VERSION=20231225 # rails db:migrate VERSION=20231225
|
||||
rdm cache STEP=2 # rails db:migrate:cache STEP=2
|
||||
rdm --trace # rails db:migrate --trace
|
||||
```
|
||||
|
||||
The first argument is read as a database name only when it is a bare word. Flags
|
||||
(`--trace`), variables (`STEP=2`) and other tasks (`db:seed`) are passed through to
|
||||
`rails` unchanged, so previous usage keeps working. When a database name is given,
|
||||
the resolved command is printed so it is clear which database is being used.
|
||||
|
||||
`rdmrs` is not in the list above because Rails does not define a per-database
|
||||
`db:migrate:reset` task.
|
||||
|
||||
Note that these are implemented as shell functions rather than aliases, so they will
|
||||
not appear in the output of `alias`.
|
||||
|
||||
### Foreman
|
||||
|
||||
| Alias | Command | Description |
|
||||
|
||||
@@ -47,9 +47,19 @@ alias rc='rails console'
|
||||
alias rcs='rails console --sandbox'
|
||||
alias rd='rails destroy'
|
||||
alias rdb='rails dbconsole'
|
||||
alias rdc='rails db:create'
|
||||
alias rdd='rails db:drop'
|
||||
alias rdm='rails db:migrate'
|
||||
alias rdmd='rails db:migrate:down'
|
||||
alias rdmr='rails db:migrate:redo'
|
||||
alias rdmrs='rails db:migrate:reset'
|
||||
alias rdms='rails db:migrate:status'
|
||||
alias rdmtc='rails db:migrate db:test:clone'
|
||||
alias rdmu='rails db:migrate:up'
|
||||
alias rdr='rails db:rollback'
|
||||
alias rdrs='rails db:reset'
|
||||
alias rds='rails db:seed'
|
||||
alias rdsl='rails db:schema:load'
|
||||
alias rdtc='rails db:test:clone'
|
||||
alias rdtp='rails db:test:prepare'
|
||||
alias rgen='rails generate'
|
||||
@@ -96,47 +106,6 @@ alias rkn='rake notes'
|
||||
alias rksts='rake stats'
|
||||
alias rkt='rake test'
|
||||
|
||||
# Database tasks
|
||||
#
|
||||
# Rails applications can define more than one database (primary, cache, cable,
|
||||
# queue, ...). Each one gets its own namespaced task, e.g. `db:migrate:cache`.
|
||||
# The functions below take an optional database name as the first argument:
|
||||
#
|
||||
# rdm -> rails db:migrate
|
||||
# rdm cache -> rails db:migrate:cache
|
||||
# rdm VERSION=20231225 -> rails db:migrate VERSION=20231225
|
||||
# rdm cache STEP=2 -> rails db:migrate:cache STEP=2
|
||||
# rdm --trace -> rails db:migrate --trace
|
||||
#
|
||||
# The first argument is read as a database name only when it is a bare word.
|
||||
# Flags (--trace), variables (STEP=2) and other tasks (db:seed) are passed
|
||||
# through to rails untouched, so the previous alias behavior still works.
|
||||
function _rails_db_command() {
|
||||
local task="$1"
|
||||
shift
|
||||
|
||||
if [[ $# -gt 0 && "$1" != -* && "$1" != *=* && "$1" != *:* ]]; then
|
||||
task="$task:$1"
|
||||
shift
|
||||
# Echo the resolved task so it is clear which database is being used
|
||||
local -a cmd=(rails "$task" "$@")
|
||||
print -u2 -r -- "Running: ${cmd[*]}"
|
||||
fi
|
||||
|
||||
rails "$task" "$@"
|
||||
}
|
||||
|
||||
function rdc() { _rails_db_command db:create "$@" }
|
||||
function rdd() { _rails_db_command db:drop "$@" }
|
||||
function rdm() { _rails_db_command db:migrate "$@" }
|
||||
function rdmd() { _rails_db_command db:migrate:down "$@" }
|
||||
function rdmr() { _rails_db_command db:migrate:redo "$@" }
|
||||
function rdms() { _rails_db_command db:migrate:status "$@" }
|
||||
function rdmu() { _rails_db_command db:migrate:up "$@" }
|
||||
function rdr() { _rails_db_command db:rollback "$@" }
|
||||
function rdrs() { _rails_db_command db:reset "$@" }
|
||||
function rdsl() { _rails_db_command db:schema:load "$@" }
|
||||
|
||||
# legacy stuff
|
||||
alias sc='ruby script/console'
|
||||
alias sd='ruby script/destroy'
|
||||
|
||||
@@ -10,11 +10,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rbw" ]]; then
|
||||
_comps[rbw]=_rbw
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rbw"
|
||||
zf_mv -f -- =( rbw gen-completions zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
rbw gen-completions zsh >| "$ZSH_CACHE_DIR/completions/_rbw" &|
|
||||
|
||||
# rbwpw function copies the password of a service to the clipboard
|
||||
# and clears it after 20 seconds
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rclone" ]]; then
|
||||
_comps[rclone]=_rclone
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rclone"
|
||||
zf_mv -f -- =( rclone completion zsh - ) "$TMPPREFIX"
|
||||
} &|
|
||||
rclone completion zsh - >| "$ZSH_CACHE_DIR/completions/_rclone" &|
|
||||
|
||||
@@ -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"
|
||||
} &|
|
||||
@@ -19,11 +19,7 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_rustup" ]]; then
|
||||
fi
|
||||
|
||||
# Generate completion files in the background
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_rustup"
|
||||
zf_mv -f -- =( rustup completions zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
rustup completions zsh >| "$ZSH_CACHE_DIR/completions/_rustup" &|
|
||||
cat >| "$ZSH_CACHE_DIR/completions/_cargo" <<'EOF'
|
||||
#compdef cargo
|
||||
source "$(rustup run ${${(z)$(rustup default)}[1]} rustc --print sysroot)"/share/zsh/site-functions/_cargo
|
||||
|
||||
@@ -12,11 +12,7 @@ function install_autocompletion {
|
||||
_comps[$1]=_$1
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_$1"
|
||||
zf_mv -f -- =( $1 completion zsh ) "$TMPPREFIX"
|
||||
} "$1" &|
|
||||
$1 completion zsh >| "$ZSH_CACHE_DIR/completions/_$1" &|
|
||||
}
|
||||
|
||||
install_autocompletion cosign
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_skaffold" ]]; then
|
||||
_comps[skaffold]=_skaffold
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_skaffold"
|
||||
zf_mv -f -- =( skaffold completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
skaffold completion zsh >| "$ZSH_CACHE_DIR/completions/_skaffold" &|
|
||||
|
||||
@@ -101,18 +101,10 @@ if zstyle -t :omz:plugins:ssh-agent agent-forwarding \
|
||||
&& [[ -n "$SSH_AUTH_SOCK" ]]; then
|
||||
if [[ ! -L "$SSH_AUTH_SOCK" ]]; then
|
||||
if [[ -n "$TERMUX_VERSION" ]]; then
|
||||
_omz_ssh_agent_link="$PREFIX"/tmp/ssh-agent-$USERNAME-screen
|
||||
ln -sf "$SSH_AUTH_SOCK" "$PREFIX"/tmp/ssh-agent-$USERNAME-screen
|
||||
else
|
||||
_omz_ssh_agent_link=/tmp/ssh-agent-$USERNAME-screen
|
||||
ln -sf "$SSH_AUTH_SOCK" /tmp/ssh-agent-$USERNAME-screen
|
||||
fi
|
||||
# `ln -sf` unlinks the old symlink and then creates the new one: two
|
||||
# syscalls, no atomic swap. Shells starting concurrently (a tmux window
|
||||
# opening several panes at once) interleave those steps and all but one
|
||||
# fail with "ln: ...: File exists". Stage the link under a PID-unique
|
||||
# name and move it into place, since rename(2) is atomic.
|
||||
command ln -sf "$SSH_AUTH_SOCK" "$_omz_ssh_agent_link.$$" \
|
||||
&& command mv -f "$_omz_ssh_agent_link.$$" "$_omz_ssh_agent_link"
|
||||
unset _omz_ssh_agent_link
|
||||
fi
|
||||
else
|
||||
_start_agent
|
||||
|
||||
@@ -10,8 +10,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_stripe" ]]; then
|
||||
_comps[stripe]=_stripe
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_stripe"
|
||||
zf_mv -f -- =( stripe completion --shell zsh --write-to-stdout ) "$TMPPREFIX"
|
||||
} &|
|
||||
stripe completion --shell zsh --write-to-stdout >| "$ZSH_CACHE_DIR/completions/_stripe" &|
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
ssm_run_sudo() {sudo $_sublime_merge_path "$@" >/dev/null 2>&1}
|
||||
alias ssm=ssm_run_sudo
|
||||
alias sm=sm_run
|
||||
alias smerge="'$_sublime_merge_path'"
|
||||
break
|
||||
fi
|
||||
done
|
||||
@@ -34,7 +33,6 @@
|
||||
if [[ -a $_sublime_merge_path ]]; then
|
||||
subm () { "$_sublime_merge_path" "$@" }
|
||||
alias sm=subm
|
||||
alias smerge="'$_sublime_merge_path'"
|
||||
break
|
||||
fi
|
||||
done
|
||||
@@ -47,7 +45,6 @@
|
||||
if [[ -a $_sublime_merge_path ]]; then
|
||||
subm () { "$_sublime_merge_path" "$@" }
|
||||
alias sm=subm
|
||||
alias smerge="'$_sublime_merge_path'"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
@@ -15,8 +15,8 @@
|
||||
# - https://github.com/symfony/symfony/blob/5.4/src/Symfony/Component/Console/Resources/completion.bash
|
||||
#
|
||||
_sf_console() {
|
||||
local lastParam out comp sf_cmd
|
||||
local -a completions flagPrefix requestComp inputs
|
||||
local lastParam flagPrefix requestComp out comp
|
||||
local -a completions
|
||||
|
||||
# The user could have moved the cursor backwards on the command-line.
|
||||
# We need to trigger completion from the $CURRENT location, so we need
|
||||
@@ -29,20 +29,11 @@ _sf_console() {
|
||||
setopt local_options BASH_REMATCH
|
||||
if [[ "${lastParam}" =~ '-.*=' ]]; then
|
||||
# We are dealing with a flag with an =
|
||||
flagPrefix=(-P "${BASH_REMATCH}")
|
||||
flagPrefix="-P ${BASH_REMATCH}"
|
||||
fi
|
||||
|
||||
# Prepare the command to obtain completions. An alias is resolved here,
|
||||
# because the request is no longer read again by the shell.
|
||||
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))")
|
||||
|
||||
# Prepare the command to obtain completions
|
||||
requestComp="${words[0]} ${words[1]} _complete --no-interaction -szsh -a1 -c$((CURRENT-1))" i=""
|
||||
for w in ${words[@]}; do
|
||||
w=$(printf -- '%b' "$w")
|
||||
# remove quotes from typed values
|
||||
@@ -56,18 +47,19 @@ _sf_console() {
|
||||
fi
|
||||
# empty values are ignored
|
||||
if [ ! -z "$w" ]; then
|
||||
inputs+=("-i$w")
|
||||
i="${i}-i${w} "
|
||||
fi
|
||||
done
|
||||
|
||||
# Ensure at least 1 input
|
||||
if (( ! $#inputs )); then
|
||||
inputs=(-i' ')
|
||||
if [ "${i}" = "" ]; then
|
||||
requestComp="${requestComp} -i\" \""
|
||||
else
|
||||
requestComp="${requestComp} ${i}"
|
||||
fi
|
||||
|
||||
# The request is run without being read again by the shell, so that a
|
||||
# "$(...)" or a backtick typed on the command line is not executed
|
||||
out=$(SHELL_VERBOSITY=0 "${requestComp[@]}" "${inputs[@]}" 2>/dev/null)
|
||||
# Use eval to handle any environment variables and such
|
||||
out=$(eval ${requestComp} 2>/dev/null)
|
||||
|
||||
while IFS='\n' read -r comp; do
|
||||
if [ -n "$comp" ]; then
|
||||
@@ -83,7 +75,7 @@ _sf_console() {
|
||||
done < <(printf "%s\n" "${out[@]}")
|
||||
|
||||
# Let inbuilt _describe handle completions
|
||||
_describe "completions" completions "${flagPrefix[@]}"
|
||||
eval _describe "completions" completions $flagPrefix
|
||||
return $?
|
||||
}
|
||||
|
||||
|
||||
@@ -138,7 +138,7 @@ function consume100() {
|
||||
|
||||
# Website traffic statistics (G)
|
||||
function webtraffic() {
|
||||
awk '{sum+=$10} END {print sum/1024/1024/1024}' "$(retlog)"
|
||||
awk "{sum+=$10} END {print sum/1024/1024/1024}" "$(retlog)"
|
||||
}
|
||||
|
||||
# Statistical connections 404
|
||||
|
||||
@@ -22,8 +22,4 @@ if (( $+aliases[tailscale] )); then
|
||||
_comps[${aliases[tailscale]:t}]=_tailscale
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_tailscale"
|
||||
zf_mv -f -- =( tailscale completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
tailscale completion zsh >| "$ZSH_CACHE_DIR/completions/_tailscale" &|
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_task" ]]; then
|
||||
fi
|
||||
|
||||
# Generate and load task completion
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_task"
|
||||
zf_mv -f -- =( task --completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
task --completion zsh >! "$ZSH_CACHE_DIR/completions/_task" &|
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_timoni" ]]; then
|
||||
_comps[timoni]=_timoni
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_timoni"
|
||||
zf_mv -f -- =( timoni completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
timoni completion zsh >| "$ZSH_CACHE_DIR/completions/_timoni" &|
|
||||
|
||||
@@ -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
|
||||
@@ -43,12 +43,5 @@ fi
|
||||
|
||||
# uv and uvx are installed together (uvx is an alias to `uv tool run`)
|
||||
# Overwrites the file each time as completions might change with uv versions.
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_uv"
|
||||
zf_mv -f -- =( uv generate-shell-completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_uvx"
|
||||
zf_mv -f -- =( uvx --generate-shell-completion zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
uv generate-shell-completion zsh >| "$ZSH_CACHE_DIR/completions/_uv" &|
|
||||
uvx --generate-shell-completion zsh >| "$ZSH_CACHE_DIR/completions/_uvx" &|
|
||||
|
||||
@@ -47,7 +47,6 @@ _box_arguments=(
|
||||
'help:COMMAND List subcommands'
|
||||
'list:Lists all installed boxes'
|
||||
'outdated:Checks if a box has newer version'
|
||||
'prune:Removes old versions of installed boxes'
|
||||
'remove:NAME Removes a box from the system'
|
||||
'repackage:NAME PROVIDER VERSION Repackages an installed box into a `.box` file'
|
||||
'update:Updates box to a newer version, if available'
|
||||
@@ -127,7 +126,7 @@ case $state in
|
||||
(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'
|
||||
esac
|
||||
;;
|
||||
|
||||
@@ -39,7 +39,7 @@ if [[ ! $DISABLE_VENV_CD -eq 1 ]]; then
|
||||
# Get absolute path, resolving symlinks
|
||||
local PROJECT_ROOT="${PWD:A}"
|
||||
while [[ "$PROJECT_ROOT" != "/" && ! -e "$PROJECT_ROOT/.venv" \
|
||||
&& ! -e "$PROJECT_ROOT/.git" ]]; do
|
||||
&& ! -d "$PROJECT_ROOT/.git" ]]; do
|
||||
PROJECT_ROOT="${PROJECT_ROOT:h}"
|
||||
done
|
||||
|
||||
|
||||
@@ -11,8 +11,4 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_volta" ]]; then
|
||||
_comps[volta]=_volta
|
||||
fi
|
||||
|
||||
zmodload -F zsh/files b:zf_mv
|
||||
() {
|
||||
local TMPPREFIX="$ZSH_CACHE_DIR/completions/_volta"
|
||||
zf_mv -f -- =( volta completions zsh ) "$TMPPREFIX"
|
||||
} &|
|
||||
volta completions zsh >| "$ZSH_CACHE_DIR/completions/_volta" &|
|
||||
|
||||
@@ -51,11 +51,6 @@ Available search contexts are:
|
||||
| `npmpkg` | `https://www.npmjs.com/search?q=` |
|
||||
| `packagist` | `https://packagist.org/?query=` |
|
||||
| `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=` |
|
||||
| `claudeai` | `https://claude.ai/new?q=` |
|
||||
| `grokcom` | `https://grok.com/?q=` |
|
||||
|
||||
@@ -32,11 +32,6 @@ function web_search() {
|
||||
npmpkg "https://www.npmjs.com/search?q="
|
||||
packagist "https://packagist.org/?query="
|
||||
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="
|
||||
grok "https://grok.com/?q="
|
||||
claudeai "https://claude.ai/new?q="
|
||||
@@ -97,11 +92,6 @@ alias gems='web_search gems'
|
||||
alias npmpkg='web_search npmpkg'
|
||||
alias packagist='web_search packagist'
|
||||
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 grokcom='web_search grok'
|
||||
alias claudeai='web_search claudeai'
|
||||
@@ -126,3 +116,4 @@ if [[ ${#ZSH_WEB_SEARCH_ENGINES} -gt 0 ]]; then
|
||||
done
|
||||
unset engines key
|
||||
fi
|
||||
|
||||
|
||||
@@ -4,8 +4,8 @@ export LSCOLORS=dxFxCxDxBxegedabagacad
|
||||
|
||||
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}
|
||||
%{%(#~$fg[red]~$fg[green])%}╰%(#~#~\$) %{$reset_color%}"
|
||||
PROMPT="%{$fg[green]%}╭─%n@%m %{$reset_color%}%{$fg[yellow]%}in %~ %{$reset_color%}${git_branch}
|
||||
%{$fg[green]%}╰\$ %{$reset_color%}"
|
||||
|
||||
ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[yellow]%}on "
|
||||
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%}"
|
||||
|
||||
+2
-2
@@ -221,12 +221,12 @@ supports_hyperlinks() {
|
||||
|
||||
# If $TERM_PROGRAM is set, these terminals support hyperlinks
|
||||
case "$TERM_PROGRAM" in
|
||||
ghostty|Hyper|iTerm.app|terminology|vscode|WezTerm) return 0 ;;
|
||||
Hyper|iTerm.app|terminology|WezTerm|vscode) return 0 ;;
|
||||
esac
|
||||
|
||||
# These termcap entries support hyperlinks
|
||||
case "$TERM" in
|
||||
alacritty|alacritty-direct|xterm-ghostty|xterm-kitty) return 0 ;;
|
||||
xterm-kitty|alacritty|alacritty-direct) return 0 ;;
|
||||
esac
|
||||
|
||||
# xfce4-terminal supports hyperlinks
|
||||
|
||||
@@ -23,32 +23,12 @@ zstyle -s ':omz:update' mode update_mode || {
|
||||
# - the automatic update is disabled
|
||||
# - the current user doesn't have write permissions nor owns the $ZSH directory
|
||||
# - 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
|
||||
# - $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 2>&1 >/dev/null \
|
||||
|| (builtin cd -q "$ZSH"; ! command git rev-parse --is-inside-work-tree &>/dev/null); then
|
||||
unset update_mode
|
||||
return
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user