mirror of
https://github.com/oh-my-fish/oh-my-fish
synced 2024-11-15 12:12:45 +00:00
70 lines
2.0 KiB
Fish
70 lines
2.0 KiB
Fish
function omf.install -a type_flag name_or_url
|
|
function _write_bundle
|
|
set bundle $OMF_CONFIG/bundle
|
|
set record $argv
|
|
|
|
if test -f $bundle
|
|
if not grep $record $bundle > /dev/null 2>&1
|
|
echo $record >> $bundle
|
|
end
|
|
else
|
|
echo $record > $bundle
|
|
end
|
|
end
|
|
|
|
function _display_success
|
|
echo (omf::em)"✔ $argv succesfully installed."(omf::off)
|
|
end
|
|
|
|
function _display_error
|
|
echo (omf::err)"Could not install $argv."(omf::off) 1^&2
|
|
return $OMF_UNKNOWN_ERR
|
|
end
|
|
|
|
switch $type_flag
|
|
case "--theme"
|
|
set install_type "theme"
|
|
set parent_path "themes"
|
|
case "--pkg"
|
|
set install_type "package"
|
|
set parent_path "pkg"
|
|
case "*"
|
|
echo (omf::err)"Argument to omf.install must be --theme [name|URL] or --pkg [name|URL]"(omf::off)
|
|
return $OMF_INVALID_ARG
|
|
end
|
|
|
|
if test -e $OMF_PATH/db/$parent_path/$name_or_url
|
|
set target $parent_path/$name_or_url
|
|
else
|
|
set -l local_name (basename $name_or_url)
|
|
if test -e $OMF_PATH/$parent_path/$local_name
|
|
echo (omf::err)"Error: $local_name $install_type already installed."(omf::off) 1^&2
|
|
else
|
|
echo (omf::dim)"Trying to clone from URL..."(omf::off)
|
|
if git clone -q $name_or_url $OMF_PATH/$parent_path/$local_name
|
|
_write_bundle "$install_type $name_or_url"
|
|
_display_success "$install_type $name_or_url"
|
|
else
|
|
_display_error "$install_type $name_or_url"
|
|
end
|
|
end
|
|
return 0
|
|
end
|
|
|
|
if test -e $OMF_PATH/$target
|
|
echo (omf::dim)"Updating $name_or_url $install_type..."(omf::off)
|
|
pushd $OMF_PATH/$target
|
|
omf.util_sync "origin" >/dev/null ^&1
|
|
popd
|
|
echo (omf::em)"✔ $name_or_url $install_type up to date."(omf::off)
|
|
else
|
|
echo (omf::dim)"Installing $name_or_url $install_type..."(omf::off)
|
|
if git clone (cat $OMF_PATH/db/$target) $OMF_PATH/$target >/dev/null ^&1
|
|
_write_bundle "$install_type $name_or_url"
|
|
_display_success "$install_type $name_or_url"
|
|
else
|
|
_display_error "$install_type $name_or_url"
|
|
end
|
|
end
|
|
end
|