From 1f558e25503af234e319699bc682e7f5de78efbd Mon Sep 17 00:00:00 2001 From: Nils Winkler Date: Mon, 21 May 2012 13:24:49 +0200 Subject: [PATCH 1/8] Extended enable/disable and describe functionality to work for aliases and completions as well. --- aliases/available/general.aliases.bash | 3 + lib/helpers.bash | 151 +++++++++++++++++++------ 2 files changed, 122 insertions(+), 32 deletions(-) diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash index 660a8ca3..89e7e94d 100644 --- a/aliases/available/general.aliases.bash +++ b/aliases/available/general.aliases.bash @@ -1,5 +1,8 @@ #!/usr/bin/env bash +cite about-plugin +about-plugin 'general aliases' + # List directory contents alias sl=ls alias ls='ls -G' # Compact view, show colors diff --git a/lib/helpers.bash b/lib/helpers.bash index dfd64b0a..c75a5023 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -29,27 +29,56 @@ function reload_plugins() { _load_bash_it_files "plugins" } +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 plugins' + group 'lib' + + file_type="$1" + preposition="$2" + command_suffix="$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/$file_type/available/*.bash do - if [ -e $BASH_IT/plugins/enabled/$(basename $f) ]; then + if [ -e $BASH_IT/$file_type/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)" done - printf '\n%s\n' 'to enable a plugin, do:' - printf '%s\n' '$ enable-plugin -or- $ enable-plugin all' - printf '\n%s\n' 'to disable a plugin, do:' - printf '%s\n' '$ disable-plugin -or- $ disable-plugin all' + printf '\n%s\n' "to enable $preposition $command_suffix, do:" + printf '%s\n' "$ enable-$command_suffix <$command_suffix name> -or- $ enable-$command_suffix all" + printf '\n%s\n' "to disable $preposition $command_suffix, do:" + printf '%s\n' "$ disable-$command_suffix <$command_suffix name> -or- $ disable-$command_suffix all" } disable-plugin () @@ -58,31 +87,60 @@ disable-plugin () param '1: plugin name' example '$ disable-plugin rvm' group 'lib' + + _disable-thing "plugins" "plugin" $1 +} - if [ -z "$1" ]; then - reference disable-plugin +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 () +{ + file_type="$1" + command_suffix="$2" + file_entity="$3" + + if [ -z "$file_entity" ]; then + reference "disable-$command_suffix" return fi - if [ "$1" = "all" ]; then - typeset f plugin - for f in $BASH_IT/plugins/available/*.bash + if [ "$file_entity" = "all" ]; then + typeset f $command_suffix + for f in $BASH_IT/$file_type/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/$file_type/enabled/$plugin ]; then + rm $BASH_IT/$file_type/enabled/$(basename $plugin) fi done else - typeset plugin=$(command 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/$file_type/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 $command_suffix." return fi - rm $BASH_IT/plugins/enabled/$(basename $plugin) + rm $BASH_IT/$file_type/enabled/$(basename $plugin) fi - printf '%s\n' "$1 disabled." + printf '%s\n' "$file_entity disabled." } enable-plugin () @@ -91,38 +149,67 @@ enable-plugin () param '1: plugin name' example '$ enable-plugin rvm' group 'lib' + + _enable-thing "plugins" "plugin" $1 +} - if [ -z "$1" ]; then - reference enable-plugin +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 () +{ + file_type="$1" + command_suffix="$2" + file_entity="$3" + + if [ -z "$file_entity" ]; then + reference "enable-$command_suffix" return fi - if [ "$1" = "all" ]; then - typeset f plugin - for f in $BASH_IT/plugins/available/*.bash + if [ "$file_entity" = "all" ]; then + typeset f $command_suffix + for f in $BASH_IT/$file_type/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/$file_type/enabled/$plugin ]; then + ln -s $BASH_IT/$file_type/available/$plugin $BASH_IT/$file_type/enabled/$plugin fi done else - typeset plugin=$(command ls $BASH_IT/plugins/available/$1.*bash 2>/dev/null | head -1) + typeset plugin=$(command ls $BASH_IT/$file_type/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 $command_suffix." return fi plugin=$(basename $plugin) - if [ -e $BASH_IT/plugins/enabled/$plugin ]; then - printf '%s\n' "$1 is already enabled." + if [ -e $BASH_IT/$file_type/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/$file_type/available/$plugin $BASH_IT/$file_type/enabled/$plugin fi - printf '%s\n' "$1 enabled." + printf '%s\n' "$file_entity enabled." } plugins-help () From f71be202471da843f91a4e9bd28ec59e8a7728e2 Mon Sep 17 00:00:00 2001 From: Nils Winkler Date: Mon, 21 May 2012 15:52:03 +0200 Subject: [PATCH 2/8] Changed meta info resolution to look for data based on the type, e.g. about-plugin, about-alias, about-completion. --- aliases/available/general.aliases.bash | 4 ++-- lib/helpers.bash | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aliases/available/general.aliases.bash b/aliases/available/general.aliases.bash index 89e7e94d..f693c1f9 100644 --- a/aliases/available/general.aliases.bash +++ b/aliases/available/general.aliases.bash @@ -1,7 +1,7 @@ #!/usr/bin/env bash -cite about-plugin -about-plugin 'general aliases' +cite about-alias +about-alias 'general aliases' # List directory contents alias sl=ls diff --git a/lib/helpers.bash b/lib/helpers.bash index c75a5023..7f94174b 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -73,7 +73,7 @@ _bash-it-describe () 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-$command_suffix)" done printf '\n%s\n' "to enable $preposition $command_suffix, do:" printf '%s\n' "$ enable-$command_suffix <$command_suffix name> -or- $ enable-$command_suffix all" From 95ce5484513be42229f879f3a89f08247e053948 Mon Sep 17 00:00:00 2001 From: Nils Winkler Date: Tue, 22 May 2012 09:33:59 +0200 Subject: [PATCH 3/8] Cleaned up parameters and added meta data for plumbing functions. --- lib/helpers.bash | 89 +++++++++++++++++++++++++++++------------------- 1 file changed, 54 insertions(+), 35 deletions(-) diff --git a/lib/helpers.bash b/lib/helpers.bash index 7f94174b..47fa9299 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 @@ -55,30 +55,35 @@ bash-it-plugins () _bash-it-describe () { - about 'summarizes available bash_it plugins' - group 'lib' + cite _about _param _example + _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"' - file_type="$1" + subdirectory="$1" preposition="$2" - command_suffix="$3" + file_type="$3" column_header="$4" typeset f typeset enabled printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description' - for f in $BASH_IT/$file_type/available/*.bash + for f in $BASH_IT/$subdirectory/available/*.bash do - if [ -e $BASH_IT/$file_type/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-$command_suffix)" + printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-$file_type)" done - printf '\n%s\n' "to enable $preposition $command_suffix, do:" - printf '%s\n' "$ enable-$command_suffix <$command_suffix name> -or- $ enable-$command_suffix all" - printf '\n%s\n' "to disable $preposition $command_suffix, do:" - printf '%s\n' "$ disable-$command_suffix <$command_suffix name> -or- $ disable-$command_suffix all" + printf '\n%s\n' "to enable $preposition $file_type, do:" + printf '%s\n' "$ enable-$file_type <$file_type name> -or- $ enable-$file_type all" + printf '\n%s\n' "to disable $preposition $file_type, do:" + printf '%s\n' "$ disable-$file_type <$file_type name> -or- $ disable-$file_type all" } disable-plugin () @@ -113,31 +118,38 @@ disable-completion () _disable-thing () { - file_type="$1" - command_suffix="$2" + cite _about _param _example + _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-$command_suffix" + reference "disable-$file_type" return fi if [ "$file_entity" = "all" ]; then - typeset f $command_suffix - for f in $BASH_IT/$file_type/available/*.bash + typeset f $file_type + for f in $BASH_IT/$subdirectory/available/*.bash do plugin=$(basename $f) - if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then - rm $BASH_IT/$file_type/enabled/$(basename $plugin) + if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then + rm $BASH_IT/$subdirectory/enabled/$(basename $plugin) fi done else - typeset plugin=$(command ls $BASH_IT/$file_type/enabled/$file_entity.*bash 2>/dev/null | head -1) + 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 $command_suffix." + printf '%s\n' "sorry, that does not appear to be an enabled $file_type." return fi - rm $BASH_IT/$file_type/enabled/$(basename $plugin) + rm $BASH_IT/$subdirectory/enabled/$(basename $plugin) fi printf '%s\n' "$file_entity disabled." @@ -175,38 +187,45 @@ enable-completion () _enable-thing () { - file_type="$1" - command_suffix="$2" + 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-$command_suffix" + reference "enable-$file_type" return fi if [ "$file_entity" = "all" ]; then - typeset f $command_suffix - for f in $BASH_IT/$file_type/available/*.bash + typeset f $file_type + for f in $BASH_IT/$subdirectory/available/*.bash do plugin=$(basename $f) - if [ ! -h $BASH_IT/$file_type/enabled/$plugin ]; then - ln -s $BASH_IT/$file_type/available/$plugin $BASH_IT/$file_type/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=$(command ls $BASH_IT/$file_type/available/$file_entity.*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 $command_suffix." + printf '%s\n' "sorry, that does not appear to be an available $file_type." return fi plugin=$(basename $plugin) - if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then + if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then printf '%s\n' "$file_entity is already enabled." return fi - ln -s $BASH_IT/$file_type/available/$plugin $BASH_IT/$file_type/enabled/$plugin + ln -s $BASH_IT/$subdirectory/available/$plugin $BASH_IT/$subdirectory/enabled/$plugin fi printf '%s\n' "$file_entity enabled." From 17aaa9ce24c725ebcf8df1d2dfe46b591e686b29 Mon Sep 17 00:00:00 2001 From: Erich Smith Date: Mon, 21 May 2012 23:52:47 -0400 Subject: [PATCH 4/8] add alias metadata, remove help() --- aliases/available/bundler.aliases.bash | 26 ++++---------- aliases/available/emacs.aliases.bash | 5 +-- aliases/available/general.aliases.bash | 38 +++------------------ aliases/available/git.aliases.bash | 36 ++----------------- aliases/available/heroku.aliases.bash | 26 ++------------ aliases/available/hg.aliases.bash | 12 ++----- aliases/available/homebrew.aliases.bash | 31 ++++++----------- aliases/available/maven.aliases.bash | 31 ++++++----------- aliases/available/osx.aliases.bash | 3 +- aliases/available/rails.aliases.bash | 24 ++----------- aliases/available/textmate.aliases.bash | 3 +- aliases/available/todo.txt-cli.aliases.bash | 15 ++------ aliases/available/vim.aliases.bash | 3 +- 13 files changed, 51 insertions(+), 202 deletions(-) diff --git a/aliases/available/bundler.aliases.bash b/aliases/available/bundler.aliases.bash index a7756bec..fc20f4ff 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 a1339845..ffdb9f35 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 @@ case $OSTYPE in 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 f693c1f9..3e87e2dc 100644 --- a/aliases/available/general.aliases.bash +++ b/aliases/available/general.aliases.bash @@ -1,5 +1,3 @@ -#!/usr/bin/env bash - cite about-alias about-alias 'general aliases' @@ -30,20 +28,20 @@ alias cls='clear' 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' @@ -56,30 +54,4 @@ fi # 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 abfa996e..bbac313b 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 @@ case $OSTYPE in 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 7bc1dbea..a749d424 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 hc='heroku config' 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 245c5290..eea819ff 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 051081d9..b8f1481c 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 349f9d8f..4cd89d27 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 008b67ce..2d749de6 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 1d7b310f..ae664bf3 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 restartapp='touch tmp/restart.txt' 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 897c7d36..f0f69e43 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 ce277164..5bf35d0d 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 c156ffde..c14f32b8 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' From 961c914e0fe00397971340f41cb93008dd3cb791 Mon Sep 17 00:00:00 2001 From: Erich Smith Date: Mon, 21 May 2012 23:55:31 -0400 Subject: [PATCH 5/8] alias-help() --- lib/helpers.bash | 61 ++++++++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 20 deletions(-) diff --git a/lib/helpers.bash b/lib/helpers.bash index 47fa9299..2bd8cf75 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -33,7 +33,7 @@ bash-it-aliases () { about 'summarizes available bash_it aliases' group 'lib' - + _bash-it-describe "aliases" "an" "alias" "Alias" } @@ -41,7 +41,7 @@ bash-it-completions () { about 'summarizes available bash_it completions' group 'lib' - + _bash-it-describe "completion" "a" "completion" "Completion" } @@ -49,13 +49,13 @@ bash-it-plugins () { about 'summarizes available bash_it plugins' group 'lib' - + _bash-it-describe "plugins" "a" "plugin" "Plugin" } _bash-it-describe () { - cite _about _param _example + cite _about _param _example _about 'summarizes available bash_it components' _param '1: subdirectory' _param '2: preposition' @@ -92,7 +92,7 @@ disable-plugin () param '1: plugin name' example '$ disable-plugin rvm' group 'lib' - + _disable-thing "plugins" "plugin" $1 } @@ -102,7 +102,7 @@ disable-alias () param '1: alias name' example '$ disable-alias git' group 'lib' - + _disable-thing "aliases" "alias" $1 } @@ -112,23 +112,23 @@ disable-completion () param '1: completion name' example '$ disable-completion git' group 'lib' - + _disable-thing "completion" "completion" $1 } _disable-thing () { - cite _about _param _example + cite _about _param _example _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" - + subdirectory="$1" + file_type="$2" + file_entity="$3" + if [ -z "$file_entity" ]; then reference "disable-$file_type" return @@ -161,7 +161,7 @@ enable-plugin () param '1: plugin name' example '$ enable-plugin rvm' group 'lib' - + _enable-thing "plugins" "plugin" $1 } @@ -171,7 +171,7 @@ enable-alias () param '1: alias name' example '$ enable-alias git' group 'lib' - + _enable-thing "aliases" "alias" $1 } @@ -181,23 +181,23 @@ enable-completion () param '1: completion name' example '$ enable-completion git' group 'lib' - + _enable-thing "completion" "completion" $1 } _enable-thing () { - cite _about _param _example + 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" - + subdirectory="$1" + file_type="$2" + file_entity="$3" + if [ -z "$file_entity" ]; then reference "enable-$file_type" return @@ -231,6 +231,27 @@ _enable-thing () printf '%s\n' "$file_entity enabled." } +alias-help () +{ + 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/enabled/$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 +} + plugins-help () { about 'summarize all functions defined by enabled bash-it plugins' From e82991beb8ca7239863444aaf555d82a5dd63b93 Mon Sep 17 00:00:00 2001 From: Nils Winkler Date: Wed, 23 May 2012 09:31:35 +0200 Subject: [PATCH 6/8] Updated help --- lib/helpers.bash | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/helpers.bash b/lib/helpers.bash index 2bd8cf75..2530d7fa 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -81,9 +81,9 @@ _bash-it-describe () printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-$file_type)" done printf '\n%s\n' "to enable $preposition $file_type, do:" - printf '%s\n' "$ enable-$file_type <$file_type name> -or- $ enable-$file_type all" + 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' "$ disable-$file_type <$file_type name> -or- $ disable-$file_type all" + printf '%s\n' "$ bash-it disable $file_type <$file_type name> -or- $ bash-it disable $file_type all" } disable-plugin () From be20972cf0de26e6cf2e09e75f14c5667ffad83c Mon Sep 17 00:00:00 2001 From: Nils Winkler Date: Wed, 23 May 2012 09:24:42 +0200 Subject: [PATCH 7/8] Merged @erichs changes for the bash-it function. --- bash_it.sh | 23 +------ lib/helpers.bash | 152 +++++++++++++++++++++++++++++++---------------- 2 files changed, 105 insertions(+), 70 deletions(-) diff --git a/bash_it.sh b/bash_it.sh index 693c0241..226213fd 100755 --- a/bash_it.sh +++ b/bash_it.sh @@ -24,6 +24,9 @@ fi # 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 @@ if [ -e $HOME/.jekyllconfig ] 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 detailed help for a specific function" - echo -} diff --git a/lib/helpers.bash b/lib/helpers.bash index 2530d7fa..e1787fe0 100644 --- a/lib/helpers.bash +++ b/lib/helpers.bash @@ -29,33 +29,86 @@ function reload_plugins() { _load_bash_it_files "plugins" } -bash-it-aliases () +bash-it () { - about 'summarizes available bash_it aliases' - 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 () +_bash-it-completions () { - about 'summarizes available bash_it completions' - group 'lib' + _about 'summarizes available bash_it completions' + _group 'lib' _bash-it-describe "completion" "a" "completion" "Completion" } -bash-it-plugins () +_bash-it-plugins () { - about 'summarizes available bash_it plugins' - group 'lib' + _about 'summarizes available bash_it plugins' + _group 'lib' _bash-it-describe "plugins" "a" "plugin" "Plugin" } _bash-it-describe () { - cite _about _param _example _about 'summarizes available bash_it components' _param '1: subdirectory' _param '2: preposition' @@ -86,39 +139,38 @@ _bash-it-describe () 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' _disable-thing "plugins" "plugin" $1 } -disable-alias () +_disable-alias () { - about 'disables bash_it alias' - param '1: alias name' - example '$ disable-alias git' - group 'lib' + _about 'disables bash_it alias' + _param '1: alias name' + _example '$ disable-alias git' + _group 'lib' _disable-thing "aliases" "alias" $1 } -disable-completion () +_disable-completion () { - about 'disables bash_it completion' - param '1: completion name' - example '$ disable-completion git' - group 'lib' + _about 'disables bash_it completion' + _param '1: completion name' + _example '$ disable-completion git' + _group 'lib' _disable-thing "completion" "completion" $1 } _disable-thing () { - cite _about _param _example _about 'disables a bash_it component' _param '1: subdirectory' _param '2: file_type' @@ -155,32 +207,32 @@ _disable-thing () 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' _enable-thing "plugins" "plugin" $1 } -enable-alias () +_enable-alias () { - about 'enables bash_it alias' - param '1: alias name' - example '$ enable-alias git' - group 'lib' + _about 'enables bash_it alias' + _param '1: alias name' + _example '$ enable-alias git' + _group 'lib' _enable-thing "aliases" "alias" $1 } -enable-completion () +_enable-completion () { - about 'enables bash_it completion' - param '1: completion name' - example '$ enable-completion git' - group 'lib' + _about 'enables bash_it completion' + _param '1: completion name' + _example '$ enable-completion git' + _group 'lib' _enable-thing "completion" "completion" $1 } @@ -231,15 +283,15 @@ _enable-thing () printf '%s\n' "$file_entity enabled." } -alias-help () +_help-aliases() { - about 'shows help for all aliases, or a specific alias group' - param '1: optional alias group' - example '$ alias-help' - example '$ alias-help git' + _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/enabled/$1.aliases.bash | metafor alias | sed "s/$/'/" + cat $BASH_IT/aliases/available/$1.aliases.bash | metafor alias | sed "s/$/'/" else typeset f for f in $BASH_IT/aliases/enabled/* @@ -252,10 +304,10 @@ alias-help () fi } -plugins-help () +_help-plugins() { - about 'summarize all functions defined by enabled bash-it plugins' - group 'lib' + _about 'summarize all functions defined by enabled bash-it plugins' + _group 'lib' # display a brief progress message... printf '%s' 'please wait, building help...' From ee79a0e4654dba93e9d39e5f129b2afad823847e Mon Sep 17 00:00:00 2001 From: Erich Smith Date: Wed, 23 May 2012 21:43:18 -0400 Subject: [PATCH 8/8] update README --- README.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 0c9c303f..105d5be7 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 @@ Includes autocompletion, themes, aliases, custom functions, a few stolen pieces 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 @@ There are a few bash it themes. If you've created your own custom prompts, I'd 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!