bin/install & omf.repo.pull adding -C $git_dir removing pushd and popd

This commit is contained in:
jeremiejig 2015-09-17 19:39:15 +02:00
parent 1994b658ff
commit 5cdde2639a
3 changed files with 22 additions and 20 deletions

View File

@ -40,9 +40,7 @@ function omf.install -a type_flag name_or_url
if test -e $OMF_PATH/$target
echo (omf::dim)"Updating $name_or_url $install_type..."(omf::off)
pushd $OMF_PATH/$target
omf.repo.pull
popd
omf.repo.pull $OMF_PATH/$target
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)

View File

@ -1,42 +1,48 @@
function omf.repo.pull
if test (command git config --get remote.upstream.url)
if test (count $argv) -eq 0
echo (omf::err)"Argument of omf.repo.pull is the repo path."(omf::off)
return $OMF_MISSING_ARG
end
set -l git_dir $argv[1]
if test (command git -C "$git_dir" config --get remote.upstream.url)
set repository upstream
else
set repository origin
end
set initial_branch (command git symbolic-ref -q --short HEAD); or return $OMF_UNKNOWN_ERR
set initial_revision (command git rev-parse -q --verify HEAD); or return $OMF_UNKNOWN_ERR
set initial_branch (command git -C "$git_dir" symbolic-ref -q --short HEAD); or return $OMF_UNKNOWN_ERR
set initial_revision (command git -C "$git_dir" rev-parse -q --verify HEAD); or return $OMF_UNKNOWN_ERR
if not command git diff --quiet
if not command git -C "$git_dir" diff --quiet
echo (omf::em)"Stashing your changes:"(omf::off)
command git status --short --untracked-files
command git -C "$git_dir" status --short --untracked-files
command git stash save --include-untracked --quiet
command git -C "$git_dir" stash save --include-untracked --quiet
set stashed true
end
if test "$initial_branch" != master
command git checkout master --quiet
command git -C "$git_dir" checkout master --quiet
end
# the refspec ensures that '$repository/master' gets updated
command git pull --rebase --quiet $repository "refs/heads/master:refs/remotes/$repository/master"
command git -C "$git_dir" pull --rebase --quiet $repository "refs/heads/master:refs/remotes/$repository/master"
if test $status -eq 2 #SIGINT
command git checkout $initial_branch
command git reset --hard $initial_revision
test "$stashed" = true; and command git stash pop
command git -C "$git_dir" checkout $initial_branch
command git -C "$git_dir" reset --hard $initial_revision
test "$stashed" = true; and command git -C "$git_dir" stash pop
end
if test "$initial_branch" != master
command git checkout $initial_branch --quiet
command git -C "$git_dir" checkout $initial_branch --quiet
end
if test "$stashed" = true
command git stash pop --quiet
command git -C "$git_dir" stash pop --quiet
echo (omf::em)"Restored your changes:"(omf::off)
command git status --short --untracked-files
command git -C "$git_dir" status --short --untracked-files
end
return 0

View File

@ -123,9 +123,8 @@ function omf -d "Oh My Fish"
omf.remove_package $argv[2] ; and refresh
case "u" "up" "upd" "update"
pushd $OMF_PATH
echo (omf::em)"Updating Oh My Fish..."(omf::off)
if omf.repo.pull
if omf.repo.pull $OMF_PATH
echo (omf::em)"Oh My Fish is up to date."(omf::off)
else
echo (omf::err)"Oh My Fish failed to update."(omf::off)
@ -133,7 +132,6 @@ function omf -d "Oh My Fish"
end
omf.theme (cat $OMF_CONFIG/theme)
omf.install_package (omf.list_installed_packages)
popd
refresh
case "s" "su" "sub" "submit"