class Jeweler::Commands::Version::Base

def self.build_for(jeweler)

def self.build_for(jeweler)
  command = new
  command.repo = jeweler.repo
  command.version_helper = jeweler.version_helper
  command.gemspec = jeweler.gemspec
  command.commit = jeweler.commit
  command.base_dir = jeweler.base_dir
  command
end

def base_dir_path

def base_dir_path
  Pathname.new(base_dir).realpath
end

def commit_version

def commit_version
  if repo
    repo.add(working_subdir.join(version_helper.path).to_s)
    repo.commit("Version bump to #{version_helper}")
  end
end

def run

def run
  update_version
  version_helper.write
  gemspec.version = version_helper.to_s
  commit_version if repo && commit
end

def update_version

def update_version
  raise 'Subclasses should implement this'
end

def working_subdir

def working_subdir
  @working_subdir ||= base_dir_path.relative_path_from(Pathname.new(repo.dir.path))
end