From 17de8c4b6b076617bb9908daf4b0114ee1f77432 Mon Sep 17 00:00:00 2001 From: Derek Willian Stavis Date: Tue, 31 May 2016 18:16:02 -0300 Subject: [PATCH] list: refactor code, fix fish 2.3.0 globs (#325) --- pkg/omf/functions/cli/omf.cli.help.fish | 4 +- pkg/omf/functions/cli/omf.cli.list.fish | 22 ++--- .../functions/packages/omf.packages.list.fish | 92 +++++++++++-------- 3 files changed, 67 insertions(+), 51 deletions(-) diff --git a/pkg/omf/functions/cli/omf.cli.help.fish b/pkg/omf/functions/cli/omf.cli.help.fish index d21bb16..e07ca93 100644 --- a/pkg/omf/functions/cli/omf.cli.help.fish +++ b/pkg/omf/functions/cli/omf.cli.help.fish @@ -62,7 +62,9 @@ function omf.cli.help -a command List local packages. "(omf::dim)"Usage:"(omf::off)" - omf list + omf list [ --available | -a ] + omf list [ --installed | -i ] + omf list [ --database | -d ] " case "n" "new" diff --git a/pkg/omf/functions/cli/omf.cli.list.fish b/pkg/omf/functions/cli/omf.cli.list.fish index dbabafe..3e89696 100644 --- a/pkg/omf/functions/cli/omf.cli.list.fish +++ b/pkg/omf/functions/cli/omf.cli.list.fish @@ -1,14 +1,12 @@ -function omf.cli.list -a type - test -z "$type"; and set type '--installed' - - if contains -- $type '--available' '-a' '--database' '-d' '--installed' '-i' - omf.packages.list $type | column - else - echo (omf::err)"Invalid arguments"(omf::off) - echo 'Usage: omf list [ --available | -a ]' - echo ' omf list [ --installed | -i ]' - echo ' omf list [ --database | -d ]' - return $OMF_INVALID_ARG +function omf.cli.list + switch (count $argv) + case 0 + echo (set_color -u)Plugins(set_color normal) + omf.packages.list --installed --plugin | column + echo + echo (set_color -u)Themes(set_color normal) + omf.packages.list --installed --theme | column + case '*' + omf.packages.list $argv | column end - end diff --git a/pkg/omf/functions/packages/omf.packages.list.fish b/pkg/omf/functions/packages/omf.packages.list.fish index 64511b5..4bae755 100644 --- a/pkg/omf/functions/packages/omf.packages.list.fish +++ b/pkg/omf/functions/packages/omf.packages.list.fish @@ -1,69 +1,85 @@ -function __omf.packages.sort - for package in (echo $argv | tr ' ' '\n' | sort); echo $package; end -end +set -l builtin_package_path {$OMF_PATH,$OMF_CONFIG}/pkg*/{omf,fish-spec} -function __omf.packages.builtin - echo "omf" - echo "fish-spec" -end - -function __omf.packages.list -a type - set -l list - - test "$type" = "--theme"; or for package in (basename -a {$OMF_CONFIG,$OMF_PATH/db}/pkg/*) - contains $package (__omf.packages.builtin); or set list $list $package +function __omf.packages.basename + set -l IFS / + for path in $argv + echo $path | read -la components + echo $components[-1] end - - test "$type" = "--plugin"; or for package in (basename -a {$OMF_CONFIG,$OMF_PATH/db}/themes/*) - set list $list $package - end - - __omf.packages.sort $list end function __omf.packages.list.available -a type - set -l list + set -l database_package_path $OMF_PATH/db/pkg/* + set -l database_theme_path $OMF_PATH/db/themes/* + set -l installed_package_path {$OMF_CONFIG,$OMF_PATH}/pkg/* + set -l installed_theme_path {$OMF_CONFIG,$OMF_PATH}/themes/* - test "$type" = "--theme"; or for package in (basename -a $OMF_PATH/db/pkg/*) - contains $package (basename -a {$OMF_CONFIG,$OMF_PATH}/pkg/*); or set list $list $package + set -l database_packages (__omf.packages.basename $database_package_path) + set -l database_themes (__omf.packages.basename $database_theme_path) + set -l installed_packages (__omf.packages.basename $installed_package_path) + set -l installed_themes (__omf.packages.basename $installed_theme_path) + + test "$type" = "--theme"; or for package in $database_packages + contains $package $installed_packages; or echo $package end - test "$type" = "--plugin"; or for package in (basename -a $OMF_PATH/db/themes/*) - contains $package (basename -a {$OMF_CONFIG,$OMF_PATH}/themes/*); or set list $list $package + test "$type" = "--plugin"; or for theme in $database_themes + contains $path $installed_themes; or echo $theme end - - __omf.packages.sort $list end function __omf.packages.list.database -a type set -l list + set -l database_package_path $OMF_PATH/db/pkg/* + set -l database_theme_path $OMF_PATH/db/themes/* - test "$type" = "--theme"; or for package in (basename -a $OMF_PATH/db/pkg/*) - set list $list $package + test "$type" = "--theme"; or for path in $database_package_path + set list $list $path end - test "$type" = "--plugin"; or for package in (basename -a $OMF_PATH/db/themes/*) - set list $list $package + test "$type" = "--plugin"; or for path in $database_theme_path + set list $list $path end - __omf.packages.sort $list + __omf.packages.basename $list end function __omf.packages.list.installed -a type set -l list + set -l installed_package_path $OMF_PATH/pkg/* + set -l installed_theme_path $OMF_PATH/themes/* - test "$type" = "--theme"; or for package in (basename -a {$OMF_CONFIG,$OMF_PATH}/pkg/*) - contains $package (__omf.packages.builtin); or set list $list $package + test "$type" = "--theme"; or for path in $installed_package_path + contains $path $builtin_package_path; or set list $list $path end - test "$type" = "--plugin"; or for package in (basename -a {$OMF_CONFIG,$OMF_PATH}/themes/* 2>/dev/null) - set list $list $package + test "$type" = "--plugin"; or for path in $installed_theme_path + set list $list $path end - __omf.packages.sort $list + __omf.packages.basename $list end -function omf.packages.list -a option type +function omf.packages.list + set -l type_index (begin + contains -i -- --theme $argv + contains -i -- -t $argv + contains -i -- --plugin $argv + contains -i -- -p $argv + end) + + set -l option_index (begin + contains -i -- --available $argv + contains -i -- -a $argv + contains -i -- --installed $argv + contains -i -- -i $argv + contains -i -- --database $argv + contains -i -- -d $argv + end) + + set -l option $argv[$option_index] + set -l type $argv[$type_index] + switch "$option" case "-a" "--available" __omf.packages.list.available $type @@ -72,6 +88,6 @@ function omf.packages.list -a option type case "-i" "--installed" __omf.packages.list.installed $type case "*" - __omf.packages.list $type + __omf.packages.list.installed $type end end