Merge pull request #129 from erichs/todo.sh
add todo.txt-cli as a plugin
diff --git a/README.md b/README.md
index 0c9c303..105d5be 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Bash it
-**Bash it** is a mash up of my own bash commands and scripts, other bash stuff I have found.
+**Bash it** is a mash up of my own bash commands and scripts, other bash stuff I have found.
(And a shameless ripoff of [oh-my-zsh](https://github.com/robbyrussell/oh-my-zsh). :)
@@ -13,18 +13,19 @@
3. Edit your `~/.bash_profile` file in order to customize bash-it.
**NOTE:**
-The install script will also prompt you asking if you use [Jekyll](https://github.com/mojombo/jekyll).
+The install script will also prompt you asking if you use [Jekyll](https://github.com/mojombo/jekyll).
This is to set up the `.jekyllconfig` file, which stores info necessary to use the Jekyll plugin.
## Help Screens
```
-bash-it (will show all the help commands)
-aliases-help
-rails-help
-git-help
-plugins-help
+bash-it show aliases # shows installed and available aliases
+bash-it show completions # shows installed and available completions
+bash-it show plugins # shows installed and available plugins
+bash-it help aliases # shows help for installed aliases
+bash-it help completions # shows help for installed completions
+bash-it help plugins # shows help for installed plugins
```
## Your Custom scripts, aliases, and functions
@@ -45,7 +46,7 @@
I think everyone has their own custom scripts accumulated over time. And so, following in the footsteps of oh-my-zsh, bash it is a framework for easily customizing your bash shell. Everyone's got a custom toolbox, so let's start making them even better, **as a community!**
-Send me a pull request and I'll merge it as long as it looks good. If you change an existing command, please give an explanation why. That will help a lot when I merge your changes in.
+Send me a pull request and I'll merge it as long as it looks good. If you change an existing command, please give an explanation why. That will help a lot when I merge your changes in.
Thanks, and happing bashing!
diff --git a/aliases/available/bundler.aliases.bash b/aliases/available/bundler.aliases.bash
index a7756be..fc20f4f 100644
--- a/aliases/available/bundler.aliases.bash
+++ b/aliases/available/bundler.aliases.bash
@@ -1,21 +1,9 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'ruby bundler'
# Bundler Commands
-alias be="bundle exec"
-alias bi="bundle install"
-alias bl="bundle list"
-alias bu="bundle update"
-alias bp="bundle package"
-
-
-function bundler-help() {
- echo "Bundler Aliases Usage"
- echo
- echo " be = bundle exec"
- echo " bi = bundle install"
- echo " bl = bundle list"
- echo " bu = bundle update"
- echo " bp = bundle package"
- echo
-}
-
+alias be='bundle exec'
+alias bi='bundle install'
+alias bl='bundle list'
+alias bu='bundle update'
+alias bp='bundle package'
diff --git a/aliases/available/emacs.aliases.bash b/aliases/available/emacs.aliases.bash
index a133984..ffdb9f3 100644
--- a/aliases/available/emacs.aliases.bash
+++ b/aliases/available/emacs.aliases.bash
@@ -1,4 +1,5 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'emacs editor'
case $OSTYPE in
linux*)
@@ -6,6 +7,6 @@
alias e='emacsclient -n'
;;
darwin*)
- alias em="open -a emacs"
+ alias em='open -a emacs'
;;
esac
diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash
index 660a8ca..3e87e2d 100644
--- a/aliases/available/general.aliases.bash
+++ b/aliases/available/general.aliases.bash
@@ -1,4 +1,5 @@
-#!/usr/bin/env bash
+cite about-alias
+about-alias 'general aliases'
# List directory contents
alias sl=ls
@@ -27,20 +28,20 @@
alias edit="$EDITOR"
alias pager="$PAGER"
-alias q="exit"
+alias q='exit'
alias irc="$IRC_CLIENT"
-alias rb="ruby"
+alias rb='ruby'
# Pianobar can be found here: http://github.com/PromyLOPh/pianobar/
-alias piano="pianobar"
+alias piano='pianobar'
alias ..='cd ..' # Go up one directory
alias ...='cd ../..' # Go up two directories
alias ....='cd ../../..' # Go up two directories
-alias -- -="cd -" # Go back
+alias -- -='cd -' # Go back
# Shell History
alias h='history'
@@ -53,30 +54,4 @@
# Directory
alias md='mkdir -p'
-alias rd=rmdir
-
-function aliases-help() {
-echo "Generic Alias Usage"
-echo
-echo " sl = ls"
-echo " ls = ls -G"
-echo " la = ls -AF"
-echo " ll = ls -al"
-echo " l = ls -a"
-echo " c/k/cls = clear"
-echo " .. = cd .."
-echo " ... = cd ../.."
-echo " - = cd -"
-echo " h = history"
-echo " md = mkdir -p"
-echo " rd = rmdir"
-echo " editor = $EDITOR"
-echo " pager = $PAGER"
-echo " piano = pianobar"
-echo " q = exit"
-echo " irc = $IRC_CLIENT"
-echo " md = mkdir -p"
-echo " rd = rmdir"
-echo " rb = ruby"
-echo
-}
+alias rd='rmdir'
diff --git a/aliases/available/git.aliases.bash b/aliases/available/git.aliases.bash
index abfa996..bbac313 100644
--- a/aliases/available/git.aliases.bash
+++ b/aliases/available/git.aliases.bash
@@ -1,4 +1,5 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'common git abbreviations'
# Aliases
alias gcl='git clone'
@@ -38,36 +39,3 @@
alias gd='git diff'
;;
esac
-
-
-
-function git-help() {
- echo "Git Custom Aliases Usage"
- echo
- echo " gcl = git clone"
- echo " g = git"
- echo " get = git"
- echo " ga = git add"
- echo " gall = git add ."
- echo " gst/gs = git status"
- echo " gss = git status -s"
- echo " gl = git pull"
- echo " gup = git fetch && git rebase"
- echo " gp = git push"
- echo " gd = git diff | mate"
- echo " gdv = git diff -w \"$@\" | vim -R -"
- echo " gc = git commit -v"
- echo " gca = git commit -v -a"
- echo " gci = git commit --interactive"
- echo " gb = git branch"
- echo " gba = git branch -a"
- echo " gcount = git shortlog -sn"
- echo " gcp = git cherry-pick"
- echo " gco = git checkout"
- echo " gexport = git git archive --format zip --output"
- echo " gdel = git branch -D"
- echo " gpo = git push origin"
- echo " gmu = git fetch origin -v; git fetch upstream -v; git merge upstream/master"
- echo " gll = git log --graph --pretty=oneline --abbrev-commit"
- echo
-}
diff --git a/aliases/available/heroku.aliases.bash b/aliases/available/heroku.aliases.bash
index 7bc1dbe..a749d42 100644
--- a/aliases/available/heroku.aliases.bash
+++ b/aliases/available/heroku.aliases.bash
@@ -1,4 +1,5 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'heroku task abbreviations'
# heroku
alias h='heroku'
@@ -31,26 +32,3 @@
alias hca='heroku config:add'
alias hcr='heroku config:remove'
alias hcc='heroku config:clear'
-
-function heroku-help() {
- echo "Heroku Aliases Usage"
- echo
- echo " h = heroku"
- echo " hl = heroku list"
- echo " hi = heroku info"
- echo " ho = heroku open"
- echo " hd = heroku dynos"
- echo " hw = heroku workers"
- echo " hr = heroku rake"
- echo " hcon = heroku console"
- echo " hnew = heroku create"
- echo " hrestart = heroku restart"
- echo " hlog = heroku logs"
- echo " hon = heroku maintenance:on"
- echo " hoff = heroku maintenance:off"
- echo " hc = heroku config"
- echo " hca = heroku config:add"
- echo " hcr = heroku config:remove"
- echo " hcc = heroku config:clear"
- echo
-}
diff --git a/aliases/available/hg.aliases.bash b/aliases/available/hg.aliases.bash
index 245c529..eea819f 100644
--- a/aliases/available/hg.aliases.bash
+++ b/aliases/available/hg.aliases.bash
@@ -1,14 +1,6 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'mercurial abbreviations'
alias hs='hg status'
alias hsum='hg summary'
alias hcm='hg commit -m'
-
-function hg-help() {
- echo "Mercurial Alias Help"
- echo
- echo " hs = hg status"
- echo " hsum = hg summary"
- echo " hcm = hg commit -m"
- echo
-}
diff --git a/aliases/available/homebrew.aliases.bash b/aliases/available/homebrew.aliases.bash
index 051081d..b8f1481 100644
--- a/aliases/available/homebrew.aliases.bash
+++ b/aliases/available/homebrew.aliases.bash
@@ -1,24 +1,13 @@
# Some aliases for Homebrew
-alias bup="brew update && brew upgrade"
-alias bout="brew outdated"
-alias bin="brew install"
-alias brm="brew uninstall"
-alias bls="brew list"
-alias bsr="brew search"
-alias binf="brew info"
-alias bdr="brew doctor"
+cite 'about-alias'
+about-alias 'homebrew abbreviations'
-function brew-help() {
- echo "Homebrew Alias Usage"
- echo
- echo "bup = brew update && brew upgrade"
- echo "bout = brew outdated"
- echo "bin = brew install"
- echo "brm = brew uninstall"
- echo "bls = brew list"
- echo "bsr = brew search"
- echo "binf = brew info"
- echo "bdr = brew doctor"
- echo
-}
+alias bup='brew update && brew upgrade'
+alias bout='brew outdated'
+alias bin='brew install'
+alias brm='brew uninstall'
+alias bls='brew list'
+alias bsr='brew search'
+alias binf='brew info'
+alias bdr='brew doctor'
diff --git a/aliases/available/maven.aliases.bash b/aliases/available/maven.aliases.bash
index 349f9d8..4cd89d2 100644
--- a/aliases/available/maven.aliases.bash
+++ b/aliases/available/maven.aliases.bash
@@ -1,22 +1,11 @@
-alias mci="mvn clean install"
-alias mi="mvn install"
-alias mrprep="mvn release:prepare"
-alias mrperf="mvn release:perform"
-alias mrrb="mvn release:rollback"
-alias mdep="mvn dependency:tree"
-alias mpom="mvn help:effective-pom"
-alias mcisk="mci -Dmaven.test.skip=true"
+cite 'about-alias'
+about-alias 'maven abbreviations'
-function maven-help() {
- echo "Maven Custom Aliases Usage"
- echo
- echo " mci = mvn clean install"
- echo " mi = mvn install"
- echo " mrprep = mvn release:prepare"
- echo " mrperf = mvn release:perform"
- echo " mrrb = mvn release:rollback"
- echo " mdep = mvn dependency:tree"
- echo " mpom = mvn help:effective-pom"
- echo " mcisk = mvn clean install -Dmaven.test.skip=true"
- echo
-}
+alias mci='mvn clean install'
+alias mi='mvn install'
+alias mrprep='mvn release:prepare'
+alias mrperf='mvn release:perform'
+alias mrrb='mvn release:rollback'
+alias mdep='mvn dependency:tree'
+alias mpom='mvn help:effective-pom'
+alias mcisk='mci -Dmaven.test.skip=true'
diff --git a/aliases/available/osx.aliases.bash b/aliases/available/osx.aliases.bash
index 008b67c..2d749de 100644
--- a/aliases/available/osx.aliases.bash
+++ b/aliases/available/osx.aliases.bash
@@ -1,4 +1,5 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'osx-specific aliases'
# Desktop Programs
alias fireworks="open -a '/Applications/Adobe Fireworks CS3/Adobe Fireworks CS3.app'"
diff --git a/aliases/available/rails.aliases.bash b/aliases/available/rails.aliases.bash
index 1d7b310..ae664bf 100644
--- a/aliases/available/rails.aliases.bash
+++ b/aliases/available/rails.aliases.bash
@@ -1,4 +1,5 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'rails abbreviations'
# Rails Commands
alias r='rails'
@@ -19,24 +20,3 @@
alias restart='touch tmp/restart.txt' # restart passenger
alias devlog='tail -f log/development.log'
alias taild='tail -f log/development.log' # tail dev log
-
-function rails-help() {
- echo "Rails Aliases Usage"
- echo
- echo " r = rails"
- echo " rg = rails generate"
- echo " rs/ss = rails server"
- echo " ts = thin server"
- echo " rc/sc = rails console"
- echo " rn = rails new"
- echo " rd = rails dbconsole"
- echo " rp = rails plugin"
- echo " ra = rails application"
- echo " rd = rails destroy"
- echo " restartapp = touch tmp/restart.txt"
- echo " restart = touch tmp/restart.txt"
- echo " devlog = tail -f log/development.log"
- echo " taild = tail -f log/development.log"
- echo
-}
-
diff --git a/aliases/available/textmate.aliases.bash b/aliases/available/textmate.aliases.bash
index 897c7d3..f0f69e4 100644
--- a/aliases/available/textmate.aliases.bash
+++ b/aliases/available/textmate.aliases.bash
@@ -1,4 +1,5 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'textmate abbreviations'
case $OSTYPE in
darwin*)
diff --git a/aliases/available/todo.txt-cli.aliases.bash b/aliases/available/todo.txt-cli.aliases.bash
index ce27716..5bf35d0 100644
--- a/aliases/available/todo.txt-cli.aliases.bash
+++ b/aliases/available/todo.txt-cli.aliases.bash
@@ -1,19 +1,8 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'todo.txt-cli abbreviations'
alias tls="$TODO ls"
alias ta="$TODO a"
alias trm="$TODO rm"
alias tdo="$TODO do"
alias tpri="$TODO pri"
-
-todo-help() {
- echo
- echo "todo.txt-cli Custom Aliases Usage"
- echo
- echo " tls = $TODO ls"
- echo " ta = $TODO add"
- echo " trm = $TODO rm"
- echo " tdo = $TODO do"
- echo " tpri = $TODO pri"
- echo
-}
diff --git a/aliases/available/vim.aliases.bash b/aliases/available/vim.aliases.bash
index c156ffd..c14f32b 100644
--- a/aliases/available/vim.aliases.bash
+++ b/aliases/available/vim.aliases.bash
@@ -1,3 +1,4 @@
-#!/usr/bin/env bash
+cite 'about-alias'
+about-alias 'vim abbreviations'
alias v='mvim --remote-tab'
diff --git a/bash_it.sh b/bash_it.sh
index 693c024..226213f 100755
--- a/bash_it.sh
+++ b/bash_it.sh
@@ -24,6 +24,9 @@
# Load composure first, so we support function metadata
source "${BASH_IT}/lib/composure.sh"
+# support 'plumbing' metadata
+cite _about _param _example _group _author _version
+
# Load colors first so they can be use in base theme
source "${BASH_IT}/themes/colors.theme.bash"
source "${BASH_IT}/themes/base.theme.bash"
@@ -72,23 +75,3 @@
then
. $HOME/.jekyllconfig
fi
-
-
-#
-# Custom Help
-
-function bash-it() {
- echo "Welcome to Bash It!"
- echo
- echo "Here is a list of commands you can use to get help screens for specific pieces of Bash it:"
- echo
- echo " rails-help list out all aliases you can use with rails."
- echo " git-help list out all aliases you can use with git."
- echo " todo-help list out all aliases you can use with todo.txt-cli"
- echo " brew-help list out all aliases you can use with Homebrew"
- echo " aliases-help generic list of aliases."
- echo " plugins-help list out all functions you have installed with bash-it"
- echo " bash-it-plugins summarize bash-it plugins, and their installation status"
- echo " reference <function name> detailed help for a specific function"
- echo
-}
diff --git a/completion/available/tmux.completion.bash b/completion/available/tmux.completion.bash
index c872ec5..a1b8f06 100644
--- a/completion/available/tmux.completion.bash
+++ b/completion/available/tmux.completion.bash
@@ -5,6 +5,90 @@
# Usage: Put "source bash_completion_tmux.sh" into your .bashrc
# Based upon the example at http://paste-it.appspot.com/Pj4mLycDE
+ _tmux_cmds=" \
+attach-session \
+bind-key \
+break-pane \
+capture-pane \
+choose-client \
+choose-session \
+choose-window \
+clear-history \
+clock-mode \
+command-prompt \
+confirm-before \
+copy-buffer \
+copy-mode \
+delete-buffer \
+detach-client \
+display-message \
+display-panes \
+down-pane \
+find-window \
+has-session \
+if-shell \
+join-pane \
+kill-pane \
+kill-server \
+kill-session \
+kill-window \
+last-window \
+link-window \
+list-buffers \
+list-clients \
+list-commands \
+list-keys \
+list-panes \
+list-sessions \
+list-windows \
+load-buffer \
+lock-client \
+lock-server \
+lock-session \
+move-window \
+new-session \
+new-window \
+next-layout \
+next-window \
+paste-buffer \
+pipe-pane \
+previous-layout \
+previous-window \
+refresh-client \
+rename-session \
+rename-window \
+resize-pane \
+respawn-window \
+rotate-window \
+run-shell \
+save-buffer \
+select-layout \
+select-pane \
+select-prompt \
+select-window \
+send-keys \
+send-prefix \
+server-info \
+set-buffer \
+set-environment \
+set-option \
+set-window-option \
+show-buffer \
+show-environment \
+show-messages \
+show-options \
+show-window-options \
+source-file \
+split-window \
+start-server \
+suspend-client \
+swap-pane \
+swap-window \
+switch-client \
+unbind-key \
+unlink-window \
+up-pane"
+
_tmux_expand ()
{
[ "$cur" != "${cur%\\}" ] && cur="$cur"'\';
@@ -34,12 +118,12 @@
function _tmux_complete_client() {
local IFS=$'\n'
local cur="${1}"
- COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-clients | cut -f 1 -d ':')" -- "${cur}") )
+ COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-clients 2>/dev/null | cut -f 1 -d ':')" -- "${cur}") )
}
function _tmux_complete_session() {
local IFS=$'\n'
local cur="${1}"
- COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-sessions | cut -f 1 -d ':')" -- "${cur}") )
+ COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "$(tmux -q list-sessions 2>/dev/null | cut -f 1 -d ':')" -- "${cur}") )
}
function _tmux_complete_window() {
local IFS=$'\n'
@@ -47,10 +131,10 @@
local session_name="$(echo "${cur}" | sed 's/\\//g' | cut -d ':' -f 1)"
local sessions
- sessions="$(tmux -q list-sessions | sed -re 's/([^:]+:).*$/\1/')"
+ sessions="$(tmux -q list-sessions 2>/dev/null | sed -re 's/([^:]+:).*$/\1/')"
if [[ -n "${session_name}" ]]; then
sessions="${sessions}
-$(tmux -q list-windows -t "${session_name}" | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')"
+$(tmux -q list-windows -t "${session_name}" 2>/dev/null | sed -re 's/^([^:]+):.*$/'"${session_name}"':\1/')"
fi
cur="$(echo "${cur}" | sed -e 's/:/\\\\:/')"
sessions="$(echo "${sessions}" | sed -e 's/:/\\\\:/')"
@@ -102,8 +186,7 @@
if [[ $COMP_CWORD -le $cmd_index ]]; then
# The user has not specified a command yet
- local all_commands="$(tmux -q list-commands | cut -f 1 -d ' ')"
- COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${all_commands}" -- "${cur}") )
+ COMPREPLY=( ${COMPREPLY[@]:-} $(compgen -W "${_tmux_cmds}" -- "${cur}") )
else
case ${cmd} in
attach-session|attach)
diff --git a/lib/helpers.bash b/lib/helpers.bash
index d0c16b8..e1787fe 100644
--- a/lib/helpers.bash
+++ b/lib/helpers.bash
@@ -1,11 +1,11 @@
# Helper function loading various enable-able files
function _load_bash_it_files() {
- file_type="$1"
- if [ ! -d "${BASH_IT}/${file_type}/enabled" ]
+ subdirectory="$1"
+ if [ ! -d "${BASH_IT}/${subdirectory}/enabled" ]
then
continue
fi
- FILES="${BASH_IT}/${file_type}/enabled/*.bash"
+ FILES="${BASH_IT}/${subdirectory}/enabled/*.bash"
for config_file in $FILES
do
if [ -e "${config_file}" ]; then
@@ -29,106 +29,285 @@
_load_bash_it_files "plugins"
}
-bash-it-plugins ()
+bash-it ()
{
- about 'summarizes available bash_it plugins'
- group 'lib'
+ about 'bash-it help and maintenance'
+ param '1: verb [one of: help | show | enable | disable ]'
+ param '2: component type [one of: alias(es) | completion(s) | plugin(s) ]'
+ param '3: specific component [optional]'
+ example '$ bash-it show plugins'
+ example '$ bash-it help aliases'
+ example '$ bash-it enable plugin git'
+ example '$ bash-it disable alias hg'
+ typeset verb=${1:-}
+ shift
+ typeset component=${1:-}
+ shift
+ typeset func
+ case $verb in
+ show)
+ func=_bash-it-$component;;
+ enable)
+ func=_enable-$component;;
+ disable)
+ func=_disable-$component;;
+ help)
+ func=_help-$component;;
+ *)
+ reference bash-it
+ return;;
+ esac
+
+ # pluralize component if necessary
+ if ! _is_function $func; then
+ if _is_function ${func}s; then
+ func=${func}s
+ else
+ if _is_function ${func}es; then
+ func=${func}es
+ else
+ echo "oops! $component is not a valid option!"
+ reference bash-it
+ return
+ fi
+ fi
+ fi
+ $func $*
+}
+
+_is_function ()
+{
+ _about 'sets $? to true if parameter is the name of a function'
+ _param '1: name of alleged function'
+ _group 'lib'
+ [ -n "$(type -a $1 2>/dev/null | grep 'is a function')" ]
+}
+
+_bash-it-aliases ()
+{
+ _about 'summarizes available bash_it aliases'
+ _group 'lib'
+
+ _bash-it-describe "aliases" "an" "alias" "Alias"
+}
+
+_bash-it-completions ()
+{
+ _about 'summarizes available bash_it completions'
+ _group 'lib'
+
+ _bash-it-describe "completion" "a" "completion" "Completion"
+}
+
+_bash-it-plugins ()
+{
+ _about 'summarizes available bash_it plugins'
+ _group 'lib'
+
+ _bash-it-describe "plugins" "a" "plugin" "Plugin"
+}
+
+_bash-it-describe ()
+{
+ _about 'summarizes available bash_it components'
+ _param '1: subdirectory'
+ _param '2: preposition'
+ _param '3: file_type'
+ _param '4: column_header'
+ _example '$ _bash-it-describe "plugins" "a" "plugin" "Plugin"'
+
+ subdirectory="$1"
+ preposition="$2"
+ file_type="$3"
+ column_header="$4"
typeset f
typeset enabled
- printf "%-20s%-10s%s\n" 'Plugin' 'Enabled?' 'Description'
- for f in $BASH_IT/plugins/available/*.bash
+ printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description'
+ for f in $BASH_IT/$subdirectory/available/*.bash
do
- if [ -e $BASH_IT/plugins/enabled/$(basename $f) ]; then
+ if [ -e $BASH_IT/$subdirectory/enabled/$(basename $f) ]; then
enabled='x'
else
enabled=' '
fi
- printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-plugin)"
+ printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-$file_type)"
done
- printf '\n%s\n' 'to enable a plugin, do:'
- printf '%s\n' '$ enable-plugin <plugin name> -or- $ enable-plugin all'
- printf '\n%s\n' 'to disable a plugin, do:'
- printf '%s\n' '$ disable-plugin <plugin name> -or- $ disable-plugin all'
+ printf '\n%s\n' "to enable $preposition $file_type, do:"
+ printf '%s\n' "$ bash-it enable $file_type <$file_type name> -or- $ bash-it enable $file_type all"
+ printf '\n%s\n' "to disable $preposition $file_type, do:"
+ printf '%s\n' "$ bash-it disable $file_type <$file_type name> -or- $ bash-it disable $file_type all"
}
-disable-plugin ()
+_disable-plugin ()
{
- about 'disables bash_it plugin'
- param '1: plugin name'
- example '$ disable-plugin rvm'
- group 'lib'
+ _about 'disables bash_it plugin'
+ _param '1: plugin name'
+ _example '$ disable-plugin rvm'
+ _group 'lib'
- if [ -z "$1" ]; then
- reference disable-plugin
+ _disable-thing "plugins" "plugin" $1
+}
+
+_disable-alias ()
+{
+ _about 'disables bash_it alias'
+ _param '1: alias name'
+ _example '$ disable-alias git'
+ _group 'lib'
+
+ _disable-thing "aliases" "alias" $1
+}
+
+_disable-completion ()
+{
+ _about 'disables bash_it completion'
+ _param '1: completion name'
+ _example '$ disable-completion git'
+ _group 'lib'
+
+ _disable-thing "completion" "completion" $1
+}
+
+_disable-thing ()
+{
+ _about 'disables a bash_it component'
+ _param '1: subdirectory'
+ _param '2: file_type'
+ _param '3: file_entity'
+ _example '$ _disable-thing "plugins" "plugin" "ssh"'
+
+ subdirectory="$1"
+ file_type="$2"
+ file_entity="$3"
+
+ if [ -z "$file_entity" ]; then
+ reference "disable-$file_type"
return
fi
- if [ "$1" = "all" ]; then
- typeset f plugin
- for f in $BASH_IT/plugins/available/*.bash
+ if [ "$file_entity" = "all" ]; then
+ typeset f $file_type
+ for f in $BASH_IT/$subdirectory/available/*.bash
do
plugin=$(basename $f)
- if [ -e $BASH_IT/plugins/enabled/$plugin ]; then
- rm $BASH_IT/plugins/enabled/$(basename $plugin)
+ if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then
+ rm $BASH_IT/$subdirectory/enabled/$(basename $plugin)
fi
done
else
- typeset plugin=$(ls $BASH_IT/plugins/enabled/$1.*bash 2>/dev/null | head -1)
- if [ ! -h $plugin ]; then
- printf '%s\n' 'sorry, that does not appear to be an enabled plugin.'
+ typeset plugin=$(command ls $BASH_IT/$subdirectory/enabled/$file_entity.*bash 2>/dev/null | head -1)
+ if [ -z "$plugin" ]; then
+ printf '%s\n' "sorry, that does not appear to be an enabled $file_type."
return
fi
- rm $BASH_IT/plugins/enabled/$(basename $plugin)
+ rm $BASH_IT/$subdirectory/enabled/$(basename $plugin)
fi
- printf '%s\n' "$1 disabled."
+ printf '%s\n' "$file_entity disabled."
}
-enable-plugin ()
+_enable-plugin ()
{
- about 'enables bash_it plugin'
- param '1: plugin name'
- example '$ enable-plugin rvm'
- group 'lib'
+ _about 'enables bash_it plugin'
+ _param '1: plugin name'
+ _example '$ enable-plugin rvm'
+ _group 'lib'
- if [ -z "$1" ]; then
- reference enable-plugin
+ _enable-thing "plugins" "plugin" $1
+}
+
+_enable-alias ()
+{
+ _about 'enables bash_it alias'
+ _param '1: alias name'
+ _example '$ enable-alias git'
+ _group 'lib'
+
+ _enable-thing "aliases" "alias" $1
+}
+
+_enable-completion ()
+{
+ _about 'enables bash_it completion'
+ _param '1: completion name'
+ _example '$ enable-completion git'
+ _group 'lib'
+
+ _enable-thing "completion" "completion" $1
+}
+
+_enable-thing ()
+{
+ cite _about _param _example
+ _about 'enables a bash_it component'
+ _param '1: subdirectory'
+ _param '2: file_type'
+ _param '3: file_entity'
+ _example '$ _enable-thing "plugins" "plugin" "ssh"'
+
+ subdirectory="$1"
+ file_type="$2"
+ file_entity="$3"
+
+ if [ -z "$file_entity" ]; then
+ reference "enable-$file_type"
return
fi
- if [ "$1" = "all" ]; then
- typeset f plugin
- for f in $BASH_IT/plugins/available/*.bash
+ if [ "$file_entity" = "all" ]; then
+ typeset f $file_type
+ for f in $BASH_IT/$subdirectory/available/*.bash
do
plugin=$(basename $f)
- if [ ! -h $BASH_IT/plugins/enabled/$plugin ]; then
- ln -s $BASH_IT/plugins/available/$plugin $BASH_IT/plugins/enabled/$plugin
+ if [ ! -h $BASH_IT/$subdirectory/enabled/$plugin ]; then
+ ln -s $BASH_IT/$subdirectory/available/$plugin $BASH_IT/$subdirectory/enabled/$plugin
fi
done
else
- typeset plugin=$(ls $BASH_IT/plugins/available/$1.*bash 2>/dev/null | head -1)
+ typeset plugin=$(command ls $BASH_IT/$subdirectory/available/$file_entity.*bash 2>/dev/null | head -1)
if [ -z "$plugin" ]; then
- printf '%s\n' 'sorry, that does not appear to be an available plugin.'
+ printf '%s\n' "sorry, that does not appear to be an available $file_type."
return
fi
plugin=$(basename $plugin)
- if [ -e $BASH_IT/plugins/enabled/$plugin ]; then
- printf '%s\n' "$1 is already enabled."
+ if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then
+ printf '%s\n' "$file_entity is already enabled."
return
fi
- ln -s $BASH_IT/plugins/available/$plugin $BASH_IT/plugins/enabled/$plugin
+ ln -s $BASH_IT/$subdirectory/available/$plugin $BASH_IT/$subdirectory/enabled/$plugin
fi
- printf '%s\n' "$1 enabled."
+ printf '%s\n' "$file_entity enabled."
}
-plugins-help ()
+_help-aliases()
{
- about 'summarize all functions defined by enabled bash-it plugins'
- group 'lib'
+ _about 'shows help for all aliases, or a specific alias group'
+ _param '1: optional alias group'
+ _example '$ alias-help'
+ _example '$ alias-help git'
+
+ if [ -n "$1" ]; then
+ cat $BASH_IT/aliases/available/$1.aliases.bash | metafor alias | sed "s/$/'/"
+ else
+ typeset f
+ for f in $BASH_IT/aliases/enabled/*
+ do
+ typeset file=$(basename $f)
+ printf '\n\n%s:\n' "${file%%.*}"
+ # metafor() strips trailing quotes, restore them with sed..
+ cat $f | metafor alias | sed "s/$/'/"
+ done
+ fi
+}
+
+_help-plugins()
+{
+ _about 'summarize all functions defined by enabled bash-it plugins'
+ _group 'lib'
# display a brief progress message...
printf '%s' 'please wait, building help...'
diff --git a/plugins/available/java.plugin.bash b/plugins/available/java.plugin.bash
new file mode 100644
index 0000000..98e4624
--- /dev/null
+++ b/plugins/available/java.plugin.bash
@@ -0,0 +1,11 @@
+cite about-plugin
+about-plugin 'Java and JAR helper functions'
+
+function jar_manifest {
+ about "extracts the specified JAR file's MANIFEST file and prints it to stdout"
+ group 'java'
+ param '1: JAR file to extract the MANIFEST from'
+ example 'jar_manifest lib/foo.jar'
+
+ unzip -c $1 META-INF/MANIFEST.MF
+}