| @ -0,0 +1,8 @@ | |||||
| # custom files | |||||
| custom/ | |||||
| !custom/plugins/example | |||||
| !custom/example.zsh | |||||
| # temp files directories | |||||
| cache/ | |||||
| log/ | |||||
| @ -0,0 +1,123 @@ | |||||
| # CONTRIBUTING GUIDELINES | |||||
| Oh-My-Zsh is a community-driven project. Contribution is welcome, encouraged and appreciated. | |||||
| It is also essential for the development of the project. | |||||
| These guidelines are an attempt at better addressing the huge amount of pending | |||||
| issues and pull requests. Please read them closely. | |||||
| Foremost, be so kind as to [search](#use-the-search-luke). This ensures any contribution | |||||
| you would make is not already covered. | |||||
| * [Issues](#reporting-issues) | |||||
| * [You have a problem](#you-have-a-problem) | |||||
| * [You have a suggestion](#you-have-a-suggestion) | |||||
| * [Pull Requests](#submitting-pull-requests) | |||||
| * [Getting started](#getting-started) | |||||
| * [You have a solution](#you-have-a-solution) | |||||
| * [You have an addition](#you-have-an-addition) | |||||
| * [Information sources (_aka_ search)](#use-the-search-luke) | |||||
| **BONUS:** [Volunteering](#you-have-spare-time-to-volunteer) | |||||
| ## Reporting Issues | |||||
| ### You have a problem | |||||
| Please be so kind as to [search](#use-the-search-luke) for any open issue already covering | |||||
| your problem. | |||||
| If you find one, comment on it so we can know there are more people experiencing it. | |||||
| If not, look at the [Troubleshooting](https://github.com/robbyrussell/oh-my-zsh/wiki/Troubleshooting) | |||||
| page for instructions on how to gather data to better debug your problem. | |||||
| Then, you can go ahead and create an issue with as much detail as you can provide. | |||||
| It should include the data gathered as indicated above, along with: | |||||
| 1. How to reproduce the problem | |||||
| 2. What the correct behavior should be | |||||
| 3. What the actual behavior is | |||||
| Please copy to anyone relevant (_eg_ plugin maintainers) by mentioning their GitHub handle | |||||
| (starting with `@`) in your message. | |||||
| We will do our very best to help you. | |||||
| ### You have a suggestion | |||||
| Please be so kind as to [search](#use-the-search-luke) for any open issue already covering | |||||
| your suggestion. | |||||
| If you find one, comment on it so we can know there are more people supporting it. | |||||
| If not, you can go ahead and create an issue. Please copy to anyone relevant (_eg_ plugin | |||||
| maintainers) by mentioning their GitHub handle (starting with `@`) in your message. | |||||
| ## Submitting Pull Requests | |||||
| ### Getting started | |||||
| You should be familiar with the basics of | |||||
| [contributing on GitHub](https://help.github.com/articles/using-pull-requests) and have a fork | |||||
| [properly set up](https://github.com/robbyrussell/oh-my-zsh/wiki/Contribution-Technical-Practices). | |||||
| You MUST always create PRs with _a dedicated branch_ based on the latest upstream tree. | |||||
| If you create your own PR, please make sure you do it right. Also be so kind as to reference | |||||
| any issue that would be solved in the PR description body, | |||||
| [for instance](https://help.github.com/articles/closing-issues-via-commit-messages/) | |||||
| _"Fixes #XXXX"_ for issue number XXXX. | |||||
| ### You have a solution | |||||
| Please be so kind as to [search](#use-the-search-luke) for any open issue already covering | |||||
| your [problem](#you-have-a-problem), and any pending/merged/rejected PR covering your solution. | |||||
| If the solution is already reported, try it out and +1 the pull request if the | |||||
| solution works ok. On the other hand, if you think your solution is better, post | |||||
| it with a reference to the other one so we can have both solutions to compare. | |||||
| If not, then go ahead and submit a PR. Please copy to anyone relevant (e.g. plugin | |||||
| maintainers) by mentioning their GitHub handle (starting with `@`) in your message. | |||||
| ### You have an addition | |||||
| Please [do not](https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#dont-send-us-your-theme-for-now) | |||||
| send themes for now. | |||||
| Please be so kind as to [search](#use-the-search-luke) for any pending, merged or rejected Pull Requests | |||||
| covering or related to what you want to add. | |||||
| If you find one, try it out and work with the author on a common solution. | |||||
| If not, then go ahead and submit a PR. Please copy to anyone relevant (_eg_ plugin | |||||
| maintainers) by mentioning their GitHub handle (starting with `@`) in your message. | |||||
| For any extensive change, _eg_ a new plugin, you will have to find testers to +1 your PR. | |||||
| ---- | |||||
| ## Use the Search, Luke | |||||
| _May the Force (of past experiences) be with you_ | |||||
| GitHub offers [many search features](https://help.github.com/articles/searching-github/) | |||||
| to help you check whether a similar contribution to yours already exists. Please search | |||||
| before making any contribution, it avoids duplicates and eases maintenance. Trust me, | |||||
| that works 90% of the time. | |||||
| You can also take a look at the [FAQ](https://github.com/robbyrussell/oh-my-zsh/wiki/FAQ) | |||||
| to be sure your contribution has not already come up. | |||||
| If all fails, your thing has probably not been reported yet, so you can go ahead | |||||
| and [create an issue](#reporting-issues) or [submit a PR](#submitting-pull-requests). | |||||
| ---- | |||||
| ### You have spare time to volunteer | |||||
| Very nice!! :) | |||||
| Please have a look at the [Volunteer](https://github.com/robbyrussell/oh-my-zsh/wiki/Volunteers) | |||||
| page for instructions on where to start and more. | |||||
| @ -0,0 +1,22 @@ | |||||
| The MIT License (MIT) | |||||
| Copyright (c) 2009-2019 Robby Russell and contributors | |||||
| See the full list at https://github.com/robbyrussell/oh-my-zsh/contributors | |||||
| Permission is hereby granted, free of charge, to any person obtaining a copy | |||||
| of this software and associated documentation files (the "Software"), to deal | |||||
| in the Software without restriction, including without limitation the rights | |||||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | |||||
| copies of the Software, and to permit persons to whom the Software is | |||||
| furnished to do so, subject to the following conditions: | |||||
| The above copyright notice and this permission notice shall be included in all | |||||
| copies or substantial portions of the Software. | |||||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |||||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | |||||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | |||||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | |||||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | |||||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | |||||
| SOFTWARE. | |||||
| @ -0,0 +1,251 @@ | |||||
| <p align="center"> | |||||
| <img src="https://s3.amazonaws.com/ohmyzsh/oh-my-zsh-logo.png" alt="Oh My Zsh"> | |||||
| </p> | |||||
| Oh My Zsh is an open source, community-driven framework for managing your [zsh](https://www.zsh.org/) configuration. | |||||
| Sounds boring. Let's try again. | |||||
| __Oh My Zsh will not make you a 10x developer...but you might feel like one.__ | |||||
| Once installed, your terminal shell will become the talk of the town _or your money back!_ With each keystroke in your command prompt, you'll take advantage of the hundreds of powerful plugins and beautiful themes. Strangers will come up to you in cafés and ask you, _"that is amazing! are you some sort of genius?"_ | |||||
| Finally, you'll begin to get the sort of attention that you have always felt you deserved. ...or maybe you'll use the time that you're saving to start flossing more often. 😬 | |||||
| To learn more, visit [ohmyz.sh](https://ohmyz.sh) and follow [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter. | |||||
| ## Getting Started | |||||
| ### Prerequisites | |||||
| __Disclaimer:__ _Oh My Zsh works best on macOS and Linux._ | |||||
| * Unix-like operating system (macOS or Linux) | |||||
| * [Zsh](https://www.zsh.org) should be installed (v4.3.9 or more recent). If not pre-installed (`zsh --version` to confirm), check the following instruction here: [Installing ZSH](https://github.com/robbyrussell/oh-my-zsh/wiki/Installing-ZSH) | |||||
| * `curl` or `wget` should be installed | |||||
| * `git` should be installed | |||||
| ### Basic Installation | |||||
| 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` or `wget`. | |||||
| #### via curl | |||||
| ```shell | |||||
| sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" | |||||
| ``` | |||||
| #### via wget | |||||
| ```shell | |||||
| sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)" | |||||
| ``` | |||||
| ## Using Oh My Zsh | |||||
| ### Plugins | |||||
| Oh My Zsh comes with a shitload of plugins to take advantage of. You can take a look in the [plugins](https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins) directory and/or the [wiki](https://github.com/robbyrussell/oh-my-zsh/wiki/Plugins) to see what's currently available. | |||||
| #### Enabling Plugins | |||||
| Once you spot a plugin (or several) that you'd like to use with Oh My Zsh, you'll need to enable them in the `.zshrc` file. You'll find the zshrc file in your `$HOME` directory. Open it with your favorite text editor and you'll see a spot to list all the plugins you want to load. | |||||
| ```shell | |||||
| vi ~/.zshrc | |||||
| ``` | |||||
| For example, this might begin to look like this: | |||||
| ```shell | |||||
| plugins=( | |||||
| git | |||||
| bundler | |||||
| dotenv | |||||
| osx | |||||
| rake | |||||
| rbenv | |||||
| ruby | |||||
| ) | |||||
| ``` | |||||
| #### Using Plugins | |||||
| Most plugins (should! we're working on this) include a __README__, which documents how to use them. | |||||
| ### Themes | |||||
| We'll admit it. Early in the Oh My Zsh world, we may have gotten a bit too theme happy. We have over one hundred themes now bundled. Most of them have [screenshots](https://wiki.github.com/robbyrussell/oh-my-zsh/themes) on the wiki. Check them out! | |||||
| #### Selecting a Theme | |||||
| _Robby's theme is the default one. It's not the fanciest one. It's not the simplest one. It's just the right one (for him)._ | |||||
| Once you find a theme that you'd like to use, you will need to edit the `~/.zshrc` file. You'll see an environment variable (all caps) in there that looks like: | |||||
| ```shell | |||||
| ZSH_THEME="robbyrussell" | |||||
| ``` | |||||
| To use a different theme, simply change the value to match the name of your desired theme. For example: | |||||
| ```shell | |||||
| ZSH_THEME="agnoster" # (this is one of the fancy ones) | |||||
| # see https://github.com/robbyrussell/oh-my-zsh/wiki/Themes#agnoster | |||||
| ``` | |||||
| _Note: many themes require installing the [Powerline Fonts](https://github.com/powerline/fonts) in order to render properly._ | |||||
| Open up a new terminal window and your prompt should look something like this: | |||||
|  | |||||
| In case you did not find a suitable theme for your needs, please have a look at the wiki for [more of them](https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes). | |||||
| If you're feeling feisty, you can let the computer select one randomly for you each time you open a new terminal window. | |||||
| ```shell | |||||
| ZSH_THEME="random" # (...please let it be pie... please be some pie..) | |||||
| ``` | |||||
| And if you want to pick random theme from a list of your favorite themes: | |||||
| ```shell | |||||
| ZSH_THEME_RANDOM_CANDIDATES=( | |||||
| "robbyrussell" | |||||
| "agnoster" | |||||
| ) | |||||
| ``` | |||||
| ## Advanced Topics | |||||
| If you're the type that likes to get their hands dirty, these sections might resonate. | |||||
| ### Advanced Installation | |||||
| Some users may want to change the default path, or manually install Oh My Zsh. | |||||
| #### Custom Directory | |||||
| The default location is `~/.oh-my-zsh` (hidden in your home directory) | |||||
| If you'd like to change the install directory with the `ZSH` environment variable, either by running `export ZSH=/your/path` before installing, or by setting it before the end of the install pipeline like this: | |||||
| ```shell | |||||
| export ZSH="$HOME/.dotfiles/oh-my-zsh"; sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" | |||||
| ``` | |||||
| #### Manual Installation | |||||
| ##### 1. Clone the repository: | |||||
| ```shell | |||||
| git clone https://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh | |||||
| ``` | |||||
| ##### 2. *Optionally*, backup your existing `~/.zshrc` file: | |||||
| ```shell | |||||
| cp ~/.zshrc ~/.zshrc.orig | |||||
| ``` | |||||
| ##### 3. Create a new zsh configuration file | |||||
| You can create a new zsh config file by copying the template that we have included for you. | |||||
| ```shell | |||||
| cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc | |||||
| ``` | |||||
| ##### 4. Change your default shell | |||||
| ```shell | |||||
| chsh -s /bin/zsh | |||||
| ``` | |||||
| ##### 5. Initialize your new zsh configuration | |||||
| Once you open up a new terminal window, it should load zsh with Oh My Zsh's configuration. | |||||
| ### Installation Problems | |||||
| 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 switching to `oh-my-zsh`. | |||||
| * If you installed manually or changed the install location, check the `ZSH` environment variable in `~/.zshrc`. | |||||
| ### Custom Plugins and Themes | |||||
| If you want to override any of the default behaviors, just add a new file (ending in `.zsh`) in the `custom/` directory. | |||||
| If you have many functions that go well together, you can put them as a `XYZ.plugin.zsh` file in the `custom/plugins/` directory and then enable this plugin. | |||||
| If you would like to override the functionality of a plugin distributed with Oh My Zsh, create a plugin of the same name in the `custom/plugins/` directory and it will be loaded instead of the one in `plugins/`. | |||||
| ## Getting Updates | |||||
| By default, you will be prompted to check for upgrades every few weeks. If you would like `oh-my-zsh` to automatically upgrade itself without prompting you, set the following in your `~/.zshrc`: | |||||
| ```shell | |||||
| DISABLE_UPDATE_PROMPT=true | |||||
| ``` | |||||
| To disable automatic upgrades, set the following in your `~/.zshrc`: | |||||
| ```shell | |||||
| DISABLE_AUTO_UPDATE=true | |||||
| ``` | |||||
| ### Manual Updates | |||||
| If you'd like to upgrade at any point in time (maybe someone just released a new plugin and you don't want to wait a week?) you just need to run: | |||||
| ```shell | |||||
| upgrade_oh_my_zsh | |||||
| ``` | |||||
| Magic! 🎉 | |||||
| ## Uninstalling Oh My Zsh | |||||
| Oh My Zsh isn't for everyone. We'll miss you, but we want to make this an easy breakup. | |||||
| If you want to uninstall `oh-my-zsh`, just run `uninstall_oh_my_zsh` from the command-line. It will remove itself and revert your previous `bash` or `zsh` configuration. | |||||
| ## Contributing | |||||
| I'm far from being a [Zsh](https://www.zsh.org/) expert and suspect there are many ways to improve – if you have ideas on how to make the configuration easier to maintain (and faster), don't hesitate to fork and send pull requests! | |||||
| We also need people to test out pull-requests. So take a look through [the open issues](https://github.com/robbyrussell/oh-my-zsh/issues) and help where you can. | |||||
| ### Do NOT send us themes | |||||
| We have (more than) enough themes for the time being. Please add your theme to the [external themes](https://github.com/robbyrussell/oh-my-zsh/wiki/External-themes) wiki page. | |||||
| ## Contributors | |||||
| Oh My Zsh has a vibrant community of happy users and delightful contributors. Without all the time and help from our contributors, it wouldn't be so awesome. | |||||
| Thank you so much! | |||||
| ## Follow Us | |||||
| We're on the social media. | |||||
| * [@ohmyzsh](https://twitter.com/ohmyzsh) on Twitter. You should follow it. | |||||
| * [Oh My Zsh](https://www.facebook.com/Oh-My-Zsh-296616263819290/) on Facebook. | |||||
| ## Merchandise | |||||
| We have [stickers](https://shop.planetargon.com/products/ohmyzsh-stickers-set-of-3-stickers) and [shirts](https://shop.planetargon.com/products/ohmyzsh-t-shirts) for you to show off your love of Oh My Zsh. Again, this will help you become the talk of the town! | |||||
| ## License | |||||
| Oh My Zsh is released under the [MIT license](LICENSE.txt). | |||||
| ## About Planet Argon | |||||
|  | |||||
| Oh My Zsh was started by the team at [Planet Argon](https://www.planetargon.com/?utm_source=github), a [Ruby on Rails development agency](https://www.planetargon.com/skills/ruby-on-rails-development?utm_source=github). Check out our [other open source projects](https://www.planetargon.com/open-source?utm_source=github). | |||||
| @ -0,0 +1,10 @@ | |||||
| # You can put files here to add functionality separated per file, which | |||||
| # will be ignored by git. | |||||
| # Files on the custom/ directory will be automatically loaded by the init | |||||
| # script, in alphabetical order. | |||||
| # For example: add yourself some shortcuts to projects you often work on. | |||||
| # | |||||
| # brainstormr=~/Projects/development/planetargon/brainstormr | |||||
| # cd $brainstormr | |||||
| # | |||||
| @ -0,0 +1,2 @@ | |||||
| # Add your own custom plugins in the custom/plugins directory. Plugins placed | |||||
| # here will override ones with the same name in the main plugins directory. | |||||
| @ -0,0 +1,4 @@ | |||||
| # Put your custom themes in this folder. | |||||
| # Example: | |||||
| PROMPT="%{$fg[red]%}%n%{$reset_color%}@%{$fg[blue]%}%m %{$fg[yellow]%}%~ %{$reset_color%}%% " | |||||
| @ -0,0 +1,10 @@ | |||||
| ## Bazaar integration | |||||
| ## Just works with the GIT integration just add $(bzr_prompt_info) to the PROMPT | |||||
| function bzr_prompt_info() { | |||||
| BZR_CB=`bzr nick 2> /dev/null | grep -v "ERROR" | cut -d ":" -f2 | awk -F / '{print "bzr::"$1}'` | |||||
| if [ -n "$BZR_CB" ]; then | |||||
| BZR_DIRTY="" | |||||
| [[ -n `bzr status` ]] && BZR_DIRTY=" %{$fg[red]%} * %{$fg[green]%}" | |||||
| echo "$ZSH_THEME_SCM_PROMPT_PREFIX$BZR_CB$BZR_DIRTY$ZSH_THEME_GIT_PROMPT_SUFFIX" | |||||
| fi | |||||
| } | |||||
| @ -0,0 +1,86 @@ | |||||
| # System clipboard integration | |||||
| # | |||||
| # This file has support for doing system clipboard copy and paste operations | |||||
| # from the command line in a generic cross-platform fashion. | |||||
| # | |||||
| # On OS X and Windows, the main system clipboard or "pasteboard" is used. On other | |||||
| # Unix-like OSes, this considers the X Windows CLIPBOARD selection to be the | |||||
| # "system clipboard", and the X Windows `xclip` command must be installed. | |||||
| # clipcopy - Copy data to clipboard | |||||
| # | |||||
| # Usage: | |||||
| # | |||||
| # <command> | clipcopy - copies stdin to clipboard | |||||
| # | |||||
| # clipcopy <file> - copies a file's contents to clipboard | |||||
| # | |||||
| function clipcopy() { | |||||
| emulate -L zsh | |||||
| local file=$1 | |||||
| if [[ $OSTYPE == darwin* ]]; then | |||||
| if [[ -z $file ]]; then | |||||
| pbcopy | |||||
| else | |||||
| cat $file | pbcopy | |||||
| fi | |||||
| elif [[ $OSTYPE == cygwin* ]]; then | |||||
| if [[ -z $file ]]; then | |||||
| cat > /dev/clipboard | |||||
| else | |||||
| cat $file > /dev/clipboard | |||||
| fi | |||||
| else | |||||
| if (( $+commands[xclip] )); then | |||||
| if [[ -z $file ]]; then | |||||
| xclip -in -selection clipboard | |||||
| else | |||||
| xclip -in -selection clipboard $file | |||||
| fi | |||||
| elif (( $+commands[xsel] )); then | |||||
| if [[ -z $file ]]; then | |||||
| xsel --clipboard --input | |||||
| else | |||||
| cat "$file" | xsel --clipboard --input | |||||
| fi | |||||
| else | |||||
| print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2 | |||||
| return 1 | |||||
| fi | |||||
| fi | |||||
| } | |||||
| # clippaste - "Paste" data from clipboard to stdout | |||||
| # | |||||
| # Usage: | |||||
| # | |||||
| # clippaste - writes clipboard's contents to stdout | |||||
| # | |||||
| # clippaste | <command> - pastes contents and pipes it to another process | |||||
| # | |||||
| # clippaste > <file> - paste contents to a file | |||||
| # | |||||
| # Examples: | |||||
| # | |||||
| # # Pipe to another process | |||||
| # clippaste | grep foo | |||||
| # | |||||
| # # Paste to a file | |||||
| # clippaste > file.txt | |||||
| function clippaste() { | |||||
| emulate -L zsh | |||||
| if [[ $OSTYPE == darwin* ]]; then | |||||
| pbpaste | |||||
| elif [[ $OSTYPE == cygwin* ]]; then | |||||
| cat /dev/clipboard | |||||
| else | |||||
| if (( $+commands[xclip] )); then | |||||
| xclip -out -selection clipboard | |||||
| elif (( $+commands[xsel] )); then | |||||
| xsel --clipboard --output | |||||
| else | |||||
| print "clipcopy: Platform $OSTYPE not supported or xclip/xsel not installed" >&2 | |||||
| return 1 | |||||
| fi | |||||
| fi | |||||
| } | |||||
| @ -0,0 +1,44 @@ | |||||
| # Handle completions insecurities (i.e., completion-dependent directories with | |||||
| # insecure ownership or permissions) by: | |||||
| # | |||||
| # * Human-readably notifying the user of these insecurities. | |||||
| function handle_completion_insecurities() { | |||||
| # List of the absolute paths of all unique insecure directories, split on | |||||
| # newline from compaudit()'s output resembling: | |||||
| # | |||||
| # There are insecure directories: | |||||
| # /usr/share/zsh/site-functions | |||||
| # /usr/share/zsh/5.0.6/functions | |||||
| # /usr/share/zsh | |||||
| # /usr/share/zsh/5.0.6 | |||||
| # | |||||
| # Since the ignorable first line is printed to stderr and thus not captured, | |||||
| # stderr is squelched to prevent this output from leaking to the user. | |||||
| local -aU insecure_dirs | |||||
| insecure_dirs=( ${(f@):-"$(compaudit 2>/dev/null)"} ) | |||||
| # If no such directories exist, get us out of here. | |||||
| (( ! ${#insecure_dirs} )) && return | |||||
| # List ownership and permissions of all insecure directories. | |||||
| print "[oh-my-zsh] Insecure completion-dependent directories detected:" | |||||
| ls -ld "${(@)insecure_dirs}" | |||||
| cat <<EOD | |||||
| [oh-my-zsh] For safety, we will not load completions from these directories until | |||||
| [oh-my-zsh] you fix their permissions and ownership and restart zsh. | |||||
| [oh-my-zsh] See the above list for directories with group or other writability. | |||||
| [oh-my-zsh] To fix your permissions you can do so by disabling | |||||
| [oh-my-zsh] the write permission of "group" and "others" and making sure that the | |||||
| [oh-my-zsh] owner of these directories is either root or your current user. | |||||
| [oh-my-zsh] The following command may help: | |||||
| [oh-my-zsh] compaudit | xargs chmod g-w,o-w | |||||
| [oh-my-zsh] If the above didn't help or you want to skip the verification of | |||||
| [oh-my-zsh] insecure directories you can set the variable ZSH_DISABLE_COMPFIX to | |||||
| [oh-my-zsh] "true" before oh-my-zsh is sourced in your zshrc file. | |||||
| EOD | |||||
| } | |||||
| @ -0,0 +1,73 @@ | |||||
| # fixme - the load process here seems a bit bizarre | |||||
| zmodload -i zsh/complist | |||||
| WORDCHARS='' | |||||
| unsetopt menu_complete # do not autoselect the first completion entry | |||||
| unsetopt flowcontrol | |||||
| setopt auto_menu # show completion menu on successive tab press | |||||
| setopt complete_in_word | |||||
| setopt always_to_end | |||||
| # should this be in keybindings? | |||||
| bindkey -M menuselect '^o' accept-and-infer-next-history | |||||
| zstyle ':completion:*:*:*:*:*' menu select | |||||
| # case insensitive (all), partial-word and substring completion | |||||
| if [[ "$CASE_SENSITIVE" = true ]]; then | |||||
| zstyle ':completion:*' matcher-list 'r:|=*' 'l:|=* r:|=*' | |||||
| else | |||||
| if [[ "$HYPHEN_INSENSITIVE" = true ]]; then | |||||
| zstyle ':completion:*' matcher-list 'm:{a-zA-Z-_}={A-Za-z_-}' 'r:|=*' 'l:|=* r:|=*' | |||||
| else | |||||
| zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' 'r:|=*' 'l:|=* r:|=*' | |||||
| fi | |||||
| fi | |||||
| unset CASE_SENSITIVE HYPHEN_INSENSITIVE | |||||
| # Complete . and .. special directories | |||||
| zstyle ':completion:*' special-dirs true | |||||
| zstyle ':completion:*' list-colors '' | |||||
| zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#) ([0-9a-z-]#)*=01;34=0=01' | |||||
| if [[ "$OSTYPE" = solaris* ]]; then | |||||
| zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm" | |||||
| else | |||||
| zstyle ':completion:*:*:*:*:processes' command "ps -u $USER -o pid,user,comm -w -w" | |||||
| fi | |||||
| # disable named-directories autocompletion | |||||
| zstyle ':completion:*:cd:*' tag-order local-directories directory-stack path-directories | |||||
| # Use caching so that commands like apt and dpkg complete are useable | |||||
| zstyle ':completion::complete:*' use-cache 1 | |||||
| zstyle ':completion::complete:*' cache-path $ZSH_CACHE_DIR | |||||
| # Don't complete uninteresting users | |||||
| zstyle ':completion:*:*:*:users' ignored-patterns \ | |||||
| adm amanda apache at avahi avahi-autoipd beaglidx bin cacti canna \ | |||||
| clamav daemon dbus distcache dnsmasq dovecot fax ftp games gdm \ | |||||
| gkrellmd gopher hacluster haldaemon halt hsqldb ident junkbust kdm \ | |||||
| ldap lp mail mailman mailnull man messagebus mldonkey mysql nagios \ | |||||
| named netdump news nfsnobody nobody nscd ntp nut nx obsrun openvpn \ | |||||
| operator pcap polkitd postfix postgres privoxy pulse pvm quagga radvd \ | |||||
| rpc rpcuser rpm rtkit scard shutdown squid sshd statd svn sync tftp \ | |||||
| usbmux uucp vcsa wwwrun xfs '_*' | |||||
| # ... unless we really want to. | |||||
| zstyle '*' single-ignored show | |||||
| if [[ $COMPLETION_WAITING_DOTS = true ]]; then | |||||
| expand-or-complete-with-dots() { | |||||
| # toggle line-wrapping off and back on again | |||||
| [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti rmam | |||||
| print -Pn "%{%F{red}......%f%}" | |||||
| [[ -n "$terminfo[rmam]" && -n "$terminfo[smam]" ]] && echoti smam | |||||
| zle expand-or-complete | |||||
| zle redisplay | |||||
| } | |||||
| zle -N expand-or-complete-with-dots | |||||
| bindkey "^I" expand-or-complete-with-dots | |||||
| fi | |||||
| @ -0,0 +1,14 @@ | |||||
| if [[ "$ENABLE_CORRECTION" == "true" ]]; then | |||||
| alias cp='nocorrect cp' | |||||
| alias ebuild='nocorrect ebuild' | |||||
| alias gist='nocorrect gist' | |||||
| alias heroku='nocorrect heroku' | |||||
| alias hpodder='nocorrect hpodder' | |||||
| alias man='nocorrect man' | |||||
| alias mkdir='nocorrect mkdir' | |||||
| alias mv='nocorrect mv' | |||||
| alias mysql='nocorrect mysql' | |||||
| alias sudo='nocorrect sudo' | |||||
| setopt correct_all | |||||
| fi | |||||
| @ -0,0 +1,353 @@ | |||||
| # diagnostics.zsh | |||||
| # | |||||
| # Diagnostic and debugging support for oh-my-zsh | |||||
| # omz_diagnostic_dump() | |||||
| # | |||||
| # Author: Andrew Janke <andrew@apjanke.net> | |||||
| # | |||||
| # Usage: | |||||
| # | |||||
| # omz_diagnostic_dump [-v] [-V] [file] | |||||
| # | |||||
| # NOTE: This is a work in progress. Its interface and behavior are going to change, | |||||
| # and probably in non-back-compatible ways. | |||||
| # | |||||
| # Outputs a bunch of information about the state and configuration of | |||||
| # oh-my-zsh, zsh, and the user's system. This is intended to provide a | |||||
| # bunch of context for diagnosing your own or a third party's problems, and to | |||||
| # be suitable for posting to public bug reports. | |||||
| # | |||||
| # The output is human-readable and its format may change over time. It is not | |||||
| # suitable for parsing. All the output is in one single file so it can be posted | |||||
| # as a gist or bug comment on GitHub. GitHub doesn't support attaching tarballs | |||||
| # or other files to bugs; otherwise, this would probably have an option to produce | |||||
| # tarballs that contain copies of the config and customization files instead of | |||||
| # catting them all in to one file. | |||||
| # | |||||
| # This is intended to be widely portable, and run anywhere that oh-my-zsh does. | |||||
| # Feel free to report any portability issues as bugs. | |||||
| # | |||||
| # This is written in a defensive style so it still works (and can detect) cases when | |||||
| # basic functionality like echo and which have been redefined. In particular, almost | |||||
| # everything is invoked with "builtin" or "command", to work in the face of user | |||||
| # redefinitions. | |||||
| # | |||||
| # OPTIONS | |||||
| # | |||||
| # [file] Specifies the output file. If not given, a file in the current directory | |||||
| # is selected automatically. | |||||
| # | |||||
| # -v Increase the verbosity of the dump output. May be specified multiple times. | |||||
| # Verbosity levels: | |||||
| # 0 - Basic info, shell state, omz configuration, git state | |||||
| # 1 - (default) Adds key binding info and configuration file contents | |||||
| # 2 - Adds zcompdump file contents | |||||
| # | |||||
| # -V Reduce the verbosity of the dump output. May be specified multiple times. | |||||
| # | |||||
| # TODO: | |||||
| # * Multi-file capture | |||||
| # * Add automatic gist uploading | |||||
| # * Consider whether to move default output file location to TMPDIR. More robust | |||||
| # but less user friendly. | |||||
| # | |||||
| autoload -Uz is-at-least | |||||
| function omz_diagnostic_dump() { | |||||
| emulate -L zsh | |||||
| builtin echo "Generating diagnostic dump; please be patient..." | |||||
| local thisfcn=omz_diagnostic_dump | |||||
| local -A opts | |||||
| local opt_verbose opt_noverbose opt_outfile | |||||
| local timestamp=$(date +%Y%m%d-%H%M%S) | |||||
| local outfile=omz_diagdump_$timestamp.txt | |||||
| builtin zparseopts -A opts -D -- "v+=opt_verbose" "V+=opt_noverbose" | |||||
| local verbose n_verbose=${#opt_verbose} n_noverbose=${#opt_noverbose} | |||||
| (( verbose = 1 + n_verbose - n_noverbose )) | |||||
| if [[ ${#*} > 0 ]]; then | |||||
| opt_outfile=$1 | |||||
| fi | |||||
| if [[ ${#*} > 1 ]]; then | |||||
| builtin echo "$thisfcn: error: too many arguments" >&2 | |||||
| return 1 | |||||
| fi | |||||
| if [[ -n "$opt_outfile" ]]; then | |||||
| outfile="$opt_outfile" | |||||
| fi | |||||
| # Always write directly to a file so terminal escape sequences are | |||||
| # captured cleanly | |||||
| _omz_diag_dump_one_big_text &> "$outfile" | |||||
| if [[ $? != 0 ]]; then | |||||
| builtin echo "$thisfcn: error while creating diagnostic dump; see $outfile for details" | |||||
| fi | |||||
| builtin echo | |||||
| builtin echo Diagnostic dump file created at: "$outfile" | |||||
| builtin echo | |||||
| builtin echo To share this with OMZ developers, post it as a gist on GitHub | |||||
| builtin echo at "https://gist.github.com" and share the link to the gist. | |||||
| builtin echo | |||||
| builtin echo "WARNING: This dump file contains all your zsh and omz configuration files," | |||||
| builtin echo "so don't share it publicly if there's sensitive information in them." | |||||
| builtin echo | |||||
| } | |||||
| function _omz_diag_dump_one_big_text() { | |||||
| local program programs progfile md5 | |||||
| builtin echo oh-my-zsh diagnostic dump | |||||
| builtin echo | |||||
| builtin echo $outfile | |||||
| builtin echo | |||||
| # Basic system and zsh information | |||||
| command date | |||||
| command uname -a | |||||
| builtin echo OSTYPE=$OSTYPE | |||||
| builtin echo ZSH_VERSION=$ZSH_VERSION | |||||
| builtin echo User: $USER | |||||
| builtin echo umask: $(umask) | |||||
| builtin echo | |||||
| _omz_diag_dump_os_specific_version | |||||
| builtin echo | |||||
| # Installed programs | |||||
| programs=(sh zsh ksh bash sed cat grep ls find git posh) | |||||
| local progfile="" extra_str="" sha_str="" | |||||
| for program in $programs; do | |||||
| extra_str="" sha_str="" | |||||
| progfile=$(builtin which $program) | |||||
| if [[ $? == 0 ]]; then | |||||
| if [[ -e $progfile ]]; then | |||||
| if builtin whence shasum &>/dev/null; then | |||||
| sha_str=($(command shasum $progfile)) | |||||
| sha_str=$sha_str[1] | |||||
| extra_str+=" SHA $sha_str" | |||||
| fi | |||||
| if [[ -h "$progfile" ]]; then | |||||
| extra_str+=" ( -> ${progfile:A} )" | |||||
| fi | |||||
| fi | |||||
| builtin printf '%-9s %-20s %s\n' "$program is" "$progfile" "$extra_str" | |||||
| else | |||||
| builtin echo "$program: not found" | |||||
| fi | |||||
| done | |||||
| builtin echo | |||||
| builtin echo Command Versions: | |||||
| builtin echo "zsh: $(zsh --version)" | |||||
| builtin echo "this zsh session: $ZSH_VERSION" | |||||
| builtin echo "bash: $(bash --version | command grep bash)" | |||||
| builtin echo "git: $(git --version)" | |||||
| builtin echo "grep: $(grep --version)" | |||||
| builtin echo | |||||
| # Core command definitions | |||||
| _omz_diag_dump_check_core_commands || return 1 | |||||
| builtin echo | |||||
| # ZSH Process state | |||||
| builtin echo Process state: | |||||
| builtin echo pwd: $PWD | |||||
| if builtin whence pstree &>/dev/null; then | |||||
| builtin echo Process tree for this shell: | |||||
| pstree -p $$ | |||||
| else | |||||
| ps -fT | |||||
| fi | |||||
| builtin set | command grep -a '^\(ZSH\|plugins\|TERM\|LC_\|LANG\|precmd\|chpwd\|preexec\|FPATH\|TTY\|DISPLAY\|PATH\)\|OMZ' | |||||
| builtin echo | |||||
| #TODO: Should this include `env` instead of or in addition to `export`? | |||||
| builtin echo Exported: | |||||
| builtin echo $(builtin export | command sed 's/=.*//') | |||||
| builtin echo | |||||
| builtin echo Locale: | |||||
| command locale | |||||
| builtin echo | |||||
| # Zsh installation and configuration | |||||
| builtin echo Zsh configuration: | |||||
| builtin echo setopt: $(builtin setopt) | |||||
| builtin echo | |||||
| builtin echo zstyle: | |||||
| builtin zstyle | |||||
| builtin echo | |||||
| builtin echo 'compaudit output:' | |||||
| compaudit | |||||
| builtin echo | |||||
| builtin echo '$fpath directories:' | |||||
| command ls -lad $fpath | |||||
| builtin echo | |||||
| # Oh-my-zsh installation | |||||
| builtin echo oh-my-zsh installation: | |||||
| command ls -ld ~/.z* | |||||
| command ls -ld ~/.oh* | |||||
| builtin echo | |||||
| builtin echo oh-my-zsh git state: | |||||
| (cd $ZSH && builtin echo "HEAD: $(git rev-parse HEAD)" && git remote -v && git status | command grep "[^[:space:]]") | |||||
| if [[ $verbose -ge 1 ]]; then | |||||
| (cd $ZSH && git reflog --date=default | command grep pull) | |||||
| fi | |||||
| builtin echo | |||||
| if [[ -e $ZSH_CUSTOM ]]; then | |||||
| local custom_dir=$ZSH_CUSTOM | |||||
| if [[ -h $custom_dir ]]; then | |||||
| custom_dir=$(cd $custom_dir && pwd -P) | |||||
| fi | |||||
| builtin echo "oh-my-zsh custom dir:" | |||||
| builtin echo " $ZSH_CUSTOM ($custom_dir)" | |||||
| (cd ${custom_dir:h} && command find ${custom_dir:t} -name .git -prune -o -print) | |||||
| builtin echo | |||||
| fi | |||||
| # Key binding and terminal info | |||||
| if [[ $verbose -ge 1 ]]; then | |||||
| builtin echo "bindkey:" | |||||
| builtin bindkey | |||||
| builtin echo | |||||
| builtin echo "infocmp:" | |||||
| command infocmp -L | |||||
| builtin echo | |||||
| fi | |||||
| # Configuration file info | |||||
| local zdotdir=${ZDOTDIR:-$HOME} | |||||
| builtin echo "Zsh configuration files:" | |||||
| local cfgfile cfgfiles | |||||
| # Some files for bash that zsh does not use are intentionally included | |||||
| # to help with diagnosing behavior differences between bash and zsh | |||||
| cfgfiles=( /etc/zshenv /etc/zprofile /etc/zshrc /etc/zlogin /etc/zlogout | |||||
| $zdotdir/.zshenv $zdotdir/.zprofile $zdotdir/.zshrc $zdotdir/.zlogin $zdotdir/.zlogout | |||||
| ~/.zsh.pre-oh-my-zsh | |||||
| /etc/bashrc /etc/profile ~/.bashrc ~/.profile ~/.bash_profile ~/.bash_logout ) | |||||
| command ls -lad $cfgfiles 2>&1 | |||||
| builtin echo | |||||
| if [[ $verbose -ge 1 ]]; then | |||||
| for cfgfile in $cfgfiles; do | |||||
| _omz_diag_dump_echo_file_w_header $cfgfile | |||||
| done | |||||
| fi | |||||
| builtin echo | |||||
| builtin echo "Zsh compdump files:" | |||||
| local dumpfile dumpfiles | |||||
| command ls -lad $zdotdir/.zcompdump* | |||||
| dumpfiles=( $zdotdir/.zcompdump*(N) ) | |||||
| if [[ $verbose -ge 2 ]]; then | |||||
| for dumpfile in $dumpfiles; do | |||||
| _omz_diag_dump_echo_file_w_header $dumpfile | |||||
| done | |||||
| fi | |||||
| } | |||||
| function _omz_diag_dump_check_core_commands() { | |||||
| builtin echo "Core command check:" | |||||
| local redefined name builtins externals reserved_words | |||||
| redefined=() | |||||
| # All the zsh non-module builtin commands | |||||
| # These are taken from the zsh reference manual for 5.0.2 | |||||
| # Commands from modules should not be included. | |||||
| # (For back-compatibility, if any of these are newish, they should be removed, | |||||
| # or at least made conditional on the version of the current running zsh.) | |||||
| # "history" is also excluded because OMZ is known to redefine that | |||||
| reserved_words=( do done esac then elif else fi for case if while function | |||||
| repeat time until select coproc nocorrect foreach end '!' '[[' '{' '}' | |||||
| ) | |||||
| builtins=( alias autoload bg bindkey break builtin bye cd chdir command | |||||
| comparguments compcall compctl compdescribe compfiles compgroups compquote comptags | |||||
| comptry compvalues continue dirs disable disown echo echotc echoti emulate | |||||
| enable eval exec exit false fc fg functions getln getopts hash | |||||
| jobs kill let limit log logout noglob popd print printf | |||||
| pushd pushln pwd r read rehash return sched set setopt shift | |||||
| source suspend test times trap true ttyctl type ulimit umask unalias | |||||
| unfunction unhash unlimit unset unsetopt vared wait whence where which zcompile | |||||
| zle zmodload zparseopts zregexparse zstyle ) | |||||
| if is-at-least 5.1; then | |||||
| reserved_word+=( declare export integer float local readonly typeset ) | |||||
| else | |||||
| builtins+=( declare export integer float local readonly typeset ) | |||||
| fi | |||||
| builtins_fatal=( builtin command local ) | |||||
| externals=( zsh ) | |||||
| for name in $reserved_words; do | |||||
| if [[ $(builtin whence -w $name) != "$name: reserved" ]]; then | |||||
| builtin echo "reserved word '$name' has been redefined" | |||||
| builtin which $name | |||||
| redefined+=$name | |||||
| fi | |||||
| done | |||||
| for name in $builtins; do | |||||
| if [[ $(builtin whence -w $name) != "$name: builtin" ]]; then | |||||
| builtin echo "builtin '$name' has been redefined" | |||||
| builtin which $name | |||||
| redefined+=$name | |||||
| fi | |||||
| done | |||||
| for name in $externals; do | |||||
| if [[ $(builtin whence -w $name) != "$name: command" ]]; then | |||||
| builtin echo "command '$name' has been redefined" | |||||
| builtin which $name | |||||
| redefined+=$name | |||||
| fi | |||||
| done | |||||
| if [[ -n "$redefined" ]]; then | |||||
| builtin echo "SOME CORE COMMANDS HAVE BEEN REDEFINED: $redefined" | |||||
| else | |||||
| builtin echo "All core commands are defined normally" | |||||
| fi | |||||
| } | |||||
| function _omz_diag_dump_echo_file_w_header() { | |||||
| local file=$1 | |||||
| if [[ ( -f $file || -h $file ) ]]; then | |||||
| builtin echo "========== $file ==========" | |||||
| if [[ -h $file ]]; then | |||||
| builtin echo "========== ( => ${file:A} ) ==========" | |||||
| fi | |||||
| command cat $file | |||||
| builtin echo "========== end $file ==========" | |||||
| builtin echo | |||||
| elif [[ -d $file ]]; then | |||||
| builtin echo "File '$file' is a directory" | |||||
| elif [[ ! -e $file ]]; then | |||||
| builtin echo "File '$file' does not exist" | |||||
| else | |||||
| command ls -lad "$file" | |||||
| fi | |||||
| } | |||||
| function _omz_diag_dump_os_specific_version() { | |||||
| local osname osver version_file version_files | |||||
| case "$OSTYPE" in | |||||
| darwin*) | |||||
| osname=$(command sw_vers -productName) | |||||
| osver=$(command sw_vers -productVersion) | |||||
| builtin echo "OS Version: $osname $osver build $(sw_vers -buildVersion)" | |||||
| ;; | |||||
| cygwin) | |||||
| command systeminfo | command head -4 | command tail -2 | |||||
| ;; | |||||
| esac | |||||
| if builtin which lsb_release >/dev/null; then | |||||
| builtin echo "OS Release: $(command lsb_release -s -d)" | |||||
| fi | |||||
| version_files=( /etc/*-release(N) /etc/*-version(N) /etc/*_version(N) ) | |||||
| for version_file in $version_files; do | |||||
| builtin echo "$version_file:" | |||||
| command cat "$version_file" | |||||
| builtin echo | |||||
| done | |||||
| } | |||||
| @ -0,0 +1,30 @@ | |||||
| # Changing/making/removing directory | |||||
| setopt auto_pushd | |||||
| setopt pushd_ignore_dups | |||||
| setopt pushdminus | |||||
| alias -g ...='../..' | |||||
| alias -g ....='../../..' | |||||
| alias -g .....='../../../..' | |||||
| alias -g ......='../../../../..' | |||||
| alias -- -='cd -' | |||||
| alias 1='cd -' | |||||
| alias 2='cd -2' | |||||
| alias 3='cd -3' | |||||
| alias 4='cd -4' | |||||
| alias 5='cd -5' | |||||
| alias 6='cd -6' | |||||
| alias 7='cd -7' | |||||
| alias 8='cd -8' | |||||
| alias 9='cd -9' | |||||
| alias md='mkdir -p' | |||||
| alias rd=rmdir | |||||
| alias d='dirs -v | head -10' | |||||
| # List directory contents | |||||
| alias lsa='ls -lah' | |||||
| alias l='ls -lah' | |||||
| alias ll='ls -lh' | |||||
| alias la='ls -lAh' | |||||
| @ -0,0 +1,229 @@ | |||||
| function zsh_stats() { | |||||
| fc -l 1 | awk '{CMD[$2]++;count++;}END { for (a in CMD)print CMD[a] " " CMD[a]/count*100 "% " a;}' | grep -v "./" | column -c3 -s " " -t | sort -nr | nl | head -n20 | |||||
| } | |||||
| function uninstall_oh_my_zsh() { | |||||
| env ZSH=$ZSH sh $ZSH/tools/uninstall.sh | |||||
| } | |||||
| function upgrade_oh_my_zsh() { | |||||
| env ZSH=$ZSH sh $ZSH/tools/upgrade.sh | |||||
| } | |||||
| function take() { | |||||
| mkdir -p $@ && cd ${@:$#} | |||||
| } | |||||
| function open_command() { | |||||
| local open_cmd | |||||
| # define the open command | |||||
| case "$OSTYPE" in | |||||
| darwin*) open_cmd='open' ;; | |||||
| cygwin*) open_cmd='cygstart' ;; | |||||
| linux*) ! [[ $(uname -a) =~ "Microsoft" ]] && open_cmd='xdg-open' || { | |||||
| open_cmd='cmd.exe /c start ""' | |||||
| [[ -e "$1" ]] && { 1="$(wslpath -w "${1:a}")" || return 1 } | |||||
| } ;; | |||||
| msys*) open_cmd='start ""' ;; | |||||
| *) echo "Platform $OSTYPE not supported" | |||||
| return 1 | |||||
| ;; | |||||
| esac | |||||
| # don't use nohup on OSX | |||||
| if [[ "$OSTYPE" == darwin* ]]; then | |||||
| ${=open_cmd} "$@" &>/dev/null | |||||
| else | |||||
| nohup ${=open_cmd} "$@" &>/dev/null | |||||
| fi | |||||
| } | |||||
| # | |||||
| # Get the value of an alias. | |||||
| # | |||||
| # Arguments: | |||||
| # 1. alias - The alias to get its value from | |||||
| # STDOUT: | |||||
| # The value of alias $1 (if it has one). | |||||
| # Return value: | |||||
| # 0 if the alias was found, | |||||
| # 1 if it does not exist | |||||
| # | |||||
| function alias_value() { | |||||
| (( $+aliases[$1] )) && echo $aliases[$1] | |||||
| } | |||||
| # | |||||
| # Try to get the value of an alias, | |||||
| # otherwise return the input. | |||||
| # | |||||
| # Arguments: | |||||
| # 1. alias - The alias to get its value from | |||||
| # STDOUT: | |||||
| # The value of alias $1, or $1 if there is no alias $1. | |||||
| # Return value: | |||||
| # Always 0 | |||||
| # | |||||
| function try_alias_value() { | |||||
| alias_value "$1" || echo "$1" | |||||
| } | |||||
| # | |||||
| # Set variable "$1" to default value "$2" if "$1" is not yet defined. | |||||
| # | |||||
| # Arguments: | |||||
| # 1. name - The variable to set | |||||
| # 2. val - The default value | |||||
| # Return value: | |||||
| # 0 if the variable exists, 3 if it was set | |||||
| # | |||||
| function default() { | |||||
| test `typeset +m "$1"` && return 0 | |||||
| typeset -g "$1"="$2" && return 3 | |||||
| } | |||||
| # | |||||
| # Set environment variable "$1" to default value "$2" if "$1" is not yet defined. | |||||
| # | |||||
| # Arguments: | |||||
| # 1. name - The env variable to set | |||||
| # 2. val - The default value | |||||
| # Return value: | |||||
| # 0 if the env variable exists, 3 if it was set | |||||
| # | |||||
| function env_default() { | |||||
| env | grep -q "^$1=" && return 0 | |||||
| export "$1=$2" && return 3 | |||||
| } | |||||
| # Required for $langinfo | |||||
| zmodload zsh/langinfo | |||||
| # URL-encode a string | |||||
| # | |||||
| # Encodes a string using RFC 2396 URL-encoding (%-escaped). | |||||
| # See: https://www.ietf.org/rfc/rfc2396.txt | |||||
| # | |||||
| # By default, reserved characters and unreserved "mark" characters are | |||||
| # not escaped by this function. This allows the common usage of passing | |||||
| # an entire URL in, and encoding just special characters in it, with | |||||
| # the expectation that reserved and mark characters are used appropriately. | |||||
| # The -r and -m options turn on escaping of the reserved and mark characters, | |||||
| # respectively, which allows arbitrary strings to be fully escaped for | |||||
| # embedding inside URLs, where reserved characters might be misinterpreted. | |||||
| # | |||||
| # Prints the encoded string on stdout. | |||||
| # Returns nonzero if encoding failed. | |||||
| # | |||||
| # Usage: | |||||
| # omz_urlencode [-r] [-m] [-P] <string> | |||||
| # | |||||
| # -r causes reserved characters (;/?:@&=+$,) to be escaped | |||||
| # | |||||
| # -m causes "mark" characters (_.!~*''()-) to be escaped | |||||
| # | |||||
| # -P causes spaces to be encoded as '%20' instead of '+' | |||||
| function omz_urlencode() { | |||||
| emulate -L zsh | |||||
| zparseopts -D -E -a opts r m P | |||||
| local in_str=$1 | |||||
| local url_str="" | |||||
| local spaces_as_plus | |||||
| if [[ -z $opts[(r)-P] ]]; then spaces_as_plus=1; fi | |||||
| local str="$in_str" | |||||
| # URLs must use UTF-8 encoding; convert str to UTF-8 if required | |||||
| local encoding=$langinfo[CODESET] | |||||
| local safe_encodings | |||||
| safe_encodings=(UTF-8 utf8 US-ASCII) | |||||
| if [[ -z ${safe_encodings[(r)$encoding]} ]]; then | |||||
| str=$(echo -E "$str" | iconv -f $encoding -t UTF-8) | |||||
| if [[ $? != 0 ]]; then | |||||
| echo "Error converting string from $encoding to UTF-8" >&2 | |||||
| return 1 | |||||
| fi | |||||
| fi | |||||
| # Use LC_CTYPE=C to process text byte-by-byte | |||||
| local i byte ord LC_ALL=C | |||||
| export LC_ALL | |||||
| local reserved=';/?:@&=+$,' | |||||
| local mark='_.!~*''()-' | |||||
| local dont_escape="[A-Za-z0-9" | |||||
| if [[ -z $opts[(r)-r] ]]; then | |||||
| dont_escape+=$reserved | |||||
| fi | |||||
| # $mark must be last because of the "-" | |||||
| if [[ -z $opts[(r)-m] ]]; then | |||||
| dont_escape+=$mark | |||||
| fi | |||||
| dont_escape+="]" | |||||
| # Implemented to use a single printf call and avoid subshells in the loop, | |||||
| # for performance (primarily on Windows). | |||||
| local url_str="" | |||||
| for (( i = 1; i <= ${#str}; ++i )); do | |||||
| byte="$str[i]" | |||||
| if [[ "$byte" =~ "$dont_escape" ]]; then | |||||
| url_str+="$byte" | |||||
| else | |||||
| if [[ "$byte" == " " && -n $spaces_as_plus ]]; then | |||||
| url_str+="+" | |||||
| else | |||||
| ord=$(( [##16] #byte )) | |||||
| url_str+="%$ord" | |||||
| fi | |||||
| fi | |||||
| done | |||||
| echo -E "$url_str" | |||||
| } | |||||
| # URL-decode a string | |||||
| # | |||||
| # Decodes a RFC 2396 URL-encoded (%-escaped) string. | |||||
| # This decodes the '+' and '%' escapes in the input string, and leaves | |||||
| # other characters unchanged. Does not enforce that the input is a | |||||
| # valid URL-encoded string. This is a convenience to allow callers to | |||||
| # pass in a full URL or similar strings and decode them for human | |||||
| # presentation. | |||||
| # | |||||
| # Outputs the encoded string on stdout. | |||||
| # Returns nonzero if encoding failed. | |||||
| # | |||||
| # Usage: | |||||
| # omz_urldecode <urlstring> - prints decoded string followed by a newline | |||||
| function omz_urldecode { | |||||
| emulate -L zsh | |||||
| local encoded_url=$1 | |||||
| # Work bytewise, since URLs escape UTF-8 octets | |||||
| local caller_encoding=$langinfo[CODESET] | |||||
| local LC_ALL=C | |||||
| export LC_ALL | |||||
| # Change + back to ' ' | |||||
| local tmp=${encoded_url:gs/+/ /} | |||||
| # Protect other escapes to pass through the printf unchanged | |||||
| tmp=${tmp:gs/\\/\\\\/} | |||||
| # Handle %-escapes by turning them into `\xXX` printf escapes | |||||
| tmp=${tmp:gs/%/\\x/} | |||||
| local decoded | |||||
| eval "decoded=\$'$tmp'" | |||||
| # Now we have a UTF-8 encoded string in the variable. We need to re-encode | |||||
| # it if caller is in a non-UTF-8 locale. | |||||
| local safe_encodings | |||||
| safe_encodings=(UTF-8 utf8 US-ASCII) | |||||
| if [[ -z ${safe_encodings[(r)$caller_encoding]} ]]; then | |||||
| decoded=$(echo -E "$decoded" | iconv -f UTF-8 -t $caller_encoding) | |||||
| if [[ $? != 0 ]]; then | |||||
| echo "Error converting string from UTF-8 to $caller_encoding" >&2 | |||||
| return 1 | |||||
| fi | |||||
| fi | |||||
| echo -E "$decoded" | |||||
| } | |||||
| @ -0,0 +1,221 @@ | |||||
| # Outputs current branch info in prompt format | |||||
| function git_prompt_info() { | |||||
| local ref | |||||
| if [[ "$(command git config --get oh-my-zsh.hide-status 2>/dev/null)" != "1" ]]; then | |||||
| ref=$(command git symbolic-ref HEAD 2> /dev/null) || \ | |||||
| ref=$(command git rev-parse --short HEAD 2> /dev/null) || return 0 | |||||
| echo "$ZSH_THEME_GIT_PROMPT_PREFIX${ref#refs/heads/}$(parse_git_dirty)$ZSH_THEME_GIT_PROMPT_SUFFIX" | |||||
| fi | |||||
| } | |||||
| # Checks if working tree is dirty | |||||
| function parse_git_dirty() { | |||||
| local STATUS='' | |||||
| local -a FLAGS | |||||
| FLAGS=('--porcelain') | |||||
| if [[ "$(command git config --get oh-my-zsh.hide-dirty)" != "1" ]]; then | |||||
| if [[ $POST_1_7_2_GIT -gt 0 ]]; then | |||||
| FLAGS+='--ignore-submodules=dirty' | |||||
| fi | |||||
| if [[ "$DISABLE_UNTRACKED_FILES_DIRTY" == "true" ]]; then | |||||
| FLAGS+='--untracked-files=no' | |||||
| fi | |||||
| STATUS=$(command git status ${FLAGS} 2> /dev/null | tail -n1) | |||||
| fi | |||||
| if [[ -n $STATUS ]]; then | |||||
| echo "$ZSH_THEME_GIT_PROMPT_DIRTY" | |||||
| else | |||||
| echo "$ZSH_THEME_GIT_PROMPT_CLEAN" | |||||
| fi | |||||
| } | |||||
| # Gets the difference between the local and remote branches | |||||
| function git_remote_status() { | |||||
| local remote ahead behind git_remote_status git_remote_status_detailed | |||||
| remote=${$(command git rev-parse --verify ${hook_com[branch]}@{upstream} --symbolic-full-name 2>/dev/null)/refs\/remotes\/} | |||||
| if [[ -n ${remote} ]]; then | |||||
| ahead=$(command git rev-list ${hook_com[branch]}@{upstream}..HEAD 2>/dev/null | wc -l) | |||||
| behind=$(command git rev-list HEAD..${hook_com[branch]}@{upstream} 2>/dev/null | wc -l) | |||||
| if [[ $ahead -eq 0 ]] && [[ $behind -eq 0 ]]; then | |||||
| git_remote_status="$ZSH_THEME_GIT_PROMPT_EQUAL_REMOTE" | |||||
| elif [[ $ahead -gt 0 ]] && [[ $behind -eq 0 ]]; then | |||||
| git_remote_status="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE" | |||||
| git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}" | |||||
| elif [[ $behind -gt 0 ]] && [[ $ahead -eq 0 ]]; then | |||||
| git_remote_status="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE" | |||||
| git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}" | |||||
| elif [[ $ahead -gt 0 ]] && [[ $behind -gt 0 ]]; then | |||||
| git_remote_status="$ZSH_THEME_GIT_PROMPT_DIVERGED_REMOTE" | |||||
| git_remote_status_detailed="$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_AHEAD_REMOTE$((ahead))%{$reset_color%}$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE_COLOR$ZSH_THEME_GIT_PROMPT_BEHIND_REMOTE$((behind))%{$reset_color%}" | |||||
| fi | |||||
| if [[ -n $ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_DETAILED ]]; then | |||||
| git_remote_status="$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_PREFIX$remote$git_remote_status_detailed$ZSH_THEME_GIT_PROMPT_REMOTE_STATUS_SUFFIX" | |||||
| fi | |||||
| echo $git_remote_status | |||||
| fi | |||||
| } | |||||
| # Outputs the name of the current branch | |||||
| # Usage example: git pull origin $(git_current_branch) | |||||
| # Using '--quiet' with 'symbolic-ref' will not cause a fatal error (128) if | |||||
| # it's not a symbolic ref, but in a Git repo. | |||||
| function git_current_branch() { | |||||
| local ref | |||||
| ref=$(command git symbolic-ref --quiet HEAD 2> /dev/null) | |||||
| local ret=$? | |||||
| if [[ $ret != 0 ]]; then | |||||
| [[ $ret == 128 ]] && return # no git repo. | |||||
| ref=$(command git rev-parse --short HEAD 2> /dev/null) || return | |||||
| fi | |||||
| echo ${ref#refs/heads/} | |||||
| } | |||||
| # Gets the number of commits ahead from remote | |||||
| function git_commits_ahead() { | |||||
| if command git rev-parse --git-dir &>/dev/null; then | |||||
| local commits="$(git rev-list --count @{upstream}..HEAD 2>/dev/null)" | |||||
| if [[ -n "$commits" && "$commits" != 0 ]]; then | |||||
| echo "$ZSH_THEME_GIT_COMMITS_AHEAD_PREFIX$commits$ZSH_THEME_GIT_COMMITS_AHEAD_SUFFIX" | |||||
| fi | |||||
| fi | |||||
| } | |||||
| # Gets the number of commits behind remote | |||||
| function git_commits_behind() { | |||||
| if command git rev-parse --git-dir &>/dev/null; then | |||||
| local commits="$(git rev-list --count HEAD..@{upstream} 2>/dev/null)" | |||||
| if [[ -n "$commits" && "$commits" != 0 ]]; then | |||||
| echo "$ZSH_THEME_GIT_COMMITS_BEHIND_PREFIX$commits$ZSH_THEME_GIT_COMMITS_BEHIND_SUFFIX" | |||||
| fi | |||||
| fi | |||||
| } | |||||
| # Outputs if current branch is ahead of remote | |||||
| function git_prompt_ahead() { | |||||
| if [[ -n "$(command git rev-list origin/$(git_current_branch)..HEAD 2> /dev/null)" ]]; then | |||||
| echo "$ZSH_THEME_GIT_PROMPT_AHEAD" | |||||
| fi | |||||
| } | |||||
| # Outputs if current branch is behind remote | |||||
| function git_prompt_behind() { | |||||
| if [[ -n "$(command git rev-list HEAD..origin/$(git_current_branch) 2> /dev/null)" ]]; then | |||||
| echo "$ZSH_THEME_GIT_PROMPT_BEHIND" | |||||
| fi | |||||
| } | |||||
| # Outputs if current branch exists on remote or not | |||||
| function git_prompt_remote() { | |||||
| if [[ -n "$(command git show-ref origin/$(git_current_branch) 2> /dev/null)" ]]; then | |||||
| echo "$ZSH_THEME_GIT_PROMPT_REMOTE_EXISTS" | |||||
| else | |||||
| echo "$ZSH_THEME_GIT_PROMPT_REMOTE_MISSING" | |||||
| fi | |||||
| } | |||||
| # Formats prompt string for current git commit short SHA | |||||
| function git_prompt_short_sha() { | |||||
| local SHA | |||||
| SHA=$(command git rev-parse --short HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" | |||||
| } | |||||
| # Formats prompt string for current git commit long SHA | |||||
| function git_prompt_long_sha() { | |||||
| local SHA | |||||
| SHA=$(command git rev-parse HEAD 2> /dev/null) && echo "$ZSH_THEME_GIT_PROMPT_SHA_BEFORE$SHA$ZSH_THEME_GIT_PROMPT_SHA_AFTER" | |||||
| } | |||||
| # Get the status of the working tree | |||||
| function git_prompt_status() { | |||||
| local INDEX STATUS | |||||
| INDEX=$(command git status --porcelain -b 2> /dev/null) | |||||
| STATUS="" | |||||
| if $(echo "$INDEX" | command grep -E '^\?\? ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_UNTRACKED$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^A ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" | |||||
| elif $(echo "$INDEX" | grep '^M ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" | |||||
| elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_ADDED$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^ M ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" | |||||
| elif $(echo "$INDEX" | grep '^AM ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" | |||||
| elif $(echo "$INDEX" | grep '^MM ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" | |||||
| elif $(echo "$INDEX" | grep '^ T ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_MODIFIED$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^R ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_RENAMED$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^ D ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" | |||||
| elif $(echo "$INDEX" | grep '^D ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" | |||||
| elif $(echo "$INDEX" | grep '^AD ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_DELETED$STATUS" | |||||
| fi | |||||
| if $(command git rev-parse --verify refs/stash >/dev/null 2>&1); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_STASHED$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^UU ' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_UNMERGED$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^## [^ ]\+ .*ahead' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_AHEAD$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^## [^ ]\+ .*behind' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_BEHIND$STATUS" | |||||
| fi | |||||
| if $(echo "$INDEX" | grep '^## [^ ]\+ .*diverged' &> /dev/null); then | |||||
| STATUS="$ZSH_THEME_GIT_PROMPT_DIVERGED$STATUS" | |||||
| fi | |||||
| echo $STATUS | |||||
| } | |||||
| # Compares the provided version of git to the version installed and on path | |||||
| # Outputs -1, 0, or 1 if the installed version is less than, equal to, or | |||||
| # greater than the input version, respectively. | |||||
| function git_compare_version() { | |||||
| local INPUT_GIT_VERSION INSTALLED_GIT_VERSION i | |||||
| INPUT_GIT_VERSION=(${(s/./)1}) | |||||
| INSTALLED_GIT_VERSION=($(command git --version 2>/dev/null)) | |||||
| INSTALLED_GIT_VERSION=(${(s/./)INSTALLED_GIT_VERSION[3]}) | |||||
| for i in {1..3}; do | |||||
| if [[ $INSTALLED_GIT_VERSION[$i] -gt $INPUT_GIT_VERSION[$i] ]]; then | |||||
| echo 1 | |||||
| return 0 | |||||
| fi | |||||
| if [[ $INSTALLED_GIT_VERSION[$i] -lt $INPUT_GIT_VERSION[$i] ]]; then | |||||
| echo -1 | |||||
| return 0 | |||||
| fi | |||||
| done | |||||
| echo 0 | |||||
| } | |||||
| # Outputs the name of the current user | |||||
| # Usage example: $(git_current_user_name) | |||||
| function git_current_user_name() { | |||||
| command git config user.name 2>/dev/null | |||||
| } | |||||
| # Outputs the email of the current user | |||||
| # Usage example: $(git_current_user_email) | |||||
| function git_current_user_email() { | |||||
| command git config user.email 2>/dev/null | |||||
| } | |||||
| # This is unlikely to change so make it all statically assigned | |||||
| POST_1_7_2_GIT=$(git_compare_version "1.7.2") | |||||
| # Clean up the namespace slightly by removing the checker function | |||||
| unfunction git_compare_version | |||||
| @ -0,0 +1,28 @@ | |||||
| # is x grep argument available? | |||||
| grep-flag-available() { | |||||
| echo | grep $1 "" >/dev/null 2>&1 | |||||
| } | |||||
| GREP_OPTIONS="" | |||||
| # color grep results | |||||
| if grep-flag-available --color=auto; then | |||||
| GREP_OPTIONS+=" --color=auto" | |||||
| fi | |||||
| # ignore VCS folders (if the necessary grep flags are available) | |||||
| VCS_FOLDERS="{.bzr,CVS,.git,.hg,.svn}" | |||||
| if grep-flag-available --exclude-dir=.cvs; then | |||||
| GREP_OPTIONS+=" --exclude-dir=$VCS_FOLDERS" | |||||
| elif grep-flag-available --exclude=.cvs; then | |||||
| GREP_OPTIONS+=" --exclude=$VCS_FOLDERS" | |||||
| fi | |||||
| # export grep settings | |||||
| alias grep="grep $GREP_OPTIONS" | |||||
| # clean up | |||||
| unset GREP_OPTIONS | |||||
| unset VCS_FOLDERS | |||||
| unfunction grep-flag-available | |||||
| @ -0,0 +1,40 @@ | |||||
| ## History wrapper | |||||
| function omz_history { | |||||
| local clear list | |||||
| zparseopts -E c=clear l=list | |||||
| if [[ -n "$clear" ]]; then | |||||
| # if -c provided, clobber the history file | |||||
| echo -n >| "$HISTFILE" | |||||
| echo >&2 History file deleted. Reload the session to see its effects. | |||||
| elif [[ -n "$list" ]]; then | |||||
| # if -l provided, run as if calling `fc' directly | |||||
| builtin fc "$@" | |||||
| else | |||||
| # unless a number is provided, show all history events (starting from 1) | |||||
| [[ ${@[-1]} = *[0-9]* ]] && builtin fc -l "$@" || builtin fc -l "$@" 1 | |||||
| fi | |||||
| } | |||||
| # Timestamp format | |||||
| case $HIST_STAMPS in | |||||
| "mm/dd/yyyy") alias history='omz_history -f' ;; | |||||
| "dd.mm.yyyy") alias history='omz_history -E' ;; | |||||
| "yyyy-mm-dd") alias history='omz_history -i' ;; | |||||
| "") alias history='omz_history' ;; | |||||
| *) alias history="omz_history -t '$HIST_STAMPS'" ;; | |||||
| esac | |||||
| ## History file configuration | |||||
| [ -z "$HISTFILE" ] && HISTFILE="$HOME/.zsh_history" | |||||
| HISTSIZE=50000 | |||||
| SAVEHIST=10000 | |||||
| ## History command configuration | |||||
| setopt extended_history # record timestamp of command in HISTFILE | |||||
| setopt hist_expire_dups_first # delete duplicates first when HISTFILE size exceeds HISTSIZE | |||||
| setopt hist_ignore_dups # ignore duplicated commands history list | |||||
| setopt hist_ignore_space # ignore commands that start with space | |||||
| setopt hist_verify # show command with history expansion to user before running it | |||||
| setopt inc_append_history # add commands to HISTFILE in order of execution | |||||
| setopt share_history # share command history data | |||||
| @ -0,0 +1,93 @@ | |||||
| # http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html | |||||
| # http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Zle-Builtins | |||||
| # http://zsh.sourceforge.net/Doc/Release/Zsh-Line-Editor.html#Standard-Widgets | |||||
| # Make sure that the terminal is in application mode when zle is active, since | |||||
| # only then values from $terminfo are valid | |||||
| if (( ${+terminfo[smkx]} )) && (( ${+terminfo[rmkx]} )); then | |||||
| function zle-line-init() { | |||||
| echoti smkx | |||||
| } | |||||
| function zle-line-finish() { | |||||
| echoti rmkx | |||||
| } | |||||
| zle -N zle-line-init | |||||
| zle -N zle-line-finish | |||||
| fi | |||||
| bindkey -e # Use emacs key bindings | |||||
| bindkey '\ew' kill-region # [Esc-w] - Kill from the cursor to the mark | |||||
| bindkey -s '\el' 'ls\n' # [Esc-l] - run command: ls | |||||
| bindkey '^r' history-incremental-search-backward # [Ctrl-r] - Search backward incrementally for a specified string. The string may begin with ^ to anchor the search to the beginning of the line. | |||||
| if [[ "${terminfo[kpp]}" != "" ]]; then | |||||
| bindkey "${terminfo[kpp]}" up-line-or-history # [PageUp] - Up a line of history | |||||
| fi | |||||
| if [[ "${terminfo[knp]}" != "" ]]; then | |||||
| bindkey "${terminfo[knp]}" down-line-or-history # [PageDown] - Down a line of history | |||||
| fi | |||||
| # start typing + [Up-Arrow] - fuzzy find history forward | |||||
| if [[ "${terminfo[kcuu1]}" != "" ]]; then | |||||
| autoload -U up-line-or-beginning-search | |||||
| zle -N up-line-or-beginning-search | |||||
| bindkey "${terminfo[kcuu1]}" up-line-or-beginning-search | |||||
| fi | |||||
| # start typing + [Down-Arrow] - fuzzy find history backward | |||||
| if [[ "${terminfo[kcud1]}" != "" ]]; then | |||||
| autoload -U down-line-or-beginning-search | |||||
| zle -N down-line-or-beginning-search | |||||
| bindkey "${terminfo[kcud1]}" down-line-or-beginning-search | |||||
| fi | |||||
| if [[ "${terminfo[khome]}" != "" ]]; then | |||||
| bindkey "${terminfo[khome]}" beginning-of-line # [Home] - Go to beginning of line | |||||
| fi | |||||
| if [[ "${terminfo[kend]}" != "" ]]; then | |||||
| bindkey "${terminfo[kend]}" end-of-line # [End] - Go to end of line | |||||
| fi | |||||
| bindkey ' ' magic-space # [Space] - do history expansion | |||||
| bindkey '^[[1;5C' forward-word # [Ctrl-RightArrow] - move forward one word | |||||
| bindkey '^[[1;5D' backward-word # [Ctrl-LeftArrow] - move backward one word | |||||
| if [[ "${terminfo[kcbt]}" != "" ]]; then | |||||
| bindkey "${terminfo[kcbt]}" reverse-menu-complete # [Shift-Tab] - move through the completion menu backwards | |||||
| fi | |||||
| bindkey '^?' backward-delete-char # [Backspace] - delete backward | |||||
| if [[ "${terminfo[kdch1]}" != "" ]]; then | |||||
| bindkey "${terminfo[kdch1]}" delete-char # [Delete] - delete forward | |||||
| else | |||||
| bindkey "^[[3~" delete-char | |||||
| bindkey "^[3;5~" delete-char | |||||
| bindkey "\e[3~" delete-char | |||||
| fi | |||||
| # Edit the current command line in $EDITOR | |||||
| autoload -U edit-command-line | |||||
| zle -N edit-command-line | |||||
| bindkey '\C-x\C-e' edit-command-line | |||||
| # file rename magick | |||||
| bindkey "^[m" copy-prev-shell-word | |||||
| # consider emacs keybindings: | |||||
| #bindkey -e ## emacs key bindings | |||||
| # | |||||
| #bindkey '^[[A' up-line-or-search | |||||
| #bindkey '^[[B' down-line-or-search | |||||
| #bindkey '^[^[[C' emacs-forward-word | |||||
| #bindkey '^[^[[D' emacs-backward-word | |||||
| # | |||||
| #bindkey -s '^X^Z' '%-^M' | |||||
| #bindkey '^[e' expand-cmd-path | |||||
| #bindkey '^[^I' reverse-menu-complete | |||||
| #bindkey '^X^N' accept-and-infer-next-history | |||||
| #bindkey '^W' kill-region | |||||
| #bindkey '^I' complete-word | |||||
| ## Fix weird sequence that rxvt produces | |||||
| #bindkey -s '^[[Z' '\t' | |||||
| # | |||||
| @ -0,0 +1,40 @@ | |||||
| ## Load smart urls if available | |||||
| # bracketed-paste-magic is known buggy in zsh 5.1.1 (only), so skip it there; see #4434 | |||||
| autoload -Uz is-at-least | |||||
| if [[ $ZSH_VERSION != 5.1.1 ]]; then | |||||
| for d in $fpath; do | |||||
| if [[ -e "$d/url-quote-magic" ]]; then | |||||
| if is-at-least 5.1; then | |||||
| autoload -Uz bracketed-paste-magic | |||||
| zle -N bracketed-paste bracketed-paste-magic | |||||
| fi | |||||
| autoload -Uz url-quote-magic | |||||
| zle -N self-insert url-quote-magic | |||||
| break | |||||
| fi | |||||
| done | |||||
| fi | |||||
| ## jobs | |||||
| setopt long_list_jobs | |||||
| env_default 'PAGER' 'less' | |||||
| env_default 'LESS' '-R' | |||||
| ## super user alias | |||||
| alias _='sudo' | |||||
| ## more intelligent acking for ubuntu users | |||||
| if which ack-grep &> /dev/null; then | |||||
| alias afind='ack-grep -il' | |||||
| else | |||||
| alias afind='ack -il' | |||||
| fi | |||||
| # only define LC_CTYPE if undefined | |||||
| if [[ -z "$LC_CTYPE" && -z "$LC_ALL" ]]; then | |||||
| export LC_CTYPE=${LANG%%:*} # pick the first entry from LANG | |||||
| fi | |||||
| # recognize comments | |||||
| setopt interactivecomments | |||||
| @ -0,0 +1,9 @@ | |||||
| # get the node.js version | |||||
| function nvm_prompt_info() { | |||||
| [[ -f "$NVM_DIR/nvm.sh" ]] || return | |||||
| local nvm_prompt | |||||
| nvm_prompt=$(node -v 2>/dev/null) | |||||
| [[ "${nvm_prompt}x" == "x" ]] && return | |||||
| nvm_prompt=${nvm_prompt:1} | |||||
| echo "${ZSH_THEME_NVM_PROMPT_PREFIX}${nvm_prompt}${ZSH_THEME_NVM_PROMPT_SUFFIX}" | |||||
| } | |||||
| @ -0,0 +1,33 @@ | |||||
| # *_prompt_info functions for usage in your prompt | |||||
| # | |||||
| # Plugin creators, please add your *_prompt_info function to the list | |||||
| # of dummy implementations to help theme creators not receiving errors | |||||
| # without the need of implementing conditional clauses. | |||||
| # | |||||
| # See also lib/bzr.zsh, lib/git.zsh and lib/nvm.zsh for | |||||
| # git_prompt_info, bzr_prompt_info and nvm_prompt_info | |||||
| # Dummy implementations that return false to prevent command_not_found | |||||
| # errors with themes, that implement these functions | |||||
| # Real implementations will be used when the respective plugins are loaded | |||||
| function chruby_prompt_info hg_prompt_info pyenv_prompt_info \ | |||||
| rbenv_prompt_info svn_prompt_info vi_mode_prompt_info \ | |||||
| virtualenv_prompt_info jenv_prompt_info { | |||||
| return 1 | |||||
| } | |||||
| # oh-my-zsh supports an rvm prompt by default | |||||
| # get the name of the rvm ruby version | |||||
| function rvm_prompt_info() { | |||||
| [ -f $HOME/.rvm/bin/rvm-prompt ] || return 1 | |||||
| local rvm_prompt | |||||
| rvm_prompt=$($HOME/.rvm/bin/rvm-prompt ${=ZSH_THEME_RVM_PROMPT_OPTIONS} 2>/dev/null) | |||||
| [[ "${rvm_prompt}x" == "x" ]] && return 1 | |||||
| echo "${ZSH_THEME_RVM_PROMPT_PREFIX:=(}${rvm_prompt}${ZSH_THEME_RVM_PROMPT_SUFFIX:=)}" | |||||
| } | |||||
| # use this to enable users to see their ruby version, no matter which | |||||
| # version management system they use | |||||
| function ruby_prompt_info() { | |||||
| echo $(rvm_prompt_info || rbenv_prompt_info || chruby_prompt_info) | |||||
| } | |||||
| @ -0,0 +1,37 @@ | |||||
| #! /bin/zsh | |||||
| # A script to make using 256 colors in zsh less painful. | |||||
| # P.C. Shyamshankar <sykora@lucentbeing.com> | |||||
| # Copied from https://github.com/sykora/etc/blob/master/zsh/functions/spectrum/ | |||||
| typeset -AHg FX FG BG | |||||
| FX=( | |||||
| reset "%{[00m%}" | |||||
| bold "%{[01m%}" no-bold "%{[22m%}" | |||||
| italic "%{[03m%}" no-italic "%{[23m%}" | |||||
| underline "%{[04m%}" no-underline "%{[24m%}" | |||||
| blink "%{[05m%}" no-blink "%{[25m%}" | |||||
| reverse "%{[07m%}" no-reverse "%{[27m%}" | |||||
| ) | |||||
| for color in {000..255}; do | |||||
| FG[$color]="%{[38;5;${color}m%}" | |||||
| BG[$color]="%{[48;5;${color}m%}" | |||||
| done | |||||
| ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris} | |||||
| # Show all 256 colors with color number | |||||
| function spectrum_ls() { | |||||
| for code in {000..255}; do | |||||
| print -P -- "$code: %{$FG[$code]%}$ZSH_SPECTRUM_TEXT%{$reset_color%}" | |||||
| done | |||||
| } | |||||
| # Show all 256 colors where the background is set to specific color | |||||
| function spectrum_bls() { | |||||
| for code in {000..255}; do | |||||
| print -P -- "$code: %{$BG[$code]%}$ZSH_SPECTRUM_TEXT%{$reset_color%}" | |||||
| done | |||||
| } | |||||
| @ -0,0 +1,105 @@ | |||||
| # Set terminal window and tab/icon title | |||||
| # | |||||
| # usage: title short_tab_title [long_window_title] | |||||
| # | |||||
| # See: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#ss3.1 | |||||
| # Fully supports screen, iterm, and probably most modern xterm and rxvt | |||||
| # (In screen, only short_tab_title is used) | |||||
| # Limited support for Apple Terminal (Terminal can't set window and tab separately) | |||||
| function title { | |||||
| emulate -L zsh | |||||
| setopt prompt_subst | |||||
| [[ "$EMACS" == *term* ]] && return | |||||
| # if $2 is unset use $1 as default | |||||
| # if it is set and empty, leave it as is | |||||
| : ${2=$1} | |||||
| case "$TERM" in | |||||
| cygwin|xterm*|putty*|rxvt*|ansi) | |||||
| print -Pn "\e]2;$2:q\a" # set window name | |||||
| print -Pn "\e]1;$1:q\a" # set tab name | |||||
| ;; | |||||
| screen*) | |||||
| print -Pn "\ek$1:q\e\\" # set screen hardstatus | |||||
| ;; | |||||
| *) | |||||
| if [[ "$TERM_PROGRAM" == "iTerm.app" ]]; then | |||||
| print -Pn "\e]2;$2:q\a" # set window name | |||||
| print -Pn "\e]1;$1:q\a" # set tab name | |||||
| else | |||||
| # Try to use terminfo to set the title | |||||
| # If the feature is available set title | |||||
| if [[ -n "$terminfo[fsl]" ]] && [[ -n "$terminfo[tsl]" ]]; then | |||||
| echoti tsl | |||||
| print -Pn "$1" | |||||
| echoti fsl | |||||
| fi | |||||
| fi | |||||
| ;; | |||||
| esac | |||||
| } | |||||
| ZSH_THEME_TERM_TAB_TITLE_IDLE="%15<..<%~%<<" #15 char left truncated PWD | |||||
| ZSH_THEME_TERM_TITLE_IDLE="%n@%m: %~" | |||||
| # Avoid duplication of directory in terminals with independent dir display | |||||
| if [[ "$TERM_PROGRAM" == Apple_Terminal ]]; then | |||||
| ZSH_THEME_TERM_TITLE_IDLE="%n@%m" | |||||
| fi | |||||
| # Runs before showing the prompt | |||||
| function omz_termsupport_precmd { | |||||
| emulate -L zsh | |||||
| if [[ "$DISABLE_AUTO_TITLE" == true ]]; then | |||||
| return | |||||
| fi | |||||
| title $ZSH_THEME_TERM_TAB_TITLE_IDLE $ZSH_THEME_TERM_TITLE_IDLE | |||||
| } | |||||
| # Runs before executing the command | |||||
| function omz_termsupport_preexec { | |||||
| emulate -L zsh | |||||
| setopt extended_glob | |||||
| if [[ "$DISABLE_AUTO_TITLE" == true ]]; then | |||||
| return | |||||
| fi | |||||
| # cmd name only, or if this is sudo or ssh, the next cmd | |||||
| local CMD=${1[(wr)^(*=*|sudo|ssh|mosh|rake|-*)]:gs/%/%%} | |||||
| local LINE="${2:gs/%/%%}" | |||||
| title '$CMD' '%100>...>$LINE%<<' | |||||
| } | |||||
| precmd_functions+=(omz_termsupport_precmd) | |||||
| preexec_functions+=(omz_termsupport_preexec) | |||||
| # Keep Apple Terminal.app's current working directory updated | |||||
| # Based on this answer: https://superuser.com/a/315029 | |||||
| # With extra fixes to handle multibyte chars and non-UTF-8 locales | |||||
| if [[ "$TERM_PROGRAM" == "Apple_Terminal" ]] && [[ -z "$INSIDE_EMACS" ]]; then | |||||
| # Emits the control sequence to notify Terminal.app of the cwd | |||||
| # Identifies the directory using a file: URI scheme, including | |||||
| # the host name to disambiguate local vs. remote paths. | |||||
| function update_terminalapp_cwd() { | |||||
| emulate -L zsh | |||||
| # Percent-encode the pathname. | |||||
| local URL_PATH="$(omz_urlencode -P $PWD)" | |||||
| [[ $? != 0 ]] && return 1 | |||||
| # Undocumented Terminal.app-specific control sequence | |||||
| printf '\e]7;%s\a' "file://$HOST$URL_PATH" | |||||
| } | |||||
| # Use a precmd hook instead of a chpwd hook to avoid contaminating output | |||||
| precmd_functions+=(update_terminalapp_cwd) | |||||
| # Run once to get initial cwd set | |||||
| update_terminalapp_cwd | |||||
| fi | |||||
| @ -0,0 +1,55 @@ | |||||
| # ls colors | |||||
| autoload -U colors && colors | |||||
| # Enable ls colors | |||||
| export LSCOLORS="Gxfxcxdxbxegedabagacad" | |||||
| # TODO organise this chaotic logic | |||||
| if [[ "$DISABLE_LS_COLORS" != "true" ]]; then | |||||
| # Find the option for using colors in ls, depending on the version | |||||
| if [[ "$OSTYPE" == netbsd* ]]; then | |||||
| # On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors); | |||||
| # otherwise, leave ls as is, because NetBSD's ls doesn't support -G | |||||
| gls --color -d . &>/dev/null && alias ls='gls --color=tty' | |||||
| elif [[ "$OSTYPE" == openbsd* ]]; then | |||||
| # On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base, | |||||
| # with color and multibyte support) are available from ports. "colorls" | |||||
| # will be installed on purpose and can't be pulled in by installing | |||||
| # coreutils, so prefer it to "gls". | |||||
| gls --color -d . &>/dev/null && alias ls='gls --color=tty' | |||||
| colorls -G -d . &>/dev/null && alias ls='colorls -G' | |||||
| elif [[ "$OSTYPE" == darwin* ]]; then | |||||
| # this is a good alias, it works by default just using $LSCOLORS | |||||
| ls -G . &>/dev/null && alias ls='ls -G' | |||||
| # only use coreutils ls if there is a dircolors customization present ($LS_COLORS or .dircolors file) | |||||
| # otherwise, gls will use the default color scheme which is ugly af | |||||
| [[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d . &>/dev/null && alias ls='gls --color=tty' | |||||
| else | |||||
| # For GNU ls, we use the default ls color theme. They can later be overwritten by themes. | |||||
| if [[ -z "$LS_COLORS" ]]; then | |||||
| (( $+commands[dircolors] )) && eval "$(dircolors -b)" | |||||
| fi | |||||
| ls --color -d . &>/dev/null && alias ls='ls --color=tty' || { ls -G . &>/dev/null && alias ls='ls -G' } | |||||
| # Take advantage of $LS_COLORS for completion as well. | |||||
| zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}" | |||||
| fi | |||||
| fi | |||||
| setopt auto_cd | |||||
| setopt multios | |||||
| setopt prompt_subst | |||||
| [[ -n "$WINDOW" ]] && SCREEN_NO="%B$WINDOW%b " || SCREEN_NO="" | |||||
| # Apply theming defaults | |||||
| PS1="%n@%m:%~%# " | |||||
| # git theming default: Variables for theming the git info prompt | |||||
| ZSH_THEME_GIT_PROMPT_PREFIX="git:(" # Prefix at the very beginning of the prompt, before the branch name | |||||
| ZSH_THEME_GIT_PROMPT_SUFFIX=")" # At the very end of the prompt | |||||
| ZSH_THEME_GIT_PROMPT_DIRTY="*" # Text to display if the branch is dirty | |||||
| ZSH_THEME_GIT_PROMPT_CLEAN="" # Text to display if the branch is clean | |||||
| @ -0,0 +1,119 @@ | |||||
| # Set ZSH_CACHE_DIR to the path where cache files should be created | |||||
| # or else we will use the default cache/ | |||||
| if [[ -z "$ZSH_CACHE_DIR" ]]; then | |||||
| ZSH_CACHE_DIR="$ZSH/cache" | |||||
| fi | |||||
| # Migrate .zsh-update file to $ZSH_CACHE_DIR | |||||
| if [ -f ~/.zsh-update ] && [ ! -f ${ZSH_CACHE_DIR}/.zsh-update ]; then | |||||
| mv ~/.zsh-update ${ZSH_CACHE_DIR}/.zsh-update | |||||
| fi | |||||
| # Check for updates on initial load... | |||||
| if [ "$DISABLE_AUTO_UPDATE" != "true" ]; then | |||||
| env ZSH=$ZSH ZSH_CACHE_DIR=$ZSH_CACHE_DIR DISABLE_UPDATE_PROMPT=$DISABLE_UPDATE_PROMPT zsh -f $ZSH/tools/check_for_upgrade.sh | |||||
| fi | |||||
| # Initializes Oh My Zsh | |||||
| # add a function path | |||||
| fpath=($ZSH/functions $ZSH/completions $fpath) | |||||
| # Load all stock functions (from $fpath files) called below. | |||||
| autoload -U compaudit compinit | |||||
| # Set ZSH_CUSTOM to the path where your custom config files | |||||
| # and plugins exists, or else we will use the default custom/ | |||||
| if [[ -z "$ZSH_CUSTOM" ]]; then | |||||
| ZSH_CUSTOM="$ZSH/custom" | |||||
| fi | |||||
| # Load all of the config files in ~/oh-my-zsh that end in .zsh | |||||
| # TIP: Add files you don't want in git to .gitignore | |||||
| for config_file ($ZSH/lib/*.zsh); do | |||||
| custom_config_file="${ZSH_CUSTOM}/lib/${config_file:t}" | |||||
| [ -f "${custom_config_file}" ] && config_file=${custom_config_file} | |||||
| source $config_file | |||||
| done | |||||
| is_plugin() { | |||||
| local base_dir=$1 | |||||
| local name=$2 | |||||
| test -f $base_dir/plugins/$name/$name.plugin.zsh \ | |||||
| || test -f $base_dir/plugins/$name/_$name | |||||
| } | |||||
| # Add all defined plugins to fpath. This must be done | |||||
| # before running compinit. | |||||
| for plugin ($plugins); do | |||||
| if is_plugin $ZSH_CUSTOM $plugin; then | |||||
| fpath=($ZSH_CUSTOM/plugins/$plugin $fpath) | |||||
| elif is_plugin $ZSH $plugin; then | |||||
| fpath=($ZSH/plugins/$plugin $fpath) | |||||
| fi | |||||
| done | |||||
| # Figure out the SHORT hostname | |||||
| if [[ "$OSTYPE" = darwin* ]]; then | |||||
| # macOS's $HOST changes with dhcp, etc. Use ComputerName if possible. | |||||
| SHORT_HOST=$(scutil --get ComputerName 2>/dev/null) || SHORT_HOST=${HOST/.*/} | |||||
| else | |||||
| SHORT_HOST=${HOST/.*/} | |||||
| fi | |||||
| # Save the location of the current completion dump file. | |||||
| if [ -z "$ZSH_COMPDUMP" ]; then | |||||
| ZSH_COMPDUMP="${ZDOTDIR:-${HOME}}/.zcompdump-${SHORT_HOST}-${ZSH_VERSION}" | |||||
| fi | |||||
| if [[ $ZSH_DISABLE_COMPFIX != true ]]; then | |||||
| # If completion insecurities exist, warn the user | |||||
| if ! compaudit &>/dev/null; then | |||||
| handle_completion_insecurities | |||||
| fi | |||||
| # Load only from secure directories | |||||
| compinit -i -d "${ZSH_COMPDUMP}" | |||||
| else | |||||
| # If the user wants it, load from all found directories | |||||
| compinit -u -d "${ZSH_COMPDUMP}" | |||||
| fi | |||||
| # Load all of the plugins that were defined in ~/.zshrc | |||||
| for plugin ($plugins); do | |||||
| if [ -f $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh ]; then | |||||
| source $ZSH_CUSTOM/plugins/$plugin/$plugin.plugin.zsh | |||||
| elif [ -f $ZSH/plugins/$plugin/$plugin.plugin.zsh ]; then | |||||
| source $ZSH/plugins/$plugin/$plugin.plugin.zsh | |||||
| fi | |||||
| done | |||||
| # Load all of your custom configurations from custom/ | |||||
| for config_file ($ZSH_CUSTOM/*.zsh(N)); do | |||||
| source $config_file | |||||
| done | |||||
| unset config_file | |||||
| # Load the theme | |||||
| if [[ "$ZSH_THEME" == "random" ]]; then | |||||
| if [[ "${(t)ZSH_THEME_RANDOM_CANDIDATES}" = "array" ]] && [[ "${#ZSH_THEME_RANDOM_CANDIDATES[@]}" -gt 0 ]]; then | |||||
| themes=($ZSH/themes/${^ZSH_THEME_RANDOM_CANDIDATES}.zsh-theme) | |||||
| else | |||||
| themes=($ZSH/themes/*zsh-theme) | |||||
| fi | |||||
| N=${#themes[@]} | |||||
| ((N=(RANDOM%N)+1)) | |||||
| RANDOM_THEME=${themes[$N]} | |||||
| source "$RANDOM_THEME" | |||||
| echo "[oh-my-zsh] Random theme '$RANDOM_THEME' loaded..." | |||||
| else | |||||
| if [ ! "$ZSH_THEME" = "" ]; then | |||||
| if [ -f "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" ]; then | |||||
| source "$ZSH_CUSTOM/$ZSH_THEME.zsh-theme" | |||||
| elif [ -f "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" ]; then | |||||
| source "$ZSH_CUSTOM/themes/$ZSH_THEME.zsh-theme" | |||||
| else | |||||
| source "$ZSH/themes/$ZSH_THEME.zsh-theme" | |||||
| fi | |||||
| fi | |||||
| fi | |||||
| @ -0,0 +1,8 @@ | |||||
| # adb autocomplete plugin | |||||
| * Adds autocomplete options for all adb commands. | |||||
| * Add autocomplete for `adb -s` | |||||
| ## Requirements | |||||
| In order to make this work, you will need to have the Android adb tools set up in your path. | |||||
| @ -0,0 +1,67 @@ | |||||
| #compdef adb | |||||
| #autoload | |||||
| # in order to make this work, you will need to have the android adb tools | |||||
| # adb zsh completion, based on homebrew completion | |||||
| local -a _1st_arguments | |||||
| _1st_arguments=( | |||||
| 'bugreport:return all information from the device that should be included in a bug report.' | |||||
| 'connect:connect to a device via TCP/IP Port 5555 is default.' | |||||
| 'devices:list all connected devices' | |||||
| 'disconnect:disconnect from a TCP/IP device. Port 5555 is default.' | |||||
| 'emu:run emulator console command' | |||||
| 'forward:forward socket connections' | |||||
| 'get-devpath:print the device path' | |||||
| 'get-serialno:print the serial number of the device' | |||||
| 'get-state:print the current state of the device: offline | bootloader | device' | |||||
| 'help:show the help message' | |||||
| 'install:push this package file to the device and install it' | |||||
| 'jdwp:list PIDs of processes hosting a JDWP transport' | |||||
| 'keygen:generate adb public/private key' | |||||
| 'kill-server:kill the server if it is running' | |||||
| 'logcat:view device log' | |||||
| 'pull:copy file/dir from device' | |||||
| 'push:copy file/dir to device' | |||||
| 'reboot:reboots the device, optionally into the bootloader or recovery program' | |||||
| 'reboot-bootloader:reboots the device into the bootloader' | |||||
| 'remount:remounts the partitions on the device read-write' | |||||
| 'root:restarts the adbd daemon with root permissions' | |||||
| 'sideload:push a ZIP to device and install it' | |||||
| 'shell:run remote shell interactively' | |||||
| 'sync:copy host->device only if changed (-l means list but dont copy)' | |||||
| 'start-server:ensure that there is a server running' | |||||
| 'tcpip:restart host adb in tcpip mode' | |||||
| 'uninstall:remove this app package from the device' | |||||
| 'usb:restart the adbd daemon listing on USB' | |||||
| 'version:show version num' | |||||
| 'wait-for-device:block until device is online' | |||||
| ) | |||||
| local expl | |||||
| local -a pkgs installed_pkgs | |||||
| _arguments \ | |||||
| '-s[devices]:specify device:->specify_device' \ | |||||
| '*:: :->subcmds' && return 0 | |||||
| case "$state" in | |||||
| specify_device) | |||||
| _values -C 'devices' ${$(adb devices -l|awk 'NR>1&& $1 \ | |||||
| {sub(/ +/," ",$0); \ | |||||
| gsub(":","\\:",$1); \ | |||||
| for(i=1;i<=NF;i++) { | |||||
| if($i ~ /model:/) { split($i,m,":") } \ | |||||
| else if($i ~ /product:/) { split($i,p,":") } } \ | |||||
| printf "%s[%s(%s)] ",$1, p[2], m[2]}'):-""} | |||||
| return | |||||
| ;; | |||||
| esac | |||||
| if (( CURRENT == 1 )); then | |||||
| _describe -t commands "adb subcommand" _1st_arguments | |||||
| return | |||||
| fi | |||||
| _files | |||||
| @ -0,0 +1,34 @@ | |||||
| # ansible plugin | |||||
| ## Introduction | |||||
| The `ansible plugin` adds several aliases for useful [ansible](https://docs.ansible.com/ansible/latest/index.html) commands and [aliases](#aliases). | |||||
| To use it, add `ansible` to the plugins array of your zshrc file: | |||||
| ``` | |||||
| plugins=(... ansible) | |||||
| ``` | |||||
| ## Aliases | |||||
| | Command | Description | | |||||
| |:-------------------------------------------|:--------------------------------------------------------------------| | |||||
| | `ansible-version` / `aver` | Show the version on ansible installed in this host | | |||||
| | `ansible-role-init <role name>` / `arinit` | Creates the Ansible Role as per Ansible Galaxy standard | | |||||
| | `a` | command `ansible` | | |||||
| | `aconf` | command `ansible-config` | | |||||
| | `acon` | command `ansible-console` | | |||||
| | `ainv` | command `ansible-inventory` | | |||||
| | `aplaybook` | command `ansible-playbook` | | |||||
| | `ainv` | command `ansible-inventory` | | |||||
| | `adoc` | command `ansible-doc` | | |||||
| | `agal` | command `ansible-galaxy` | | |||||
| | `apull` | command `ansible-pull` | | |||||
| | `aval` | command `ansible-vault` | | |||||
| ## Maintainer | |||||
| ### [Deepankumar](https://github.com/deepan10) | |||||
| [https://github.com/deepan10/oh-my-zsh/tree/features/ansible-plugin](https://github.com/deepan10/oh-my-zsh/tree/features/ansible-plugin) | |||||
| @ -0,0 +1,28 @@ | |||||
| # Functions | |||||
| function ansible-version(){ | |||||
| ansible --version | |||||
| } | |||||
| function ansible-role-init(){ | |||||
| if ! [ -z $1] ; then | |||||
| echo "Ansible Role : $1 Creating...." | |||||
| ansible-galaxy init $1 | |||||
| tree $1 | |||||
| else | |||||
| echo "Usage : ansible-role-init <role name>" | |||||
| echo "Example : ansible-role-init role1" | |||||
| fi | |||||
| } | |||||
| # Alias | |||||
| alias a='ansible ' | |||||
| alias aconf='ansible-config ' | |||||
| alias acon='ansible-console ' | |||||
| alias aver='ansible-version' | |||||
| alias arinit='ansible-role-init' | |||||
| alias aplaybook='ansible-playbook ' | |||||
| alias ainv='ansible-inventory ' | |||||
| alias adoc='ansible-doc ' | |||||
| alias agal='ansible-galaxy ' | |||||
| alias apull='ansible-pull ' | |||||
| alias aval='ansible-vault' | |||||
| @ -0,0 +1,12 @@ | |||||
| # Ant | |||||
| This plugin provides completion for [Ant](https://ant.apache.org/). | |||||
| To use it add ant to the plugins array in your zshrc file. | |||||
| ```bash | |||||
| plugins=(... ant) | |||||
| ``` | |||||
| It caches ant targets in a file named `.ant_targets`, you might want to add that to | |||||
| your `.gitignore` file. | |||||
| @ -0,0 +1,16 @@ | |||||
| _ant_does_target_list_need_generating () { | |||||
| [ ! -f .ant_targets ] && return 0; | |||||
| [ build.xml -nt .ant_targets ] && return 0; | |||||
| return 1; | |||||
| } | |||||
| _ant () { | |||||
| if [ -f build.xml ]; then | |||||
| if _ant_does_target_list_need_generating; then | |||||
| ant -p | awk -F " " 'NR > 5 { print lastTarget }{lastTarget = $1}' > .ant_targets | |||||
| fi | |||||
| compadd -- `cat .ant_targets` | |||||
| fi | |||||
| } | |||||
| compdef _ant ant | |||||
| @ -0,0 +1,19 @@ | |||||
| ## APACHE2 MACPORTS PLUGIN | |||||
| --- | |||||
| ### FEATURES | |||||
| | Alias | Function | Description | | |||||
| |:--------------:|:-------------------------------------------------------------------------------|----------------------:| | |||||
| | apache2restart | sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart | Restart apache daemon | | |||||
| | apache2start | sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start | Start apache daemon | | |||||
| | apache2stop | sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop | Stop apache daemon | | |||||
| --- | |||||
| ### CONTRIBUTORS | |||||
| - Alexander Rinass (alex@rinass.net) | |||||
| --- | |||||
| @ -0,0 +1,6 @@ | |||||
| # commands to control local apache2 server installation | |||||
| # paths are for osx installation via macports | |||||
| alias apache2start='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper start' | |||||
| alias apache2stop='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper stop' | |||||
| alias apache2restart='sudo /opt/local/etc/LaunchDaemons/org.macports.apache2/apache2.wrapper restart' | |||||
| @ -0,0 +1,5 @@ | |||||
| ## arcanist | |||||
| **Maintainer:** [@emzar](https://github.com/emzar) | |||||
| This plugin adds many useful aliases. | |||||
| @ -0,0 +1,21 @@ | |||||
| # | |||||
| # Aliases | |||||
| # (sorted alphabetically) | |||||
| # | |||||
| alias ara='arc amend' | |||||
| alias arb='arc branch' | |||||
| alias arco='arc cover' | |||||
| alias arci='arc commit' | |||||
| alias ard='arc diff' | |||||
| alias ardnu='arc diff --nounit' | |||||
| alias ardnupc='arc diff --nounit --plan-changes' | |||||
| alias ardpc='arc diff --plan-changes' | |||||
| alias are='arc export' | |||||
| alias arh='arc help' | |||||
| alias arl='arc land' | |||||
| alias arli='arc lint' | |||||
| alias arls='arc list' | |||||
| alias arpa='arc patch' | |||||
| @ -0,0 +1,146 @@ | |||||
| # Archlinux plugin | |||||
| ## Features | |||||
| #### YAY | |||||
| | Alias | Command | Description | | |||||
| |---------|------------------------------------|---------------------------------------------------------------------| | |||||
| | yaconf | yay -Pg | Print current configuration | | |||||
| | yain | yay -S | Install packages from the repositories | | |||||
| | yains | yay -U | Install a package from a local file | | |||||
| | yainsd | yay -S --asdeps | Install packages as dependencies of another package | | |||||
| | yaloc | yay -Qi | Display information about a package in the local database | | |||||
| | yalocs | yay -Qs | Search for packages in the local database | | |||||
| | yalst | yay -Qe | List installed packages including from AUR (tagged as "local") | | |||||
| | yamir | yay -Syy | Force refresh of all package lists after updating mirrorlist | | |||||
| | yaorph | yay -Qtd | Remove orphans using yaourt | | |||||
| | yare | yay -R | Remove packages, keeping its settings and dependencies | | |||||
| | yarem | yay -Rns | Remove packages, including its settings and unneeded dependencies | | |||||
| | yarep | yay -Si | Display information about a package in the repositories | | |||||
| | yareps | yay -Ss | Search for packages in the repositories | | |||||
| | yaupg | yay -Syu | Sync with repositories before upgrading packages | | |||||
| | yasu | yay -Syu --no-confirm | Same as `yaupg`, but without confirmation | | |||||
| #### TRIZEN | |||||
| | Alias | Command | Description | | |||||
| |---------|------------------------------------|---------------------------------------------------------------------| | |||||
| | trconf | trizen -C | Fix all configuration files with vimdiff | | |||||
| | trin | trizen -S | Install packages from the repositories | | |||||
| | trins | trizen -U | Install a package from a local file | | |||||
| | trinsd | trizen -S --asdeps | Install packages as dependencies of another package | | |||||
| | trloc | trizen -Qi | Display information about a package in the local database | | |||||
| | trlocs | trizen -Qs | Search for packages in the local database | | |||||
| | trlst | trizen -Qe | List installed packages including from AUR (tagged as "local") | | |||||
| | trmir | trizen -Syy | Force refresh of all package lists after updating mirrorlist | | |||||
| | trorph | trizen -Qtd | Remove orphans using yaourt | | |||||
| | trre | trizen -R | Remove packages, keeping its settings and dependencies | | |||||
| | trrem | trizen -Rns | Remove packages, including its settings and unneeded dependencies | | |||||
| | trrep | trizen -Si | Display information about a package in the repositories | | |||||
| | trreps | trizen -Ss | Search for packages in the repositories | | |||||
| | trupd | trizen -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases | | |||||
| | trupd | trizen -Sy && sudo abs | Update and refresh the local package and ABS databases | | |||||
| | trupd | trizen -Sy && sudo aur | Update and refresh the local package and AUR databases | | |||||
| | trupd | trizen -Sy | Update and refresh the local package database | | |||||
| | trupg | trizen -Syua | Sync with repositories before upgrading all packages (from AUR too) | | |||||
| | trsu | trizen -Syua --no-confirm | Same as `trupg`, but without confirmation | | |||||
| | upgrade | trizen -Syu | Sync with repositories before upgrading packages | | |||||
| #### YAOURT | |||||
| | Alias | Command | Description | | |||||
| |---------|------------------------------------|---------------------------------------------------------------------| | |||||
| | yaconf | yaourt -C | Fix all configuration files with vimdiff | | |||||
| | yain | yaourt -S | Install packages from the repositories | | |||||
| | yains | yaourt -U | Install a package from a local file | | |||||
| | yainsd | yaourt -S --asdeps | Install packages as dependencies of another package | | |||||
| | yaloc | yaourt -Qi | Display information about a package in the local database | | |||||
| | yalocs | yaourt -Qs | Search for packages in the local database | | |||||
| | yalst | yaourt -Qe | List installed packages including from AUR (tagged as "local") | | |||||
| | yamir | yaourt -Syy | Force refresh of all package lists after updating mirrorlist | | |||||
| | yaorph | yaourt -Qtd | Remove orphans using yaourt | | |||||
| | yare | yaourt -R | Remove packages, keeping its settings and dependencies | | |||||
| | yarem | yaourt -Rns | Remove packages, including its settings and unneeded dependencies | | |||||
| | yarep | yaourt -Si | Display information about a package in the repositories | | |||||
| | yareps | yaourt -Ss | Search for packages in the repositories | | |||||
| | yaupd | yaourt -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases | | |||||
| | yaupd | yaourt -Sy && sudo abs | Update and refresh the local package and ABS databases | | |||||
| | yaupd | yaourt -Sy && sudo aur | Update and refresh the local package and AUR databases | | |||||
| | yaupd | yaourt -Sy | Update and refresh the local package database | | |||||
| | yaupg | yaourt -Syua | Sync with repositories before upgrading all packages (from AUR too) | | |||||
| | yasu | yaourt -Syua --no-confirm | Same as `yaupg`, but without confirmation | | |||||
| | upgrade | yaourt -Syu | Sync with repositories before upgrading packages | | |||||
| #### PACAUR | |||||
| | Alias | Command | Description | | |||||
| |---------|------------------------------------|---------------------------------------------------------------------| | |||||
| | pain | pacaur -S | Install packages from the repositories | | |||||
| | pains | pacaur -U | Install a package from a local file | | |||||
| | painsd | pacaur -S --asdeps | Install packages as dependencies of another package | | |||||
| | paloc | pacaur -Qi | Display information about a package in the local database | | |||||
| | palocs | pacaur -Qs | Search for packages in the local database | | |||||
| | palst | pacaur -Qe | List installed packages including from AUR (tagged as "local") | | |||||
| | pamir | pacaur -Syy | Force refresh of all package lists after updating mirrorlist | | |||||
| | paorph | pacaur -Qtd | Remove orphans using pacaur | | |||||
| | pare | pacaur -R | Remove packages, keeping its settings and dependencies | | |||||
| | parem | pacaur -Rns | Remove packages, including its settings and unneeded dependencies | | |||||
| | parep | pacaur -Si | Display information about a package in the repositories | | |||||
| | pareps | pacaur -Ss | Search for packages in the repositories | | |||||
| | paupd | pacaur -Sy && sudo abs && sudo aur | Update and refresh local package, ABS and AUR databases | | |||||
| | paupd | pacaur -Sy && sudo abs | Update and refresh the local package and ABS databases | | |||||
| | paupd | pacaur -Sy && sudo aur | Update and refresh the local package and AUR databases | | |||||
| | paupd | pacaur -Sy | Update and refresh the local package database | | |||||
| | paupg | pacaur -Syua | Sync with repositories before upgrading all packages (from AUR too) | | |||||
| | pasu | pacaur -Syua --no-confirm | Same as `paupg`, but without confirmation | | |||||
| | upgrade | pacaur -Syu | Sync with repositories before upgrading packages | | |||||
| #### PACMAN | |||||
| | Alias | Command | Description | | |||||
| |--------------|-----------------------------------------|--------------------------------------------------------------| | |||||
| | pacin | sudo pacman -S | Install packages from the repositories | | |||||
| | pacins | sudo pacman -U | Install a package from a local file | | |||||
| | pacinsd | sudo pacman -S --asdeps | Install packages as dependencies of another package | | |||||
| | pacloc | pacman -Qi | Display information about a package in the local database | | |||||
| | paclocs | pacman -Qs | Search for packages in the local database | | |||||
| | paclsorphans | sudo pacman -Qdt | List all orphaned packages | | |||||
| | pacmir | sudo pacman -Syy | Force refresh of all package lists after updating mirrorlist | | |||||
| | pacre | sudo pacman -R | Remove packages, keeping its settings and dependencies | | |||||
| | pacrem | sudo pacman -Rns | Remove packages, including its settings and dependencies | | |||||
| | pacrep | pacman -Si | Display information about a package in the repositories | | |||||
| | pacreps | pacman -Ss | Search for packages in the repositories | | |||||
| | pacrmorphans | sudo pacman -Rs $(pacman -Qtdq) | Delete all orphaned packages | | |||||
| | pacupd | sudo pacman -Sy && sudo abs && sudo aur | Update and refresh the local package, ABS and AUR databases | | |||||
| | pacupd | sudo pacman -Sy && sudo abs | Update and refresh the local package and ABS databases | | |||||
| | pacupd | sudo pacman -Sy && sudo aur | Update and refresh the local package and AUR databases | | |||||
| | pacupd | sudo pacman -Sy | Update and refresh the local package database | | |||||
| | pacupg | sudo pacman -Syu | Sync with repositories before upgrading packages | | |||||
| | upgrade | sudo pacman -Syu | Sync with repositories before upgrading packages | | |||||
| | pacfileupg | sudo pacman -Fy | Download fresh package databases from the server | | |||||
| | pacfiles | pacman -Fs | Search package file names for matching strings | | |||||
| | pacls | pacman -Ql | List files in a package | | |||||
| | pacown | pacman -Qo | Show which package owns a file | | |||||
| | Function | Description | | |||||
| |----------------|------------------------------------------------------| | |||||
| | pacdisowned | List all disowned files in your system | | |||||
| | paclist | List all installed packages with a short description | | |||||
| | pacmanallkeys | Get all keys for developers and trusted users | | |||||
| | pacmansignkeys | Locally trust all keys passed as parameters | | |||||
| | pacweb | Open the website of an ArchLinux package | | |||||
| --- | |||||
| ## Contributors | |||||
| - Benjamin Boudreau - dreurmail@gmail.com | |||||
| - Celso Miranda - contacto@celsomiranda.net | |||||
| - KhasMek - Boushh@gmail.com | |||||
| - Martin Putniorz - mputniorz@gmail.com | |||||
| - MatthR3D - matthr3d@gmail.com | |||||
| - ornicar - thibault.duplessis@gmail.com | |||||
| - Juraj Fiala - doctorjellyface@riseup.net | |||||
| - Majora320 (Moses Miller) - Majora320@gmail.com | |||||
| - Ybalrid (Arthur Brainville) - ybalrid@ybalrid.info | |||||
| @ -0,0 +1,219 @@ | |||||
| if (( $+commands[trizen] )); then | |||||
| alias trconf='trizen -C' | |||||
| alias trupg='trizen -Syua' | |||||
| alias trsu='trizen -Syua --noconfirm' | |||||
| alias trin='trizen -S' | |||||
| alias trins='trizen -U' | |||||
| alias trre='trizen -R' | |||||
| alias trrem='trizen -Rns' | |||||
| alias trrep='trizen -Si' | |||||
| alias trreps='trizen -Ss' | |||||
| alias trloc='trizen -Qi' | |||||
| alias trlocs='trizen -Qs' | |||||
| alias trlst='trizen -Qe' | |||||
| alias trorph='trizen -Qtd' | |||||
| alias trinsd='trizen -S --asdeps' | |||||
| alias trmir='trizen -Syy' | |||||
| if (( $+commands[abs] && $+commands[aur] )); then | |||||
| alias trupd='trizen -Sy && sudo abs && sudo aur' | |||||
| elif (( $+commands[abs] )); then | |||||
| alias trupd='trizen -Sy && sudo abs' | |||||
| elif (( $+commands[aur] )); then | |||||
| alias trupd='trizen -Sy && sudo aur' | |||||
| else | |||||
| alias trupd='trizen -Sy' | |||||
| fi | |||||
| fi | |||||
| if (( $+commands[yaourt] )); then | |||||
| alias yaconf='yaourt -C' | |||||
| alias yaupg='yaourt -Syua' | |||||
| alias yasu='yaourt -Syua --noconfirm' | |||||
| alias yain='yaourt -S' | |||||
| alias yains='yaourt -U' | |||||
| alias yare='yaourt -R' | |||||
| alias yarem='yaourt -Rns' | |||||
| alias yarep='yaourt -Si' | |||||
| alias yareps='yaourt -Ss' | |||||
| alias yaloc='yaourt -Qi' | |||||
| alias yalocs='yaourt -Qs' | |||||
| alias yalst='yaourt -Qe' | |||||
| alias yaorph='yaourt -Qtd' | |||||
| alias yainsd='yaourt -S --asdeps' | |||||
| alias yamir='yaourt -Syy' | |||||
| if (( $+commands[abs] && $+commands[aur] )); then | |||||
| alias yaupd='yaourt -Sy && sudo abs && sudo aur' | |||||
| elif (( $+commands[abs] )); then | |||||
| alias yaupd='yaourt -Sy && sudo abs' | |||||
| elif (( $+commands[aur] )); then | |||||
| alias yaupd='yaourt -Sy && sudo aur' | |||||
| else | |||||
| alias yaupd='yaourt -Sy' | |||||
| fi | |||||
| fi | |||||
| if (( $+commands[yay] )); then | |||||
| alias yaconf='yay -Pg' | |||||
| alias yaupg='yay -Syu' | |||||
| alias yasu='yay -Syu --noconfirm' | |||||
| alias yain='yay -S' | |||||
| alias yains='yay -U' | |||||
| alias yare='yay -R' | |||||
| alias yarem='yay -Rns' | |||||
| alias yarep='yay -Si' | |||||
| alias yareps='yay -Ss' | |||||
| alias yaloc='yay -Qi' | |||||
| alias yalocs='yay -Qs' | |||||
| alias yalst='yay -Qe' | |||||
| alias yaorph='yay -Qtd' | |||||
| alias yainsd='yay -S --asdeps' | |||||
| alias yamir='yay -Syy' | |||||
| if (( $+commands[abs] && $+commands[aur] )); then | |||||
| alias yaupd='yay -Sy && sudo abs && sudo aur' | |||||
| elif (( $+commands[abs] )); then | |||||
| alias yaupd='yay -Sy && sudo abs' | |||||
| elif (( $+commands[aur] )); then | |||||
| alias yaupd='yay -Sy && sudo aur' | |||||
| else | |||||
| alias yaupd='yay -Sy' | |||||
| fi | |||||
| fi | |||||
| if (( $+commands[pacaur] )); then | |||||
| alias paupg='pacaur -Syu' | |||||
| alias pasu='pacaur -Syu --noconfirm' | |||||
| alias pain='pacaur -S' | |||||
| alias pains='pacaur -U' | |||||
| alias pare='pacaur -R' | |||||
| alias parem='pacaur -Rns' | |||||
| alias parep='pacaur -Si' | |||||
| alias pareps='pacaur -Ss' | |||||
| alias paloc='pacaur -Qi' | |||||
| alias palocs='pacaur -Qs' | |||||
| alias palst='pacaur -Qe' | |||||
| alias paorph='pacaur -Qtd' | |||||
| alias painsd='pacaur -S --asdeps' | |||||
| alias pamir='pacaur -Syy' | |||||
| if (( $+commands[abs] && $+commands[aur] )); then | |||||
| alias paupd='pacaur -Sy && sudo abs && sudo aur' | |||||
| elif (( $+commands[abs] )); then | |||||
| alias paupd='pacaur -Sy && sudo abs' | |||||
| elif (( $+commands[aur] )); then | |||||
| alias paupd='pacaur -Sy && sudo aur' | |||||
| else | |||||
| alias paupd='pacaur -Sy' | |||||
| fi | |||||
| fi | |||||
| if (( $+commands[trizen] )); then | |||||
| function upgrade() { | |||||
| trizen -Syu | |||||
| } | |||||
| elif (( $+commands[pacaur] )); then | |||||
| function upgrade() { | |||||
| pacaur -Syu | |||||
| } | |||||
| elif (( $+commands[yaourt] )); then | |||||
| function upgrade() { | |||||
| yaourt -Syu | |||||
| } | |||||
| elif (( $+commands[yay] )); then | |||||
| function upgrade() { | |||||
| yay -Syu | |||||
| } | |||||
| else | |||||
| function upgrade() { | |||||
| sudo pacman -Syu | |||||
| } | |||||
| fi | |||||
| # Pacman - https://wiki.archlinux.org/index.php/Pacman_Tips | |||||
| alias pacupg='sudo pacman -Syu' | |||||
| alias pacin='sudo pacman -S' | |||||
| alias pacins='sudo pacman -U' | |||||
| alias pacre='sudo pacman -R' | |||||
| alias pacrem='sudo pacman -Rns' | |||||
| alias pacrep='pacman -Si' | |||||
| alias pacreps='pacman -Ss' | |||||
| alias pacloc='pacman -Qi' | |||||
| alias paclocs='pacman -Qs' | |||||
| alias pacinsd='sudo pacman -S --asdeps' | |||||
| alias pacmir='sudo pacman -Syy' | |||||
| alias paclsorphans='sudo pacman -Qdt' | |||||
| alias pacrmorphans='sudo pacman -Rs $(pacman -Qtdq)' | |||||
| alias pacfileupg='sudo pacman -Fy' | |||||
| alias pacfiles='pacman -Fs' | |||||
| alias pacls='pacman -Ql' | |||||
| alias pacown='pacman -Qo' | |||||
| if (( $+commands[abs] && $+commands[aur] )); then | |||||
| alias pacupd='sudo pacman -Sy && sudo abs && sudo aur' | |||||
| elif (( $+commands[abs] )); then | |||||
| alias pacupd='sudo pacman -Sy && sudo abs' | |||||
| elif (( $+commands[aur] )); then | |||||
| alias pacupd='sudo pacman -Sy && sudo aur' | |||||
| else | |||||
| alias pacupd='sudo pacman -Sy' | |||||
| fi | |||||
| function paclist() { | |||||
| # Source: https://bbs.archlinux.org/viewtopic.php?id=93683 | |||||
| LC_ALL=C pacman -Qei $(pacman -Qu | cut -d " " -f 1) | \ | |||||
| awk 'BEGIN {FS=":"} /^Name/{printf("\033[1;36m%s\033[1;37m", $2)} /^Description/{print $2}' | |||||
| } | |||||
| function pacdisowned() { | |||||
| emulate -L zsh | |||||
| tmp=${TMPDIR-/tmp}/pacman-disowned-$UID-$$ | |||||
| db=$tmp/db | |||||
| fs=$tmp/fs | |||||
| mkdir "$tmp" | |||||
| trap 'rm -rf "$tmp"' EXIT | |||||
| pacman -Qlq | sort -u > "$db" | |||||
| find /bin /etc /lib /sbin /usr ! -name lost+found \ | |||||
| \( -type d -printf '%p/\n' -o -print \) | sort > "$fs" | |||||
| comm -23 "$fs" "$db" | |||||
| } | |||||
| function pacmanallkeys() { | |||||
| emulate -L zsh | |||||
| curl -s https://www.archlinux.org/people/{developers,trustedusers}/ | \ | |||||
| awk -F\" '(/pgp.mit.edu/) { sub(/.*search=0x/,""); print $1}' | \ | |||||
| xargs sudo pacman-key --recv-keys | |||||
| } | |||||
| function pacmansignkeys() { | |||||
| emulate -L zsh | |||||
| for key in $*; do | |||||
| sudo pacman-key --recv-keys $key | |||||
| sudo pacman-key --lsign-key $key | |||||
| printf 'trust\n3\n' | sudo gpg --homedir /etc/pacman.d/gnupg \ | |||||
| --no-permission-warning --command-fd 0 --edit-key $key | |||||
| done | |||||
| } | |||||
| if (( $+commands[xdg-open] )); then | |||||
| function pacweb() { | |||||
| pkg="$1" | |||||
| infos="$(pacman -Si "$pkg")" | |||||
| if [[ -z "$infos" ]]; then | |||||
| return | |||||
| fi | |||||
| repo="$(grep '^Repo' <<< "$infos" | grep -oP '[^ ]+$')" | |||||
| arch="$(grep '^Arch' <<< "$infos" | grep -oP '[^ ]+$')" | |||||
| xdg-open "https://www.archlinux.org/packages/$repo/$arch/$pkg/" &>/dev/null | |||||
| } | |||||
| fi | |||||
| @ -0,0 +1,27 @@ | |||||
| ## asdf | |||||
| **Maintainer:** [@RobLoach](https://github.com/RobLoach) | |||||
| Adds integration with [asdf](https://github.com/asdf-vm/asdf), the extendable version manager, with support for Ruby, Node.js, Elixir, Erlang and more. | |||||
| ### Installation | |||||
| 1. Enable the plugin by adding it to your `plugins` definition in `~/.zshrc`. | |||||
| ``` | |||||
| plugins=(asdf) | |||||
| ``` | |||||
| 2. [Install asdf](https://github.com/asdf-vm/asdf#setup) by running the following: | |||||
| ``` | |||||
| git clone https://github.com/asdf-vm/asdf.git ~/.asdf | |||||
| ``` | |||||
| ### Usage | |||||
| See the [asdf usage documentation](https://github.com/asdf-vm/asdf#usage) for information on how to use asdf: | |||||
| ``` | |||||
| asdf plugin-add nodejs git@github.com:asdf-vm/asdf-nodejs.git | |||||
| asdf install nodejs 5.9.1 | |||||
| ``` | |||||
| @ -0,0 +1,19 @@ | |||||
| # Find where asdf should be installed | |||||
| ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}" | |||||
| ASDF_COMPLETIONS="$ASDF_DIR/completions" | |||||
| # If not found, check for Homebrew package | |||||
| if [[ ! -f "$ASDF_DIR/asdf.sh" ]] && (( $+commands[brew] )); then | |||||
| ASDF_DIR="$(brew --prefix asdf)" | |||||
| ASDF_COMPLETIONS="$ASDF_DIR/etc/bash_completion.d" | |||||
| fi | |||||
| # Load command | |||||
| if [[ -f "$ASDF_DIR/asdf.sh" ]]; then | |||||
| . "$ASDF_DIR/asdf.sh" | |||||
| # Load completions | |||||
| if [[ -f "$ASDF_COMPLETIONS/asdf.bash" ]]; then | |||||
| . "$ASDF_COMPLETIONS/asdf.bash" | |||||
| fi | |||||
| fi | |||||
| @ -0,0 +1,43 @@ | |||||
| # Activates autoenv or reports its failure | |||||
| () { | |||||
| if ! type autoenv_init >/dev/null; then | |||||
| for d (~/.autoenv ~/.local/bin /usr/local/opt/autoenv /usr/local/bin); do | |||||
| if [[ -e $d/activate.sh ]]; then | |||||
| autoenv_dir=$d | |||||
| break | |||||
| fi | |||||
| done | |||||
| if [[ -z $autoenv_dir ]]; then | |||||
| cat <<END >&2 | |||||
| -------- AUTOENV --------- | |||||
| Could not locate autoenv installation. | |||||
| Please check if autoenv is correctly installed. | |||||
| In the meantime the autoenv plugin is DISABLED. | |||||
| -------------------------- | |||||
| END | |||||
| return 1 | |||||
| fi | |||||
| source $autoenv_dir/activate.sh | |||||
| fi | |||||
| } | |||||
| [[ $? != 0 ]] && return $? | |||||
| # The use_env call below is a reusable command to activate/create a new Python | |||||
| # virtualenv, requiring only a single declarative line of code in your .env files. | |||||
| # It only performs an action if the requested virtualenv is not the current one. | |||||
| use_env() { | |||||
| typeset venv | |||||
| venv="$1" | |||||
| if [[ "${VIRTUAL_ENV:t}" != "$venv" ]]; then | |||||
| if workon | grep -q "$venv"; then | |||||
| workon "$venv" | |||||
| else | |||||
| echo -n "Create virtualenv $venv now? (Yn) " | |||||
| read answer | |||||
| if [[ "$answer" == "Y" ]]; then | |||||
| mkvirtualenv "$venv" | |||||
| fi | |||||
| fi | |||||
| fi | |||||
| } | |||||
| @ -0,0 +1,11 @@ | |||||
| # Autojump plugin | |||||
| This plugin loads the [autojump navigation tool](https://github.com/wting/autojump). | |||||
| To use it, add `autojump` to the plugins array in your zshrc file: | |||||
| ```zsh | |||||
| plugins=(... autojump) | |||||
| ``` | |||||
| More info on the usage: https://github.com/wting/autojump | |||||
| @ -0,0 +1,23 @@ | |||||
| if [ $commands[autojump] ]; then # check if autojump is installed | |||||
| if [ -f $HOME/.autojump/etc/profile.d/autojump.zsh ]; then # manual user-local installation | |||||
| . $HOME/.autojump/etc/profile.d/autojump.zsh | |||||
| elif [ -f $HOME/.autojump/share/autojump/autojump.zsh ]; then # another manual user-local installation | |||||
| . $HOME/.autojump/share/autojump/autojump.zsh | |||||
| elif [ -f $HOME/.nix-profile/etc/profile.d/autojump.zsh ]; then # nix installation | |||||
| . $HOME/.nix-profile/etc/profile.d/autojump.zsh | |||||
| elif [ -f /run/current-system/sw/share/autojump/autojump.zsh ]; then # nixos installation | |||||
| . /run/current-system/sw/share/autojump/autojump.zsh | |||||
| elif [ -f /usr/share/autojump/autojump.zsh ]; then # debian and ubuntu package | |||||
| . /usr/share/autojump/autojump.zsh | |||||
| elif [ -f /etc/profile.d/autojump.zsh ]; then # manual installation | |||||
| . /etc/profile.d/autojump.zsh | |||||
| elif [ -f /etc/profile.d/autojump.sh ]; then # gentoo installation | |||||
| . /etc/profile.d/autojump.sh | |||||
| elif [ -f /usr/local/share/autojump/autojump.zsh ]; then # freebsd installation | |||||
| . /usr/local/share/autojump/autojump.zsh | |||||
| elif [ -f /opt/local/etc/profile.d/autojump.sh ]; then # mac os x with ports | |||||
| . /opt/local/etc/profile.d/autojump.sh | |||||
| elif [ $commands[brew] -a -f `brew --prefix`/etc/autojump.sh ]; then # mac os x with brew | |||||
| . `brew --prefix`/etc/autojump.sh | |||||
| fi | |||||
| fi | |||||
| @ -0,0 +1,8 @@ | |||||
| # autopep8 plugin | |||||
| This plugin adds completion for [autopep8](https://pypi.org/project/autopep8/), a tool that automatically formats Python code to conform to the [PEP 8](http://www.python.org/dev/peps/pep-0008/) style guide. | |||||
| To use it, add autopep8 to the plugins array of your zshrc file: | |||||
| ``` | |||||
| plugins=(... autopep8) | |||||
| ``` | |||||
| @ -0,0 +1,32 @@ | |||||
| #compdef autopep8 | |||||
| # | |||||
| # this is zsh completion function file. | |||||
| # generated by genzshcomp(ver: 0.5.1) | |||||
| # | |||||
| typeset -A opt_args | |||||
| local context state line | |||||
| _arguments -s -S \ | |||||
| "--help[show this help message and exit]:" \ | |||||
| "-h[show this help message and exit]:" \ | |||||
| "--version[show program's version number and exit]:" \ | |||||
| "--verbose[print verbose messages; multiple -v result in more verbose messages]" \ | |||||
| "-v[print verbose messages; multiple -v result in more verbose messages]" \ | |||||
| "--diff[print the diff for the fixed source]" \ | |||||
| "-d[print the diff for the fixed source]" \ | |||||
| "--in-place[make changes to files in place]" \ | |||||
| "-i[make changes to files in place]" \ | |||||
| "--recursive[run recursively; must be used with --in-place or --diff]" \ | |||||
| "-r[run recursively; must be used with --in-place or --diff]" \ | |||||
| "--jobs[number of parallel jobs; match CPU count if value is less than 1]::n number of parallel jobs; match CPU count if value is:_files" \ | |||||
| "-j[number of parallel jobs; match CPU count if value is less than 1]::n number of parallel jobs; match CPU count if value is:_files" \ | |||||
| "--pep8-passes[maximum number of additional pep8 passes (default: 100)]::n:_files" \ | |||||
| "-p[maximum number of additional pep8 passes (default: 100)]::n:_files" \ | |||||
| "-a[-a result in more aggressive changes]::result:_files" \ | |||||
| "--exclude[exclude files/directories that match these comma- separated globs]::globs:_files" \ | |||||
| "--list-fixes[list codes for fixes; used by --ignore and --select]" \ | |||||
| "--ignore[do not fix these errors/warnings (default E226,E24)]::errors:_files" \ | |||||
| "--select[fix only these errors/warnings (e.g. E4,W)]::errors:_files" \ | |||||
| "--max-line-length[set maximum allowed line length (default: 79)]::n:_files" \ | |||||
| "*::args:_files" | |||||
| @ -0,0 +1,20 @@ | |||||
| # aws | |||||
| This plugin provides completion support for [awscli](https://docs.aws.amazon.com/cli/latest/reference/index.html) | |||||
| and a few utilities to manage AWS profiles: a function to change profiles with autocompletion support | |||||
| and a function to get the current AWS profile. The current AWS profile is also displayed in `RPROMPT`. | |||||
| To use it, add `aws` to the plugins array in your zshrc file. | |||||
| ```zsh | |||||
| plugins=(... aws) | |||||
| ``` | |||||
| ## Plugin commands | |||||
| * `asp <profile>`: Sets `AWS_PROFILE` and `AWS_DEFAULT_PROFILE` (legacy) to `<profile>`. | |||||
| It also adds it to your RPROMPT. | |||||
| * `agp`: Gets the current value of `AWS_PROFILE`. | |||||
| * `aws_profiles`: Lists the available profiles in the file referenced in `AWS_CONFIG_FILE` (default: ~/.aws/config). Used to provide completion for the `asp` function. | |||||
| @ -0,0 +1,49 @@ | |||||
| _homebrew-installed() { | |||||
| type brew &> /dev/null | |||||
| _xit=$? | |||||
| if [ $_xit -eq 0 ];then | |||||
| # ok , we have brew installed | |||||
| # speculatively we check default brew prefix | |||||
| if [ -h /usr/local/opt/awscli ];then | |||||
| _brew_prefix="/usr/local/opt/awscli" | |||||
| else | |||||
| # ok , it is not default prefix | |||||
| # this call to brew is expensive ( about 400 ms ), so at least let's make it only once | |||||
| _brew_prefix=$(brew --prefix awscli) | |||||
| fi | |||||
| return 0 | |||||
| else | |||||
| return $_xit | |||||
| fi | |||||
| } | |||||
| _awscli-homebrew-installed() { | |||||
| [ -r $_brew_prefix/libexec/bin/aws_zsh_completer.sh ] &> /dev/null | |||||
| } | |||||
| function agp { | |||||
| echo $AWS_PROFILE | |||||
| } | |||||
| function asp { | |||||
| local rprompt=${RPROMPT/<aws:$(agp)>/} | |||||
| export AWS_DEFAULT_PROFILE=$1 | |||||
| export AWS_PROFILE=$1 | |||||
| export RPROMPT="<aws:$AWS_PROFILE>$rprompt" | |||||
| } | |||||
| function aws_profiles { | |||||
| reply=($(grep '\[profile' "${AWS_CONFIG_FILE:-$HOME/.aws/config}"|sed -e 's/.*profile \([a-zA-Z0-9_\.-]*\).*/\1/')) | |||||
| } | |||||
| compctl -K aws_profiles asp | |||||
| if which aws_zsh_completer.sh &>/dev/null; then | |||||
| _aws_zsh_completer_path=$(which aws_zsh_completer.sh 2>/dev/null) | |||||
| elif _homebrew-installed && _awscli-homebrew-installed; then | |||||
| _aws_zsh_completer_path=$_brew_prefix/libexec/bin/aws_zsh_completer.sh | |||||
| fi | |||||
| [ -n "$_aws_zsh_completer_path" ] && [ -x $_aws_zsh_completer_path ] && source $_aws_zsh_completer_path | |||||
| unset _aws_zsh_completer_path | |||||
| @ -0,0 +1,13 @@ | |||||
| # Battery Plugin | |||||
| This plugin adds some functions you can use to display battery information in your custom theme. | |||||
| To use, add `battery` to the list of plugins in your `.zshrc` file: | |||||
| `plugins=(... battery)` | |||||
| Then, add the `battery_pct_prompt` function to your custom theme. For example: | |||||
| ``` | |||||
| RPROMPT='$(battery_pct_prompt)' | |||||
| ``` | |||||
| @ -0,0 +1,160 @@ | |||||
| ########################################### | |||||
| # Battery plugin for oh-my-zsh # | |||||
| # Original Author: Peter hoeg (peterhoeg) # | |||||
| # Email: peter@speartail.com # | |||||
| ########################################### | |||||
| # Author: Sean Jones (neuralsandwich) # | |||||
| # Email: neuralsandwich@gmail.com # | |||||
| # Modified to add support for Apple Mac # | |||||
| ########################################### | |||||
| if [[ "$OSTYPE" = darwin* ]] ; then | |||||
| function battery_pct() { | |||||
| local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" | |||||
| typeset -F maxcapacity=$(echo $smart_battery_status | grep '^.*"MaxCapacity"\ =\ ' | sed -e 's/^.*"MaxCapacity"\ =\ //') | |||||
| typeset -F currentcapacity=$(echo $smart_battery_status | grep '^.*"CurrentCapacity"\ =\ ' | sed -e 's/^.*CurrentCapacity"\ =\ //') | |||||
| integer i=$(((currentcapacity/maxcapacity) * 100)) | |||||
| echo $i | |||||
| } | |||||
| function plugged_in() { | |||||
| [ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ Yes') -eq 1 ] | |||||
| } | |||||
| function battery_pct_remaining() { | |||||
| if plugged_in ; then | |||||
| echo "External Power" | |||||
| else | |||||
| battery_pct | |||||
| fi | |||||
| } | |||||
| function battery_time_remaining() { | |||||
| local smart_battery_status="$(ioreg -rc "AppleSmartBattery")" | |||||
| if [[ $(echo $smart_battery_status | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then | |||||
| timeremaining=$(echo $smart_battery_status | grep '^.*"AvgTimeToEmpty"\ =\ ' | sed -e 's/^.*"AvgTimeToEmpty"\ =\ //') | |||||
| if [ $timeremaining -gt 720 ] ; then | |||||
| echo "::" | |||||
| else | |||||
| echo "~$((timeremaining / 60)):$((timeremaining % 60))" | |||||
| fi | |||||
| else | |||||
| echo "∞" | |||||
| fi | |||||
| } | |||||
| function battery_pct_prompt () { | |||||
| if [[ $(ioreg -rc AppleSmartBattery | grep -c '^.*"ExternalConnected"\ =\ No') -eq 1 ]] ; then | |||||
| b=$(battery_pct_remaining) | |||||
| if [ $b -gt 50 ] ; then | |||||
| color='green' | |||||
| elif [ $b -gt 20 ] ; then | |||||
| color='yellow' | |||||
| else | |||||
| color='red' | |||||
| fi | |||||
| echo "%{$fg[$color]%}[$(battery_pct_remaining)%%]%{$reset_color%}" | |||||
| else | |||||
| echo "∞" | |||||
| fi | |||||
| } | |||||
| function battery_is_charging() { | |||||
| [[ $(ioreg -rc "AppleSmartBattery"| grep '^.*"IsCharging"\ =\ ' | sed -e 's/^.*"IsCharging"\ =\ //') == "Yes" ]] | |||||
| } | |||||
| elif [[ "$OSTYPE" = linux* ]] ; then | |||||
| function battery_is_charging() { | |||||
| ! [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] | |||||
| } | |||||
| function battery_pct() { | |||||
| if (( $+commands[acpi] )) ; then | |||||
| echo "$(acpi 2>/dev/null | cut -f2 -d ',' | tr -cd '[:digit:]')" | |||||
| fi | |||||
| } | |||||
| function battery_pct_remaining() { | |||||
| if [ ! $(battery_is_charging) ] ; then | |||||
| battery_pct | |||||
| else | |||||
| echo "External Power" | |||||
| fi | |||||
| } | |||||
| function battery_time_remaining() { | |||||
| if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then | |||||
| echo $(acpi 2>/dev/null | cut -f3 -d ',') | |||||
| fi | |||||
| } | |||||
| function battery_pct_prompt() { | |||||
| b=$(battery_pct_remaining) | |||||
| if [[ $(acpi 2>/dev/null | grep -c '^Battery.*Discharging') -gt 0 ]] ; then | |||||
| if [ $b -gt 50 ] ; then | |||||
| color='green' | |||||
| elif [ $b -gt 20 ] ; then | |||||
| color='yellow' | |||||
| else | |||||
| color='red' | |||||
| fi | |||||
| echo "%{$fg[$color]%}$(battery_pct_remaining)%%%{$reset_color%}" | |||||
| else | |||||
| echo "∞" | |||||
| fi | |||||
| } | |||||
| else | |||||
| # Empty functions so we don't cause errors in prompts | |||||
| function battery_pct_remaining() { | |||||
| } | |||||
| function battery_time_remaining() { | |||||
| } | |||||
| function battery_pct_prompt() { | |||||
| } | |||||
| fi | |||||
| function battery_level_gauge() { | |||||
| local gauge_slots=${BATTERY_GAUGE_SLOTS:-10}; | |||||
| local green_threshold=${BATTERY_GREEN_THRESHOLD:-6}; | |||||
| local yellow_threshold=${BATTERY_YELLOW_THRESHOLD:-4}; | |||||
| local color_green=${BATTERY_COLOR_GREEN:-%F{green}}; | |||||
| local color_yellow=${BATTERY_COLOR_YELLOW:-%F{yellow}}; | |||||
| local color_red=${BATTERY_COLOR_RED:-%F{red}}; | |||||
| local color_reset=${BATTERY_COLOR_RESET:-%{%f%k%b%}}; | |||||
| local battery_prefix=${BATTERY_GAUGE_PREFIX:-'['}; | |||||
| local battery_suffix=${BATTERY_GAUGE_SUFFIX:-']'}; | |||||
| local filled_symbol=${BATTERY_GAUGE_FILLED_SYMBOL:-'▶'}; | |||||
| local empty_symbol=${BATTERY_GAUGE_EMPTY_SYMBOL:-'▷'}; | |||||
| local charging_color=${BATTERY_CHARGING_COLOR:-$color_yellow}; | |||||
| local charging_symbol=${BATTERY_CHARGING_SYMBOL:-'⚡'}; | |||||
| local battery_remaining_percentage=$(battery_pct); | |||||
| if [[ $battery_remaining_percentage =~ [0-9]+ ]]; then | |||||
| local filled=$(((( $battery_remaining_percentage + $gauge_slots - 1) / $gauge_slots))); | |||||
| local empty=$(($gauge_slots - $filled)); | |||||
| if [[ $filled -gt $green_threshold ]]; then local gauge_color=$color_green; | |||||
| elif [[ $filled -gt $yellow_threshold ]]; then local gauge_color=$color_yellow; | |||||
| else local gauge_color=$color_red; | |||||
| fi | |||||
| else | |||||
| local filled=$gauge_slots; | |||||
| local empty=0; | |||||
| filled_symbol=${BATTERY_UNKNOWN_SYMBOL:-'.'}; | |||||
| fi | |||||
| local charging=' ' && battery_is_charging && charging=$charging_symbol; | |||||
| printf ${charging_color//\%/\%\%}$charging${color_reset//\%/\%\%}${battery_prefix//\%/\%\%}${gauge_color//\%/\%\%} | |||||
| printf ${filled_symbol//\%/\%\%}'%.0s' {1..$filled} | |||||
| [[ $filled -lt $gauge_slots ]] && printf ${empty_symbol//\%/\%\%}'%.0s' {1..$empty} | |||||
| printf ${color_reset//\%/\%\%}${battery_suffix//\%/\%\%}${color_reset//\%/\%\%} | |||||
| } | |||||
| @ -0,0 +1,20 @@ | |||||
| ## bbedit | |||||
| Plugin for BBEdit, an HTML and text editor for Mac OS X | |||||
| ### Requirements | |||||
| * [BBEdit](https://www.barebones.com/products/bbedit/) | |||||
| * [BBEdit Command-Line Tools](https://www.barebones.com/support/bbedit/cmd-line-tools.html) | |||||
| ### Usage | |||||
| * If the `bb` command is called without an argument, launch BBEdit | |||||
| * If `bb` is passed a directory, cd to it and open it in BBEdit | |||||
| * If `bb` is passed a file, open it in BBEdit | |||||
| * If `bbpb` create a new BBEdit document with the contents of the clipboard | |||||
| * If `bbd` alias for BBEdit diff tool | |||||
| @ -0,0 +1,21 @@ | |||||
| alias bbpb='pbpaste | bbedit --clean --view-top' | |||||
| alias bbd=bbdiff | |||||
| # | |||||
| # If the bb command is called without an argument, launch BBEdit | |||||
| # If bb is passed a directory, cd to it and open it in BBEdit | |||||
| # If bb is passed a file, open it in BBEdit | |||||
| # | |||||
| function bb() { | |||||
| if [[ -z "$1" ]] | |||||
| then | |||||
| bbedit --launch | |||||
| else | |||||
| bbedit "$1" | |||||
| if [[ -d "$1" ]] | |||||
| then | |||||
| cd "$1" | |||||
| fi | |||||
| fi | |||||
| } | |||||
| @ -0,0 +1,54 @@ | |||||
| # bgnotify zsh plugin | |||||
| cross-platform background notifications for long running commands! Supports OSX and Ubuntu linux. | |||||
| Standalone homepage: [t413/zsh-background-notify](https://github.com/t413/zsh-background-notify) | |||||
| ---------------------------------- | |||||
| ## How to use! | |||||
| Just add bgnotify to your plugins list in your `.zshrc` | |||||
| - On OS X you'll need [terminal-notifier](https://github.com/alloy/terminal-notifier) | |||||
| * `brew install terminal-notifier` (or `gem install terminal-notifier`) | |||||
| - On ubuntu you're already all set! | |||||
| - On windows you can use [notifu](https://www.paralint.com/projects/notifu/) or the Cygwin Ports libnotify package | |||||
| ## Screenshots | |||||
| **Linux** | |||||
|  | |||||
| **OS X** | |||||
|  | |||||
| **Windows** | |||||
|  | |||||
| ## Configuration | |||||
| One can configure a few things: | |||||
| - `bgnotify_threshold` sets the notification threshold time (default 6 seconds) | |||||
| - `function bgnotify_formatted` lets you change the notification | |||||
| Use these by adding a function definition before the your call to source. Example: | |||||
| ~~~ sh | |||||
| bgnotify_threshold=4 ## set your own notification threshold | |||||
| function bgnotify_formatted { | |||||
| ## $1=exit_status, $2=command, $3=elapsed_time | |||||
| [ $1 -eq 0 ] && title="Holy Smokes Batman!" || title="Holy Graf Zeppelin!" | |||||
| bgnotify "$title -- after $3 s" "$2"; | |||||
| } | |||||
| plugins=(git bgnotify) ## add to plugins list | |||||
| source $ZSH/oh-my-zsh.sh ## existing source call | |||||
| ~~~ | |||||
| @ -0,0 +1,77 @@ | |||||
| #!/usr/bin/env zsh | |||||
| ## setup ## | |||||
| [[ -o interactive ]] || return #interactive only! | |||||
| zmodload zsh/datetime || { print "can't load zsh/datetime"; return } # faster than date() | |||||
| autoload -Uz add-zsh-hook || { print "can't add zsh hook!"; return } | |||||
| (( ${+bgnotify_threshold} )) || bgnotify_threshold=5 #default 10 seconds | |||||
| ## definitions ## | |||||
| if ! (type bgnotify_formatted | grep -q 'function'); then ## allow custom function override | |||||
| function bgnotify_formatted { ## args: (exit_status, command, elapsed_seconds) | |||||
| elapsed="$(( $3 % 60 ))s" | |||||
| (( $3 >= 60 )) && elapsed="$((( $3 % 3600) / 60 ))m $elapsed" | |||||
| (( $3 >= 3600 )) && elapsed="$(( $3 / 3600 ))h $elapsed" | |||||
| [ $1 -eq 0 ] && bgnotify "#win (took $elapsed)" "$2" || bgnotify "#fail (took $elapsed)" "$2" | |||||
| } | |||||
| fi | |||||
| currentWindowId () { | |||||
| if hash osascript 2>/dev/null; then #osx | |||||
| osascript -e 'tell application (path to frontmost application as text) to id of front window' 2&> /dev/null || echo "0" | |||||
| elif (hash notify-send 2>/dev/null || hash kdialog 2>/dev/null); then #ubuntu! | |||||
| xprop -root 2> /dev/null | awk '/NET_ACTIVE_WINDOW/{print $5;exit} END{exit !$5}' || echo "0" | |||||
| else | |||||
| echo $EPOCHSECONDS #fallback for windows | |||||
| fi | |||||
| } | |||||
| bgnotify () { ## args: (title, subtitle) | |||||
| if hash terminal-notifier 2>/dev/null; then #osx | |||||
| [[ "$TERM_PROGRAM" == 'iTerm.app' ]] && term_id='com.googlecode.iterm2'; | |||||
| [[ "$TERM_PROGRAM" == 'Apple_Terminal' ]] && term_id='com.apple.terminal'; | |||||
| ## now call terminal-notifier, (hopefully with $term_id!) | |||||
| [ -z "$term_id" ] && terminal-notifier -message "$2" -title "$1" >/dev/null || | |||||
| terminal-notifier -message "$2" -title "$1" -activate "$term_id" -sender "$term_id" >/dev/null | |||||
| elif hash growlnotify 2>/dev/null; then #osx growl | |||||
| growlnotify -m "$1" "$2" | |||||
| elif hash notify-send 2>/dev/null; then #ubuntu gnome! | |||||
| notify-send "$1" "$2" | |||||
| elif hash kdialog 2>/dev/null; then #ubuntu kde! | |||||
| kdialog --title "$1" --passivepopup "$2" 5 | |||||
| elif hash notifu 2>/dev/null; then #cygwyn support! | |||||
| notifu /m "$2" /p "$1" | |||||
| fi | |||||
| } | |||||
| ## Zsh hooks ## | |||||
| bgnotify_begin() { | |||||
| bgnotify_timestamp=$EPOCHSECONDS | |||||
| bgnotify_lastcmd="$1" | |||||
| bgnotify_windowid=$(currentWindowId) | |||||
| } | |||||
| bgnotify_end() { | |||||
| didexit=$? | |||||
| elapsed=$(( EPOCHSECONDS - bgnotify_timestamp )) | |||||
| past_threshold=$(( elapsed >= bgnotify_threshold )) | |||||
| if (( bgnotify_timestamp > 0 )) && (( past_threshold )); then | |||||
| if [ $(currentWindowId) != "$bgnotify_windowid" ]; then | |||||
| print -n "\a" | |||||
| bgnotify_formatted "$didexit" "$bgnotify_lastcmd" "$elapsed" | |||||
| fi | |||||
| fi | |||||
| bgnotify_timestamp=0 #reset it to 0! | |||||
| } | |||||
| ## only enable if a local (non-ssh) connection | |||||
| if [ -z "$SSH_CLIENT" ] && [ -z "$SSH_TTY" ]; then | |||||
| add-zsh-hook preexec bgnotify_begin | |||||
| add-zsh-hook precmd bgnotify_end | |||||
| fi | |||||
| @ -0,0 +1,6 @@ | |||||
| ## Boot2docker autocomplete plugin | |||||
| - Adds autocomplete options for all boot2docker commands. | |||||
| Maintainer : Manfred Touron ([@moul](https://github.com/moul)) | |||||
| @ -0,0 +1,73 @@ | |||||
| #compdef boot2docker | |||||
| # Boot2docker autocompletion for oh-my-zsh | |||||
| # Requires: Boot2docker installed | |||||
| # Author: Manfred Touron (@moul) | |||||
| local -a _1st_arguments | |||||
| _1st_arguments=( | |||||
| "init":"Create a new Boot2Docker VM." | |||||
| "up":"Start VM from any states." | |||||
| "start":"Start VM from any states." | |||||
| "boot":"Start VM from any states." | |||||
| "ssh":"[ssh-command] Login to VM via SSH." | |||||
| "save":"Suspend VM and save state to disk." | |||||
| "suspend":"Suspend VM and save state to disk." | |||||
| "down":"Gracefully shutdown the VM." | |||||
| "stop":"Gracefully shutdown the VM." | |||||
| "halt":"Gracefully shutdown the VM." | |||||
| "restart":"Gracefully reboot the VM." | |||||
| "poweroff":"Forcefully power off the VM (may corrupt disk image)." | |||||
| "reset":"Forcefully power cycle the VM (may corrupt disk image)." | |||||
| "delete":"Delete Boot2Docker VM and its disk image." | |||||
| "destroy":"Delete Boot2Docker VM and its disk image." | |||||
| "config":"Show selected profile file settings." | |||||
| "cfg":"Show selected profile file settings." | |||||
| "info":"Display detailed information of VM." | |||||
| "ip":"Display the IP address of the VM's Host-only network." | |||||
| "socket":"Display the DOCKER_HOST socket to connect to." | |||||
| "shellinit":"Display the shell command to set up the Docker client." | |||||
| "status":"Display current state of VM." | |||||
| "download":"Download Boot2Docker ISO image." | |||||
| "upgrade":"Upgrade the Boot2Docker ISO image (restart if running)." | |||||
| "version":"Display version information." | |||||
| ) | |||||
| _arguments \ | |||||
| '(--basevmdk)--basevmdk[Path to VMDK to use as base for persistent partition]' \ | |||||
| '(--cpus)'{-c,--cpus}'[number of CPUs for boot2docker.]' \ | |||||
| '(--clobber)--clobber[overwrite Docker client binary on boot2docker upgrade]' \ | |||||
| '(--dhcp)--dhcp[enable VirtualBox host-only network DHCP.]' \ | |||||
| '(--dhcpip)--dhcpip[VirtualBox host-only network DHCP server address.]' \ | |||||
| '(-s --disksize)'{-s,--disksize}'[boot2docker disk image size (in MB).]' \ | |||||
| '(--dockerport)--dockerport[host Docker port (forward to port 2376 in VM). (deprecated - use with care)]' \ | |||||
| '(--driver)--driver[hypervisor driver.]' \ | |||||
| '(--force-upgrade-download)--force-upgrade-download[always download on boot2docker upgrade, never skip.]' \ | |||||
| '(--hostip)--hostip[VirtualBox host-only network IP address.]' \ | |||||
| '(--iso)--iso[path to boot2docker ISO image.]' \ | |||||
| '(--iso-url)--iso-url[/api.github.com/repos/boot2docker/boot2docker/releases": source URL to provision the boot2docker ISO image.]' \ | |||||
| '(--lowerip)--lowerip[VirtualBox host-only network DHCP lower bound.]' \ | |||||
| '(--memory)'{-m,--memory}'[virtual machine memory size (in MB).]' \ | |||||
| '(--netmask)--netmask[VirtualBox host-only network mask.]' \ | |||||
| '(--no-dummy)--no-dummy[Example parameter for the dummy driver.]' \ | |||||
| '(--retries)--retries[number of port knocking retries during 'start']' \ | |||||
| '(--serial)--serial[try serial console to get IP address (experimental)]' \ | |||||
| '(--serialfile)--serialfile[path to the serial socket/pipe.]' \ | |||||
| '(--ssh)--ssh[path to SSH client utility.]' \ | |||||
| '(--ssh-keygen)--ssh-keygen[path to ssh-keygen utility.]' \ | |||||
| '(--sshkey)--sshkey[path to SSH key to use.]' \ | |||||
| '(--sshport)--sshport[host SSH port (forward to port 22 in VM).]' \ | |||||
| '(--upperip)--upperip[VirtualBox host-only network DHCP upper bound.]' \ | |||||
| '(--vbm)--vbm[path to VirtualBox management utility.]' \ | |||||
| '(--vbox-share)--vbox-share[(defaults to "/Users=Users" if no shares are specified; use "disable" to explicitly prevent any shares from being created) List of directories to share during "up|start|boot" via VirtualBox Guest Additions, with optional labels]' \ | |||||
| '(--verbose)'{-v,--verbose}'[display verbose command invocations.]' \ | |||||
| '(--vm)--vm[virtual machine name.]' \ | |||||
| '(--waittime)--waittime[Time in milliseconds to wait between port knocking retries during 'start']' \ | |||||
| '*:: :->subcmds' && return 0 | |||||
| #_arguments '*:: :->command' | |||||
| if (( CURRENT == 1 )); then | |||||
| _describe -t commands "boot2docker command" _1st_arguments | |||||
| return | |||||
| fi | |||||
| @ -0,0 +1,18 @@ | |||||
| # Bower plugin | |||||
| This plugin adds completion for [Bower](https://bower.io/) and a few useful aliases for common Bower commands. | |||||
| To use it, add `bower` to the plugins array in your zshrc file: | |||||
| ``` | |||||
| plugins=(... bower) | |||||
| ``` | |||||
| ## Aliases | |||||
| | Alias | Command | Description | | |||||
| |-------|-----------------|--------------------------------------------------------| | |||||
| | bi | `bower install` | Installs the project dependencies listed in bower.json | | |||||
| | bl | `bower list` | List local packages and possible updates | | |||||
| | bs | `bower search` | Finds all packages or a specific package. | | |||||
| @ -0,0 +1,58 @@ | |||||
| # Credits to npm's awesome completion utility. | |||||
| # | |||||
| # Bower completion script, based on npm completion script. | |||||
| ###-begin-bower-completion-### | |||||
| # | |||||
| # Installation: bower completion >> ~/.bashrc (or ~/.zshrc) | |||||
| # Or, maybe: bower completion > /usr/local/etc/bash_completion.d/bower | |||||
| # | |||||
| COMP_WORDBREAKS=${COMP_WORDBREAKS/=/} | |||||
| COMP_WORDBREAKS=${COMP_WORDBREAKS/@/} | |||||
| export COMP_WORDBREAKS | |||||
| if type complete &>/dev/null; then | |||||
| _bower_completion () { | |||||
| local si="$IFS" | |||||
| IFS=$'\n' COMPREPLY=($(COMP_CWORD="$COMP_CWORD" \ | |||||
| COMP_LINE="$COMP_LINE" \ | |||||
| COMP_POINT="$COMP_POINT" \ | |||||
| bower completion -- "${COMP_WORDS[@]}" \ | |||||
| 2>/dev/null)) || return $? | |||||
| IFS="$si" | |||||
| } | |||||
| complete -F _bower_completion bower | |||||
| elif type compdef &>/dev/null; then | |||||
| _bower_completion() { | |||||
| si=$IFS | |||||
| compadd -- $(COMP_CWORD=$((CURRENT-1)) \ | |||||
| COMP_LINE=$BUFFER \ | |||||
| COMP_POINT=0 \ | |||||
| bower completion -- "${words[@]}" \ | |||||
| 2>/dev/null) | |||||
| IFS=$si | |||||
| } | |||||
| compdef _bower_completion bower | |||||
| elif type compctl &>/dev/null; then | |||||
| _bower_completion () { | |||||
| local cword line point words si | |||||
| read -Ac words | |||||
| read -cn cword | |||||
| let cword-=1 | |||||
| read -l line | |||||
| read -ln point | |||||
| si="$IFS" | |||||
| IFS=$'\n' reply=($(COMP_CWORD="$cword" \ | |||||
| COMP_LINE="$line" \ | |||||
| COMP_POINT="$point" \ | |||||
| bower completion -- "${words[@]}" \ | |||||
| 2>/dev/null)) || return $? | |||||
| IFS="$si" | |||||
| } | |||||
| compctl -K _bower_completion bower | |||||
| fi | |||||
| ###-end-bower-completion-### | |||||
| @ -0,0 +1,82 @@ | |||||
| alias bi="bower install" | |||||
| alias bl="bower list" | |||||
| alias bs="bower search" | |||||
| _bower_installed_packages () { | |||||
| bower_package_list=$(bower ls --no-color 2>/dev/null| awk 'NR>3{print p}{p=$0}'| cut -d ' ' -f 2|sed 's/#.*//') | |||||
| } | |||||
| _bower () | |||||
| { | |||||
| local -a _1st_arguments _no_color _dopts _save_dev _force_lastest _production | |||||
| local expl | |||||
| typeset -A opt_args | |||||
| _no_color=('--no-color[Do not print colors (available in all commands)]') | |||||
| _dopts=( | |||||
| '(--save)--save[Save installed packages into the project"s bower.json dependencies]' | |||||
| '(--force)--force[Force fetching remote resources even if a local copy exists on disk]' | |||||
| ) | |||||
| _save_dev=('(--save-dev)--save-dev[Save installed packages into the project"s bower.json devDependencies]') | |||||
| _force_lastest=('(--force-latest)--force-latest[Force latest version on conflict]') | |||||
| _production=('(--production)--production[Do not install project devDependencies]') | |||||
| _1st_arguments=( | |||||
| 'cache-clean:Clean the Bower cache, or the specified package caches' \ | |||||
| 'help:Display help information about Bower' \ | |||||
| 'info:Version info and description of a particular package' \ | |||||
| 'init:Interactively create a bower.json file' \ | |||||
| 'install:Install a package locally' \ | |||||
| 'link:Symlink a package folder' \ | |||||
| 'lookup:Look up a package URL by name' \ | |||||
| 'register:Register a package' \ | |||||
| 'search:Search for a package by name' \ | |||||
| 'uninstall:Remove a package' \ | |||||
| 'update:Update a package' \ | |||||
| {ls,list}:'[List all installed packages]' | |||||
| ) | |||||
| _arguments \ | |||||
| $_no_color \ | |||||
| '*:: :->subcmds' && return 0 | |||||
| if (( CURRENT == 1 )); then | |||||
| _describe -t commands "bower subcommand" _1st_arguments | |||||
| return | |||||
| fi | |||||
| case "$words[1]" in | |||||
| install) | |||||
| _arguments \ | |||||
| $_dopts \ | |||||
| $_save_dev \ | |||||
| $_force_lastest \ | |||||
| $_no_color \ | |||||
| $_production | |||||
| ;; | |||||
| update) | |||||
| _arguments \ | |||||
| $_dopts \ | |||||
| $_no_color \ | |||||
| $_force_lastest | |||||
| _bower_installed_packages | |||||
| compadd "$@" $(echo $bower_package_list) | |||||
| ;; | |||||
| uninstall) | |||||
| _arguments \ | |||||
| $_no_color \ | |||||
| $_dopts | |||||
| _bower_installed_packages | |||||
| compadd "$@" $(echo $bower_package_list) | |||||
| ;; | |||||
| *) | |||||
| _arguments \ | |||||
| $_no_color \ | |||||
| ;; | |||||
| esac | |||||
| } | |||||
| compdef _bower bower | |||||
| @ -0,0 +1,33 @@ | |||||
| # Branch | |||||
| Displays the current Git or Mercurial branch fast. | |||||
| ## Speed test | |||||
| ### Mercurial | |||||
| ```shell | |||||
| $ time hg branch | |||||
| 0.11s user 0.14s system 70% cpu 0.355 total | |||||
| ``` | |||||
| ### Branch plugin | |||||
| ```shell | |||||
| $ time zsh /tmp/branch_prompt_info_test.zsh | |||||
| 0.00s user 0.01s system 78% cpu 0.014 total | |||||
| ``` | |||||
| ## Usage | |||||
| Edit your theme file (eg.: `~/.oh-my-zsh/theme/robbyrussell.zsh-theme`) | |||||
| adding `$(branch_prompt_info)` in your prompt like this: | |||||
| ```diff | |||||
| - PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' | |||||
| + PROMPT='${ret_status}%{$fg_bold[green]%}%p %{$fg[cyan]%}%c %{$fg_bold[blue]%}$(git_prompt_info)$(branch_prompt_info)%{$fg_bold[blue]%} % %{$reset_color%}' | |||||
| ``` | |||||
| ## Maintainer | |||||
| Victor Torres (<vpaivatorres@gmail.com>) | |||||
| @ -0,0 +1,31 @@ | |||||
| # Branch: displays the current Git or Mercurial branch fast. | |||||
| # Victor Torres <vpaivatorres@gmail.com> | |||||
| # Oct 2, 2015 | |||||
| function branch_prompt_info() { | |||||
| # Defines path as current directory | |||||
| local current_dir=$PWD | |||||
| # While current path is not root path | |||||
| while [[ $current_dir != '/' ]] | |||||
| do | |||||
| # Git repository | |||||
| if [[ -d "${current_dir}/.git" ]] | |||||
| then | |||||
| echo '±' ${"$(<"$current_dir/.git/HEAD")"##*/} | |||||
| return; | |||||
| fi | |||||
| # Mercurial repository | |||||
| if [[ -d "${current_dir}/.hg" ]] | |||||
| then | |||||
| if [[ -f "$current_dir/.hg/branch" ]] | |||||
| then | |||||
| echo '☿' $(<"$current_dir/.hg/branch") | |||||
| else | |||||
| echo '☿ default' | |||||
| fi | |||||
| return; | |||||
| fi | |||||
| # Defines path as parent directory and keeps looking for :) | |||||
| current_dir="${current_dir:h}" | |||||
| done | |||||
| } | |||||
| @ -0,0 +1,21 @@ | |||||
| # brew plugin | |||||
| The plugin adds several aliases for common [brew](https://brew.sh) commands. | |||||
| To use it, add `brew` to the plugins array of your zshrc file: | |||||
| ``` | |||||
| plugins=(... brew) | |||||
| ``` | |||||
| ## Aliases | |||||
| | Alias | Command | Description | | |||||
| |--------|----------------------|---------------| | |||||
| | brewp | `brew pin` | Pin a specified formulae, preventing them from being upgraded when issuing the brew upgrade <formulae> command. | | |||||
| | brews | `brew list -1` | List installed formulae, one entry per line, or the installed files for a given formulae. | | |||||
| | brewsp | `brew list --pinned` | Show the versions of pinned formulae, or only the specified (pinned) formulae if formulae are given. | | |||||
| | bubo | `brew update && brew outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated formulae. | | |||||
| | bubc | `brew upgrade && brew cleanup` | Upgrade outdated, unpinned brews (with existing install options), then removes stale lock files and outdated downloads for formulae and casks, and removes old versions of installed formulae. | | |||||
| | bubu | `bubo && bubc` | Updates Homebrew, lists outdated formulae, upgrades oudated and unpinned formulae, and removes stale and outdated downloads and versions. | | |||||
| | bcubo | `brew update && brew cask outdated` | Fetch the newest version of Homebrew and all formulae, then list outdated casks. | | |||||
| | bcubc | `brew cask reinstall $(brew cask outdated) && brew cleanup` | Updates outdated casks, then runs cleanup. | | |||||
| @ -0,0 +1,24 @@ | |||||
| alias brewp='brew pin' | |||||
| alias brews='brew list -1' | |||||
| alias brewsp='brew list --pinned' | |||||
| alias bubo='brew update && brew outdated' | |||||
| alias bubc='brew upgrade && brew cleanup' | |||||
| alias bubu='bubo && bubc' | |||||
| alias bcubo='brew update && brew cask outdated' | |||||
| alias bcubc='brew cask reinstall $(brew cask outdated) && brew cleanup' | |||||
| if command mkdir "$ZSH_CACHE_DIR/.brew-completion-message" 2>/dev/null; then | |||||
| print -P '%F{yellow}'Oh My Zsh brew plugin: | |||||
| cat <<-'EOF' | |||||
| With the advent of their 1.0 release, Homebrew has decided to bundle | |||||
| the zsh completion as part of the brew installation, so we no longer | |||||
| ship it with the brew plugin; now it only has brew aliases. | |||||
| If you find that brew completion no longer works, make sure you have | |||||
| your Homebrew installation fully up to date. | |||||
| You will only see this message once. | |||||
| EOF | |||||
| print -P '%f' | |||||
| fi | |||||
| @ -0,0 +1,52 @@ | |||||
| # Bundler | |||||
| - adds completion for basic bundler commands | |||||
| - adds short aliases for common bundler commands | |||||
| - `be` aliased to `bundle exec`. | |||||
| It also supports aliases (if `rs` is `rails server`, `be rs` will bundle-exec `rails server`). | |||||
| - `bl` aliased to `bundle list` | |||||
| - `bp` aliased to `bundle package` | |||||
| - `bo` aliased to `bundle open` | |||||
| - `bout` aliased to `bundle outdated` | |||||
| - `bu` aliased to `bundle update` | |||||
| - `bi` aliased to `bundle install --jobs=<cpu core count>` (only for bundler `>= 1.4.0`) | |||||
| - adds a wrapper for common gems: | |||||
| - looks for a binstub under `./bin/` and executes it (if present) | |||||
| - calls `bundle exec <gem executable>` otherwise | |||||
| Common gems wrapped by default (by name of the executable): | |||||
| `annotate`, `cap`, `capify`, `cucumber`, `foodcritic`, `guard`, `hanami`, `irb`, `jekyll`, `kitchen`, `knife`, `middleman`, `nanoc`, `pry`, `puma`, `rackup`, `rainbows`, `rake`, `rspec`, `shotgun`, `sidekiq`, `spec`, `spork`, `spring`, `strainer`, `tailor`, `taps`, `thin`, `thor`, `unicorn` and `unicorn_rails`. | |||||
| ## Configuration | |||||
| Please use the exact name of the executable and not the gem name. | |||||
| ### Add additional gems to be wrapped | |||||
| Add this before the plugin-list in your `.zshrc`: | |||||
| ```sh | |||||
| BUNDLED_COMMANDS=(rubocop) | |||||
| plugins=(... bundler ...) | |||||
| ``` | |||||
| This will add the wrapper for the `rubocop` gem (i.e. the executable). | |||||
| ### Exclude gems from being wrapped | |||||
| Add this before the plugin-list in your `.zshrc`: | |||||
| ```sh | |||||
| UNBUNDLED_COMMANDS=(foreman spin) | |||||
| plugins=(... bundler ...) | |||||
| ``` | |||||
| This will exclude the `foreman` and `spin` gems (i.e. their executable) from being wrapped. | |||||
| ## Excluded gems | |||||
| These gems should not be called with `bundle exec`. Please see [issue #2923](https://github.com/robbyrussell/oh-my-zsh/pull/2923) on GitHub for clarification. | |||||
| `berks` | |||||
| `foreman` | |||||
| `mailcatcher` | |||||
| `rails` | |||||
| `ruby` | |||||
| `spin` | |||||
| @ -0,0 +1,104 @@ | |||||
| #compdef bundle | |||||
| local curcontext="$curcontext" state line _gems _opts ret=1 | |||||
| _arguments -C -A "-v" -A "--version" \ | |||||
| '(- 1 *)'{-v,--version}'[display version information]' \ | |||||
| '1: :->cmds' \ | |||||
| '*:: :->args' && ret=0 | |||||
| case $state in | |||||
| cmds) | |||||
| _values "bundle command" \ | |||||
| "install[Install the gems specified by the Gemfile or Gemfile.lock]" \ | |||||
| "update[Update dependencies to their latest versions]" \ | |||||
| "package[Package the .gem files required by your application]" \ | |||||
| "exec[Execute a script in the context of the current bundle]" \ | |||||
| "config[Specify and read configuration options for bundler]" \ | |||||
| "check[Determine whether the requirements for your application are installed]" \ | |||||
| "list[Show all of the gems in the current bundle]" \ | |||||
| "show[Show the source location of a particular gem in the bundle]" \ | |||||
| "outdated[Show all of the outdated gems in the current bundle]" \ | |||||
| "console[Start an IRB session in the context of the current bundle]" \ | |||||
| "open[Open an installed gem in the editor]" \ | |||||
| "viz[Generate a visual representation of your dependencies]" \ | |||||
| "init[Generate a simple Gemfile, placed in the current directory]" \ | |||||
| "gem[Create a simple gem, suitable for development with bundler]" \ | |||||
| "platform[Displays platform compatibility information]" \ | |||||
| "clean[Cleans up unused gems in your bundler directory]" \ | |||||
| "help[Describe available tasks or one specific task]" | |||||
| ret=0 | |||||
| ;; | |||||
| args) | |||||
| case $line[1] in | |||||
| help) | |||||
| _values 'commands' \ | |||||
| 'install' \ | |||||
| 'update' \ | |||||
| 'package' \ | |||||
| 'exec' \ | |||||
| 'config' \ | |||||
| 'check' \ | |||||
| 'list' \ | |||||
| 'show' \ | |||||
| 'outdated' \ | |||||
| 'console' \ | |||||
| 'open' \ | |||||
| 'viz' \ | |||||
| 'init' \ | |||||
| 'gem' \ | |||||
| 'platform' \ | |||||
| 'help' && ret=0 | |||||
| ;; | |||||
| install) | |||||
| _arguments \ | |||||
| '(--no-color)--no-color[disable colorization in output]' \ | |||||
| '(--local)--local[do not attempt to connect to rubygems.org]' \ | |||||
| '(--quiet)--quiet[only output warnings and errors]' \ | |||||
| '(--gemfile)--gemfile=-[use the specified gemfile instead of Gemfile]:gemfile' \ | |||||
| '(--system)--system[install to the system location]' \ | |||||
| '(--deployment)--deployment[install using defaults tuned for deployment environments]' \ | |||||
| '(--frozen)--frozen[do not allow the Gemfile.lock to be updated after this install]' \ | |||||
| '(--path)--path=-[specify a different path than the system default]:path:_files' \ | |||||
| '(--binstubs)--binstubs=-[generate bin stubs for bundled gems to ./bin]:directory:_files' \ | |||||
| '(--without)--without=-[exclude gems that are part of the specified named group]:groups' | |||||
| ret=0 | |||||
| ;; | |||||
| exec) | |||||
| _normal && ret=0 | |||||
| ;; | |||||
| clean) | |||||
| _arguments \ | |||||
| '(--force)--force[forces clean even if --path is not set]' \ | |||||
| '(--dry-run)--dry-run[only print out changes, do not actually clean gems]' \ | |||||
| '(--no-color)--no-color[Disable colorization in output]' \ | |||||
| '(--verbose)--verbose[Enable verbose output mode]' | |||||
| ret=0 | |||||
| ;; | |||||
| outdated) | |||||
| _arguments \ | |||||
| '(--pre)--pre[Check for newer pre-release gems]' \ | |||||
| '(--source)--source[Check against a specific source]' \ | |||||
| '(--local)--local[Do not attempt to fetch gems remotely and use the gem cache instead]' \ | |||||
| '(--no-color)--no-color[Disable colorization in output]' \ | |||||
| '(--verbose)--verbose[Enable verbose output mode]' | |||||
| ret=0 | |||||
| ;; | |||||
| (open|show) | |||||
| _gems=( $(bundle show 2> /dev/null | sed -e '/^ \*/!d; s/^ \* \([^ ]*\) .*/\1/') ) | |||||
| if [[ $_gems != "" ]]; then | |||||
| _values 'gems' $_gems && ret=0 | |||||
| fi | |||||
| ;; | |||||
| *) | |||||
| _opts=( $(bundle help $line[1] | sed -e '/^ \[-/!d; s/^ \[\(-[^=]*\)=.*/\1/') ) | |||||
| _opts+=( $(bundle help $line[1] | sed -e '/^ -/!d; s/^ \(-.\), \[\(-[^=]*\)=.*/\1 \2/') ) | |||||
| if [[ $_opts != "" ]]; then | |||||
| _values 'options' $_opts && ret=0 | |||||
| fi | |||||
| ;; | |||||
| esac | |||||
| ;; | |||||
| esac | |||||
| return ret | |||||
| @ -0,0 +1,115 @@ | |||||
| alias be="bundle exec" | |||||
| alias bl="bundle list" | |||||
| alias bp="bundle package" | |||||
| alias bo="bundle open" | |||||
| alias bout="bundle outdated" | |||||
| alias bu="bundle update" | |||||
| alias bi="bundle_install" | |||||
| alias bcn="bundle clean" | |||||
| bundled_commands=( | |||||
| annotate | |||||
| cap | |||||
| capify | |||||
| cucumber | |||||
| foodcritic | |||||
| guard | |||||
| hanami | |||||
| irb | |||||
| jekyll | |||||
| kitchen | |||||
| knife | |||||
| middleman | |||||
| nanoc | |||||
| pry | |||||
| puma | |||||
| rackup | |||||
| rainbows | |||||
| rake | |||||
| rspec | |||||
| shotgun | |||||
| sidekiq | |||||
| spec | |||||
| spork | |||||
| spring | |||||
| strainer | |||||
| tailor | |||||
| taps | |||||
| thin | |||||
| thor | |||||
| unicorn | |||||
| unicorn_rails | |||||
| ) | |||||
| # Remove $UNBUNDLED_COMMANDS from the bundled_commands list | |||||
| for cmd in $UNBUNDLED_COMMANDS; do | |||||
| bundled_commands=(${bundled_commands#$cmd}); | |||||
| done | |||||
| # Add $BUNDLED_COMMANDS to the bundled_commands list | |||||
| for cmd in $BUNDLED_COMMANDS; do | |||||
| bundled_commands+=($cmd); | |||||
| done | |||||
| ## Functions | |||||
| bundle_install() { | |||||
| if ! _bundler-installed; then | |||||
| echo "Bundler is not installed" | |||||
| elif ! _within-bundled-project; then | |||||
| echo "Can't 'bundle install' outside a bundled project" | |||||
| else | |||||
| local bundler_version=`bundle version | cut -d' ' -f3` | |||||
| if [[ $bundler_version > '1.4.0' || $bundler_version = '1.4.0' ]]; then | |||||
| if [[ "$OSTYPE" = (darwin|freebsd)* ]] | |||||
| then | |||||
| local cores_num="$(sysctl -n hw.ncpu)" | |||||
| else | |||||
| local cores_num="$(nproc)" | |||||
| fi | |||||
| bundle install --jobs=$cores_num $@ | |||||
| else | |||||
| bundle install $@ | |||||
| fi | |||||
| fi | |||||
| } | |||||
| _bundler-installed() { | |||||
| which bundle > /dev/null 2>&1 | |||||
| } | |||||
| _within-bundled-project() { | |||||
| local check_dir="$PWD" | |||||
| while [ "$check_dir" != "/" ]; do | |||||
| [ -f "$check_dir/Gemfile" ] && return | |||||
| check_dir="$(dirname $check_dir)" | |||||
| done | |||||
| false | |||||
| } | |||||
| _binstubbed() { | |||||
| [ -f "./bin/${1}" ] | |||||
| } | |||||
| _run-with-bundler() { | |||||
| if _bundler-installed && _within-bundled-project; then | |||||
| if _binstubbed $1; then | |||||
| ./bin/$@ | |||||
| else | |||||
| bundle exec $@ | |||||
| fi | |||||
| else | |||||
| $@ | |||||
| fi | |||||
| } | |||||
| ## Main program | |||||
| for cmd in $bundled_commands; do | |||||
| eval "function unbundled_$cmd () { $cmd \$@ }" | |||||
| eval "function bundled_$cmd () { _run-with-bundler $cmd \$@}" | |||||
| alias $cmd=bundled_$cmd | |||||
| if which _$cmd > /dev/null 2>&1; then | |||||
| compdef _$cmd bundled_$cmd=$cmd | |||||
| fi | |||||
| done | |||||
| @ -0,0 +1,9 @@ | |||||
| # Bwana | |||||
| This plugin provides a function to open `man` pages directly with [Bwana](https://www.bruji.com/bwana/). | |||||
| To use it add bwana to the plugins array in your zshrc file. | |||||
| ```bash | |||||
| plugins=(... bwana) | |||||
| ``` | |||||
| @ -0,0 +1,13 @@ | |||||
| # | |||||
| # Requires https://www.bruji.com/bwana/ | |||||
| # | |||||
| if [[ -e /Applications/Bwana.app ]] || | |||||
| ( system_profiler -detailLevel mini SPApplicationsDataType | grep -q Bwana ) | |||||
| then | |||||
| function man() { | |||||
| open "man:$1" | |||||
| } | |||||
| else | |||||
| echo "Bwana lets you read man files in Safari through a man: URI scheme" | |||||
| echo "To use it within Zsh, install it from https://www.bruji.com/bwana/" | |||||
| fi | |||||
| @ -0,0 +1,9 @@ | |||||
| # Cabal | |||||
| This plugin provides completion for [Cabal](https://www.haskell.org/cabal/), a build tool for Haskell. It | |||||
| also provides a function `cabal_sandbox_info` that prints whether the current working directory is in a sandbox. | |||||
| To use it, add cabal to the plugins array of your zshrc file: | |||||
| ``` | |||||
| plugins=(... cabal) | |||||
| ``` | |||||
| @ -0,0 +1,93 @@ | |||||
| function cabal_sandbox_info() { | |||||
| cabal_files=(*.cabal(N)) | |||||
| if [ $#cabal_files -gt 0 ]; then | |||||
| if [ -f cabal.sandbox.config ]; then | |||||
| echo "%{$fg[green]%}sandboxed%{$reset_color%}" | |||||
| else | |||||
| echo "%{$fg[red]%}not sandboxed%{$reset_color%}" | |||||
| fi | |||||
| fi | |||||
| } | |||||
| function _cabal_commands() { | |||||
| local ret=1 state | |||||
| _arguments ':subcommand:->subcommand' && ret=0 | |||||
| case $state in | |||||
| subcommand) | |||||
| subcommands=( | |||||
| "bench:Run the benchmark, if any (configure with UserHooks)" | |||||
| "build:Compile all targets or specific target." | |||||
| "check:Check the package for common mistakes" | |||||
| "clean:Clean up after a build" | |||||
| "copy:Copy the files into the install locations" | |||||
| "configure:Prepare to build the package" | |||||
| "exec:Run a command with the cabal environment" | |||||
| "fetch:Downloads packages for later installation" | |||||
| "freeze:Freeze dependencies." | |||||
| "get:Gets a package's source code" | |||||
| "haddock:Generate Haddock HTML documentation" | |||||
| "help:Help about commands" | |||||
| "hscolour:Generate HsColour colourised code, in HTML format" | |||||
| "info:Display detailed information about a particular package" | |||||
| "init:Interactively create a .cabal file" | |||||
| "install:Installs a list of packages" | |||||
| "list:List packages matching a search string" | |||||
| "register:Register this package with the compiler" | |||||
| "repl:Open an interpreter session for the given target" | |||||
| "report:Upload build reports to a remote server" | |||||
| "run:Runs the compiled executable" | |||||
| "sandbox:Create/modify/delete a sandbox" | |||||
| "sdist:Generate a source distribution file (.tar.gz)" | |||||
| "test:Run the test suite, if any (configure with UserHooks)" | |||||
| "unpack:Unpacks packages for user inspection" | |||||
| "update:Updates list of known packages" | |||||
| "upload:Uploads source packages to Hackage" | |||||
| ) | |||||
| _describe -t subcommands 'cabal subcommands' subcommands && ret=0 | |||||
| esac | |||||
| return ret | |||||
| } | |||||
| compdef _cabal_commands cabal | |||||
| function _cab_commands() { | |||||
| local ret=1 state | |||||
| _arguments ':subcommand:->subcommand' && ret=0 | |||||
| case $state in | |||||
| subcommand) | |||||
| subcommands=( | |||||
| "sync:Fetch the latest package index" | |||||
| "install:Install packages" | |||||
| "uninstall:Uninstall packages" | |||||
| "installed:List installed packages" | |||||
| "configure:Configure a cabal package" | |||||
| "build:Build a cabal package" | |||||
| "clean:Clean up a build directory" | |||||
| "outdated:Display outdated packages" | |||||
| "info:Display information of a package" | |||||
| "sdist:Make tar.gz for source distribution" | |||||
| "upload:Uploading tar.gz to HackageDB" | |||||
| "get:Untar a package in the current directory" | |||||
| "deps:Show dependencies of this package" | |||||
| "revdeps:Show reverse dependencies of this package" | |||||
| "check:Check consistency of packages" | |||||
| "genpaths:Generate Paths_<pkg>.hs" | |||||
| "search:Search available packages by package name" | |||||
| "add:Add a source directory" | |||||
| "test:Run tests" | |||||
| "bench:Run benchmarks" | |||||
| "doc:Generate manuals" | |||||
| "ghci:Run GHCi (with a sandbox)" | |||||
| "init:Initialize a sandbox" | |||||
| "help:Display the help message of the command" | |||||
| ) | |||||
| _describe -t subcommands 'cab subcommands' subcommands && ret=0 | |||||
| esac | |||||
| return ret | |||||
| } | |||||
| command -v cab >/dev/null 2>&1 && { compdef _cab_commands cab } | |||||
| @ -0,0 +1,15 @@ | |||||
| # Cake | |||||
| This plugin provides completion for [CakePHP](https://cakephp.org/). | |||||
| To use it add cake to the plugins array in your zshrc file. | |||||
| ```bash | |||||
| plugins=(... cake) | |||||
| ``` | |||||
| ## Note | |||||
| This plugin generates a cache file of the cake tasks found, named `.cake_task_cache`, in the current working directory. | |||||
| It is regenerated when the Cakefile is newer than the cache file. It is advised that you add the cake file to your | |||||
| `.gitignore` files. | |||||
| @ -0,0 +1,33 @@ | |||||
| # Set this to 1 if you want to cache the tasks | |||||
| _cake_cache_task_list=1 | |||||
| # Cache filename | |||||
| _cake_task_cache_file='.cake_task_cache' | |||||
| _cake_get_target_list () { | |||||
| cake | grep '^cake ' | sed -e "s/cake \([^ ]*\) .*/\1/" | grep -v '^$' | |||||
| } | |||||
| _cake_does_target_list_need_generating () { | |||||
| if [ ${_cake_cache_task_list} -eq 0 ]; then | |||||
| return 1; | |||||
| fi | |||||
| [ ! -f ${_cake_task_cache_file} ] && return 0; | |||||
| [ Cakefile -nt ${_cake_task_cache_file} ] && return 0; | |||||
| return 1; | |||||
| } | |||||
| _cake () { | |||||
| if [ -f Cakefile ]; then | |||||
| if _cake_does_target_list_need_generating; then | |||||
| _cake_get_target_list > ${_cake_task_cache_file} | |||||
| compadd `cat ${_cake_task_cache_file}` | |||||
| else | |||||
| compadd `_cake_get_target_list` | |||||
| fi | |||||
| fi | |||||
| } | |||||
| compdef _cake cake | |||||
| @ -0,0 +1,38 @@ | |||||
| # CakePHP 3 basic command completion | |||||
| _cakephp3_get_command_list () { | |||||
| bin/cake Completion commands | |||||
| } | |||||
| _cakephp3_get_sub_command_list () { | |||||
| bin/cake Completion subcommands ${words[2]} | |||||
| } | |||||
| _cakephp3_get_3rd_argument () { | |||||
| bin/cake ${words[2]} ${words[3]} | \grep '\-\ '| \awk '{print $2}' | |||||
| } | |||||
| _cakephp3 () { | |||||
| local -a has3rdargument | |||||
| has3rdargument=("all" "controller" "fixture" "model" "template") | |||||
| if [ -f bin/cake ]; then | |||||
| if (( CURRENT == 2 )); then | |||||
| compadd $(_cakephp3_get_command_list) | |||||
| fi | |||||
| if (( CURRENT == 3 )); then | |||||
| compadd $(_cakephp3_get_sub_command_list) | |||||
| fi | |||||
| if (( CURRENT == 4 )); then | |||||
| if [[ ${has3rdargument[(i)${words[3]}]} -le ${#has3rdargument} ]]; then | |||||
| compadd $(_cakephp3_get_3rd_argument) | |||||
| fi | |||||
| fi | |||||
| fi | |||||
| } | |||||
| compdef _cakephp3 bin/cake | |||||
| compdef _cakephp3 cake | |||||
| #Alias | |||||
| alias c3='bin/cake' | |||||
| alias c3cache='bin/cake orm_cache clear' | |||||
| alias c3migrate='bin/cake migrations migrate' | |||||
| @ -0,0 +1,14 @@ | |||||
| # Capistrano | |||||
| This plugin provides completion for [Capistrano](https://capistranorb.com/). | |||||
| To use it add capistrano to the plugins array in your zshrc file. | |||||
| ```bash | |||||
| plugins=(... capistrano) | |||||
| ``` | |||||
| For a working completion use the `capit` command instead of `cap`, because cap is a | |||||
| [reserved word in zsh](http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module). | |||||
| `capit` automatically runs cap with bundler if a Gemfile is found. | |||||
| @ -0,0 +1,49 @@ | |||||
| #compdef capit | |||||
| #autoload | |||||
| # Added `capit` because `cap` is a reserved word. `cap` completion doesn't work. | |||||
| # http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module | |||||
| local curcontext="$curcontext" state line ret=1 | |||||
| local -a _configs | |||||
| _arguments -C \ | |||||
| '1: :->cmds' \ | |||||
| '2:: :->args' && ret=0 | |||||
| _cap_tasks() { | |||||
| if [[ -f config/deploy.rb || -f Capfile ]]; then | |||||
| if [[ ! -f .cap_tasks~ ]]; then | |||||
| capit --tasks | sed 's/\(\[\)\(.*\)\(\]\)/\2:/' | awk '{command=$2; $1=$2=$3=""; gsub(/^[ \t\r\n]+/, "", $0); gsub(":", "\\:", command); print command"["$0"]"}' > .cap_tasks~ | |||||
| fi | |||||
| OLD_IFS=$IFS | |||||
| IFS=$'\n' | |||||
| _values 'cap commands' $(< .cap_tasks~) | |||||
| IFS=$OLD_IFS | |||||
| # zmodload zsh/mapfile | |||||
| # _values ${(f)mapfile[.cap_tasks~]} | |||||
| fi | |||||
| } | |||||
| _cap_stages() { | |||||
| compadd $(find config/deploy -name \*.rb | cut -d/ -f3 | sed s:.rb::g) | |||||
| } | |||||
| case $state in | |||||
| cmds) | |||||
| # check if it uses multistage | |||||
| if [[ -d config/deploy ]]; then | |||||
| _cap_stages | |||||
| else | |||||
| _cap_tasks | |||||
| fi | |||||
| ret=0 | |||||
| ;; | |||||
| args) | |||||
| _cap_tasks | |||||
| ret=0 | |||||
| ;; | |||||
| esac | |||||
| return ret | |||||
| @ -0,0 +1,11 @@ | |||||
| # Added `capit` because `cap` is a reserved word. `cap` completion doesn't work. | |||||
| # http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fcap-Module | |||||
| function capit() { | |||||
| if [ -f Gemfile ] | |||||
| then | |||||
| bundle exec cap $* | |||||
| else | |||||
| cap $* | |||||
| fi | |||||
| } | |||||
| @ -0,0 +1,11 @@ | |||||
| # cargo | |||||
| This plugin adds completion for the Rust build tool [`cargo`](https://github.com/rust-lang/cargo). | |||||
| To use it, add `cargo` to the plugins array in your zshrc file: | |||||
| ```zsh | |||||
| plugins=(... cargo) | |||||
| ``` | |||||
| Updated on October 4th, 2016. | |||||
| @ -0,0 +1,500 @@ | |||||
| #compdef cargo | |||||
| typeset -A opt_args | |||||
| autoload -U regexp-replace | |||||
| _cargo() { | |||||
| _arguments \ | |||||
| '(- 1 *)'{-h,--help}'[show help message]' \ | |||||
| '(- 1 *)'{-V,--version}'[show version information]' \ | |||||
| '(- 1 *)'--list'[list installed commands]' \ | |||||
| '(- 1 *)'--explain'[Run `rustc --explain CODE`]' \ | |||||
| '(- 1 *)'{-v,--verbose}'[use verbose output]' \ | |||||
| '(- 1 *)'--color'[colorization option]' \ | |||||
| '(- 1 *)'--frozen'[Require Cargo.lock and cache are up to date]' \ | |||||
| '(- 1 *)'--locked'[Require Cargo.lock is up to date]' \ | |||||
| '1: :_cargo_cmds' \ | |||||
| '*:: :->args' | |||||
| case $state in | |||||
| args) | |||||
| case $words[1] in | |||||
| bench) | |||||
| _arguments \ | |||||
| '--features=[space separated feature list]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| "${command_scope_spec[@]}" \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--no-default-features[do not build the default features]' \ | |||||
| '--no-run[compile but do not run]' \ | |||||
| '(-p,--package)'{-p=,--package=}'[package to run benchmarks for]:packages:_get_package_names' \ | |||||
| '--target=[target triple]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| build) | |||||
| _arguments \ | |||||
| '--features=[space separated feature list]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| "${command_scope_spec[@]}" \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--no-default-features[do not build the default features]' \ | |||||
| '(-p,--package)'{-p=,--package=}'[package to build]:packages:_get_package_names' \ | |||||
| '--release=[build in release mode]' \ | |||||
| '--target=[target triple]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| clean) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '(-p,--package)'{-p=,--package=}'[package to clean]:packages:_get_package_names' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--release[whether or not to clean release artifacts]' \ | |||||
| '--target=[target triple(default:all)]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| doc) | |||||
| _arguments \ | |||||
| '--features=[space separated feature list]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--no-deps[do not build docs for dependencies]' \ | |||||
| '--no-default-features[do not build the default features]' \ | |||||
| '--open[open docs in browser after the build]' \ | |||||
| '(-p, --package)'{-p,--package}'=[package to document]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--release[build artifacts in release mode, with optimizations]' \ | |||||
| '--target=[build for the target triple]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| fetch) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| generate-lockfile) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| git-checkout) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| 'q(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--reference=[REF]' \ | |||||
| '--url=[URL]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| help) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '*: :_cargo_cmds' \ | |||||
| ;; | |||||
| init) | |||||
| _arguments \ | |||||
| '--bin[use binary template]' \ | |||||
| '--vcs:initialize a new repo with a given VCS:(git hg none)' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--name=[set the resulting package name]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| install) | |||||
| _arguments \ | |||||
| '--bin=[only install the specified binary]' \ | |||||
| '--branch=[branch to use when installing from git]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '--debug[build in debug mode instead of release mode]' \ | |||||
| '--example[install the specified example instead of binaries]' \ | |||||
| '--features=[space separated feature list]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '--git=[URL from which to install the crate]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| '--no-default-features[do not build the default features]' \ | |||||
| '--path=[local filesystem path to crate to install]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--rev=[specific commit to use when installing from git]' \ | |||||
| '--root=[directory to install packages into]' \ | |||||
| '--tag=[tag to use when installing from git]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--vers=[version to install from crates.io]' \ | |||||
| ;; | |||||
| locate-project) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| ;; | |||||
| login) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--host=[Host to set the token for]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| metadata) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| "--no-deps[output information only about the root package and don't fetch dependencies]" \ | |||||
| '--no-default-features[do not include the default feature]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--features=[space separated feature list]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '--format-version=[format version(default: 1)]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| new) | |||||
| _arguments \ | |||||
| '--bin[use binary template]' \ | |||||
| '--vcs:initialize a new repo with a given VCS:(git hg none)' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--name=[set the resulting package name]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| owner) | |||||
| _arguments \ | |||||
| '(-a, --add)'{-a,--add}'[add owner LOGIN]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--index[registry index]' \ | |||||
| '(-l, --list)'{-l,--list}'[list owners of a crate]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-r, --remove)'{-r,--remove}'[remove owner LOGIN]' \ | |||||
| '--token[API token to use when authenticating]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| package) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-l, --list)'{-l,--list}'[print files included in a package without making one]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--no-metadata[ignore warnings about a lack of human-usable metadata]' \ | |||||
| '--no-verify[do not build to verify contents]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| pkgid) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| publish) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--host=[Host to set the token for]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--no-verify[Do not verify tarball until before publish]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--token[token to use when uploading]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| read-manifest) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| run) | |||||
| _arguments \ | |||||
| '--example=[name of the bin target]' \ | |||||
| '--features=[space separated feature list]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--bin=[name of the bin target]' \ | |||||
| '--no-default-features[do not build the default features]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--release=[build in release mode]' \ | |||||
| '--target=[target triple]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '*: :_normal' \ | |||||
| ;; | |||||
| rustc) | |||||
| _arguments \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '--features=[features to compile for the package]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| '--manifest-path=[path to the manifest to fetch dependencies for]' \ | |||||
| '--no-default-features[do not compile default features for the package]' \ | |||||
| '(-p, --package)'{-p,--package}'=[profile to compile for]' \ | |||||
| '--profile=[profile to build the selected target for]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--release[build artifacts in release mode, with optimizations]' \ | |||||
| '--target=[target triple which compiles will be for]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| "${command_scope_spec[@]}" \ | |||||
| ;; | |||||
| rustdoc) | |||||
| _arguments \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '--features=[space-separated list of features to also build]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'=[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| '--manifest-path=[path to the manifest to document]' \ | |||||
| '--no-default-features[do not build the `default` feature]' \ | |||||
| '--open[open the docs in a browser after the operation]' \ | |||||
| '(-p, --package)'{-p,--package}'=[package to document]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--release[build artifacts in release mode, with optimizations]' \ | |||||
| '--target=[build for the target triple]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| "${command_scope_spec[@]}" \ | |||||
| ;; | |||||
| search) | |||||
| _arguments \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--host=[host of a registry to search in]' \ | |||||
| '--limit=[limit the number of results]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| ;; | |||||
| test) | |||||
| _arguments \ | |||||
| '--features=[space separated feature list]' \ | |||||
| '--all-features[enable all available features]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-j, --jobs)'{-j,--jobs}'[number of parallel jobs, defaults to # of CPUs]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '--test=[test name]: :_test_names' \ | |||||
| '--no-default-features[do not build the default features]' \ | |||||
| '--no-fail-fast[run all tests regardless of failure]' \ | |||||
| '--no-run[compile but do not run]' \ | |||||
| '(-p,--package)'{-p=,--package=}'[package to run tests for]:packages:_get_package_names' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--release[build artifacts in release mode, with optimizations]' \ | |||||
| '--target=[target triple]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '1: :_test_names' \ | |||||
| ;; | |||||
| uninstall) | |||||
| _arguments \ | |||||
| '--bin=[only uninstall the binary NAME]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[less output printed to stdout]' \ | |||||
| '--root=[directory to uninstall packages from]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| ;; | |||||
| update) | |||||
| _arguments \ | |||||
| '--aggressive=[force dependency update]' \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '(-p,--package)'{-p=,--package=}'[package to update]:packages:__get_package_names' \ | |||||
| '--precise=[update single dependency to PRECISE]: :' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| verify-project) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--manifest-path=[path to manifest]: :_files -/' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| version) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| ;; | |||||
| yank) | |||||
| _arguments \ | |||||
| '(-h, --help)'{-h,--help}'[show help message]' \ | |||||
| '--index[registry index]' \ | |||||
| '(-q, --quiet)'{-q,--quiet}'[no output printed to stdout]' \ | |||||
| '--token[API token to use when authenticating]' \ | |||||
| '--undo[undo a yank, putting a version back into the index]' \ | |||||
| '(-v, --verbose)'{-v,--verbose}'[use verbose output]' \ | |||||
| '--color=:colorization option:(auto always never)' \ | |||||
| '--vers[yank version]' \ | |||||
| ;; | |||||
| esac | |||||
| ;; | |||||
| esac | |||||
| } | |||||
| _cargo_cmds(){ | |||||
| local -a commands;commands=( | |||||
| 'bench:execute all benchmarks of a local package' | |||||
| 'build:compile the current project' | |||||
| 'clean:remove generated artifacts' | |||||
| 'doc:build package documentation' | |||||
| 'fetch:fetch package dependencies' | |||||
| 'generate-lockfile:create lockfile' | |||||
| 'git-checkout:git checkout' | |||||
| 'help:get help for commands' | |||||
| 'init:create new project in current directory' | |||||
| 'install:install a Rust binary' | |||||
| 'locate-project:print "Cargo.toml" location' | |||||
| 'login:login to remote server' | |||||
| 'metadata:the metadata for a project in json' | |||||
| 'new:create a new project' | |||||
| 'owner:manage the owners of a crate on the registry' | |||||
| 'package:assemble local package into a distributable tarball' | |||||
| 'pkgid:print a fully qualified package specification' | |||||
| 'publish:upload package to the registry' | |||||
| 'read-manifest:print manifest in JSON format' | |||||
| 'run:run the main binary of the local package' | |||||
| 'rustc:compile a package and all of its dependencies' | |||||
| 'rustdoc:build documentation for a package' | |||||
| 'search:search packages on crates.io' | |||||
| 'test:execute all unit and tests of a local package' | |||||
| 'uninstall:remove a Rust binary' | |||||
| 'update:update dependencies' | |||||
| 'verify-project:check Cargo.toml' | |||||
| 'version:show version information' | |||||
| 'yank:remove pushed file from index' | |||||
| ) | |||||
| _describe 'command' commands | |||||
| } | |||||
| #FIXME: Disabled until fixed | |||||
| #gets package names from the manifest file | |||||
| _get_package_names() | |||||
| { | |||||
| } | |||||
| #TODO:see if it makes sense to have 'locate-project' to have non-json output. | |||||
| #strips package name from json stuff | |||||
| _locate_manifest(){ | |||||
| local manifest=`cargo locate-project 2>/dev/null` | |||||
| regexp-replace manifest '\{"root":"|"\}' '' | |||||
| echo $manifest | |||||
| } | |||||
| # Extracts the values of "name" from the array given in $1 and shows them as | |||||
| # command line options for completion | |||||
| _get_names_from_array() | |||||
| { | |||||
| local -a filelist; | |||||
| local manifest=$(_locate_manifest) | |||||
| if [[ -z $manifest ]]; then | |||||
| return 0 | |||||
| fi | |||||
| local last_line | |||||
| local -a names; | |||||
| local in_block=false | |||||
| local block_name=$1 | |||||
| names=() | |||||
| while read line | |||||
| do | |||||
| if [[ $last_line == "[[$block_name]]" ]]; then | |||||
| in_block=true | |||||
| else | |||||
| if [[ $last_line =~ '.*\[\[.*' ]]; then | |||||
| in_block=false | |||||
| fi | |||||
| fi | |||||
| if [[ $in_block == true ]]; then | |||||
| if [[ $line =~ '.*name.*=' ]]; then | |||||
| regexp-replace line '^.*name *= *|"' "" | |||||
| names+=$line | |||||
| fi | |||||
| fi | |||||
| last_line=$line | |||||
| done < $manifest | |||||
| _describe $block_name names | |||||
| } | |||||
| #Gets the test names from the manifest file | |||||
| _test_names() | |||||
| { | |||||
| _get_names_from_array "test" | |||||
| } | |||||
| #Gets the bench names from the manifest file | |||||
| _benchmark_names() | |||||
| { | |||||
| _get_names_from_array "bench" | |||||
| } | |||||
| # These flags are mutally exclusive specifiers for the scope of a command; as | |||||
| # they are used in multiple places without change, they are expanded into the | |||||
| # appropriate command's `_arguments` where appropriate. | |||||
| set command_scope_spec | |||||
| command_scope_spec=( | |||||
| '(--bin --example --test --lib)--bench=[benchmark name]: :_benchmark_names' | |||||
| '(--bench --bin --test --lib)--example=[example name]' | |||||
| '(--bench --example --test --lib)--bin=[binary name]' | |||||
| '(--bench --bin --example --test)--lib=[library name]' | |||||
| '(--bench --bin --example --lib)--test=[test name]' | |||||
| ) | |||||
| _cargo | |||||
| @ -0,0 +1,15 @@ | |||||
| # Cask plugin | |||||
| [Cask](https://github.com/cask/cask) is a project management tool for Emacs that helps | |||||
| automate the package development cycle; development, dependencies, testing, building, | |||||
| packaging and more. | |||||
| This plugin loads `cask` completion from non-standard locations, such as if installed | |||||
| via Homebrew or others. To enable it, add `cask` to your plugins array: | |||||
| ```zsh | |||||
| plugins=(... cask) | |||||
| ``` | |||||
| Make sure you have the `cask` directory in your `$PATH` before loading Oh My Zsh, | |||||
| otherwise you'll get a "command not found" error. | |||||
| @ -0,0 +1,26 @@ | |||||
| () { | |||||
| emulate -L zsh | |||||
| if ! (( $+commands[cask] )); then | |||||
| print "zsh cask plugin: cask command not found" >&2 | |||||
| return | |||||
| fi | |||||
| cask_base=${commands[cask]:h:h} | |||||
| # Plain cask installation location (for Cask 0.7.2 and earlier) | |||||
| comp_files=($cask_base/etc/cask_completion.zsh) | |||||
| # Mac Homebrew installs the completion in a different location | |||||
| if (( $+commands[brew] )); then | |||||
| comp_files+=($(brew --prefix)/share/zsh/site-functions/cask_completion.zsh) | |||||
| fi | |||||
| # Load first found file | |||||
| for f in $comp_files; do | |||||
| if [[ -f "$f" ]]; then | |||||
| source "$f" | |||||
| break | |||||
| fi | |||||
| done | |||||
| } | |||||
| @ -0,0 +1,35 @@ | |||||
| # catimg | |||||
| Plugin for displaying images on the terminal using the the `catimg.sh` script provided by [posva](https://github.com/posva/catimg) | |||||
| ## Requirements | |||||
| - `convert` (ImageMagick) | |||||
| ## Enabling the plugin | |||||
| 1. Open your `.zshrc` file and add `catimg` in the plugins section: | |||||
| ```zsh | |||||
| plugins=( | |||||
| # all your enabled plugins | |||||
| catimg | |||||
| ) | |||||
| ``` | |||||
| 2. Reload the source file or restart your Terminal session: | |||||
| ```console | |||||
| $ source ~/.zshrc | |||||
| $ | |||||
| ``` | |||||
| ## Functions | |||||
| | Function | Description | | |||||
| | -------- | ---------------------------------------- | | |||||
| | `catimg` | Displays the given image on the terminal | | |||||
| ## Usage examples | |||||
| [](https://asciinema.org/a/204702) | |||||
| @ -0,0 +1,17 @@ | |||||
| ################################################################################ | |||||
| # catimg script by Eduardo San Martin Morote aka Posva # | |||||
| # https://posva.net # | |||||
| # # | |||||
| # Ouput the content of an image to the stdout using the 256 colors of the # | |||||
| # terminal. # | |||||
| # Github: https://github.com/posva/catimg # | |||||
| ################################################################################ | |||||
| function catimg() { | |||||
| if [[ -x `which convert` ]]; then | |||||
| zsh $ZSH/plugins/catimg/catimg.sh $@ | |||||
| else | |||||
| echo "catimg need convert (ImageMagick) to work)" | |||||
| fi | |||||
| } | |||||
| @ -0,0 +1,88 @@ | |||||
| ################################################################################ | |||||
| # catimg script by Eduardo San Martin Morote aka Posva # | |||||
| # https://posva.net # | |||||
| # # | |||||
| # Ouput the content of an image to the stdout using the 256 colors of the # | |||||
| # terminal. # | |||||
| # Github: https://github.com/posva/catimg # | |||||
| ################################################################################ | |||||
| function help() { | |||||
| echo "Usage catimg [-h] [-w width] [-c char] img" | |||||
| echo "By default char is \" \" and w is the terminal width" | |||||
| } | |||||
| # VARIABLES | |||||
| COLOR_FILE=$(dirname $0)/colors.png | |||||
| CHAR=" " | |||||
| WIDTH="" | |||||
| IMG="" | |||||
| while getopts qw:c:h opt; do | |||||
| case "$opt" in | |||||
| w) WIDTH="$OPTARG" ;; | |||||
| c) CHAR="$OPTARG" ;; | |||||
| h) help; exit ;; | |||||
| *) help ; exit 1;; | |||||
| esac | |||||
| done | |||||
| while [ "$1" ]; do | |||||
| IMG="$1" | |||||
| shift | |||||
| done | |||||
| if [ "$IMG" = "" -o ! -f "$IMG" ]; then | |||||
| help | |||||
| exit 1 | |||||
| fi | |||||
| if [ ! "$WIDTH" ]; then | |||||
| COLS=$(expr $(tput cols) "/" $(echo -n "$CHAR" | wc -c)) | |||||
| else | |||||
| COLS=$(expr $WIDTH "/" $(echo -n "$CHAR" | wc -c)) | |||||
| fi | |||||
| WIDTH=$(convert "$IMG" -print "%w\n" /dev/null) | |||||
| if [ "$WIDTH" -gt "$COLS" ]; then | |||||
| WIDTH=$COLS | |||||
| fi | |||||
| REMAP="" | |||||
| if convert "$IMG" -resize $COLS\> +dither -remap $COLOR_FILE /dev/null ; then | |||||
| REMAP="-remap $COLOR_FILE" | |||||
| else | |||||
| echo "The version of convert is too old, don't expect good results :(" >&2 | |||||
| #convert "$IMG" -colors 256 PNG8:tmp.png | |||||
| #IMG="tmp.png" | |||||
| fi | |||||
| # Display the image | |||||
| I=0 | |||||
| convert "$IMG" -resize $COLS\> +dither `echo $REMAP` txt:- 2>/dev/null | | |||||
| sed -e 's/.*none.*/NO NO NO/g' -e '1d;s/^.*(\(.*\)[,)].*$/\1/g;y/,/ /' | | |||||
| while read R G B f; do | |||||
| if [ ! "$R" = "NO" ]; then | |||||
| if [ "$R" -eq "$G" -a "$G" -eq "$B" ]; then | |||||
| (( | |||||
| I++, | |||||
| IDX = 232 + R * 23 / 255 | |||||
| )) | |||||
| else | |||||
| (( | |||||
| I++, | |||||
| IDX = 16 | |||||
| + R * 5 / 255 * 36 | |||||
| + G * 5 / 255 * 6 | |||||
| + B * 5 / 255 | |||||
| )) | |||||
| fi | |||||
| #echo "$R,$G,$B: $IDX" | |||||
| echo -ne "\e[48;5;${IDX}m${CHAR}" | |||||
| else | |||||
| (( I++ )) | |||||
| echo -ne "\e[0m${CHAR}" | |||||
| fi | |||||
| # New lines | |||||
| (( $I % $WIDTH )) || echo -e "\e[0m" | |||||
| done | |||||
| @ -0,0 +1,9 @@ | |||||
| # Celery | |||||
| This plugin provides completion for [Celery](http://www.celeryproject.org/). | |||||
| To use it add celery to the plugins array in your zshrc file. | |||||
| ```bash | |||||
| plugins=(... celery) | |||||
| ``` | |||||
| @ -0,0 +1,129 @@ | |||||
| #compdef celery | |||||
| #autoload | |||||
| #celery zsh completion | |||||
| _celery () { | |||||
| local -a _1st_arguments ifargs dopts controlargs | |||||
| typeset -A opt_args | |||||
| _1st_arguments=('worker' 'events' 'beat' 'shell' 'multi' 'amqp' 'status' 'inspect' \ | |||||
| 'control' 'purge' 'list' 'migrate' 'call' 'result' 'report') | |||||
| ifargs=('--app=' '--broker=' '--loader=' '--config=' '--version') | |||||
| dopts=('--detach' '--umask=' '--gid=' '--uid=' '--pidfile=' '--logfile=' '--loglevel=') | |||||
| controlargs=('--timeout' '--destination') | |||||
| _arguments \ | |||||
| '(-A --app=)'{-A,--app}'[app instance to use (e.g. module.attr_name):APP]' \ | |||||
| '(-b --broker=)'{-b,--broker}'[url to broker. default is "amqp://guest@localhost//":BROKER]' \ | |||||
| '(--loader)--loader[name of custom loader class to use.:LOADER]' \ | |||||
| '(--config)--config[Name of the configuration module:CONFIG]' \ | |||||
| '(--workdir)--workdir[Optional directory to change to after detaching.:WORKING_DIRECTORY]' \ | |||||
| '(-q --quiet)'{-q,--quiet}'[Don"t show as much output.]' \ | |||||
| '(-C --no-color)'{-C,--no-color}'[Don"t display colors.]' \ | |||||
| '(--version)--version[show program"s version number and exit]' \ | |||||
| '(- : *)'{-h,--help}'[show this help message and exit]' \ | |||||
| '*:: :->subcmds' && return 0 | |||||
| if (( CURRENT == 1 )); then | |||||
| _describe -t commands "celery subcommand" _1st_arguments | |||||
| return | |||||
| fi | |||||
| case "$words[1]" in | |||||
| worker) | |||||
| _arguments \ | |||||
| '(-C --concurrency=)'{-C,--concurrency=}'[Number of child processes processing the queue. The default is the number of CPUs.]' \ | |||||
| '(--pool)--pool=:::(processes eventlet gevent threads solo)' \ | |||||
| '(--purge --discard)'{--discard,--purge}'[Purges all waiting tasks before the daemon is started.]' \ | |||||
| '(-f --logfile=)'{-f,--logfile=}'[Path to log file. If no logfile is specified, stderr is used.]' \ | |||||
| '(--loglevel=)--loglevel=:::(critical error warning info debug)' \ | |||||
| '(-N --hostname=)'{-N,--hostname=}'[Set custom hostname, e.g. "foo.example.com".]' \ | |||||
| '(-B --beat)'{-B,--beat}'[Also run the celerybeat periodic task scheduler.]' \ | |||||
| '(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database if running with the -B option. Defaults to celerybeat-schedule.]' \ | |||||
| '(-S --statedb=)'{-S,--statedb=}'[Path to the state database.Default: None]' \ | |||||
| '(-E --events)'{-E,--events}'[Send events that can be captured by monitors like celeryev, celerymon, and others.]' \ | |||||
| '(--time-limit=)--time-limit=[nables a hard time limit (in seconds int/float) for tasks]' \ | |||||
| '(--soft-time-limit=)--soft-time-limit=[Enables a soft time limit (in seconds int/float) for tasks]' \ | |||||
| '(--maxtasksperchild=)--maxtasksperchild=[Maximum number of tasks a pool worker can execute before it"s terminated and replaced by a new worker.]' \ | |||||
| '(-Q --queues=)'{-Q,--queues=}'[List of queues to enable for this worker, separated by comma. By default all configured queues are enabled.]' \ | |||||
| '(-I --include=)'{-I,--include=}'[Comma separated list of additional modules to import.]' \ | |||||
| '(--pidfile=)--pidfile=[Optional file used to store the process pid.]' \ | |||||
| '(--autoscale=)--autoscale=[Enable autoscaling by providing max_concurrency, min_concurrency.]' \ | |||||
| '(--autoreload)--autoreload[Enable autoreloading.]' \ | |||||
| '(--no-execv)--no-execv[Don"t do execv after multiprocessing child fork.]' | |||||
| compadd -a ifargs | |||||
| ;; | |||||
| inspect) | |||||
| _values -s \ | |||||
| 'active[dump active tasks (being processed)]' \ | |||||
| 'active_queues[dump queues being consumed from]' \ | |||||
| 'ping[ping worker(s)]' \ | |||||
| 'registered[dump of registered tasks]' \ | |||||
| 'report[get bugreport info]' \ | |||||
| 'reserved[dump reserved tasks (waiting to be processed)]' \ | |||||
| 'revoked[dump of revoked task ids]' \ | |||||
| 'scheduled[dump scheduled tasks (eta/countdown/retry)]' \ | |||||
| 'stats[dump worker statistics]' | |||||
| compadd -a controlargs ifargs | |||||
| ;; | |||||
| control) | |||||
| _values -s \ | |||||
| 'add_consumer[tell worker(s) to start consuming a queue]' \ | |||||
| 'autoscale[change autoscale settings]' \ | |||||
| 'cancel_consumer[tell worker(s) to stop consuming a queue]' \ | |||||
| 'disable_events[tell worker(s) to disable events]' \ | |||||
| 'enable_events[tell worker(s) to enable events]' \ | |||||
| 'pool_grow[start more pool processes]' \ | |||||
| 'pool_shrink[use less pool processes]' \ | |||||
| 'rate_limit[tell worker(s) to modify the rate limit for a task type]' \ | |||||
| 'time_limit[tell worker(s) to modify the time limit for a task type.]' | |||||
| compadd -a controlargs ifargs | |||||
| ;; | |||||
| multi) | |||||
| _values -s \ | |||||
| '--nosplash[Don"t display program info.]' \ | |||||
| '--verbose[Show more output.]' \ | |||||
| '--no-color[Don"t display colors.]' \ | |||||
| '--quiet[Don"t show as much output.]' \ | |||||
| 'start' 'restart' 'stopwait' 'stop' 'show' \ | |||||
| 'names' 'expand' 'get' 'kill' | |||||
| compadd -a ifargs | |||||
| ;; | |||||
| amqp) | |||||
| _values -s \ | |||||
| 'queue.declare' 'queue.purge' 'exchange.delete' 'basic.publish' \ | |||||
| 'exchange.declare' 'queue.delete' 'queue.bind' 'basic.get' | |||||
| ;; | |||||
| list) | |||||
| _values -s, 'bindings' | |||||
| ;; | |||||
| shell) | |||||
| _values -s \ | |||||
| '--ipython[force iPython.]' \ | |||||
| '--bpython[force bpython.]' \ | |||||
| '--python[force default Python shell.]' \ | |||||
| '--without-tasks[don"t add tasks to locals.]' \ | |||||
| '--eventlet[use eventlet.]' \ | |||||
| '--gevent[use gevent.]' | |||||
| compadd -a ifargs | |||||
| ;; | |||||
| beat) | |||||
| _arguments \ | |||||
| '(-s --schedule=)'{-s,--schedule=}'[Path to the schedule database. Defaults to celerybeat-schedule.]' \ | |||||
| '(-S --scheduler=)'{-S,--scheduler=}'[Scheduler class to use. Default is celery.beat.PersistentScheduler.]' \ | |||||
| '(--max-interval)--max-interval[]' | |||||
| compadd -a dopts fargs | |||||
| ;; | |||||
| events) | |||||
| _arguments \ | |||||
| '(-d --dump)'{-d,--dump}'[Dump events to stdout.]' \ | |||||
| '(-c --camera=)'{-c,--camera=}'[Take snapshots of events using this camera.]' \ | |||||
| '(-F --frequency=)'{-F,--frequency=}'[Camera: Shutter frequency. Default is every 1.0 seconds.]' \ | |||||
| '(-r --maxrate=)'{-r,--maxrate=}'[Camera: Optional shutter rate limit (e.g. 10/m).]' | |||||
| compadd -a dopts fargs | |||||
| ;; | |||||
| *) | |||||
| ;; | |||||
| esac | |||||
| } | |||||
| @ -0,0 +1,121 @@ | |||||
| # | |||||
| # INSTRUCTIONS | |||||
| # | |||||
| # With either a manual or brew installed chruby things should just work. | |||||
| # | |||||
| # If you'd prefer to specify an explicit path to load chruby from | |||||
| # you can set variables like so: | |||||
| # | |||||
| # zstyle :omz:plugins:chruby path /local/path/to/chruby.sh | |||||
| # zstyle :omz:plugins:chruby auto /local/path/to/auto.sh | |||||
| # | |||||
| # TODO | |||||
| # - autodetermine correct source path on non OS X systems | |||||
| # - completion if ruby-install exists | |||||
| # rvm and rbenv plugins also provide this alias | |||||
| alias rubies='chruby' | |||||
| _homebrew-installed() { | |||||
| whence brew &> /dev/null | |||||
| _xit=$? | |||||
| if [ $_xit -eq 0 ];then | |||||
| # ok , we have brew installed | |||||
| # speculatively we check default brew prefix | |||||
| if [ -h /usr/local/opt/chruby ];then | |||||
| _brew_prefix="/usr/local/opt/chruby" | |||||
| else | |||||
| # ok , it is not default prefix | |||||
| # this call to brew is expensive ( about 400 ms ), so at least let's make it only once | |||||
| _brew_prefix=$(brew --prefix chruby) | |||||
| fi | |||||
| return 0 | |||||
| else | |||||
| return $_xit | |||||
| fi | |||||
| } | |||||
| _chruby-from-homebrew-installed() { | |||||
| [ -r _brew_prefix ] &> /dev/null | |||||
| } | |||||
| _ruby-build_installed() { | |||||
| whence ruby-build &> /dev/null | |||||
| } | |||||
| _ruby-install-installed() { | |||||
| whence ruby-install &> /dev/null | |||||
| } | |||||
| # Simple definition completer for ruby-build | |||||
| if _ruby-build_installed; then | |||||
| _ruby-build() { compadd $(ruby-build --definitions) } | |||||
| compdef _ruby-build ruby-build | |||||
| fi | |||||
| _source_from_omz_settings() { | |||||
| local _chruby_path | |||||
| local _chruby_auto | |||||
| zstyle -s :omz:plugins:chruby path _chruby_path | |||||
| zstyle -s :omz:plugins:chruby auto _chruby_auto | |||||
| if [[ -r ${_chruby_path} ]]; then | |||||
| source ${_chruby_path} | |||||
| fi | |||||
| if [[ -r ${_chruby_auto} ]]; then | |||||
| source ${_chruby_auto} | |||||
| fi | |||||
| } | |||||
| _chruby_dirs() { | |||||
| chrubydirs=($HOME/.rubies/ $PREFIX/opt/rubies) | |||||
| for dir in chrubydirs; do | |||||
| if [[ -d $dir ]]; then | |||||
| RUBIES+=$dir | |||||
| fi | |||||
| done | |||||
| } | |||||
| if _homebrew-installed && _chruby-from-homebrew-installed ; then | |||||
| source $_brew_prefix/share/chruby/chruby.sh | |||||
| source $_brew_prefix/share/chruby/auto.sh | |||||
| _chruby_dirs | |||||
| elif [[ -r "/usr/local/share/chruby/chruby.sh" ]] ; then | |||||
| source /usr/local/share/chruby/chruby.sh | |||||
| source /usr/local/share/chruby/auto.sh | |||||
| _chruby_dirs | |||||
| else | |||||
| _source_from_omz_settings | |||||
| _chruby_dirs | |||||
| fi | |||||
| function ensure_chruby() { | |||||
| $(whence chruby) | |||||
| } | |||||
| function current_ruby() { | |||||
| local _ruby | |||||
| _ruby="$(chruby |grep \* |tr -d '* ')" | |||||
| if [[ $(chruby |grep -c \*) -eq 1 ]]; then | |||||
| echo ${_ruby} | |||||
| else | |||||
| echo "system" | |||||
| fi | |||||
| } | |||||
| function chruby_prompt_info() { | |||||
| echo "$(current_ruby)" | |||||
| } | |||||
| # complete on installed rubies | |||||
| _chruby() { | |||||
| compadd $(chruby | tr -d '* ') | |||||
| local default_path='/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin' | |||||
| if PATH=${default_path} type ruby &> /dev/null; then | |||||
| compadd system | |||||
| fi | |||||
| } | |||||
| compdef _chruby chruby | |||||
| @ -0,0 +1 @@ | |||||
| fortunes/chucknorris.dat | |||||
| @ -0,0 +1,20 @@ | |||||
| # chucknorris | |||||
| Chuck Norris fortunes plugin for oh-my-zsh | |||||
| **Maintainers**: [apjanke](https://github.com/apjanke) [maff](https://github.com/maff) | |||||
| To use it add `chucknorris` to the plugins array in you zshrc file. | |||||
| ```zsh | |||||
| plugins=(... chucknorris) | |||||
| ``` | |||||
| Depends on fortune (and cowsay if using chuck_cow) being installed (available via homebrew, apt, ...). Perfectly suitable as MOTD. | |||||
| | Command | Description | | |||||
| | ----------- | ------------------------------- | | |||||
| | `chuck` | Print random Chuck Norris quote | | |||||
| | `chuck_cow` | Print quote in cowthink | | |||||
| @ -0,0 +1,28 @@ | |||||
| # chucknorris: Chuck Norris fortunes | |||||
| # Automatically generate or update Chuck's compiled fortune data file | |||||
| # $0 must be used outside a local function. This variable name is unlikly to collide. | |||||
| CHUCKNORRIS_PLUGIN_DIR=${0:h} | |||||
| () { | |||||
| local DIR=$CHUCKNORRIS_PLUGIN_DIR/fortunes | |||||
| if [[ ! -f $DIR/chucknorris.dat ]] || [[ $DIR/chucknorris.dat -ot $DIR/chucknorris ]]; then | |||||
| # For some reason, Cygwin puts strfile in /usr/sbin, which is not on the path by default | |||||
| local strfile=strfile | |||||
| if ! which strfile &>/dev/null && [[ -f /usr/sbin/strfile ]]; then | |||||
| strfile=/usr/sbin/strfile | |||||
| fi | |||||
| if which $strfile &> /dev/null; then | |||||
| $strfile $DIR/chucknorris $DIR/chucknorris.dat >/dev/null | |||||
| else | |||||
| echo "[oh-my-zsh] chucknorris depends on strfile, which is not installed" >&2 | |||||
| echo "[oh-my-zsh] strfile is often provided as part of the 'fortune' package" >&2 | |||||
| fi | |||||
| fi | |||||
| # Aliases | |||||
| alias chuck="fortune -a $DIR" | |||||
| alias chuck_cow="chuck | cowthink" | |||||
| } | |||||
| unset CHUCKNORRIS_PLUGIN_DIR | |||||
| @ -0,0 +1,2 @@ | |||||
| #!/bin/zsh | |||||
| alias cloudapp=$ZSH/plugins/cloudapp/cloudapp.rb | |||||
| @ -0,0 +1,60 @@ | |||||
| #!/usr/bin/env ruby | |||||
| # | |||||
| # cloudapp | |||||
| # Zach Holman / @holman | |||||
| # | |||||
| # Uploads a file from the command line to CloudApp, drops it into your | |||||
| # clipboard (on a Mac, at least). | |||||
| # | |||||
| # Example: | |||||
| # | |||||
| # cloudapp drunk-blake.png | |||||
| # | |||||
| # This requires Aaron Russell's cloudapp_api gem: | |||||
| # | |||||
| # gem install cloudapp_api | |||||
| # | |||||
| # Requires you set your CloudApp credentials in ~/.cloudapp as a simple file of: | |||||
| # | |||||
| # password | |||||
| require 'rubygems' | |||||
| begin | |||||
| require 'cloudapp_api' | |||||
| rescue LoadError | |||||
| puts "You need to install cloudapp_api: gem install cloudapp_api" | |||||
| exit!(1) | |||||
| end | |||||
| config_file = "#{ENV['HOME']}/.cloudapp" | |||||
| unless File.exist?(config_file) | |||||
| puts "You need to type your email and password (one per line) into "+ | |||||
| "`~/.cloudapp`" | |||||
| exit!(1) | |||||
| end | |||||
| email,password = File.read(config_file).split("\n") | |||||
| class HTTParty::Response | |||||
| # Apparently HTTPOK.ok? IS NOT OKAY WTFFFFFFFFFFUUUUUUUUUUUUUU | |||||
| # LETS MONKEY PATCH IT I FEEL OKAY ABOUT IT | |||||
| def ok? ; true end | |||||
| end | |||||
| if ARGV[0].nil? | |||||
| puts "You need to specify a file to upload." | |||||
| exit!(1) | |||||
| end | |||||
| CloudApp.authenticate(email,password) | |||||
| url = CloudApp::Item.create(:upload, {:file => ARGV[0]}).url | |||||
| # Say it for good measure. | |||||
| puts "Uploaded to #{url}." | |||||
| # Get the embed link. | |||||
| url = "#{url}/#{ARGV[0].split('/').last}" | |||||
| # Copy it to your (Mac's) clipboard. | |||||
| `echo '#{url}' | tr -d "\n" | pbcopy` | |||||
| @ -0,0 +1,58 @@ | |||||
| # Cloudfoundry Plugin | |||||
| This plugin is intended to offer a few simple aliases for regular users of the [Cloud Foundry Cli][1]. Most are just simple aliases that will save a bit of typing. Others include mini functions and or accept parameters. Take a look at the table below for details. | |||||
| | Alias | Command | Description | | |||||
| |----------|-----------------------------|--------------------------------------------------------------------------| | |||||
| | cfl | `cf login` | Login to Cloud Foundry | | |||||
| | cft | `cf target` | Target the cli at a specific Org/Space in Cloud Foundry | | |||||
| | cfa | `cf apps` | List all applications in the current Org/Space | | |||||
| | cfs | `cf services` | List all services in the current Org/Space | | |||||
| | cfm | `cf marketplace` | List the services available in the Marketplace | | |||||
| | cfp | `cf push` | Push your application code to Cloud Foundry | | |||||
| | cfcs | `cf create-service` | Create a service based on a Marketplace offering | | |||||
| | cfbs | `cf bind-service` | Bind an application to a service you created | | |||||
| | cfus | `cf unbind-service` | Unbind a service from an application | | |||||
| | cfds | `cf delete-service` | Delete a service you no longer have bound | | |||||
| | cfup | `cf cups` | Create a "user-provided-service" | | |||||
| | cflg | `cf logs` | Tail the logs of an application (requires <APP_NAME>) | | |||||
| | cfr | `cf routes` | List all the routes in the current Space | | |||||
| | cfe | `cf env` | Show the environment variables for an application (requires <APP_NAME>) | | |||||
| | cfsh | `cf ssh` | Attach to a running container (requires an <APP_NAME> etc.) | | |||||
| | cfsc | `cf scale` | Scale an application (requires an <APP_NAME> etc.) | | |||||
| | cfev | `cf events` | Show the application events (requires <APP_NAME>) | | |||||
| | cfdor | `cf delete-orphaned-routes` | Delete routes that are no longer bound to applications | | |||||
| | cfbpk | `cf buildpacks` | List the available buildpacks | | |||||
| | cfdm | `cf domains` | List the domains associates with this Cloud Foundry foundation | | |||||
| | cfsp | `cf spaces` | List all the Spaces in the current Org | | |||||
| | cfap | `cf app` | Show the details of a deployed application (requires <APP_NAME>) | | |||||
| | cfh. | `export CF_HOME=$PWD/.cf` | Set the current directory as CF_HOME | | |||||
| | cfh~ | `export CF_HOME=~/.cf` | Set the user's root directory as CF_HOME | | |||||
| | cfhu | `unset CF_HOME` | Unsets CF_HOME | | |||||
| | cfpm | `cf push -f` | Push an application using a manifest (requires <MANIFEST_FILE> location) | | |||||
| | cflr | `cf logs --recent` | Show the recent logs (requires <APP_NAME>) | | |||||
| | cfsrt | `cf start` | Start an application (requires <APP_NAME>) | | |||||
| | cfstp | `cf stop` | Stop an application (requires <APP_NAME>) | | |||||
| | cfstg | `cf restage` | Restage an application (requires <APP_NAME>) | | |||||
| | cfdel | `cf delete` | Delete an application (requires <APP_NAME>) | | |||||
| | cfsrtall | - | Start all apps that are currently in the "Stopped" state | | |||||
| | cfstpall | - | Stop all apps that are currently in the "Started" state | | |||||
| For help and advice on what any of the commands does, consult the built in `cf` help functions as follows:- | |||||
| ```bash | |||||
| cf help # List the most popular and commonly used commands | |||||
| cf help -a # Complete list of all possible commands | |||||
| cf <COMMAND_NAME> --help # Help on a specific command including arguments and examples | |||||
| ``` | |||||
| Alternatively, seek out the [online documentation][3]. And don't forget, there are loads of great [community plugins for the cf-cli][4] command line tool that can greatly extend its power and usefulness. | |||||
| ## Contributors | |||||
| Contributed to `oh_my_zsh` by [benwilcock][2]. | |||||
| [1]: https://docs.cloudfoundry.org/cf-cli/install-go-cli.html | |||||
| [2]: https://github.com/benwilcock | |||||
| [3]: https://docs.cloudfoundry.org/cf-cli/getting-started.html | |||||
| [4]: https://plugins.cloudfoundry.org/ | |||||
| @ -0,0 +1,34 @@ | |||||
| # Some Useful CloudFoundry Aliases & Functions | |||||
| alias cfl="cf login" | |||||
| alias cft="cf target" | |||||
| alias cfa="cf apps" | |||||
| alias cfs="cf services" | |||||
| alias cfm="cf marketplace" | |||||
| alias cfp="cf push" | |||||
| alias cfcs="cf create-service" | |||||
| alias cfbs="cf bind-service" | |||||
| alias cfus="cf unbind-service" | |||||
| alias cfds="cf delete-service" | |||||
| alias cfup="cf cups" | |||||
| alias cflg="cf logs" | |||||
| alias cfr="cf routes" | |||||
| alias cfe="cf env" | |||||
| alias cfsh="cf ssh" | |||||
| alias cfsc="cf scale" | |||||
| alias cfev="cf events" | |||||
| alias cfdor="cf delete-orphaned-routes" | |||||
| alias cfbpk="cf buildpacks" | |||||
| alias cfdm="cf domains" | |||||
| alias cfsp="cf spaces" | |||||
| function cfap() { cf app $1 } | |||||
| function cfh.() { export CF_HOME=$PWD/.cf } | |||||
| function cfh~() { export CF_HOME=~/.cf } | |||||
| function cfhu() { unset CF_HOME } | |||||
| function cfpm() { cf push -f $1 } | |||||
| function cflr() { cf logs $1 --recent } | |||||
| function cfsrt() { cf start $1 } | |||||
| function cfstp() { cf stop $1 } | |||||
| function cfstg() { cf restage $1 } | |||||
| function cfdel() { cf delete $1 } | |||||
| function cfsrtall() {cf apps | awk '/stopped/ { system("cf start " $1)}'} | |||||
| function cfstpall() {cf apps | awk '/started/ { system("cf stop " $1)}'} | |||||
| @ -0,0 +1,82 @@ | |||||
| #compdef codeclimate | |||||
| _codeclimate_all_engines() { | |||||
| engines_all=(`codeclimate engines:list | tail -n +2 | gawk '{ print $2 }' | gawk -F: '{ print $1 }'`) | |||||
| } | |||||
| _codeclimate_installed_engines() { | |||||
| _codeclimate_all_engines | |||||
| engines_installed=() | |||||
| if [ -e .codeclimate.yml ] | |||||
| then | |||||
| for engine in $engines_all | |||||
| do | |||||
| if grep -q $engine ".codeclimate.yml" | |||||
| then | |||||
| engines_installed+=$engine | |||||
| fi | |||||
| done | |||||
| fi | |||||
| } | |||||
| _codeclimate_not_installed_engines() { | |||||
| _codeclimate_all_engines | |||||
| engines_not_installed=() | |||||
| if [ -e .codeclimate.yml ] | |||||
| then | |||||
| for engine in $engines_all | |||||
| do | |||||
| if ! grep -q $engine ".codeclimate.yml" | |||||
| then | |||||
| engines_not_installed+=$engine | |||||
| fi | |||||
| done | |||||
| fi | |||||
| } | |||||
| local curcontext="$curcontext" state line ret=1 | |||||
| local expl | |||||
| local -a engines_all engines_installed engines_not_installed | |||||
| _arguments \ | |||||
| '1: :->cmds' \ | |||||
| '*:: :->args' && ret=0 | |||||
| case $state in | |||||
| cmds) | |||||
| _values "bundle command" \ | |||||
| "analyze[Analyze all relevant files in the current working directory]" \ | |||||
| "console[Start an interactive session providing access to the classes within the CLI]" \ | |||||
| "engines\:disable[Prevents the engine from being used in this project]" \ | |||||
| "engines\:enable[This engine will be run the next time your project is analyzed]" \ | |||||
| "engines\:install[Compares the list of engines in your .codeclimate.yml file to those that are currently installed, then installs any missing engines]" \ | |||||
| "engines\:list[Lists all available engines in the Code Climate Docker Hub]" \ | |||||
| "engines\:remove[Removes an engine from your .codeclimate.yml file]" \ | |||||
| "help[Displays a list of commands that can be passed to the Code Climate CLI]" \ | |||||
| "init[Generates a new .codeclimate.yml file in the current working directory]" \ | |||||
| "validate-config[Validates the .codeclimate.yml file in the current working directory]" \ | |||||
| "version[Displays the current version of the Code Climate CLI]" | |||||
| ret=0 | |||||
| ;; | |||||
| args) | |||||
| case $line[1] in | |||||
| engines:enable) | |||||
| _codeclimate_not_installed_engines | |||||
| _wanted engines_not_installed expl 'not installed engines' compadd -a engines_not_installed ;; | |||||
| engines:disable|engines:remove) | |||||
| _codeclimate_installed_engines | |||||
| _wanted engines_installed expl 'installed engines' compadd -a engines_installed ;; | |||||
| analyze) | |||||
| _arguments \ | |||||
| '-f:Output Format:(text json)' | |||||
| ret=0 | |||||
| ;; | |||||
| esac | |||||
| ;; | |||||
| esac | |||||
| return ret | |||||
| @ -0,0 +1,31 @@ | |||||
| ## Coffeescript Plugin | |||||
| This plugin provides aliases for quickly compiling and previewing your | |||||
| coffeescript code. | |||||
| When writing Coffeescript it's very common to want to preview the output of a | |||||
| certain snippet of code, either because you want to test the output or because | |||||
| you'd like to execute it in a browser console which doesn't accept Coffeescript. | |||||
| Preview the compiled result of your coffeescript with `cf "code"` as per the | |||||
| following: | |||||
| ```zsh | |||||
| $ cf 'if a then b else c' | |||||
| if (a) { | |||||
| b; | |||||
| } else { | |||||
| c; | |||||
| } | |||||
| ``` | |||||
| Also provides the following aliases: | |||||
| * **cfc:** Copies the compiled JS to your clipboard. Very useful when you want | |||||
| to run the code in a JS console. | |||||
| * **cfp:** Compiles from your currently copied clipboard. Useful when you want | |||||
| to compile large/multi-line snippets | |||||
| * **cfpc:** Paste coffeescript from clipboard, compile to JS, then copy the | |||||
| the result back to clipboard. | |||||
| @ -0,0 +1,81 @@ | |||||
| #compdef coffee | |||||
| # ------------------------------------------------------------------------------ | |||||
| # Copyright (c) 2011 Github zsh-users - https://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 Coffee.js v0.6.11 (https://coffeescript.org) | |||||
| # | |||||
| # ------------------------------------------------------------------------------ | |||||
| # Authors | |||||
| # ------- | |||||
| # | |||||
| # * Mario Fernandez (https://github.com/sirech) | |||||
| # * Dong Weiming (https://github.com/dongweiming) | |||||
| # | |||||
| # ------------------------------------------------------------------------------ | |||||
| local curcontext="$curcontext" state line ret=1 version opts first second third | |||||
| typeset -A opt_args | |||||
| version=(${(f)"$(_call_program version $words[1] --version)"}) | |||||
| version=${${(z)${version[1]}}[3]} | |||||
| first=$(echo $version|cut -d '.' -f 1) | |||||
| second=$(echo $version|cut -d '.' -f 2) | |||||
| third=$(echo $version|cut -d '.' -f 3) | |||||
| if (( $first < 2 )) && (( $second < 7 )) && (( $third < 3 ));then | |||||
| opts+=('(-l --lint)'{-l,--lint}'[pipe the compiled JavaScript through JavaScript Lint]' | |||||
| '(-r --require)'{-r,--require}'[require a library before executing your script]:library') | |||||
| fi | |||||
| _arguments -C \ | |||||
| '(- *)'{-h,--help}'[display this help message]' \ | |||||
| '(- *)'{-v,--version}'[display the version number]' \ | |||||
| $opts \ | |||||
| '(-b --bare)'{-b,--bare}'[compile without a top-level function wrapper]' \ | |||||
| '(-e --eval)'{-e,--eval}'[pass a string from the command line as input]:Inline Script' \ | |||||
| '(-i --interactive)'{-i,--interactive}'[run an interactive CoffeeScript REPL]' \ | |||||
| '(-j --join)'{-j,--join}'[concatenate the source CoffeeScript before compiling]:Destination JS file:_files -g "*.js"' \ | |||||
| '(--nodejs)--nodejs[pass options directly to the "node" binary]' \ | |||||
| '(-c --compile)'{-c,--compile}'[compile to JavaScript and save as .js files]' \ | |||||
| '(-o --output)'{-o,--output}'[set the output directory for compiled JavaScript]:Output Directory:_files -/' \ | |||||
| '(-n -t -p)'{-n,--nodes}'[print out the parse tree that the parser produces]' \ | |||||
| '(-n -t -p)'{-p,--print}'[print out the compiled JavaScript]' \ | |||||
| '(-n -t -p)'{-t,--tokens}'[print out the tokens that the lexer/rewriter produce]' \ | |||||
| '(-s --stdio)'{-s,--stdio}'[listen for and compile scripts over stdio]' \ | |||||
| '(-w --watch)'{-w,--watch}'[watch scripts for changes and rerun commands]' \ | |||||
| '*:script or directory:_files' && ret=0 | |||||
| return ret | |||||
| # 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 | |||||
| @ -0,0 +1,16 @@ | |||||
| #!/bin/zsh | |||||
| # compile a string of coffeescript and print to output | |||||
| cf () { | |||||
| coffee -peb "$1" | |||||
| } | |||||
| # compile & copy to clipboard | |||||
| cfc () { | |||||
| cf "$1" | clipcopy | |||||
| } | |||||
| # compile from clipboard & print | |||||
| alias cfp='cf "$(clippaste)"' | |||||
| # compile from clipboard and copy to clipboard | |||||
| alias cfpc='cfp | clipcopy' | |||||