Merge branch 'ohmyzsh:master' into conda

This commit is contained in:
Jeonguk Choi 2022-04-05 16:27:33 +09:00 committed by GitHub
commit 2b1bd03705
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
60 changed files with 1183 additions and 5079 deletions

2
.github/FUNDING.yml vendored
View file

@ -1,2 +1,2 @@
github: [ohmyzsh, robbyrussell, mcornella, larson-carter] github: [ohmyzsh, robbyrussell, mcornella, larson-carter, carlosala]
open_collective: ohmyzsh open_collective: ohmyzsh

View file

@ -1,15 +0,0 @@
# check-spelling/check-spelling configuration
File | Purpose | Format | Info
-|-|-|-
[dictionary.txt](dictionary.txt) | Replacement dictionary (creating this file will override the default dictionary) | one word per line | [dictionary](https://github.com/check-spelling/check-spelling/wiki/Configuration#dictionary)
[allow.txt](allow.txt) | Add words to the dictionary | one word per line (only letters and `'`s allowed) | [allow](https://github.com/check-spelling/check-spelling/wiki/Configuration#allow)
[reject.txt](reject.txt) | Remove words from the dictionary (after allow) | grep pattern matching whole dictionary words | [reject](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-reject)
[excludes.txt](excludes.txt) | Files to ignore entirely | perl regular expression | [excludes](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-excludes)
[only.txt](only.txt) | Only check matching files (applied after excludes) | perl regular expression | [only](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-only)
[patterns.txt](patterns.txt) | Patterns to ignore from checked lines | perl regular expression (order matters, first match wins) | [patterns](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-patterns)
[expect.txt](expect.txt) | Expected words that aren't in the dictionary | one word per line (sorted, alphabetically) | [expect](https://github.com/check-spelling/check-spelling/wiki/Configuration#expect)
[advice.md](advice.md) | Supplement for GitHub comment when unrecognized words are found | GitHub Markdown | [advice](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice)
Note: you can replace any of these files with a directory by the same name (minus the suffix)
and then include multiple files inside that directory (with that suffix) to merge multiple files together.

View file

@ -1,25 +0,0 @@
<!-- See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples%3A-advice --> <!-- markdownlint-disable MD033 MD041 -->
<details><summary>If the flagged items do not appear to be text</summary>
If items relate to a ...
* well-formed pattern.
If you can write a [pattern](https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns) that would match it,
try adding it to the `patterns.txt` file.
Patterns are Perl 5 Regular Expressions - you can [test](
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your lines.
Note that patterns can't match multiline strings.
* binary file.
Please add a file path to the `excludes.txt` file matching the containing file.
File paths are Perl 5 Regular Expressions - you can [test](
https://www.regexplanet.com/advanced/perl/) yours before committing to verify it will match your files.
`^` refers to the file's path from the root of the repository, so `^README\.md$` would exclude [README.md](
../tree/HEAD/README.md) (on whichever branch you're using).
</details>

View file

View file

@ -1,41 +0,0 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-excludes
(?:^|/)(?i)COPYRIGHT
(?:^|/)(?i)LICEN[CS]E
(?:^|/)package(?:-lock|)\.json$
(?:^|/)vendor/
ignore$
\.avi$
\.ico$
\.jpe?g$
\.lock$
\.map$
\.min\..
\.mod$
\.mp[34]$
\.png$
\.wav$
^\.github/
^\Qplugins/archlinux/archlinux.plugin.zsh\E$
^\Qplugins/cp/cp.plugin.zsh\E$
^\Qplugins/extract/_extract\E$
^\Qplugins/genpass/genpass.plugin.zsh\E$
^\Qplugins/gitignore/gitignore.plugin.zsh\E$
^\Qplugins/gnu-utils/gnu-utils.plugin.zsh\E$
^\Qplugins/hitchhiker/fortunes/hitchhiker\E$
^\Qplugins/jhbuild/jhbuild.plugin.zsh\E$
^\Qplugins/jhbuild/README.md\E$
^\Qplugins/jruby/jruby.plugin.zsh\E$
^\Qplugins/kubectl/kubectl.plugin.zsh\E$
^\Qplugins/lol/lol.plugin.zsh\E$
^\Qplugins/mosh/mosh.plugin.zsh\E$
^\Qplugins/npx/npx.plugin.zsh\E$
^\Qplugins/powder/_powder\E$
^\Qplugins/suse/suse.plugin.zsh\E$
^\Qplugins/thor/_thor\E$
^\Qplugins/universalarchive/_universalarchive\E$
^\Qplugins/vagrant/vagrant.plugin.zsh\E$
^\Qplugins/wp-cli/README.md\E$
^\Qplugins/wp-cli/wp-cli.plugin.zsh\E$
^\Qthemes/clean.zsh-theme\E$
^\Qthemes/philips.zsh-theme\E$
^\Qthemes/tonotdo.zsh-theme\E$

File diff suppressed because it is too large Load diff

View file

@ -1,73 +0,0 @@
# See https://github.com/check-spelling/check-spelling/wiki/Configuration-Examples:-patterns
# YouTube
https?://(?:(?:www\.|)youtube\.com|youtu.be)/(?:channel/|embed/|playlist\?list=|watch\?v=|v/|)[-a-zA-Z0-9?&=_]*
<\s*youtube\s+id=['"][-a-zA-Z0-9?_]*['"]
\bimg\.youtube\.com/vi/[-a-zA-Z0-9?&=_]*
# Google Analytics
\bgoogle-analytics\.com/collect.[-0-9a-zA-Z?%=&_.~]*
# Google APIs
\bgoogleapis\.com/[a-z]+/v\d+/[a-z]+/[@./?=\w]+
\b[-a-zA-Z0-9.]*\bstorage\d*\.googleapis\.com(?:/\S*|)
# Google Calendar
\bcalendar\.google\.com/calendar(?:/u/\d+|)/embed\?src=[@./?=\w&%]+
\w+\@group\.calendar\.google\.com\b
# Google DataStudio
\bdatastudio\.google\.com/(?:(?:c/|)u/\d+/|)(?:embed/|)(?:open|reporting|datasources|s)/[-0-9a-zA-Z]+(?:/page/[-0-9a-zA-Z]+|)
# The leading `/` here is as opposed to the `\b` above
# ... a short way to match `https://` or `http://` since most urls have one of those prefixes
# Google Docs
/docs\.google\.com/[a-z]+/d/(?:e/|)[0-9a-zA-Z_-]+/?
# Google Drive
\bdrive\.google\.com/file/d/[0-9a-zA-Z_?=]*
# Google Groups
\bgroups\.google\.com/(?:forum/#!|d/)(?:msg|topic)/[^/]+/[a-zA-Z0-9]+(?:/[a-zA-Z0-9]+|)
# Google themes
themes\.googleusercontent\.com/static/fonts/[^/]+/v\d+/[^.]+.
# Google CDN
\bclients2\.google(?:usercontent|)\.com[-0-9a-zA-Z/.]*
# Goo.gl
/goo\.gl/[a-zA-Z0-9]+
# Google Chrome Store
\bchrome\.google\.com/webstore/detail/\w*(?:/\w*|)
# Google Books
\bbooks\.google\.(?:\w{2,4})/books\?[-\w\d=&#.]*
# Google Fonts
\bfonts\.(?:googleapis|gstatic)\.com/[-/?=:;+&0-9a-zA-Z]*
# GitHub SHAs
\bapi.github\.com/repos/[^/]+/[^/]+/[^/]+/[0-9a-f]+\b
(?:\[[0-9a-f]+\]\(https:/|)/(?:www\.|)github\.com/[^/]+/[^/]+(?:/[^/]+/[0-9a-f]+(?:[-0-9a-zA-Z/#.]*|)\b|)
\bgithub\.com/[^/]+/[^/]+[@#][0-9a-f]+\b
# githubusercontent
/[-a-z0-9]+\.githubusercontent\.com/[-a-zA-Z0-9?&=_\/.]*
# gist github
/gist\.github\.com/[^/]+/[0-9a-f]+
# git.io
\bgit\.io/[0-9a-zA-Z]+
# GitHub JSON
"node_id": "[-a-zA-Z=;:/0-9+]*"
# Contributor
\[[^\]]+]\(https://github\.com/[^/]+\)
# GHSA
GHSA(?:-[0-9a-z]{4}){3}
LS_COLORS=(["']).*?\g{-1}
(\\?)%[a-zA-Z]+\g{-1}(?!%)
# URL escaped characters
\%[0-9A-F]{2}
# hex digits including css/html color classes:
(?:[\\0][xX]|\\u|[uU]\+|#x?|\%23)[0-9a-fA-FgGrR_]{2,}(?:[uU]?[lL]{0,2}|u\d+)\b
# https://www.gnu.org/software/groff/manual/groff.html
# man troff content
\\f[BCIPR]
# Compiler flags
[\t "'`=]-[LPWXY]
[\t "'`=]-D(?!ebian)
# ignore long runs of a single character:
\b([A-Za-z])\g{-1}{3,}\b

View file

@ -1,7 +0,0 @@
^attache$
benefitting
occurence
Sorce
^[Ss]pae
^untill
^wether

View file

@ -1,9 +1,9 @@
name: Project tracking name: Project tracking
on: on:
issues: issues:
types: [opened] types: [opened, reopened]
pull_request_target: pull_request_target:
types: [opened, synchronize] types: [opened, reopened, synchronize]
concurrency: concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}

View file

@ -18,6 +18,41 @@ To learn more, visit [ohmyz.sh](https://ohmyz.sh), follow [@ohmyzsh](https://twi
[![Gitpod ready](https://img.shields.io/badge/Gitpod-ready-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ohmyzsh/ohmyzsh) [![Gitpod ready](https://img.shields.io/badge/Gitpod-ready-blue?logo=gitpod)](https://gitpod.io/#https://github.com/ohmyzsh/ohmyzsh)
[![huntr.dev](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev/bounties/disclose/?utm_campaign=ohmyzsh%2Fohmyzsh&utm_medium=social&utm_source=github&target=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh) [![huntr.dev](https://cdn.huntr.dev/huntr_security_badge_mono.svg)](https://huntr.dev/bounties/disclose/?utm_campaign=ohmyzsh%2Fohmyzsh&utm_medium=social&utm_source=github&target=https%3A%2F%2Fgithub.com%2Fohmyzsh%2Fohmyzsh)
<details>
<summary>Table of Contents</summary>
- [Getting Started](#getting-started)
- [Prerequisites](#prerequisites)
- [Basic Installation](#basic-installation)
- [Manual inspection](#manual-inspection)
- [Using Oh My Zsh](#using-oh-my-zsh)
- [Plugins](#plugins)
- [Enabling Plugins](#enabling-plugins)
- [Using Plugins](#using-plugins)
- [Themes](#themes)
- [Selecting a Theme](#selecting-a-theme)
- [FAQ](#faq)
- [Advanced Topics](#advanced-topics)
- [Advanced Installation](#advanced-installation)
- [Custom Directory](#custom-directory)
- [Unattended install](#unattended-install)
- [Installing from a forked repository](#installing-from-a-forked-repository)
- [Manual Installation](#manual-installation)
- [Installation Problems](#installation-problems)
- [Custom Plugins and Themes](#custom-plugins-and-themes)
- [Getting Updates](#getting-updates)
- [Manual Updates](#manual-updates)
- [Uninstalling Oh My Zsh](#uninstalling-oh-my-zsh)
- [How do I contribute to Oh My Zsh?](#how-do-i-contribute-to-oh-my-zsh)
- [Do NOT send us themes](#do-not-send-us-themes)
- [Contributors](#contributors)
- [Follow Us](#follow-us)
- [Merchandise](#merchandise)
- [License](#license)
- [About Planet Argon](#about-planet-argon)
</details>
## Getting Started ## Getting Started
### Prerequisites ### Prerequisites
@ -32,7 +67,7 @@ To learn more, visit [ohmyz.sh](https://ohmyz.sh), follow [@ohmyzsh](https://twi
Oh My Zsh is installed by running one of the following commands in your terminal. You can install this via the command-line with either `curl`, `wget` or another similar tool. Oh My Zsh is installed by running one of the following commands in your terminal. You can install this via the command-line with either `curl`, `wget` or another similar tool.
| Method | Command | | Method | Command |
|:----------|:--------------------------------------------------------------------------------------------------| | :-------- | :------------------------------------------------------------------------------------------------ |
| **curl** | `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | | **curl** | `sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` |
| **wget** | `sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | | **wget** | `sh -c "$(wget -O- https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` |
| **fetch** | `sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` | | **fetch** | `sh -c "$(fetch -o - https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"` |
@ -82,7 +117,7 @@ _Note that the plugins are separated by whitespace (spaces, tabs, new lines...).
#### Using Plugins #### Using Plugins
Each plugin includes a __README__, documenting it. This README should show the aliases (if the plugin adds any) and extra goodies that are included in that particular plugin. Each plugin includes a **README**, documenting it. This README should show the aliases (if the plugin adds any) and extra goodies that are included in that particular plugin.
### Themes ### Themes
@ -194,19 +229,19 @@ REPO=apjanke/oh-my-zsh BRANCH=edge sh install.sh
#### Manual Installation #### Manual Installation
##### 1. Clone the repository ##### 1. Clone the repository <!-- omit in toc -->
```sh ```sh
git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh git clone https://github.com/ohmyzsh/ohmyzsh.git ~/.oh-my-zsh
``` ```
##### 2. *Optionally*, backup your existing `~/.zshrc` file ##### 2. _Optionally_, backup your existing `~/.zshrc` file <!-- omit in toc -->
```sh ```sh
cp ~/.zshrc ~/.zshrc.orig cp ~/.zshrc ~/.zshrc.orig
``` ```
##### 3. Create a new zsh configuration file ##### 3. Create a new zsh configuration file <!-- omit in toc -->
You can create a new zsh config file by copying the template that we have included for you. You can create a new zsh config file by copying the template that we have included for you.
@ -214,7 +249,7 @@ You can create a new zsh config file by copying the template that we have includ
cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc
``` ```
##### 4. Change your default shell ##### 4. Change your default shell <!-- omit in toc -->
```sh ```sh
chsh -s $(which zsh) chsh -s $(which zsh)
@ -222,7 +257,7 @@ chsh -s $(which zsh)
You must log out from your user session and log back in to see this change. You must log out from your user session and log back in to see this change.
##### 5. Initialize your new zsh configuration ##### 5. Initialize your new zsh configuration <!-- omit in toc -->
Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration. Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration.
@ -230,10 +265,8 @@ Once you open up a new terminal window, it should load zsh with Oh My Zsh's conf
If you have any hiccups installing, here are a few common fixes. If you have any hiccups installing, here are a few common fixes.
- You _might_ need to modify your `PATH` in `~/.zshrc` if you're not able to find some commands after - You _might_ need to modify your `PATH` in `~/.zshrc` if you're not able to find some commands after switching to `oh-my-zsh`.
switching to `oh-my-zsh`. - If you installed manually or changed the install location, check the `ZSH` environment variable in `~/.zshrc`.
- If you installed manually or changed the install location, check the `ZSH` environment variable in
`~/.zshrc`.
### Custom Plugins and Themes ### Custom Plugins and Themes

View file

@ -573,12 +573,27 @@ function _omz::pr::test {
# Rebase pull request branch against the current master # Rebase pull request branch against the current master
_omz::log info "rebasing PR #$1..." _omz::log info "rebasing PR #$1..."
command git rebase --no-gpg-sign master ohmyzsh/pull-$1 || { local gpgsign
command git rebase --abort &>/dev/null {
_omz::log warn "could not rebase PR #$1 on top of master." # Back up commit.gpgsign setting: use --local to get the current repository
_omz::log warn "you might not see the latest stable changes." # setting, not the global one. If --local is not a known option, it will
_omz::log info "run \`zsh\` to test the changes." # exit with a 129 status code.
return 1 gpgsign=$(command git config --local commit.gpgsign 2>/dev/null)
[[ $? -ne 129 ]] || gpgsign=$(command git config commit.gpgsign 2>/dev/null)
command git config commit.gpgsign false
command git rebase master ohmyzsh/pull-$1 || {
command git rebase --abort &>/dev/null
_omz::log warn "could not rebase PR #$1 on top of master."
_omz::log warn "you might not see the latest stable changes."
_omz::log info "run \`zsh\` to test the changes."
return 1
}
} always {
case "$gpgsign" in
"") command git config --unset commit.gpgsign ;;
*) command git config commit.gpgsign "$gpgsign" ;;
esac
} }
_omz::log info "fetch of PR #${1} successful." _omz::log info "fetch of PR #${1} successful."

View file

@ -17,7 +17,7 @@ function title {
: ${2=$1} : ${2=$1}
case "$TERM" in case "$TERM" in
cygwin|xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|st*) cygwin|xterm*|putty*|rxvt*|konsole*|ansi|mlterm*|alacritty|st*|foot)
print -Pn "\e]2;${2:q}\a" # set window name print -Pn "\e]2;${2:q}\a" # set window name
print -Pn "\e]1;${1:q}\a" # set tab name print -Pn "\e]1;${1:q}\a" # set tab name
;; ;;

View file

@ -1,46 +1,9 @@
if (( ${+commands[op]} )); then # Do nothing if op is not installed
eval "$(op completion zsh)" (( ${+commands[op]} )) || return
compdef _op op
fi
# opswd puts the password of the named service into the clipboard. If there's a # Load op completion
# one time password, it will be copied into the clipboard after 10 seconds. The eval "$(op completion zsh)"
# clipboard is cleared after another 20 seconds. compdef _op op
function opswd() {
if [[ $# -lt 1 ]]; then
echo "Usage: opswd <service>"
return 1
fi
local service=$1 # Load opswd function
autoload -Uz opswd
# If not logged in, print error and return
op list users > /dev/null || return
local password
# Copy the password to the clipboard
if ! password=$(op get item "$service" --fields password 2>/dev/null); then
echo "error: could not obtain password for $service"
return 1
fi
echo -n "$password" | clipcopy
echo "✔ password for $service copied to clipboard"
# If there's a one time password, copy it to the clipboard after 5 seconds
local totp
if totp=$(op get totp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then
sleep 10 && echo -n "$totp" | clipcopy
echo "✔ TOTP for $service copied to clipboard"
fi
(sleep 20 && clipcopy </dev/null 2>/dev/null) &!
}
function _opswd() {
local -a services
services=("${(@f)$(op list items --categories Login 2>/dev/null | op get item - --fields title 2>/dev/null)}")
[[ -z "$services" ]] || compadd -a -- services
}
compdef _opswd opswd

View file

@ -25,11 +25,14 @@ which service you want to get.
For example, `opswd github.com` will put your GitHub password into your clipboard, and if For example, `opswd github.com` will put your GitHub password into your clipboard, and if
a TOTP is available, it will be copied to the clipboard after 10 seconds. a TOTP is available, it will be copied to the clipboard after 10 seconds.
> NOTE: you need to be logged in for `opswd` to work. See: > NOTE: you need to be signed in for `opswd` to work. If you are using biometric unlock,
> 1Password CLI will automatically prompt you to sign in. See:
> >
> - [Sign in or out](https://support.1password.com/command-line/#sign-in-or-out) > - [Get started with 1Password CLI 2: Sign in](https://developer.1password.com/docs/cli/get-started#sign-in)
> - [Session management](https://support.1password.com/command-line/#appendix-session-management) > - [Sign in to your 1Password account manually](https://developer.1password.com/docs/cli/sign-in-manually)
## Requirements ## Requirements
- [1Password's command line utility](https://1password.com/downloads/command-line/). - [1Password CLI 2](https://developer.1password.com/docs/cli/get-started#install)
> NOTE: if you're using 1Password CLI 1, [see how to upgrade to CLI 2](https://developer.1password.com/docs/cli/upgrade).

19
plugins/1password/_opswd Normal file
View file

@ -0,0 +1,19 @@
#compdef opswd
function _opswd() {
local -a services
services=("${(@f)$(op item list --categories Login --cache 2>/dev/null | awk 'NR != 1 { print $2 }')}")
[[ -z "$services" ]] || compadd -a -- services
}
# TODO: 2022-03-26: Remove support for op CLI 1
autoload -Uz is-at-least
is-at-least 2.0.0 $(op --version) || {
function _opswd() {
local -a services
services=("${(@f)$(op list items --categories Login 2>/dev/null | op get item - --fields title 2>/dev/null)}")
[[ -z "$services" ]] || compadd -a -- services
}
}
_opswd "$@"

78
plugins/1password/opswd Normal file
View file

@ -0,0 +1,78 @@
#autoload
# opswd puts the password of the named service into the clipboard. If there's a
# one time password, it will be copied into the clipboard after 10 seconds. The
# clipboard is cleared after another 20 seconds.
function opswd() {
if [[ $# -lt 1 ]]; then
echo "Usage: opswd <service>"
return 1
fi
local service=$1
# If not logged in, print error and return
op user list > /dev/null || return
local password
# Copy the password to the clipboard
if ! password=$(op item get "$service" --fields password 2>/dev/null); then
echo "error: could not obtain password for $service"
return 1
fi
echo -n "$password" | clipcopy
echo "✔ password for $service copied to clipboard"
# If there's a one time password, copy it to the clipboard after 10 seconds
local totp
if totp=$(op item get --otp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then
sleep 10 && echo -n "$totp" | clipcopy
echo "✔ TOTP for $service copied to clipboard"
fi
(sleep 20 && clipcopy </dev/null 2>/dev/null) &!
}
# TODO: 2022-03-26: Remove support for op CLI 1
autoload -Uz is-at-least
is-at-least 2.0.0 $(op --version) || {
print -ru2 ${(%):-"%F{yellow}opswd: usage with op version $(op --version) is deprecated. Upgrade to CLI 2 and reload zsh.
For instructions, see https://developer.1password.com/docs/cli/upgrade.%f"}
# opswd puts the password of the named service into the clipboard. If there's a
# one time password, it will be copied into the clipboard after 10 seconds. The
# clipboard is cleared after another 20 seconds.
function opswd() {
if [[ $# -lt 1 ]]; then
echo "Usage: opswd <service>"
return 1
fi
local service=$1
# If not logged in, print error and return
op list users > /dev/null || return
local password
# Copy the password to the clipboard
if ! password=$(op get item "$service" --fields password 2>/dev/null); then
echo "error: could not obtain password for $service"
return 1
fi
echo -n "$password" | clipcopy
echo "✔ password for $service copied to clipboard"
# If there's a one time password, copy it to the clipboard after 5 seconds
local totp
if totp=$(op get totp "$service" 2>/dev/null) && [[ -n "$totp" ]]; then
sleep 10 && echo -n "$totp" | clipcopy
echo "✔ TOTP for $service copied to clipboard"
fi
(sleep 20 && clipcopy </dev/null 2>/dev/null) &!
}
}
opswd "$@"

View file

@ -13,6 +13,7 @@ if ! type autoenv_init >/dev/null; then
~/.autoenv ~/.autoenv
~/.local/bin ~/.local/bin
/usr/local/opt/autoenv /usr/local/opt/autoenv
/opt/homebrew/opt/autoenv
/usr/local/bin /usr/local/bin
/usr/share/autoenv-git /usr/share/autoenv-git
~/Library/Python/bin ~/Library/Python/bin

View file

@ -158,7 +158,7 @@ compctl -K _aws_profiles asp acp aws_change_access_key
# AWS prompt # AWS prompt
function aws_prompt_info() { function aws_prompt_info() {
[[ -n "$AWS_PROFILE" ]] || return [[ -n "$AWS_PROFILE" ]] || return
echo "${ZSH_THEME_AWS_PREFIX:=<aws:}${AWS_PROFILE:gs/%/%%}${ZSH_THEME_AWS_SUFFIX:=>}" echo "${ZSH_THEME_AWS_PREFIX=<aws:}${AWS_PROFILE:gs/%/%%}${ZSH_THEME_AWS_SUFFIX=>}"
} }
if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; then if [[ "$SHOW_AWS_PROMPT" != false && "$RPROMPT" != *'$(aws_prompt_info)'* ]]; then

View file

@ -1,5 +1,14 @@
## Bazel autocomplete plugin # Bazel plugin
A copy of the completion script from the This plugin adds completion for [bazel](https://bazel.build), an open-source build and
[bazelbuild/bazel](https://github.com/bazelbuild/bazel/master/scripts/zsh_completion/_bazel) test tool that scalably supports multi-language and multi-platform projects.
git repo.
To use it, add `bazel` to the plugins array in your zshrc file:
```zsh
plugins=(... bazel)
```
The plugin has a copy of [the completion script from the git repository][1].
[1]: https://github.com/bazelbuild/bazel/blob/master/scripts/zsh_completion/_bazel

View file

@ -1,14 +1,6 @@
print ${(%):-'%F{yellow}The `cargo` plugin is deprecated and has been moved to the `rust` plugin.'} print ${(%):-'%F{yellow}The `cargo` plugin is deprecated and has been moved to the `rust` plugin.'}
print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'} print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'}
# TODO: 2021-12-28: remove this block
# Handle $0 according to the standard:
# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
# Remove old generated completion file
command rm -f "${0:A:h}/_cargo" "$ZSH_CACHE_DIR/cargo_version"
(( ${fpath[(Ie)$ZSH/plugins/rust]} )) || { (( ${fpath[(Ie)$ZSH/plugins/rust]} )) || {
fpath=("$ZSH/plugins/rust" $fpath) fpath=("$ZSH/plugins/rust" $fpath)
source "$ZSH/plugins/rust/rust.plugin.zsh" source "$ZSH/plugins/rust/rust.plugin.zsh"

9
plugins/charm/README.md Normal file
View file

@ -0,0 +1,9 @@
# Charm plugin
This plugin adds completion for the [charm](https://github.com/charmbracelet/charm) CLI.
To use it, add `charm` to the plugins array in your zshrc file:
```zsh
plugins=(... charm)
```

View file

@ -0,0 +1,14 @@
# Autocompletion for the Charm CLI (charm).
if (( ! $+commands[charm] )); then
return
fi
# If the completion file doesn't exist yet, we need to autoload it and
# bind it to `charm`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_charm" ]]; then
typeset -g -A _comps
autoload -Uz _charm
_comps[charm]=_charm
fi
charm completion zsh >| "$ZSH_CACHE_DIR/completions/_charm" &|

View file

@ -39,14 +39,14 @@
# #
# ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------
local curcontext="$curcontext" state line ret=1 version opts first second third local curcontext="$curcontext" state line ret=1 version
local -a opts
typeset -A opt_args typeset -A opt_args
version=(${(f)"$(_call_program version $words[1] --version)"}) version=(${(f)"$(_call_program version $words[1] --version)"}) || return ret
version=${${(z)${version[1]}}[3]} version=${${(z)${version[1]}}[3]}
first=$(echo $version|cut -d '.' -f 1)
second=$(echo $version|cut -d '.' -f 2) autoload -Uz is-at-least
third=$(echo $version|cut -d '.' -f 3) if ! is-at-least 1.6.3 "$version"; then
if (( $first < 2 )) && (( $second < 7 )) && (( $third < 3 ));then
opts+=('(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]' opts+=('(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]'
'(-r --require)'{-r,--require}'[require a library before executing your script]:library') '(-r --require)'{-r,--require}'[require a library before executing your script]:library')
fi fi

View file

@ -1,80 +1,84 @@
# Usage: dash [keyword:]query # Usage: dash [keyword:]query
dash() { open dash://"$*" } dash() { open -a Dash.app dash://"$*" }
compdef _dash dash compdef _dash dash
_dash() { _dash() {
# No sense doing this for anything except the 2nd position and if we haven't # No sense doing this for anything except the 2nd position and if we haven't
# specified which docset to query against # specified which docset to query against
if [[ $CURRENT -eq 2 && ! "$words[2]" =~ ":" ]]; then if [[ $CURRENT -ne 2 || "$words[2]" =~ ":" ]]; then
local -a _all_docsets return
_all_docsets=() fi
# Use defaults to get the array of docsets from preferences
# Have to smash it into one big line so that each docset is an element of
# our DOCSETS array
DOCSETS=("${(@f)$(defaults read com.kapeli.dashdoc docsets | tr -d '\n' | grep -oE '\{.*?\}')}")
# remove all newlines since defaults prints so pretty like local -aU docsets
# Now get each docset and output each on their own line docsets=()
for doc in "$DOCSETS[@]"; do
# Only output docsets that are actually enabled # Use defaults to get the array of docsets from preferences
if [[ "`echo $doc | grep -Eo \"isEnabled = .*?;\" | sed 's/[^01]//g'`" == "0" ]]; then # Have to smash it into one big line so that each docset is an element of our docsets array
# Only output docsets that are actually enabled
local -a enabled_docsets
enabled_docsets=("${(@f)$(defaults read com.kapeli.dashdoc docsets \
| tr -d '\n' | grep -oE '\{.*?\}' | grep -E 'isEnabled = 1;')}")
local docset name keyword
# Now get each docset and output each on their own line
for docset in "$enabled_docsets[@]"; do
keyword=''
# Order of preference as explained to me by @kapeli via email
for locator in keyword suggestedKeyword platform; do
# Echo the docset, try to find the appropriate keyword
# Strip doublequotes and colon from any keyword so that everything has the
# same format when output (we'll add the colon in the completion)
if [[ "$docset" =~ "$locator = ([^;]*);" ]]; then
keyword="${match[1]//[\":]}"
fi
if [[ -z "$keyword" ]]; then
continue continue
fi fi
keyword='' # if we fall back to platform, we should do some checking per @kapeli
if [[ "$locator" == "platform" ]]; then
# Order of preference as explained to me by @kapeli via email # Since these are the only special cases right now, let's not do the
KEYWORD_LOCATORS=(keyword suggestedKeyword platform) # expensive processing unless we have to
for locator in "$KEYWORD_LOCATORS[@]"; do if [[ "$keyword" = (python|java|qt|cocos2d) ]]; then
# Echo the docset, try to find the appropriate keyword if [[ "$docset" =~ "docsetName = ([^;]*);" ]]; then
# Strip doublequotes and colon from any keyword so that everything has the name="${match[1]//[\":]}"
# same format when output (we'll add the colon in the completion) case "$keyword" in
keyword=`echo $doc | grep -Eo "$locator = .*?;" | sed -e "s/$locator = \(.*\);/\1/" -e "s/[\":]//g"` python)
if [[ ! -z "$keyword" ]]; then case "$name" in
# if we fall back to platform, we should do some checking per @kapeli "Python 2") keyword="python2" ;;
if [[ "$locator" == "platform" ]]; then "Python 3") keyword="python3" ;;
# Since these are the only special cases right now, let's not do the esac ;;
# expensive processing unless we have to java)
if [[ "$keyword" = (python|java|qt|cocos2d) ]]; then case "$name" in
docsetName=`echo $doc | grep -Eo "docsetName = .*?;" | sed -e "s/docsetName = \(.*\);/\1/" -e "s/[\":]//g"` "Java SE7") keyword="java7" ;;
case "$keyword" in "Java SE6") keyword="java6" ;;
python) "Java SE8") keyword="java8" ;;
case "$docsetName" in esac ;;
"Python 2") keyword="python2" ;; qt)
"Python 3") keyword="python3" ;; case "$name" in
esac ;; "Qt 5") keyword="qt5" ;;
java) "Qt 4"|Qt) keyword="qt4" ;;
case "$docsetName" in esac ;;
"Java SE7") keyword="java7" ;; cocos2d)
"Java SE6") keyword="java6" ;; case "$name" in
"Java SE8") keyword="java8" ;; Cocos3D) keyword="cocos3d" ;;
esac ;; esac ;;
qt) esac
case "$docsetName" in
"Qt 5") keyword="qt5" ;;
"Qt 4"|Qt) keyword="qt4" ;;
esac ;;
cocos2d)
case "$docsetName" in
Cocos3D) keyword="cocos3d" ;;
esac ;;
esac
fi
fi fi
# Bail once we have a match
break
fi fi
done
# If we have a keyword, add it to the list!
if [[ ! -z "$keyword" ]]; then
_all_docsets+=($keyword)
fi fi
# Bail once we have a match
break
done done
# special thanks to [arx] on #zsh for getting me sorted on this piece # If we have a keyword, add it to the list!
compadd -qS: -- "$_all_docsets[@]" if [[ -n "$keyword" ]]; then
return docsets+=($keyword)
fi fi
done
# special thanks to [arx] on #zsh for getting me sorted on this piece
compadd -qS: -- "$docsets[@]"
} }

View file

@ -16,19 +16,6 @@ if (( ! $+commands[deno] )); then
return return
fi fi
# TODO: 2021-12-28: remove this block
# Handle $0 according to the standard:
# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
# Remove old generated files
command rm -f "${0:A:h}/_deno" "$ZSH_CACHE_DIR/deno_version"
# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
# Add completions folder in $ZSH_CACHE_DIR
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file doesn't exist yet, we need to autoload it and # If the completion file doesn't exist yet, we need to autoload it and
# bind it to `deno`. Otherwise, compinit will have already done that. # bind it to `deno`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_deno" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_deno" ]]; then

View file

@ -2,19 +2,6 @@ if (( ! $+commands[fnm] )); then
return return
fi fi
# TODO: 2021-12-28: remove this block
# Handle $0 according to the standard:
# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
# remove old generated files
command rm -f "${0:A:h}/_fnm" "$ZSH_CACHE_DIR/fnm_version"
# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
# Add completions folder in $ZSH_CACHE_DIR
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file doesn't exist yet, we need to autoload it and # If the completion file doesn't exist yet, we need to autoload it and
# bind it to `fnm`. Otherwise, compinit will have already done that. # bind it to `fnm`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then

View file

@ -31,8 +31,8 @@ export FZF_DEFAULT_COMMAND='<your fzf default command>'
If not set, the plugin will try to set it to these, in the order in which they're found: If not set, the plugin will try to set it to these, in the order in which they're found:
- [`rg`](https://github.com/BurntSushi/ripgrep)
- [`fd`](https://github.com/sharkdp/fd) - [`fd`](https://github.com/sharkdp/fd)
- [`rg`](https://github.com/BurntSushi/ripgrep)
- [`ag`](https://github.com/ggreer/the_silver_searcher) - [`ag`](https://github.com/ggreer/the_silver_searcher)
### `DISABLE_FZF_AUTO_COMPLETION` ### `DISABLE_FZF_AUTO_COMPLETION`

View file

@ -173,6 +173,32 @@ function fzf_setup_using_cygwin() {
return 0 return 0
} }
function fzf_setup_using_macports() {
# If the command is not found, the package isn't installed
(( $+commands[fzf] )) || return 1
# The fzf-zsh-completion package installs the auto-completion in
local completions="/opt/local/share/zsh/site-functions/fzf"
# The fzf-zsh-completion package installs the key-bindings file in
local key_bindings="/opt/local/share/fzf/shell/key-bindings.zsh"
if [[ ! -f "$completions" || ! -f "$key_bindings" ]]; then
return 1
fi
# Auto-completion
if [[ -o interactive && "$DISABLE_FZF_AUTO_COMPLETION" != "true" ]]; then
source "$completions" 2>/dev/null
fi
# Key bindings
if [[ "$DISABLE_FZF_KEY_BINDINGS" != "true" ]]; then
source "$key_bindings" 2>/dev/null
fi
return 0
}
# Indicate to user that fzf installation not found if nothing worked # Indicate to user that fzf installation not found if nothing worked
function fzf_setup_error() { function fzf_setup_error() {
cat >&2 <<'EOF' cat >&2 <<'EOF'
@ -185,16 +211,17 @@ fzf_setup_using_openbsd \
|| fzf_setup_using_debian \ || fzf_setup_using_debian \
|| fzf_setup_using_opensuse \ || fzf_setup_using_opensuse \
|| fzf_setup_using_cygwin \ || fzf_setup_using_cygwin \
|| fzf_setup_using_macports \
|| fzf_setup_using_base_dir \ || fzf_setup_using_base_dir \
|| fzf_setup_error || fzf_setup_error
unset -f -m 'fzf_setup_*' unset -f -m 'fzf_setup_*'
if [[ -z "$FZF_DEFAULT_COMMAND" ]]; then if [[ -z "$FZF_DEFAULT_COMMAND" ]]; then
if (( $+commands[rg] )); then if (( $+commands[fd] )); then
export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git/*"'
elif (( $+commands[fd] )); then
export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git' export FZF_DEFAULT_COMMAND='fd --type f --hidden --exclude .git'
elif (( $+commands[rg] )); then
export FZF_DEFAULT_COMMAND='rg --files --hidden --glob "!.git/*"'
elif (( $+commands[ag] )); then elif (( $+commands[ag] )); then
export FZF_DEFAULT_COMMAND='ag -l --hidden -g "" --ignore .git' export FZF_DEFAULT_COMMAND='ag -l --hidden -g "" --ignore .git'
fi fi

View file

@ -3,19 +3,6 @@ if (( ! $+commands[gh] )); then
return return
fi fi
# TODO: 2021-12-28: remove this block
# Handle $0 according to the standard:
# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
# Remove old generated files
command rm -f "${0:A:h}/_gh" "$ZSH_CACHE_DIR/gh_version"
# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
# Add completions folder in $ZSH_CACHE_DIR
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file doesn't exist yet, we need to autoload it and # If the completion file doesn't exist yet, we need to autoload it and
# bind it to `gh`. Otherwise, compinit will have already done that. # bind it to `gh`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_gh" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_gh" ]]; then

View file

@ -9,7 +9,7 @@ autoload -U add-zsh-hook
add-zsh-hook preexec _gpg-agent_update-tty_preexec add-zsh-hook preexec _gpg-agent_update-tty_preexec
# If enable-ssh-support is set, fix ssh agent integration # If enable-ssh-support is set, fix ssh agent integration
if [[ $(gpgconf --list-options gpg-agent | awk -F: '$1=="enable-ssh-support" {print $10}') = 1 ]]; then if [[ $(gpgconf --list-options gpg-agent 2>/dev/null | awk -F: '$1=="enable-ssh-support" {print $10}') = 1 ]]; then
unset SSH_AGENT_PID unset SSH_AGENT_PID
if [[ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]]; then if [[ "${gnupg_SSH_AUTH_SOCK_by:-0}" -ne $$ ]]; then
export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)" export SSH_AUTH_SOCK="$(gpgconf --list-dirs agent-ssh-socket)"

View file

@ -2,15 +2,6 @@ if (( ! $+commands[helm] )); then
return return
fi fi
# TODO: 2021-12-28: delete this block
# Remove old generated file
command rm -f "${ZSH_CACHE_DIR}/helm_completion"
# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
# Add completions folder in $ZSH_CACHE_DIR
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file does not exist, generate it and then source it # If the completion file does not exist, generate it and then source it
# Otherwise, source it and regenerate in the background # Otherwise, source it and regenerate in the background
if [[ ! -f "$ZSH_CACHE_DIR/completions/_helm" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_helm" ]]; then

View file

@ -22,7 +22,7 @@ plugins=(... kubectl)
| kcsc | `kubectl config set-context` | Set a context entry in kubeconfig | | kcsc | `kubectl config set-context` | Set a context entry in kubeconfig |
| kcdc | `kubectl config delete-context` | Delete the specified context from the kubeconfig | | kcdc | `kubectl config delete-context` | Delete the specified context from the kubeconfig |
| kccc | `kubectl config current-context` | Display the current-context | | kccc | `kubectl config current-context` | Display the current-context |
| kcgc | `kubectl config get-contexts` | List of contexts available | kcgc | `kubectl config get-contexts` | List of contexts available |
| | | **General aliases** | | | | **General aliases** |
| kdel | `kubectl delete` | Delete resources by filenames, stdin, resources and names, or by resources and label selector | | kdel | `kubectl delete` | Delete resources by filenames, stdin, resources and names, or by resources and label selector |
| kdelf | `kubectl delete -f` | Delete a pod using the type and name specified in -f argument | | kdelf | `kubectl delete -f` | Delete a pod using the type and name specified in -f argument |
@ -71,9 +71,11 @@ plugins=(... kubectl)
| kdeld | `kubectl delete deployment` | Delete the deployment | | kdeld | `kubectl delete deployment` | Delete the deployment |
| ksd | `kubectl scale deployment` | Scale a deployment | | ksd | `kubectl scale deployment` | Scale a deployment |
| krsd | `kubectl rollout status deployment` | Check the rollout status of a deployment | | krsd | `kubectl rollout status deployment` | Check the rollout status of a deployment |
| kres | `kubectl set env $@ REFRESHED_AT=...` | Recreate all pods in deployment with zero-downtime | | kres | `kubectl set env $@ REFRESHED_AT=...` | Recreate all pods in deployment with zero-downtime |
| | | **Rollout management** | | | | **Rollout management** |
| kgrs | `kubectl get rs` | To see the ReplicaSet `rs` created by the deployment | | kgrs | `kubectl get replicaset` | List all ReplicaSets `rs` created by the deployment |
| kdrs | `kubectl describe replicaset` | Describe ReplicaSet in detail |
| kers | `kubectl edit replicaset` | Edit ReplicaSet from the default editor |
| krh | `kubectl rollout history` | Check the revisions of this deployment | | krh | `kubectl rollout history` | Check the revisions of this deployment |
| kru | `kubectl rollout undo` | Rollback to the previous revision | | kru | `kubectl rollout undo` | Rollback to the previous revision |
| | | **Port forwarding** | | | | **Port forwarding** |
@ -120,6 +122,11 @@ plugins=(... kubectl)
| kecj | `kubectl edit cronjob` | Edit CronJob from the default editor | | kecj | `kubectl edit cronjob` | Edit CronJob from the default editor |
| kdcj | `kubectl describe cronjob` | Describe a CronJob in details | | kdcj | `kubectl describe cronjob` | Describe a CronJob in details |
| kdelcj | `kubectl delete cronjob` | Delete the CronJob | | kdelcj | `kubectl delete cronjob` | Delete the CronJob |
| | | **Job management** |
| kgj | `kubectl get job` | List all Job in ps output format |
| kej | `kubectl edit job` | Edit a Job in details |
| kdj | `kubectl describe job` | Describe the Job |
| kdelj | `kubectl delete job` | Delete the Job |
## Wrappers ## Wrappers

View file

@ -1,13 +1,4 @@
if (( $+commands[kubectl] )); then if (( $+commands[kubectl] )); then
# TODO: 2022-01-05: remove this block
# remove old generated files
command rm -f "$ZSH_CACHE_DIR/kubectl_completion"
# TODO: 2022-01-05: remove this bit of code as it exists in oh-my-zsh.sh
# Add completions folder in $ZSH_CACHE_DIR
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file does not exist, generate it and then source it # If the completion file does not exist, generate it and then source it
# Otherwise, source it and regenerate in the background # Otherwise, source it and regenerate in the background
if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_kubectl" ]]; then
@ -112,7 +103,9 @@ function kres(){
} }
# Rollout management. # Rollout management.
alias kgrs='kubectl get rs' alias kgrs='kubectl get replicaset'
alias kdrs='kubectl describe replicaset'
alias kers='kubectl edit replicaset'
alias krh='kubectl rollout history' alias krh='kubectl rollout history'
alias kru='kubectl rollout undo' alias kru='kubectl rollout undo'
@ -178,6 +171,12 @@ alias kecj='kubectl edit cronjob'
alias kdcj='kubectl describe cronjob' alias kdcj='kubectl describe cronjob'
alias kdelcj='kubectl delete cronjob' alias kdelcj='kubectl delete cronjob'
# Job management.
alias kgj='kubectl get job'
alias kej='kubectl edit job'
alias kdj='kubectl describe job'
alias kdelj='kubectl delete job'
# Only run if the user actually has kubectl installed # Only run if the user actually has kubectl installed
if (( ${+_comps[kubectl]} )); then if (( ${+_comps[kubectl]} )); then
function kj() { kubectl "$@" -o json | jq; } function kj() { kubectl "$@" -o json | jq; }

View file

@ -1,6 +1,7 @@
# Rails # Rails
This plugin adds completion for [Ruby On Rails Framework](https://rubyonrails.org/) and [Rake](https://ruby.github.io/rake/) commands, as well as some aliases for logs and environment variables. This plugin adds completion for [Ruby On Rails Framework](https://rubyonrails.org/) and
[Rake](https://ruby.github.io/rake/) commands, as well as some aliases for logs and environment variables.
To use it, add `rails` to the plugins array in your zshrc file: To use it, add `rails` to the plugins array in your zshrc file:
@ -12,47 +13,52 @@ plugins=(... rails)
### Rails aliases ### Rails aliases
| Alias | Command | Description | | Alias | Command | Description |
|-------|----------------------------|----------------------------------------------------| | ------- | -------------------------------- | ------------------------------------------------------ |
| `rc` | `rails console` | Interact with your Rails app from the CLI | | `rc` | `rails console` | Interact with your Rails app from the CLI |
| `rcs` | `rails console --sandbox` | Test code in a sandbox, without changing any data | | `rcs` | `rails console --sandbox` | Test code in a sandbox, without changing any data |
| `rd` | `rails destroy` | Undo a generate operation | | `rd` | `rails destroy` | Undo a generate operation |
| `rdb` | `rails dbconsole` | Interact with your db from the console | | `rdb` | `rails dbconsole` | Interact with your db from the console |
| `rgen`| `rails generate` | Generate boilerplate code | | `rdc` | `rails db:create` | Create the database |
| `rgm` | `rails generate migration` | Generate a db migration | | `rdd` | `rails db:drop` | Delete the database |
| `rp` | `rails plugin` | Run a Rails plugin command | | `rdm` | `rails db:migrate` | Run pending db migrations |
| `rr` | `rails routes` | List all defined routes | | `rdmd` | `rails db:migrate:down` | Undo specific db migration |
| `rrg` | `rails routes \| grep` | List and filter the defined routes | | `rdmr` | `rails db:migrate:redo` | Redo specific db migration |
| `ru` | `rails runner` | Run Ruby code in the context of Rails | | `rdms` | `rails db:migrate:status` | Show current db migration status |
| `rs` | `rails server` | Launch a web server | | `rdmtc` | `rails db:migrate db:test:clone` | Run pending migrations and clone db into test database |
| `rsd` | `rails server --debugger` | Launch a web server with debugger | | `rdmu` | `rails db:migrate:up` | Run specific db migration |
| `rsp` | `rails server --port` | Launch a web server and specify the listening port | | `rdr` | `rails db:rollback` | Roll back the last migration |
| `rdrs` | `rails db:reset` | Delete the database and set it up again |
| `rds` | `rails db:seed` | Seed the database |
| `rdsl` | `rails db:schema:load` | Load the database schema |
| `rdtc` | `rails db:test:clone` | Clone the database into the test database |
| `rdtp` | `rails db:test:prepare` | Duplicate the db schema into your test database |
| `rgen` | `rails generate` | Generate boilerplate code |
| `rgm` | `rails generate migration` | Generate a db migration |
| `rlc` | `rails log:clear` | Clear Rails logs |
| `rmd` | `rails middleware` | Interact with Rails middlewares |
| `rn` | `rails notes` | Search for notes (`FIXME`, `TODO`) in code comments |
| `rp` | `rails plugin` | Run a Rails plugin command |
| `rr` | `rails routes` | List all defined routes |
| `rrg` | `rails routes \| grep` | List and filter the defined routes |
| `rs` | `rails server` | Launch a web server |
| `rsb` | `rails server --bind` | Launch a web server binding it to a specific IP |
| `rsd` | `rails server --debugger` | Launch a web server with debugger |
| `rsp` | `rails server --port` | Launch a web server and specify the listening port |
| `rsts` | `rails stats` | Print code statistics |
| `rt` | `rails test` | Run Rails tests |
| `ru` | `rails runner` | Run Ruby code in the context of Rails |
### Rake aliases ### Foreman
| Alias | Command | Description | | Alias | Command | Description |
|---------|---------------------------------|--------------------------------------------------------| | ------ | --------------- | ----------------------------------------- |
| `rdm` | `rake db:migrate` | Run pending db migrations | | `fmns` | `foreman start` | Interact with your Rails app from the CLI |
| `rdms` | `rake db:migrate:status` | Show current db migration status |
| `rdmtc` | `rake db:migrate db:test:clone` | Run pending migrations and clone db into test database |
| `rdr` | `rake db:rollback` | Roll back the last migration |
| `rdc` | `rake db:create` | Create the database |
| `rds` | `rake db:seed` | Seed the database |
| `rdd` | `rake db:drop` | Delete the database |
| `rdrs` | `rake db:reset` | Delete the database and set it up again |
| `rdtc` | `rake db:test:clone` | Clone the database into the test database |
| `rdtp` | `rake db:test:prepare` | Duplicate the db schema into your test database |
| `rdsl` | `rake db:schema:load` | Load the database schema |
| `rlc` | `rake log:clear` | Clear Rails logs |
| `rn` | `rake notes` | Search for notes (`FIXME`, `TODO`) in code comments |
| `rt` | `rake test` | Run Rails tests |
| `rmd` | `rake middleware` | Interact with Rails middlewares |
| `rsts` | `rake stats` | Print code statistics |
### Utility aliases ### Utility aliases
| Alias | Command | Description | | Alias | Command | Description |
|-----------|-------------------------------|------------------------------------------------| | --------- | ----------------------------- | ---------------------------------------------- |
| `devlog` | `tail -f log/development.log` | Show and follow changes to the development log | | `devlog` | `tail -f log/development.log` | Show and follow changes to the development log |
| `prodlog` | `tail -f log/production.log` | Show and follow changes to the production log | | `prodlog` | `tail -f log/production.log` | Show and follow changes to the production log |
| `testlog` | `tail -f log/test.log` | Show and follow changes to the test log | | `testlog` | `tail -f log/test.log` | Show and follow changes to the test log |
@ -60,7 +66,7 @@ plugins=(... rails)
### Environment settings ### Environment settings
| Alias | Command | Description | | Alias | Command | Description |
|-------|-------------------------|---------------------------------| | ----- | ----------------------- | ------------------------------- |
| `RED` | `RAILS_ENV=development` | Sets `RAILS_ENV` to development | | `RED` | `RAILS_ENV=development` | Sets `RAILS_ENV` to development |
| `REP` | `RAILS_ENV=production` | Sets `RAILS_ENV` to production | | `REP` | `RAILS_ENV=production` | Sets `RAILS_ENV` to production |
| `RET` | `RAILS_ENV=test` | Sets `RAILS_ENV` to test | | `RET` | `RAILS_ENV=test` | Sets `RAILS_ENV` to test |
@ -68,15 +74,45 @@ plugins=(... rails)
These are global aliases. Use in combination with a command or just run them These are global aliases. Use in combination with a command or just run them
separately. For example: `REP rake db:migrate` will migrate the production db. separately. For example: `REP rake db:migrate` will migrate the production db.
### Legacy stuff ## Legacy
### Rake aliases
The following commands are run [using `rails` instead of `rake` since Rails v5][1], but are preserved under the
prefix `rk` for backwards compatibility.
[1]: https://guides.rubyonrails.org/v5.2/command_line.html#bin-rails
| Alias | Command | Description |
| -------- | ------------------------------- | ------------------------------------------------------ |
| `rkdc` | `rake db:create` | Create the database |
| `rkdd` | `rake db:drop` | Delete the database |
| `rkdm` | `rake db:migrate` | Run pending db migrations |
| `rkdms` | `rake db:migrate:status` | Show current db migration status |
| `rkdmtc` | `rake db:migrate db:test:clone` | Run pending migrations and clone db into test database |
| `rkdr` | `rake db:rollback` | Roll back the last migration |
| `rkdrs` | `rake db:reset` | Delete the database and set it up again |
| `rkds` | `rake db:seed` | Seed the database |
| `rkdsl` | `rake db:schema:load` | Load the database schema |
| `rkdtc` | `rake db:test:clone` | Clone the database into the test database |
| `rkdtp` | `rake db:test:prepare` | Duplicate the db schema into your test database |
| `rklc` | `rake log:clear` | Clear Rails logs |
| `rkmd` | `rake middleware` | Interact with Rails middlewares |
| `rkn` | `rake notes` | Search for notes (`FIXME`, `TODO`) in code comments |
| `rksts` | `rake stats` | Print code statistics |
| `rkt` | `rake test` | Run Rails tests |
### Other
| Alias | Command | | Alias | Command |
|---------|------------------------------------| | ------- | ---------------------------------- |
| `sstat` | `thin --stats "/thin/stats" start` | | `sc` | `ruby script/console` |
| `sg` | `ruby script/generate` |
| `sd` | `ruby script/destroy` | | `sd` | `ruby script/destroy` |
| `sd` | `ruby script/server --debugger` |
| `sg` | `ruby script/generate` |
| `sp` | `ruby script/plugin` | | `sp` | `ruby script/plugin` |
| `sr` | `ruby script/runner` | | `sr` | `ruby script/runner` |
| `ssp` | `ruby script/spec` | | `ssp` | `ruby script/spec` |
| `sc` | `ruby script/console` | | `sstat` | `thin --stats "/thin/stats" start` |
| `sd` | `ruby script/server --debugger` |
- `remote_console <server> <directory>`: runs `ruby script/console production` on a remote server.

View file

@ -1,66 +1,624 @@
#compdef rails #compdef rails
#autoload # ------------------------------------------------------------------------------
# Copyright (c) 2016 Github zsh-users - http://github.com/zsh-users
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
# * Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# * Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# * Neither the name of the zsh-users nor the
# names of its contributors may be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
# ------------------------------------------------------------------------------
# Description
# -----------
#
# Completion script for Ruby on Rails (http://rubyonrails.org/).
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
# * Kazuya Takeshima (https://github.com/mitukiii)
#
# ------------------------------------------------------------------------------
local -a _1st_arguments
_1st_arguments=(
'generate:Generate new code (short-cut alias: "g")'
'console:Start the Rails console (short-cut alias: "c")'
'server:Start the Rails server (short-cut alias: "s")'
'dbconsole:Start a console for the database specified in config/database.yml (short-cut alias: "db")'
'new:Create a new Rails application. "rails new my_app" creates a new application called MyApp in "./my_app"'
'application:Generate the Rails application code'
'destroy:Undo code generated with "generate"'
'benchmarker:See how fast a piece of code runs' _rails() {
'profiler:Get profile information from a piece of code' local context state line curcontext="$curcontext"
'plugin:Install a plugin'
'plugin new:Generates skeleton for developing a Rails plugin' if (( CURRENT > 2 )); then
'runner:Run a piece of code in the application environment (short-cut alias: "r")' (( CURRENT-- ))
) shift words
_call_function - "_rails_${words[1]}" || _nothing
_rails_generate_arguments() { else
generate_arguments=( __rails_commands
assets fi
controller
decorator
generator
helper
integration_test
mailer
migration
model
observer
performance_test
plugin
resource
scaffold
scaffold_controller
session_migration
stylesheets
task
)
} }
__rails_commands() {
local context state line curcontext="$curcontext"
_arguments \ local -a rails_options
'(--version)--version[show version]' \ __rails_setup_rails_options
'(--help)--help[show help]' \
'*:: :->subcmds' && return 0
if (( CURRENT == 1 )); then _arguments -C \
_describe -t commands "rails subcommand" _1st_arguments $rails_options \
return ': :->command'
else
_files
return
fi
case "$words[1]" in case "$state" in
g|generate) command)
_rails_generate_arguments local -a commands
_wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;; local application_directory
d|destroy) __rails_setup_application_directory
_rails_generate_arguments
_wanted generate_arguments expl 'all generate' compadd -a generate_arguments ;; if [ -n "$application_directory" ]; then
esac commands=(
{generate,g}'[Generate new code]'
{console,c}'[Start the Rails console]'
{server,s}'[Start the Rails server]'
{dbconsole,db}'[Start a console for the database specified in config/database.yml]'
application'[Generate the Rails application code]'
{destroy,d}'[Undo code generated with "generate"]'
benchmarker'[See how fast a piece of code runs]'
profiler'[Get profile information from a piece of code]'
plugin'[Install a plugin]'
{runner,r}'[Run a piece of code in the application environment]'
{test,t}'[Run tests]'
)
else
commands=(
new'[Create a new Rails application]'
)
fi
_values 'command' $commands
;;
esac
}
__rails_setup_application_directory() {
application_directory="$(pwd)"
while [ -n "$application_directory" ]; do
if [ -f "${application_directory}/script/rails" -o -f "${application_directory}/bin/rails" ]; then
return
fi
application_directory="${application_directory%/*}"
done
application_directory=
}
__rails_setup_rails_options() {
rails_options=(
{-h,--help}'[Show this help message and quit]'
{-v,--version}'[Show Rails version number and quit]'
)
}
__rails_setup_runtime_options() {
runtime_options=(
'(-f --force)'{-f,--force}'[Overwrite files that already exist]'
'(-p --pretend)'{-p,--pretend}'[Run but do not make any changes]'
'(-q --quiet)'{-q,--quiet}'[Suppress status output]'
'(-s --skip)'{-s,--skip}'[Skip files that already exist]'
)
}
__rails_setup_generators_options() {
local -a runtime_options
__rails_setup_runtime_options
generators_options=(
$runtime_options
--skip-namespace'[Skip namespace (affects only isolated applications)]'
--old-style-hash"[Force using old style hash (:foo => 'bar') on Ruby >= 1.9]"
)
}
__rails_setup_model_generators_options() {
local -a generators_options
__rails_setup_generators_options
model_generators_options=(
$generators_options
'(-o --orm)'{-o,--orm=}'[Orm to be invoked]:orm'
)
}
__rails_setup_resource_generators_options() {
local -a model_generators_options
__rails_setup_model_generators_options
resource_generators_options=(
$model_generators_options
--force-plural'[Forces the use of a plural ModelName]'
--resource-route'[Indicates when to generate resource route]: :__rails_boolean'
)
}
__rails_boolean() {
_values 'boolean' 'true' 'false'
}
__rails_migration_fields() {
if compset -P '*:*:'; then
_values 'index' 'index' 'uniq'
else
if compset -P '*:'; then
_values -s ':' 'type' 'string' 'text' 'integer' 'float' 'decimal' 'datetime' 'timestamp' 'time' 'date' 'binary' 'boolean' 'references'
else
_guard '[[:alnum:]_]#' 'field'
fi
fi
}
_rails_generate() {
local context state line curcontext="$curcontext"
if (( CURRENT > 2 )); then
(( CURRENT-- ))
shift words
_call_function - "_rails_generate_${words[1]}" || _rails_generate_default
else
__rails_generate_commands
fi
}
_rails_g() {
_rails_generate
}
__rails_generate_commands() {
local context curcontext="$curcontext" update_policy
zstyle -s ":completion:${curcontext}:" cache-policy update_policy
if [ -z "$update_policy" ]; then
zstyle ":completion:${curcontext}:" cache-policy _rails_generate_commands_caching_policy
fi
local application_directory
__rails_setup_application_directory
local cache_name
cache_name="rails/${application_directory##*/}/all_generators"
if ! _retrieve_cache ${cache_name}; then
local -a all_generators
all_generators=($(_call_program rails_generators rails generate 2> /dev/null | awk '/^ [a-zA-Z_]+/{ print $1 }'))
_store_cache ${cache_name} all_generators
fi
local -a rails_generators
rails_generators=(${all_generators:#*:*})
_describe -t rails_generators 'rails generator' rails_generators
local -a -U namespaces
local namespace
local -a generators
namespaces=(${(R)${(M)all_generators:#*:*}%:*})
for namespace in $namespaces; do
generators=(${${(M)all_generators:#${namespace}:*}/:/\\:})
_describe -t ${namespace}_generators "${namespace/_/ } generator" generators
done
}
_rails_generate_commands_caching_policy() {
local application_directory
__rails_setup_application_directory
if [ "${application_directory}/Gemfile" -nt "$1" ]; then
return 0
fi
local -a oldp
oldp=( "$1"(Nmw+1) )
(( $#oldp ))
}
_rails_generate_default() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
'*:argument'
}
_rails_generate_assets() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
'(-j --javascripts)'{-j,--javascripts}'[Generate JavaScripts]: :__rails_boolean' \
'(-y --stylesheets)'{-y,--stylesheets}'[Generate Stylesheets]: :__rails_boolean' \
'(-je --javascript-engine)'{-je,--javascript-engine=}'[Engine for JavaScripts]:javascript engine' \
'(-se --stylesheet-engine)'{-se,--stylesheet-engine=}'[Engine for Stylesheets]:stylesheet engine' \
': :_guard "^-*" "name"'
}
_rails_generate_controller() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
'(-e --template-engine)'{-e,--template-engine=}'[Template engine to be invoked]:template engine' \
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \
--helper'[Indicates when to generate helper]: :__rails_boolean' \
--assets'[Indicates when to generate assets]: :__rails_boolean' \
': :_guard "^-*" "name"' \
'*: :_guard "^-*" "action"'
}
_rails_generate_generator() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
--namespace'[Namespace generator under lib/generators/name]: :__rails_boolean' \
': :_guard "^-*" "name"'
}
_rails_generate_helper() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \
': :_guard "^-*" "name"' \
}
_rails_generate_integration_test() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
--integration-tool='[Integration tool to be invoke]:integration tool' \
': :_guard "^-*" "name"' \
}
_rails_generate_jbuilder() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
': :_guard "^-*" "name"' \
'*: :__rails_migration_fields'
}
_rails_generate_mailer() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
'(-e --template-engine)'{-e,--template-engine=}'[Template engine to be invoked]:template engine' \
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \
': :_guard "^-*" "name"' \
'*: :_guard "^-*" "method"'
}
_rails_generate_migration() {
local -a modelgenerators_options
__rails_setup_model_generators_options
_arguments \
$model_generators_options \
': :_guard "^-*" "name"' \
'*: :__rails_migration_fields'
}
_rails_generate_model() {
_rails_generate_migration
}
_rails_generate_observer() {
local -a model_generators_options
__rails_setup_model_generators_options
_arguments \
$model_generators_options \
': :_guard "^-*" "name"'
}
_rails_generate_performance_test() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
--performance-tool='[Performance tool to be invoked]:performance tool' \
': :_guard "^-*" "name"' \
}
_rails_generate_resource() {
local context state line curcontext="$curcontext"
local -a resource_generators_options
__rails_setup_resource_generators_options
_arguments -C \
$resource_generators_options \
'(-c --resource-controller)'{-c,--resource-controller=}'[Resource controller to be invoked]:name' \
'(-a --actions)'{-a,--actions=}'[Actions for the resource controller]: :->actions' \
': :->name' \
'*: :->fields'
if (( words[(I)(--actions=*|-a)] > 0 && words[(I)(--actions=*|-a)] == words[(I)-*] )); then
state=actions
fi
case "$state" in
actions)
_guard "[[:alnum:]_]#" "actions"
;;
name)
_guard "^-*" "name"
;;
fields)
__rails_migration_fields
;;
esac
}
_rails_generate_scaffold() {
local -a resource_generators_options
__rails_setup_resource_generators_options
_arguments \
$resource_generators_options \
'(-y --stylesheets)'{-y,--stylesheets}'[Generate Stylesheets]: :__rails_boolean' \
'(-se --stylesheet-engine)'{-se,--stylesheet-engine=}'[Engine for Stylesheets]:stylesheet engine' \
'(-c --scaffold-controller)'{-c,--scaffold-controller=}'[Scaffold controller to be invoked]:name' \
--assets'[Indicates when to generate assets]:boolean:(true false)' \
': :_guard "^-*" "name"' \
'*: :__rails_migration_fields'
}
_rails_generate_scaffold_controller() {
local -a model_generators_options
__rails_setup_model_generators_options
_arguments \
$model_generators_options \
'(-e --template-engine)'{-e,--template-engine=}'[Template engine to be invoked]:template engine' \
'(-t --test-framework)'{-t,--test-framework=}'[Test framework to be invoked]:test framework' \
--helper'[Indicates when to generate helper]: :__rails_boolean' \
': :_guard "^-*" "name"'
}
_rails_generate_session_migration() {
local -a model_generators_options
__rails_setup_model_generators_options
_arguments \
$model_generators_options \
': :_guard "^-*" "name"'
}
_rails_generate_task() {
local -a generators_options
__rails_setup_generators_options
_arguments \
$generators_options \
': :_guard "^-*" "name"' \
'*: :_guard "^-*" "action"'
}
_rails_console() {
_arguments \
'(- *)'{-h,--help}'[Show this help message]' \
'(-s --sandbox)'{-s,--sandbox}'[Rollback database modifications on exit]' \
--debugger'[Enable ruby-debugging for the console]'
}
_rails_c() {
_rails_console
}
_rails_server() {
_arguments \
'(- *)'{-h,--help}'[Show this help message]' \
'(-p --port)'{-p,--port=}'[Runs Rails on the specified port]: :_guard "[[\:digit\:]]#" "port"' \
'(-b --binding)'{-b,--binding=}'[Binds Rails to the specified ip]:ip:_hosts' \
'(-c --config)'{-c,--config=}'[Use custom rackup configuration file]:file:_files -g "*.ru"' \
'(-d --daemon)'{-d,--daemon}'[Make server run as a Daemon]' \
'(-u --debugger)'{-u,--debugger}'[Enable ruby-debugging for the server]' \
'(-e --environment)'{-e,--environment=}'[Specifies the environment to run this server under (test/development/production)]:name:(test development production)' \
'(-P --pid)'{-P,--pid=}'[Specifies the PID file]:pid:_files -g "*.pid"'
}
_rails_s() {
_rails_server
}
_rails_dbconsole() {
_arguments \
'(- *)'--help'[Show this help message]' \
'(-p --include-password)'{-p,--include-password}'[Automatically provide the password from database.yml]' \
--mode'[Automatically put the sqlite3 database in the specified mode (html, list, line, column)]:mode:(html list line column)' \
--header
}
_rails_new() {
local context state line curcontext="$curcontext"
local _a rails_options runtime_options
__rails_setup_rails_options
__rails_setup_runtime_options
_arguments -C \
$rails_options \
$runtime_options \
'(-r --ruby)'{-r,--ruby=}'[Path to the Ruby binary of your choice]:path' \
'(-b --builder)'{-b,--builder=}'[Path to a application builder (can be a filesystem path or URL)]: :->path_or_url' \
'(-m --template)'{-m,--template=}'[Path to an application template (can be a filesystem path or URL)]: :->path_or_url' \
--skip-gemfile"[Don't create a Gemfile]" \
--skip-bundle"[Don't run bundle install]" \
'(-G --skip-git)'{-G,--skip-git}'[Skip Git ignores and keeps]' \
'(-O --skip-active-record)'{-O,--skip-active-record}'[Skip Active Record files]' \
'(-S --skip-sprockets)'{-S,--skip-sprockets}'[Skip Sprockets files]' \
'(-d --database)'{-d,--database=}'[Preconfigure for selected database]:database:(mysql oracle postgresql sqlite3 frontbase ibm_db sqlserver jdbcmysql jdbcsqlite3 jdbcpostgresql jdbc)' \
'(-j --javascript)'{-j,--javascript=}'[Preconfigure for selected JavaScript library]:javascript' \
'(-J --skip-javascript)'{-J,--skip-javascript}'[Skip JavaScript files]' \
--dev'[Setup the application with Gemfile pointing to your Rails checkout]' \
--edge'[Setup the application with Gemfile pointing to Rails repository]' \
'(-T --skip-test-unit)'{-T,--skip-test-unit}'[Skip Test::Unit files]' \
--old-style-hash"[Force using old style hash (:foo => 'bar') on Ruby >= 1.9]" \
':app path:_directories'
case "$state" in
path_or_url)
_alternative \
'files:path:_files -g "*.rb"' \
'url:url:_urls'
;;
esac
}
_rails_application() {
_rails_new
}
_rails_db() {
_rails_dbconsole
}
_rails_destroy() {
_rails_generate
}
_rails_d() {
_rails_destroy
}
_rails_benchmarker() {
_arguments \
'(- *)'{-h,--help}'[Show this help message]' \
'(-r --runs)'{-r,--runs}'[Number of runs]: :_guard "[[\:digit\:]]#" "number"' \
'(-o --output)'{-o,--output}'[Directory to use when writing the results]:directory:_directories' \
'(-m --metrics)'{-m,--metrics}'[Metrics to use]: :_values -s "," "metrics" "wall_time" "memory" "objects" "gc_runs" "gc_time"' \
'*: :_guard "^-*" "ruby code"'
}
_rails_profiler() {
_arguments \
'(- *)'{-h,--help}'[Show this help message]' \
'(-r --runs)'{-r,--runs}'[Number of runs]: :_guard "[[\:digit\:]]#" "number"' \
'(-o --output)'{-o,--output}'[Directory to use when writing the results]:directory:_directories' \
'(-m --metrics)'{-m,--metrics}'[Metrics to use]: :_values -s "," "metrics" "process_time" "memory" "objects"' \
'(-f --formats)'{-f,--formats}'[Formats to output to]: :_values -s "," "formats" "flat" "graph" "html" "call_tree" "call_stack"' \
'*: :_guard "^-*" "ruby code"'
}
_rails_plugin() {
local context state line curcontext="$curcontext"
if (( CURRENT > 2 )); then
(( CURRENT-- ))
shift words
_call_function - "_rails_plugin_${words[1]}" || _nothing
else
__rails_plugin_commands
fi
}
__rails_plugin_commands() {
_values 'plugin command' \
install'[Install plugin(s) from known repositories or URLs]' \
remove'[Uninstall plugins]' \
new
}
_rails_plugin_install() {
_arguments \
'(-x --externals)'{-x,--externals}'[Use svn:externals to grab the plugin. Enables plugin updates and plugin versioning]' \
'(-o --checkout)'{-o,--checkout}'[Use svn checkout to grab the plugin. Enables updating but does not add a svn:externals entry]' \
'(-e --export)'{-e,--export}'[Use svn export to grab the plugin. Exports the plugin, allowing you to check it into your local repository. Does not enable updates or add an svn:externals entry]' \
'(-q --quiet)'{-q,--quiet}'[Suppresses the output from installation. Ignored if -v is passed (rails plugin -v install ...)]' \
'(-r --revision)'{-r,--revision=}'[Checks out the given revision from subversion or git. Ignored if subversion/git is not used]:revision' \
'(-f --force)'{-f,--force}"[Reinstalls a plugin if it's already installed]" \
'*:plugin:_urls'
}
_rails_plugin_remove() {
local -a plugins
plugins=($(_call_program rails_plugins ls -1 vendor/plugins))
_describe -t plugins 'plugin' plugins
}
_rails_plugin_new() {
_rails_new
}
_rails_runner() {
local context state line curcontext="$curcontext"
_arguments -C \
'(- *)'{-h,--help}'[Show this help message]' \
'(-e --environment)'{-e,--environment=}'[Specifies the environment for the runner to operate under (test/development/production)]:name:(test development production)' \
': :->code_or_path'
case "$state" in
code_or_path)
_alternative \
'files:filename:_files -g "*.rb"' \
'codes:ruby code:_guard "^-*" "ruby code"'
;;
esac
}
_rails_r() {
_rails_runner
}
_rails_test() {
local context state line curcontext="$curcontext"
_arguments -C \
': :->path'
case "$state" in
path)
_alternative \
'files:filename:_files -g "*.rb"'
;;
esac
}
_rails_t() {
_rails_test
}
_rails "$@"
# Local Variables:
# mode: Shell-Script
# sh-indentation: 2
# indent-tabs-mode: nil
# sh-basic-offset: 2
# End:
# vim: ft=zsh sw=2 ts=2 et

View file

@ -1,3 +1,4 @@
# rails command wrapper
function _rails_command () { function _rails_command () {
if [ -e "bin/stubs/rails" ]; then if [ -e "bin/stubs/rails" ]; then
bin/stubs/rails $@ bin/stubs/rails $@
@ -12,28 +13,31 @@ function _rails_command () {
fi fi
} }
alias rails='_rails_command'
compdef _rails_command=rails
# rake command wrapper
function _rake_command () { function _rake_command () {
if [ -e "bin/stubs/rake" ]; then if [ -e "bin/stubs/rake" ]; then
bin/stubs/rake $@ bin/stubs/rake $@
elif [ -e "bin/rake" ]; then elif [ -e "bin/rake" ]; then
bin/rake $@ bin/rake $@
elif type bundle &> /dev/null && ([ -e "Gemfile" ] || [ -e "gems.rb" ]); then elif type bundle &> /dev/null && [[ -e "Gemfile" || -e "gems.rb" ]]; then
bundle exec rake $@ bundle exec rake $@
else else
command rake $@ command rake $@
fi fi
} }
alias rails='_rails_command'
compdef _rails_command=rails
alias rake='_rake_command' alias rake='_rake_command'
compdef _rake_command=rake compdef _rake_command=rake
# Log aliases
alias devlog='tail -f log/development.log' alias devlog='tail -f log/development.log'
alias prodlog='tail -f log/production.log' alias prodlog='tail -f log/production.log'
alias testlog='tail -f log/test.log' alias testlog='tail -f log/test.log'
# Environment settings
alias -g RED='RAILS_ENV=development' alias -g RED='RAILS_ENV=development'
alias -g REP='RAILS_ENV=production' alias -g REP='RAILS_ENV=production'
alias -g RET='RAILS_ENV=test' alias -g RET='RAILS_ENV=test'
@ -43,47 +47,69 @@ alias rc='rails console'
alias rcs='rails console --sandbox' alias rcs='rails console --sandbox'
alias rd='rails destroy' alias rd='rails destroy'
alias rdb='rails dbconsole' 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 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' alias rgen='rails generate'
alias rgm='rails generate migration' alias rgm='rails generate migration'
alias rlc='rails log:clear'
alias rmd='rails middleware'
alias rn='rails notes'
alias rp='rails plugin' alias rp='rails plugin'
alias rr='rails routes' alias rr='rails routes'
alias rrg='rails routes | grep' alias rrg='rails routes | grep'
alias ru='rails runner'
alias rs='rails server' alias rs='rails server'
alias rsb='rails server --bind'
alias rsd='rails server --debugger' alias rsd='rails server --debugger'
alias rsp='rails server --port' alias rsp='rails server --port'
alias rsb='rails server --bind' alias rsts='rails stats'
alias rt='rails test'
alias ru='rails runner'
# Foreman aliases
alias fmns='foreman start'
# Rake aliases # Rake aliases
alias rdm='rake db:migrate' alias rkdc='rake db:create'
alias rdmr='rake db:migrate:redo' alias rkdd='rake db:drop'
alias rdmd='rake db:migrate:down' alias rkdm='rake db:migrate'
alias rdms='rake db:migrate:status' alias rkdmd='rake db:migrate:down'
alias rdmu='rake db:migrate:up' alias rkdmr='rake db:migrate:redo'
alias rdr='rake db:rollback' alias rkdms='rake db:migrate:status'
alias rdc='rake db:create' alias rkdmtc='rake db:migrate db:test:clone'
alias rds='rake db:seed' alias rkdmu='rake db:migrate:up'
alias rdd='rake db:drop' alias rkdr='rake db:rollback'
alias rdrs='rake db:reset' alias rkdrs='rake db:reset'
alias rdtc='rake db:test:clone' alias rkds='rake db:seed'
alias rdtp='rake db:test:prepare' alias rkdsl='rake db:schema:load'
alias rdmtc='rake db:migrate db:test:clone' alias rkdtc='rake db:test:clone'
alias rdsl='rake db:schema:load' alias rkdtp='rake db:test:prepare'
alias rlc='rake log:clear' alias rklc='rake log:clear'
alias rn='rake notes' alias rkmd='rake middleware'
alias rt='rake test' alias rkn='rake notes'
alias rmd='rake middleware' alias rksts='rake stats'
alias rsts='rake stats' alias rkt='rake test'
# legacy stuff # legacy stuff
alias sstat='thin --stats "/thin/stats" start' alias sc='ruby script/console'
alias sg='ruby script/generate'
alias sd='ruby script/destroy' alias sd='ruby script/destroy'
alias sd='ruby script/server --debugger'
alias sg='ruby script/generate'
alias sp='ruby script/plugin' alias sp='ruby script/plugin'
alias sr='ruby script/runner' alias sr='ruby script/runner'
alias ssp='ruby script/spec' alias ssp='ruby script/spec'
alias sc='ruby script/console' alias sstat='thin --stats "/thin/stats" start'
alias sd='ruby script/server --debugger'
function remote_console() { function remote_console() {
/usr/bin/env ssh $1 "( cd $2 && ruby script/console production )" /usr/bin/env ssh $1 "( cd $2 && ruby script/console production )"

View file

@ -2,12 +2,6 @@ if (( ! $+commands[rbw] )); then
return return
fi fi
# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
# Add completions folder in $ZSH_CACHE_DIR
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file doesn't exist yet, we need to autoload it and # If the completion file doesn't exist yet, we need to autoload it and
# bind it to `rbw`. Otherwise, compinit will have already done that. # bind it to `rbw`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_rbw" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_rbw" ]]; then

View file

@ -2,11 +2,6 @@ if ! (( $+commands[rustup] && $+commands[cargo] )); then
return return
fi fi
# Add completions folder in $ZSH_CACHE_DIR
# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file doesn't exist yet, we need to autoload it and # If the completion file doesn't exist yet, we need to autoload it and
# bind it to `cargo`. Otherwise, compinit will have already done that # bind it to `cargo`. Otherwise, compinit will have already done that
if [[ ! -f "$ZSH_CACHE_DIR/completions/_cargo" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_cargo" ]]; then

View file

@ -1,14 +1,6 @@
print ${(%):-'%F{yellow}The `rustup` plugin is deprecated and has been moved to the `rust` plugin.'} print ${(%):-'%F{yellow}The `rustup` plugin is deprecated and has been moved to the `rust` plugin.'}
print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'} print ${(%):-'Please update your .zshrc to use the `%Brust%b` plugin instead.%f'}
# TODO: 2021-12-28: remove this block
# Handle $0 according to the standard:
# https://zdharma-continuum.github.io/Zsh-100-Commits-Club/Zsh-Plugin-Standard.html
0="${${ZERO:-${0:#$ZSH_ARGZERO}}:-${(%):-%N}}"
0="${${(M)0:#/*}:-$PWD/$0}"
# Remove old generated completion file
command rm -f "${0:A:h}/_rustup" "$ZSH_CACHE_DIR/rustup_version"
(( ${fpath[(Ie)$ZSH/plugins/rust]} )) || { (( ${fpath[(Ie)$ZSH/plugins/rust]} )) || {
fpath=("$ZSH/plugins/rust" $fpath) fpath=("$ZSH/plugins/rust" $fpath)
source "$ZSH/plugins/rust/rust.plugin.zsh" source "$ZSH/plugins/rust/rust.plugin.zsh"

View file

@ -23,6 +23,7 @@ plugins=(... rvm)
| `rb26` | `rvm use ruby-2.6` | | `rb26` | `rvm use ruby-2.6` |
| `rb27` | `rvm use ruby-2.7` | | `rb27` | `rvm use ruby-2.7` |
| `rb30` | `rvm use ruby-3.0` | | `rb30` | `rvm use ruby-3.0` |
| `rb31` | `rvm use ruby-3.1` |
| `rvm-update` | `rvm get head` | | `rvm-update` | `rvm get head` |
| `gems` | `gem list` | | `gems` | `gem list` |
| `rvms` | `rvm gemset` | | `rvms` | `rvm gemset` |

View file

@ -26,6 +26,7 @@ rubies=(
26 'ruby-2.6' 26 'ruby-2.6'
27 'ruby-2.7' 27 'ruby-2.7'
30 'ruby-3.0' 30 'ruby-3.0'
31 'ruby-3.1'
) )
for v in ${(k)rubies}; do for v in ${(k)rubies}; do

View file

@ -18,7 +18,8 @@ plugins=(... sprunge)
| `echo data \| sprunge` | Any piped data will be uploaded | | `echo data \| sprunge` | Any piped data will be uploaded |
Once sprunge has processed the input it will give you a unique HTTP address: Once sprunge has processed the input it will give you a unique HTTP address:
```
```console
$ sprunge "hello" $ sprunge "hello"
http://sprunge.us/XxjnKz http://sprunge.us/XxjnKz
``` ```
@ -30,3 +31,8 @@ http://sprunge.us/XxjnKz
- Argument precedence goes as follows: stdin > piped input > text strings. - Argument precedence goes as follows: stdin > piped input > text strings.
- If a filename is misspelled or doesn't have the necessary path description, it will NOT - If a filename is misspelled or doesn't have the necessary path description, it will NOT
generate an error, but instead treat it as a text string. generate an error, but instead treat it as a text string.
## Credits
- Original code: [shellperson.net](https://web.archive.org/web/20190910065842/https://www.shellperson.net/sprunge-pastebin-script/).
- Adapted by: Matt Parnell (@ilikenwf).

View file

@ -1,7 +1,3 @@
# Contributed and SLIGHTLY modded by Matt Parnell/ilikenwf <parwok -at- gmail>
# Created by the blogger at the URL below...I don't know where to find his/her name
# Original found at https://www.shellperson.net/sprunge-pastebin-script/
sprunge() { sprunge() {
if [[ "$1" = --help ]]; then if [[ "$1" = --help ]]; then
fmt -s >&2 << EOF fmt -s >&2 << EOF

View file

@ -9,10 +9,10 @@ To use it, add `svn-fast-info` to the plugins array in your zshrc file:
plugins=(... svn-fast-info) plugins=(... svn-fast-info)
``` ```
It's faster because his efficient use of svn (single svn call) which saves a lot on a huge codebase It's faster because it has an efficient use of svn (single svn call) which saves a lot on a huge codebase.
It displays the current status of the local files (added, deleted, modified, replaced, or else...) It displays the current status of the local files (added, deleted, modified, replaced, or else...)
Use `svn_prompt_info` method to display the svn repository status in your theme. Use `svn_prompt_info` method to display the svn repository status in your theme.
## Functions ## Functions

View file

@ -22,6 +22,7 @@ plugins=(... terraform)
| `tfd` | `terraform destroy` | | `tfd` | `terraform destroy` |
| `tff` | `terraform fmt` | | `tff` | `terraform fmt` |
| `tfi` | `terraform init` | | `tfi` | `terraform init` |
| `tfo` | `terraform output` |
| `tfp` | `terraform plan` | | `tfp` | `terraform plan` |
| `tfv` | `terraform validate` | | `tfv` | `terraform validate` |

View file

@ -13,5 +13,6 @@ alias tfa='terraform apply'
alias tfd='terraform destroy' alias tfd='terraform destroy'
alias tff='terraform fmt' alias tff='terraform fmt'
alias tfi='terraform init' alias tfi='terraform init'
alias tfo='terraform output'
alias tfp='terraform plan' alias tfp='terraform plan'
alias tfv='terraform validate' alias tfv='terraform validate'

19
plugins/toolbox/README.md Normal file
View file

@ -0,0 +1,19 @@
# toolbox plugin
Plugin for [toolbox](https://containertoolbx.org), a tool to use containerized CLI environments.
To use it, add `toolbox` to your plugins array in your `.zshrc` file:
```zsh
plugins=(... toolbox)
```
## Prompt function
This plugins adds `toolbox_prompt_info()` function. Using it in your prompt, it will show the toolbox indicator ⬢ (if you are running in a toolbox container), and nothing if not.
You can use it by adding `$(toolbox_prompt_info)` to your `PROMPT` or `RPROMPT` variable:
```zsh
RPROMPT='$(toolbox_prompt_info)'
```

View file

@ -0,0 +1,3 @@
function toolbox_prompt_info() {
[[ -f /run/.toolboxenv ]] && echo "⬢"
}

View file

@ -3,11 +3,6 @@ if (( ! $+commands[volta] )); then
return return
fi fi
# TODO: 2021-12-28: remove this bit of code as it exists in oh-my-zsh.sh
# Add completions folder in $ZSH_CACHE_DIR
command mkdir -p "$ZSH_CACHE_DIR/completions"
(( ${fpath[(Ie)"$ZSH_CACHE_DIR/completions"]} )) || fpath=("$ZSH_CACHE_DIR/completions" $fpath)
# If the completion file doesn't exist yet, we need to autoload it and # If the completion file doesn't exist yet, we need to autoload it and
# bind it to `deno`. Otherwise, compinit will have already done that. # bind it to `deno`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_volta" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_volta" ]]; then

View file

@ -226,7 +226,7 @@ Zsh plugins may look scary, as they seem to have some "architecture". In fact, w
1. It has its directory added to `fpath` 1. It has its directory added to `fpath`
2. It has any first `*.plugin.zsh` file sourced 2. It has any first `*.plugin.zsh` file sourced
That's it. When one contributes to Oh-My-Zsh or creates a plugin for any plugin manager, he only needs to account for this. That's it. When one contributes to Oh-My-Zsh or creates a plugin for any plugin manager, they only need to account for this.
The same with doing any non-typical Zsh Navigation Tools installation. The same with doing any non-typical Zsh Navigation Tools installation.
## More ## More

View file

@ -2,27 +2,23 @@ function toon {
echo -n "" echo -n ""
} }
get_git_dirty() {
git diff --quiet || echo '*'
}
autoload -Uz vcs_info autoload -Uz vcs_info
zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:*' unstagedstr '%F{red}*' # display this when there are unstaged changes zstyle ':vcs_info:*' unstagedstr '%F{red}*' # display this when there are unstaged changes
zstyle ':vcs_info:*' stagedstr '%F{yellow}+' # display this when there are staged changes zstyle ':vcs_info:*' stagedstr '%F{yellow}+' # display this when there are staged changes
zstyle ':vcs_info:*' actionformats \ zstyle ':vcs_info:*' actionformats '%F{5}[%F{2}%b%F{3}|%F{1}%a%c%u%F{5}]%f '
'%F{5}%F{5}[%F{2}%b%F{3}|%F{1}%a%c%u%F{5}]%f ' zstyle ':vcs_info:*' formats '%F{5}[%F{2}%b%c%u%F{5}]%f '
zstyle ':vcs_info:*' formats \ zstyle ':vcs_info:svn:*' branchformat '%b'
'%F{5}%F{5}[%F{2}%b%c%u%F{5}]%f ' zstyle ':vcs_info:svn:*' actionformats '%F{5}[%F{2}%b%F{1}:%F{3}%i%F{3}|%F{1}%a%c%u%F{5}]%f '
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r' zstyle ':vcs_info:svn:*' formats '%F{5}[%F{2}%b%F{1}:%F{3}%i%c%u%F{5}]%f '
zstyle ':vcs_info:*' enable git cvs svn zstyle ':vcs_info:*' enable git cvs svn
theme_precmd () { theme_precmd () {
vcs_info vcs_info
} }
setopt prompt_subst setopt prompt_subst
PROMPT='%{$fg[magenta]%}$(toon)%{$reset_color%} %~/ %{$reset_color%}${vcs_info_msg_0_}%{$reset_color%}' PROMPT='%{$fg[magenta]%}$(toon)%{$reset_color%} %~/ %{$reset_color%}${vcs_info_msg_0_}%{$reset_color%}'
autoload -U add-zsh-hook autoload -U add-zsh-hook
add-zsh-hook precmd theme_precmd add-zsh-hook precmd theme_precmd

View file

@ -6,7 +6,9 @@ zstyle ':vcs_info:*' unstagedstr '%F{red}*' # display this when there are unst
zstyle ':vcs_info:*' stagedstr '%F{yellow}+' # display this when there are staged changes zstyle ':vcs_info:*' stagedstr '%F{yellow}+' # display this when there are staged changes
zstyle ':vcs_info:*' actionformats '%F{5}(%F{2}%b%F{3}|%F{1}%a%c%u%m%F{5})%f ' zstyle ':vcs_info:*' actionformats '%F{5}(%F{2}%b%F{3}|%F{1}%a%c%u%m%F{5})%f '
zstyle ':vcs_info:*' formats '%F{5}(%F{2}%b%c%u%m%F{5})%f ' zstyle ':vcs_info:*' formats '%F{5}(%F{2}%b%c%u%m%F{5})%f '
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r' zstyle ':vcs_info:svn:*' branchformat '%b'
zstyle ':vcs_info:svn:*' actionformats '%F{5}(%F{2}%b%F{1}:%{3}%i%F{3}|%F{1}%a%c%u%m%F{5})%f '
zstyle ':vcs_info:svn:*' formats '%F{5}(%F{2}%b%F{1}:%F{3}%i%c%u%m%F{5})%f '
zstyle ':vcs_info:*' enable git cvs svn zstyle ':vcs_info:*' enable git cvs svn
zstyle ':vcs_info:git*+set-message:*' hooks untracked-git zstyle ':vcs_info:git*+set-message:*' hooks untracked-git

View file

@ -4,7 +4,6 @@ autoload -Uz vcs_info
zstyle ':vcs_info:*' actionformats \ zstyle ':vcs_info:*' actionformats \
'%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f ' '%F{5}(%f%s%F{5})%F{3}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
zstyle ':vcs_info:*' formats '%F{2}%s%F{7}:%F{2}(%F{1}%b%F{2})%f ' zstyle ':vcs_info:*' formats '%F{2}%s%F{7}:%F{2}(%F{1}%b%F{2})%f '
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'
zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' enable git
add-zsh-hook precmd prompt_vcs add-zsh-hook precmd prompt_vcs

View file

@ -3,16 +3,18 @@ autoload -Uz vcs_info
zstyle ':vcs_info:*' stagedstr '%F{green}●' zstyle ':vcs_info:*' stagedstr '%F{green}●'
zstyle ':vcs_info:*' unstagedstr '%F{yellow}●' zstyle ':vcs_info:*' unstagedstr '%F{yellow}●'
zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r' zstyle ':vcs_info:svn:*' branchformat '%b'
zstyle ':vcs_info:svn:*' formats ' [%b%F{1}:%F{11}%i%c%u%B%F{green}]'
zstyle ':vcs_info:*' enable git svn zstyle ':vcs_info:*' enable git svn
theme_precmd () {
if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {
zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]'
} else {
zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{red}●%F{green}]'
}
vcs_info theme_precmd () {
if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
zstyle ':vcs_info:git:*' formats ' [%b%c%u%B%F{green}]'
else
zstyle ':vcs_info:git:*' formats ' [%b%c%u%B%F{red}●%F{green}]'
fi
vcs_info
} }
setopt prompt_subst setopt prompt_subst

View file

@ -28,7 +28,6 @@ zstyle ':vcs_info:*' actionformats \
'%{$c8%}(%f%s)%{$c7%}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f ' '%{$c8%}(%f%s)%{$c7%}-%F{5}[%F{2}%b%F{3}|%F{1}%a%F{5}]%f '
zstyle ':vcs_info:*' formats \ zstyle ':vcs_info:*' formats \
"%{$c8%}%s%{$c7%}:%{$c7%}(%{$c9%}%b%{$c7%})%f " "%{$c8%}%s%{$c7%}:%{$c7%}(%{$c9%}%b%{$c7%})%f "
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'
zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' enable git
add-zsh-hook precmd prompt_jnrowe_precmd add-zsh-hook precmd prompt_jnrowe_precmd

View file

@ -102,7 +102,6 @@ zstyle ':vcs_info:*' actionformats \
zstyle ':vcs_info:*' formats \ zstyle ':vcs_info:*' formats \
"%{$c8%}%s%%{$c7%} %{$c9%}%{$c11%}%b%{$c7%} %{$reset_color%}%f " "%{$c8%}%s%%{$c7%} %{$c9%}%{$c11%}%b%{$c7%} %{$reset_color%}%f "
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{3}%r'
zstyle ':vcs_info:*' enable git zstyle ':vcs_info:*' enable git
add-zsh-hook precmd prompt_jnrowe_precmd add-zsh-hook precmd prompt_jnrowe_precmd

View file

@ -3,16 +3,18 @@ autoload -Uz vcs_info
zstyle ':vcs_info:*' stagedstr '%F{green}●' zstyle ':vcs_info:*' stagedstr '%F{green}●'
zstyle ':vcs_info:*' unstagedstr '%F{yellow}●' zstyle ':vcs_info:*' unstagedstr '%F{yellow}●'
zstyle ':vcs_info:*' check-for-changes true zstyle ':vcs_info:*' check-for-changes true
zstyle ':vcs_info:(sv[nk]|bzr):*' branchformat '%b%F{1}:%F{11}%r' zstyle ':vcs_info:svn:*' branchformat '%b'
zstyle ':vcs_info:svn:*' formats ' [%b%F{1}:%F{11}%i%c%u%B%F{green}]'
zstyle ':vcs_info:*' enable git svn zstyle ':vcs_info:*' enable git svn
theme_precmd () {
if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]] {
zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{green}]'
} else {
zstyle ':vcs_info:*' formats ' [%b%c%u%B%F{red}●%F{green}]'
}
vcs_info theme_precmd () {
if [[ -z $(git ls-files --other --exclude-standard 2> /dev/null) ]]; then
zstyle ':vcs_info:git:*' formats ' [%b%c%u%B%F{green}]'
else
zstyle ':vcs_info:git:*' formats ' [%b%c%u%B%F{red}●%F{green}]'
fi
vcs_info
} }
setopt prompt_subst setopt prompt_subst

View file

@ -36,11 +36,11 @@ function current_epoch() {
function is_update_available() { function is_update_available() {
local branch local branch
branch=${"$(cd -q "$ZSH"; git config --local oh-my-zsh.branch)":-master} branch=${"$(builtin cd -q "$ZSH"; git config --local oh-my-zsh.branch)":-master}
local remote remote_url remote_repo local remote remote_url remote_repo
remote=${"$(cd -q "$ZSH"; git config --local oh-my-zsh.remote)":-origin} remote=${"$(builtin cd -q "$ZSH"; git config --local oh-my-zsh.remote)":-origin}
remote_url=$(cd -q "$ZSH"; git config remote.$remote.url) remote_url=$(builtin cd -q "$ZSH"; git config remote.$remote.url)
local repo local repo
case "$remote_url" in case "$remote_url" in
@ -58,7 +58,7 @@ function is_update_available() {
# Get local HEAD. If this fails assume there are updates # Get local HEAD. If this fails assume there are updates
local local_head local local_head
local_head=$(cd -q "$ZSH"; git rev-parse $branch 2>/dev/null) || return 0 local_head=$(builtin cd -q "$ZSH"; git rev-parse $branch 2>/dev/null) || return 0
# Get remote HEAD. If no suitable command is found assume there are updates # Get remote HEAD. If no suitable command is found assume there are updates
# On any other error, skip the update (connection may be down) # On any other error, skip the update (connection may be down)
@ -81,7 +81,7 @@ function is_update_available() {
# If local and remote HEADs don't match, check if there's a common ancestor # If local and remote HEADs don't match, check if there's a common ancestor
# If the merge-base call fails, $remote_head might not be downloaded so assume there are updates # If the merge-base call fails, $remote_head might not be downloaded so assume there are updates
local base local base
base=$(cd -q "$ZSH"; git merge-base $local_head $remote_head 2>/dev/null) || return 0 base=$(builtin cd -q "$ZSH"; git merge-base $local_head $remote_head 2>/dev/null) || return 0
# If the common ancestor ($base) is not $remote_head, # If the common ancestor ($base) is not $remote_head,
# the local HEAD is older than the remote HEAD # the local HEAD is older than the remote HEAD
@ -170,7 +170,7 @@ function has_typed_input() {
fi fi
# Test if Oh My Zsh directory is a git repository # Test if Oh My Zsh directory is a git repository
if ! (cd -q "$ZSH" && LANG= git rev-parse &>/dev/null); then if ! (builtin cd -q "$ZSH" && LANG= git rev-parse &>/dev/null); then
echo >&2 "[oh-my-zsh] Can't update: not a git repository." echo >&2 "[oh-my-zsh] Can't update: not a git repository."
return return
fi fi

View file

@ -45,7 +45,9 @@ USER=${USER:-$(id -u -n)}
# $HOME is defined at the time of login, but it could be unset. If it is unset, # $HOME is defined at the time of login, but it could be unset. If it is unset,
# a tilde by itself (~) will not be expanded to the current user's home directory. # a tilde by itself (~) will not be expanded to the current user's home directory.
# POSIX: https://pubs.opengroup.org/onlinepubs/009696899/basedefs/xbd_chap08.html#tag_08_03 # POSIX: https://pubs.opengroup.org/onlinepubs/009696899/basedefs/xbd_chap08.html#tag_08_03
HOME="${HOME:-$(getent passwd $USER | cut -d: -f6)}" HOME="${HOME:-$(getent passwd $USER 2>/dev/null | cut -d: -f6)}"
# macOS does not have getent, but this works even if $HOME is unset
HOME="${HOME:-$(eval echo ~$USER)}"
# Track if $ZSH was provided # Track if $ZSH was provided
@ -283,10 +285,15 @@ setup_ohmyzsh() {
&& git remote add origin "$REMOTE" \ && git remote add origin "$REMOTE" \
&& git fetch --depth=1 origin \ && git fetch --depth=1 origin \
&& git checkout -b "$BRANCH" "origin/$BRANCH" || { && git checkout -b "$BRANCH" "origin/$BRANCH" || {
rm -rf "$ZSH" [ ! -d "$ZSH" ] || {
cd -
rm -rf "$ZSH" 2>/dev/null
}
fmt_error "git clone of oh-my-zsh repo failed" fmt_error "git clone of oh-my-zsh repo failed"
exit 1 exit 1
} }
# Exit installation directory
cd -
echo echo
} }

View file

@ -164,6 +164,10 @@ git remote -v | while read remote url extra; do
git@github.com:robbyrussell/oh-my-zsh(|.git)) git@github.com:robbyrussell/oh-my-zsh(|.git))
git remote set-url "$remote" "git@github.com:ohmyzsh/ohmyzsh.git" git remote set-url "$remote" "git@github.com:ohmyzsh/ohmyzsh.git"
break ;; break ;;
# Update out-of-date "unauthenticated git protocol on port 9418" to https
git://github.com/robbyrussell/oh-my-zsh(|.git))
git remote set-url "$remote" "https://github.com/ohmyzsh/ohmyzsh.git"
break ;;
esac esac
done done