Extended enable/disable and describe functionality to work for aliases and completions as well.

pull/139/head
Nils Winkler 2012-05-21 13:24:49 +02:00
parent 311f95b6ce
commit 1f558e2550
2 changed files with 122 additions and 32 deletions

View File

@ -1,5 +1,8 @@
#!/usr/bin/env bash #!/usr/bin/env bash
cite about-plugin
about-plugin 'general aliases'
# List directory contents # List directory contents
alias sl=ls alias sl=ls
alias ls='ls -G' # Compact view, show colors alias ls='ls -G' # Compact view, show colors

View File

@ -29,27 +29,56 @@ function reload_plugins() {
_load_bash_it_files "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 () bash-it-plugins ()
{ {
about 'summarizes available bash_it plugins' about 'summarizes available bash_it plugins'
group 'lib' 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 f
typeset enabled typeset enabled
printf "%-20s%-10s%s\n" 'Plugin' 'Enabled?' 'Description' printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description'
for f in $BASH_IT/plugins/available/*.bash for f in $BASH_IT/$file_type/available/*.bash
do do
if [ -e $BASH_IT/plugins/enabled/$(basename $f) ]; then if [ -e $BASH_IT/$file_type/enabled/$(basename $f) ]; then
enabled='x' enabled='x'
else else
enabled=' ' enabled=' '
fi 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-plugin)"
done done
printf '\n%s\n' 'to enable a plugin, do:' printf '\n%s\n' "to enable $preposition $command_suffix, do:"
printf '%s\n' '$ enable-plugin <plugin name> -or- $ enable-plugin all' printf '%s\n' "$ enable-$command_suffix <$command_suffix name> -or- $ enable-$command_suffix all"
printf '\n%s\n' 'to disable a plugin, do:' printf '\n%s\n' "to disable $preposition $command_suffix, do:"
printf '%s\n' '$ disable-plugin <plugin name> -or- $ disable-plugin all' printf '%s\n' "$ disable-$command_suffix <$command_suffix name> -or- $ disable-$command_suffix all"
} }
disable-plugin () disable-plugin ()
@ -59,30 +88,59 @@ disable-plugin ()
example '$ disable-plugin rvm' example '$ disable-plugin rvm'
group 'lib' group 'lib'
if [ -z "$1" ]; then _disable-thing "plugins" "plugin" $1
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 return
fi fi
if [ "$1" = "all" ]; then if [ "$file_entity" = "all" ]; then
typeset f plugin typeset f $command_suffix
for f in $BASH_IT/plugins/available/*.bash for f in $BASH_IT/$file_type/available/*.bash
do do
plugin=$(basename $f) plugin=$(basename $f)
if [ -e $BASH_IT/plugins/enabled/$plugin ]; then if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then
rm $BASH_IT/plugins/enabled/$(basename $plugin) rm $BASH_IT/$file_type/enabled/$(basename $plugin)
fi fi
done done
else else
typeset plugin=$(command ls $BASH_IT/plugins/enabled/$1.*bash 2>/dev/null | head -1) typeset plugin=$(command ls $BASH_IT/$file_type/enabled/$file_entity.*bash 2>/dev/null | head -1)
if [ ! -h $plugin ]; then if [ -z "$plugin" ]; then
printf '%s\n' 'sorry, that does not appear to be an enabled plugin.' printf '%s\n' "sorry, that does not appear to be an enabled $command_suffix."
return return
fi fi
rm $BASH_IT/plugins/enabled/$(basename $plugin) rm $BASH_IT/$file_type/enabled/$(basename $plugin)
fi fi
printf '%s\n' "$1 disabled." printf '%s\n' "$file_entity disabled."
} }
enable-plugin () enable-plugin ()
@ -92,37 +150,66 @@ enable-plugin ()
example '$ enable-plugin rvm' example '$ enable-plugin rvm'
group 'lib' group 'lib'
if [ -z "$1" ]; then _enable-thing "plugins" "plugin" $1
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 return
fi fi
if [ "$1" = "all" ]; then if [ "$file_entity" = "all" ]; then
typeset f plugin typeset f $command_suffix
for f in $BASH_IT/plugins/available/*.bash for f in $BASH_IT/$file_type/available/*.bash
do do
plugin=$(basename $f) plugin=$(basename $f)
if [ ! -h $BASH_IT/plugins/enabled/$plugin ]; then if [ ! -h $BASH_IT/$file_type/enabled/$plugin ]; then
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 fi
done done
else 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 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 return
fi fi
plugin=$(basename $plugin) plugin=$(basename $plugin)
if [ -e $BASH_IT/plugins/enabled/$plugin ]; then if [ -e $BASH_IT/$file_type/enabled/$plugin ]; then
printf '%s\n' "$1 is already enabled." printf '%s\n' "$file_entity is already enabled."
return return
fi 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 fi
printf '%s\n' "$1 enabled." printf '%s\n' "$file_entity enabled."
} }
plugins-help () plugins-help ()