Merge all omf list functions

This commit is contained in:
Bruno Pinto 2015-10-06 21:31:44 +01:00
parent dc8ec2ec1d
commit 870efd0dda
10 changed files with 85 additions and 46 deletions

View File

@ -2,8 +2,8 @@ function omf.bundle.install
set bundle $OMF_CONFIG/bundle
if test -f $bundle
set packages (omf.list_local_packages)
set themes (omf.list_installed_themes)
set packages (omf.packages.list --installed --plugin)
set themes (omf.packages.list --installed --theme)
set bundle_contents (cat $bundle | sort -u)
for record in $bundle_contents

View File

@ -1,10 +1,11 @@
function omf.describe -a name
if test (count $argv) -eq 0
for package in (omf.list_db_packages)
for package in (omf.packages.list --database)
echo $package - (omf.describe $package)
end
else
set package_path $OMF_PATH/db/pkg/$name
if test -e $package_path
set url (cat $package_path)
set repo (basename (dirname $url))/(basename $url)

View File

@ -1,11 +0,0 @@
# List all packages available to install from the registry.
function omf.list_db_packages -a skip_installed
for item in (basename $OMF_PATH/db/pkg/*)
if begin
test -z $skip_installed
or not contains $item (basename {$OMF_PATH,$OMF_CONFIG}/pkg/*)
end
echo $item
end
end
end

View File

@ -1,6 +0,0 @@
# List all packages installed from the registry.
function omf.list_installed_packages
for item in (basename $OMF_PATH/pkg/*)
test $item = omf; or echo $item
end
end

View File

@ -1,3 +0,0 @@
function omf.list_installed_themes
basename $OMF_PATH/themes/*
end

View File

@ -1,6 +0,0 @@
# List all custom packages and packages installed from the registry.
function omf.list_local_packages
for item in (basename {$OMF_PATH,$OMF_CONFIG}/pkg/*)
test $item = omf; or echo $item
end
end

View File

@ -1,8 +0,0 @@
function omf.list_themes
set -l seen ""
for theme in (basename $OMF_PATH/db/themes/*) \
(basename {$OMF_PATH,$OMF_CONFIG}/themes/*)
contains $theme $seen; or echo $theme
set seen $seen $theme
end
end

View File

@ -0,0 +1,72 @@
function __omf.packages.sort
for package in (echo $argv | tr ' ' '\n' | sort); echo $package; end
end
function __omf.packages.list -a type
set -l list
test "$type" = "--theme"; or for package in (basename {$OMF_CONFIG,$OMF_PATH/db}/pkg/*)
set list $list $package
end
test "$type" = "--plugin"; or for package in (basename {$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
test "$type" = "--theme"; or for package in (basename $OMF_PATH/db/pkg/*)
contains $package (basename {$OMF_CONFIG,$OMF_PATH}/pkg/*); or set list $list $package
end
test "$type" = "--plugin"; or for package in (basename $OMF_PATH/db/themes/*)
contains $package (basename {$OMF_CONFIG,$OMF_PATH}/themes/*); or set list $list $package
end
__omf.packages.sort $list
end
function __omf.packages.list.database -a type
set -l list
test "$type" = "--theme"; or for package in (basename $OMF_PATH/db/pkg/*)
set list $list $package
end
test "$type" = "--plugin"; or for package in (basename $OMF_PATH/db/themes/*)
set list $list $package
end
__omf.packages.sort $list
end
function __omf.packages.list.installed -a type
set -l list
test "$type" = "--theme"; or for package in (basename {$OMF_CONFIG,$OMF_PATH}/pkg/*)
set list $list $package
end
test "$type" = "--plugin"; or for package in (basename {$OMF_CONFIG,$OMF_PATH}/themes/*)
set list $list $package
end
__omf.packages.sort $list
end
function omf.packages.list -a option type
switch "$option"
case "--available"
__omf.packages.list.available $type
case "--database"
__omf.packages.list.database $type
case "--installed"
__omf.packages.list.installed $type
case "*"
__omf.packages.list $type
end
end

View File

@ -3,11 +3,11 @@
complete -c omf -f -d "Oh My Fish"
complete -c omf -f -n "__fish_seen_subcommand_from r rm remove" -a (printf "%s " (omf.list_local_packages) (omf.list_installed_themes))
complete -c omf -f -n "__fish_seen_subcommand_from d desc describe" -a (printf "%s " (omf.list_db_packages))
complete -c omf -f -n "__fish_seen_subcommand_from c cd" -a (printf "%s " (omf.list_db_packages))
complete -c omf -f -n "__fish_seen_subcommand_from i install" -a (printf "%s " (omf.list_db_packages "skip installed packages"))
complete -c omf -f -n "__fish_seen_subcommand_from t theme" -a (printf "%s " (omf.list_themes))
complete -c omf -f -n "__fish_seen_subcommand_from r rm remove" -a (printf "%s " (omf.packages.list --installed))
complete -c omf -f -n "__fish_seen_subcommand_from d desc describe" -a (printf "%s " (omf.packages.list --database --plugin))
complete -c omf -f -n "__fish_seen_subcommand_from c cd" -a (printf "%s " (omf.packages.list --installed))
complete -c omf -f -n "__fish_seen_subcommand_from i install" -a (printf "%s " (omf.packages.list --available --plugin))
complete -c omf -f -n "__fish_seen_subcommand_from t theme" -a (printf "%s " (omf.packages.list --database --theme))
complete -c omf -f -n "__fish_seen_subcommand_from help" -a "install theme remove update list describe cd new submit destroy doctor"
complete -c omf -f -a list -n "__fish_use_subcommand" -d "List local packages"

View File

@ -83,7 +83,7 @@ function omf -d "Oh My Fish"
end
case "l" "ls" "list"
omf.list_local_packages | column
omf.packages.list --installed | column
case "n" "new"
if test (count $argv) -ne 3
@ -118,10 +118,10 @@ function omf -d "Oh My Fish"
set -l regex "[[:<:]]($theme)[[:>:]]"
test "$ostype" != "Darwin"; and set regex "\b($theme)\b"
omf.list_themes | column | sed -E "s/$regex/"(omf::em)"\1"(omf::off)"/"
omf.packages.list --database --theme | column | sed -E "s/$regex/"(omf::em)"\1"(omf::off)"/"
omf::off
else if test (count $argv) -eq 2
if not contains -- $argv[2] (omf.list_installed_themes)
if not contains -- $argv[2] (omf.packages.list --installed)
omf.install --theme $argv[2]; or return 1
end
omf.theme $argv[2]
@ -140,7 +140,7 @@ function omf -d "Oh My Fish"
echo "Please open a new issue here → "(omf::em)"github.com/oh-my-fish/oh-my-fish/issues"(omf::off)
end
omf.theme (cat $OMF_CONFIG/theme)
omf.install_package (omf.list_installed_packages)
omf.install_package (omf.packages.list --installed --plugin)
refresh
case "*"