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