Travis Swicegood | b524bb6 | 2012-03-26 11:19:38 -0500 | [diff] [blame] | 1 | # Helper function loading various enable-able files |
| 2 | function _load_bash_it_files() { |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 3 | subdirectory="$1" |
| 4 | if [ ! -d "${BASH_IT}/${subdirectory}/enabled" ] |
Travis Swicegood | b524bb6 | 2012-03-26 11:19:38 -0500 | [diff] [blame] | 5 | then |
| 6 | continue |
| 7 | fi |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 8 | FILES="${BASH_IT}/${subdirectory}/enabled/*.bash" |
Travis Swicegood | b524bb6 | 2012-03-26 11:19:38 -0500 | [diff] [blame] | 9 | for config_file in $FILES |
| 10 | do |
| 11 | if [ -e "${config_file}" ]; then |
| 12 | source $config_file |
| 13 | fi |
| 14 | done |
| 15 | } |
| 16 | |
| 17 | # Function for reloading aliases |
| 18 | function reload_aliases() { |
| 19 | _load_bash_it_files "aliases" |
| 20 | } |
| 21 | |
| 22 | # Function for reloading auto-completion |
| 23 | function reload_completion() { |
| 24 | _load_bash_it_files "completion" |
| 25 | } |
| 26 | |
| 27 | # Function for reloading plugins |
| 28 | function reload_plugins() { |
| 29 | _load_bash_it_files "plugins" |
| 30 | } |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 31 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 32 | bash-it () |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 33 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 34 | about 'bash-it help and maintenance' |
| 35 | param '1: verb [one of: help | show | enable | disable ]' |
| 36 | param '2: component type [one of: alias(es) | completion(s) | plugin(s) ]' |
| 37 | param '3: specific component [optional]' |
| 38 | example '$ bash-it show plugins' |
| 39 | example '$ bash-it help aliases' |
| 40 | example '$ bash-it enable plugin git' |
| 41 | example '$ bash-it disable alias hg' |
| 42 | typeset verb=${1:-} |
| 43 | shift |
| 44 | typeset component=${1:-} |
| 45 | shift |
| 46 | typeset func |
| 47 | case $verb in |
| 48 | show) |
| 49 | func=_bash-it-$component;; |
| 50 | enable) |
| 51 | func=_enable-$component;; |
| 52 | disable) |
| 53 | func=_disable-$component;; |
| 54 | help) |
| 55 | func=_help-$component;; |
| 56 | *) |
| 57 | reference bash-it |
| 58 | return;; |
| 59 | esac |
| 60 | |
| 61 | # pluralize component if necessary |
| 62 | if ! _is_function $func; then |
| 63 | if _is_function ${func}s; then |
| 64 | func=${func}s |
| 65 | else |
| 66 | if _is_function ${func}es; then |
| 67 | func=${func}es |
| 68 | else |
| 69 | echo "oops! $component is not a valid option!" |
| 70 | reference bash-it |
| 71 | return |
| 72 | fi |
| 73 | fi |
| 74 | fi |
| 75 | $func $* |
| 76 | } |
| 77 | |
| 78 | _is_function () |
| 79 | { |
| 80 | _about 'sets $? to true if parameter is the name of a function' |
| 81 | _param '1: name of alleged function' |
| 82 | _group 'lib' |
| 83 | [ -n "$(type -a $1 2>/dev/null | grep 'is a function')" ] |
| 84 | } |
| 85 | |
| 86 | _bash-it-aliases () |
| 87 | { |
| 88 | _about 'summarizes available bash_it aliases' |
| 89 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 90 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 91 | _bash-it-describe "aliases" "an" "alias" "Alias" |
| 92 | } |
| 93 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 94 | _bash-it-completions () |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 95 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 96 | _about 'summarizes available bash_it completions' |
| 97 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 98 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 99 | _bash-it-describe "completion" "a" "completion" "Completion" |
| 100 | } |
| 101 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 102 | _bash-it-plugins () |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 103 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 104 | _about 'summarizes available bash_it plugins' |
| 105 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 106 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 107 | _bash-it-describe "plugins" "a" "plugin" "Plugin" |
| 108 | } |
| 109 | |
| 110 | _bash-it-describe () |
| 111 | { |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 112 | _about 'summarizes available bash_it components' |
| 113 | _param '1: subdirectory' |
| 114 | _param '2: preposition' |
| 115 | _param '3: file_type' |
| 116 | _param '4: column_header' |
| 117 | _example '$ _bash-it-describe "plugins" "a" "plugin" "Plugin"' |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 118 | |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 119 | subdirectory="$1" |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 120 | preposition="$2" |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 121 | file_type="$3" |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 122 | column_header="$4" |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 123 | |
| 124 | typeset f |
| 125 | typeset enabled |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 126 | printf "%-20s%-10s%s\n" "$column_header" 'Enabled?' 'Description' |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 127 | for f in $BASH_IT/$subdirectory/available/*.bash |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 128 | do |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 129 | if [ -e $BASH_IT/$subdirectory/enabled/$(basename $f) ]; then |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 130 | enabled='x' |
| 131 | else |
| 132 | enabled=' ' |
| 133 | fi |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 134 | printf "%-20s%-10s%s\n" "$(basename $f | cut -d'.' -f1)" " [$enabled]" "$(cat $f | metafor about-$file_type)" |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 135 | done |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 136 | printf '\n%s\n' "to enable $preposition $file_type, do:" |
Nils Winkler | e82991b | 2012-05-23 09:31:35 +0200 | [diff] [blame] | 137 | printf '%s\n' "$ bash-it enable $file_type <$file_type name> -or- $ bash-it enable $file_type all" |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 138 | printf '\n%s\n' "to disable $preposition $file_type, do:" |
Nils Winkler | e82991b | 2012-05-23 09:31:35 +0200 | [diff] [blame] | 139 | printf '%s\n' "$ bash-it disable $file_type <$file_type name> -or- $ bash-it disable $file_type all" |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 140 | } |
| 141 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 142 | _disable-plugin () |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 143 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 144 | _about 'disables bash_it plugin' |
| 145 | _param '1: plugin name' |
| 146 | _example '$ disable-plugin rvm' |
| 147 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 148 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 149 | _disable-thing "plugins" "plugin" $1 |
| 150 | } |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 151 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 152 | _disable-alias () |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 153 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 154 | _about 'disables bash_it alias' |
| 155 | _param '1: alias name' |
| 156 | _example '$ disable-alias git' |
| 157 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 158 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 159 | _disable-thing "aliases" "alias" $1 |
| 160 | } |
| 161 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 162 | _disable-completion () |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 163 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 164 | _about 'disables bash_it completion' |
| 165 | _param '1: completion name' |
| 166 | _example '$ disable-completion git' |
| 167 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 168 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 169 | _disable-thing "completion" "completion" $1 |
| 170 | } |
| 171 | |
| 172 | _disable-thing () |
| 173 | { |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 174 | _about 'disables a bash_it component' |
| 175 | _param '1: subdirectory' |
| 176 | _param '2: file_type' |
| 177 | _param '3: file_entity' |
| 178 | _example '$ _disable-thing "plugins" "plugin" "ssh"' |
| 179 | |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 180 | subdirectory="$1" |
| 181 | file_type="$2" |
| 182 | file_entity="$3" |
| 183 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 184 | if [ -z "$file_entity" ]; then |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 185 | reference "disable-$file_type" |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 186 | return |
| 187 | fi |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 188 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 189 | if [ "$file_entity" = "all" ]; then |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 190 | typeset f $file_type |
| 191 | for f in $BASH_IT/$subdirectory/available/*.bash |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 192 | do |
| 193 | plugin=$(basename $f) |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 194 | if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then |
| 195 | rm $BASH_IT/$subdirectory/enabled/$(basename $plugin) |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 196 | fi |
| 197 | done |
| 198 | else |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 199 | typeset plugin=$(command ls $BASH_IT/$subdirectory/enabled/$file_entity.*bash 2>/dev/null | head -1) |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 200 | if [ -z "$plugin" ]; then |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 201 | printf '%s\n' "sorry, that does not appear to be an enabled $file_type." |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 202 | return |
| 203 | fi |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 204 | rm $BASH_IT/$subdirectory/enabled/$(basename $plugin) |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 205 | fi |
| 206 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 207 | printf '%s\n' "$file_entity disabled." |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 208 | } |
| 209 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 210 | _enable-plugin () |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 211 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 212 | _about 'enables bash_it plugin' |
| 213 | _param '1: plugin name' |
| 214 | _example '$ enable-plugin rvm' |
| 215 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 216 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 217 | _enable-thing "plugins" "plugin" $1 |
| 218 | } |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 219 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 220 | _enable-alias () |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 221 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 222 | _about 'enables bash_it alias' |
| 223 | _param '1: alias name' |
| 224 | _example '$ enable-alias git' |
| 225 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 226 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 227 | _enable-thing "aliases" "alias" $1 |
| 228 | } |
| 229 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 230 | _enable-completion () |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 231 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 232 | _about 'enables bash_it completion' |
| 233 | _param '1: completion name' |
| 234 | _example '$ enable-completion git' |
| 235 | _group 'lib' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 236 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 237 | _enable-thing "completion" "completion" $1 |
| 238 | } |
| 239 | |
| 240 | _enable-thing () |
| 241 | { |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 242 | cite _about _param _example |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 243 | _about 'enables a bash_it component' |
| 244 | _param '1: subdirectory' |
| 245 | _param '2: file_type' |
| 246 | _param '3: file_entity' |
| 247 | _example '$ _enable-thing "plugins" "plugin" "ssh"' |
| 248 | |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 249 | subdirectory="$1" |
| 250 | file_type="$2" |
| 251 | file_entity="$3" |
| 252 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 253 | if [ -z "$file_entity" ]; then |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 254 | reference "enable-$file_type" |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 255 | return |
| 256 | fi |
| 257 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 258 | if [ "$file_entity" = "all" ]; then |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 259 | typeset f $file_type |
| 260 | for f in $BASH_IT/$subdirectory/available/*.bash |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 261 | do |
| 262 | plugin=$(basename $f) |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 263 | if [ ! -h $BASH_IT/$subdirectory/enabled/$plugin ]; then |
| 264 | ln -s $BASH_IT/$subdirectory/available/$plugin $BASH_IT/$subdirectory/enabled/$plugin |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 265 | fi |
| 266 | done |
| 267 | else |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 268 | typeset plugin=$(command ls $BASH_IT/$subdirectory/available/$file_entity.*bash 2>/dev/null | head -1) |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 269 | if [ -z "$plugin" ]; then |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 270 | printf '%s\n' "sorry, that does not appear to be an available $file_type." |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 271 | return |
| 272 | fi |
| 273 | |
| 274 | plugin=$(basename $plugin) |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 275 | if [ -e $BASH_IT/$subdirectory/enabled/$plugin ]; then |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 276 | printf '%s\n' "$file_entity is already enabled." |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 277 | return |
| 278 | fi |
| 279 | |
Dave Paroulek | 75dbdaf | 2013-03-25 08:36:27 -0400 | [diff] [blame] | 280 | mkdir -p $BASH_IT/$subdirectory/enabled |
| 281 | |
Nils Winkler | 95ce548 | 2012-05-22 09:33:59 +0200 | [diff] [blame] | 282 | ln -s $BASH_IT/$subdirectory/available/$plugin $BASH_IT/$subdirectory/enabled/$plugin |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 283 | fi |
| 284 | |
Nils Winkler | 1f558e2 | 2012-05-21 13:24:49 +0200 | [diff] [blame] | 285 | printf '%s\n' "$file_entity enabled." |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 286 | } |
| 287 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 288 | _help-aliases() |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 289 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 290 | _about 'shows help for all aliases, or a specific alias group' |
| 291 | _param '1: optional alias group' |
| 292 | _example '$ alias-help' |
| 293 | _example '$ alias-help git' |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 294 | |
| 295 | if [ -n "$1" ]; then |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 296 | cat $BASH_IT/aliases/available/$1.aliases.bash | metafor alias | sed "s/$/'/" |
Erich Smith | 961c914 | 2012-05-21 23:55:31 -0400 | [diff] [blame] | 297 | else |
| 298 | typeset f |
| 299 | for f in $BASH_IT/aliases/enabled/* |
| 300 | do |
| 301 | typeset file=$(basename $f) |
| 302 | printf '\n\n%s:\n' "${file%%.*}" |
| 303 | # metafor() strips trailing quotes, restore them with sed.. |
| 304 | cat $f | metafor alias | sed "s/$/'/" |
| 305 | done |
| 306 | fi |
| 307 | } |
| 308 | |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 309 | _help-plugins() |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 310 | { |
Nils Winkler | be20972 | 2012-05-23 09:24:42 +0200 | [diff] [blame] | 311 | _about 'summarize all functions defined by enabled bash-it plugins' |
| 312 | _group 'lib' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 313 | |
Erich Smith | a825c5f | 2012-05-15 14:25:42 -0400 | [diff] [blame] | 314 | # display a brief progress message... |
| 315 | printf '%s' 'please wait, building help...' |
| 316 | typeset grouplist=$(mktemp /tmp/grouplist.XXXX) |
| 317 | typeset func |
| 318 | for func in $(typeset_functions) |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 319 | do |
Erich Smith | a825c5f | 2012-05-15 14:25:42 -0400 | [diff] [blame] | 320 | typeset group="$(typeset -f $func | metafor group)" |
| 321 | if [ -z "$group" ]; then |
| 322 | group='misc' |
| 323 | fi |
| 324 | typeset about="$(typeset -f $func | metafor about)" |
| 325 | letterpress "$about" $func >> $grouplist.$group |
| 326 | echo $grouplist.$group >> $grouplist |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 327 | done |
Erich Smith | a825c5f | 2012-05-15 14:25:42 -0400 | [diff] [blame] | 328 | # clear progress message |
| 329 | printf '\r%s\n' ' ' |
| 330 | typeset group |
| 331 | typeset gfile |
| 332 | for gfile in $(cat $grouplist | sort | uniq) |
| 333 | do |
| 334 | printf '%s\n' "${gfile##*.}:" |
| 335 | cat $gfile |
| 336 | printf '\n' |
| 337 | rm $gfile 2> /dev/null |
| 338 | done | less |
| 339 | rm $grouplist 2> /dev/null |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 340 | } |
| 341 | |
| 342 | all_groups () |
| 343 | { |
Erich Smith | 08e439c | 2012-05-13 08:37:31 -0400 | [diff] [blame] | 344 | about 'displays all unique metadata groups' |
| 345 | group 'lib' |
Erich Smith | 254d445 | 2012-05-11 14:25:24 -0400 | [diff] [blame] | 346 | |
| 347 | typeset func |
| 348 | typeset file=$(mktemp /tmp/composure.XXXX) |
| 349 | for func in $(typeset_functions) |
| 350 | do |
| 351 | typeset -f $func | metafor group >> $file |
| 352 | done |
| 353 | cat $file | sort | uniq |
| 354 | rm $file |
| 355 | } |