lib/vim-flavor/facade.rb in vim-flavor-2.0.0 vs lib/vim-flavor/facade.rb in vim-flavor-2.1.0
- old
+ new
@@ -2,16 +2,21 @@
require 'shellwords'
module Vim
module Flavor
class Facade
+ def initialize
+ @target_repo_names = []
+ end
+
def install(vimfiles_path)
- install_or_upgrade(:install, vimfiles_path)
+ install_or_update(:install, vimfiles_path)
end
- def upgrade(vimfiles_path)
- install_or_upgrade(:upgrade, vimfiles_path)
+ def update(vimfiles_path, target_repo_names)
+ @target_repo_names = target_repo_names
+ install_or_update(:update, vimfiles_path)
end
def test(files_or_dirs)
trace "-------- Preparing dependencies\n"
@@ -53,11 +58,11 @@
dirs.any? or vim_files.any?
succeeded = system(commands.join('&&'))
exit(1) unless succeeded
end
- def install_or_upgrade(mode, vimfiles_path)
+ def install_or_update(mode, vimfiles_path)
flavorfile = FlavorFile.load(Dir.getwd().to_flavorfile_path)
lockfile = LockFile.load_or_new(Dir.getwd().to_lockfile_path)
refresh_flavors(
mode,
flavorfile,
@@ -85,12 +90,12 @@
)
trace "Completed.\n"
end
- def complete(current_flavor_table, locked_flavor_table, mode, level = 1)
- nfs = complete_flavors(current_flavor_table, locked_flavor_table, mode, level, 'you')
+ def complete(current_flavor_table, locked_flavor_table, mode)
+ nfs = complete_flavors(current_flavor_table, locked_flavor_table, mode, 1, 'you')
Hash[
nfs.group_by {|nf| nf.repo_name}.map {|repo_name, nfg|
[repo_name, choose_a_flavor(nfg)]
}
@@ -139,16 +144,25 @@
lf = locked_flavor_table[nf.repo_name]
[complete_a_flavor_itself(nf, lf, mode, level, requirer)] +
complete_a_flavor_dependencies(nf, locked_flavor_table, mode, level)
end
+ def effective_mode(mode, repo_name)
+ return :install if
+ mode == :update and
+ not @target_repo_names.empty? and
+ not @target_repo_names.member?(repo_name)
+ mode
+ end
+
def complete_a_flavor_itself(nf, lf, mode, level, requirer)
trace "#{' ' * level}Use #{nf.repo_name} ..."
already_cached = nf.cached?
nf.clone() unless already_cached
- if mode == :install and lf and nf.satisfied_with?(lf.locked_version)
+ e_mode = effective_mode(mode, nf.repo_name)
+ if e_mode == :install and lf and nf.satisfied_with?(lf.locked_version)
if not nf.cached_version?(lf.locked_version)
nf.fetch()
if not nf.cached_version?(lf.locked_version)
raise RuntimeError, "#{nf.repo_name} is locked to #{lf.locked_version}, but no such version exists"
end