class Zypper::Upgraderepo::Builder

Public Class Methods

new(options) click to toggle source
# File lib/zypper/upgraderepo.rb, line 14
def initialize(options)
  @os_release = OsRelease.new(options)
  @repos = RepositoryList.new(options).resolve_variables!(@os_release.current)
  @print_hint = options.hint
  @view_class = Zypper::Upgraderepo::View.const_get options.view.to_s.capitalize

  @backup_path = options.backup_path

  @exit_on_fail = options.exit_on_fail
end

Public Instance Methods

backup() click to toggle source
# File lib/zypper/upgraderepo.rb, line 25
def backup
  filename = File.join(@backup_path, "repos-backup-#{Time.now.to_s.delete(': +-')[0..-5]}.tgz")

  raise InvalidWritePermissions, filename unless File.writable? @backup_path

  Minitar.pack(RepositoryList::REPOSITORY_PATH, Zlib::GzipWriter.new(File.open(filename, 'wb')))

  Messages.ok "Backup file generated at #{filename.bold.green}"
end
check_current() click to toggle source
# File lib/zypper/upgraderepo.rb, line 35
def check_current
  check_repos(@os_release.current)
end
check_next() click to toggle source
# File lib/zypper/upgraderepo.rb, line 39
def check_next
  raise AlreadyUpgraded, 'latest' if @os_release.last?
  @repos.upgrade!(@os_release.next)
  check_repos(@os_release.next)
end
check_to() click to toggle source
# File lib/zypper/upgraderepo.rb, line 45
def check_to
  @repos.upgrade!(@os_release.custom)
  check_repos(@os_release.custom)
end
reset() click to toggle source
# File lib/zypper/upgraderepo.rb, line 62
def reset
  upgrade_repos(@os_release.current)
end
upgrade() click to toggle source
# File lib/zypper/upgraderepo.rb, line 50
def upgrade
  raise AlreadyUpgraded, 'latest' if @os_release.last?
  @repos.upgrade!(@os_release.next)
  upgrade_repos(@os_release.next)
end
upgrade_to() click to toggle source
# File lib/zypper/upgraderepo.rb, line 56
def upgrade_to
  raise AlreadyUpgraded, @os_release.custom if @os_release.current?(@os_release.custom)
  @repos.upgrade!(@os_release.custom)
  upgrade_repos(@os_release.custom)
end

Private Instance Methods

check_repos(version) click to toggle source
# File lib/zypper/upgraderepo.rb, line 69
def check_repos(version)
  @view_class.header(@repos.max_col)

  @repos.each_with_number do |repo, num|

    @view_class.separator

    if repo.available?
      @view_class.available num, repo, @repos.max_col
    else
      raise UnableToUpgrade, { num: num, repo: repo } if @exit_on_fail
      if repo.redirected?
        @view_class.redirected num, repo, @repos.max_col, repo.redirected_to
      elsif repo.not_found?
        if @print_hint
          @view_class.alternative num, repo, @repos.max_col, repo.evaluate_alternative(version)
        else
          @view_class.not_found num, repo, @repos.max_col
        end
      elsif repo.timeout?
        @view_class.timeout num, repo, @repos.max_col
      end
    end
  end

  @view_class.footer
end
upgrade_repos(version) click to toggle source
# File lib/zypper/upgraderepo.rb, line 97
def upgrade_repos(version)
  @view_class.header(@repos.max_col, true)

  @repos.each_with_number do |repo, num|

    @view_class.separator

    if repo.upgraded?
      @view_class.upgraded num, repo, @repos.max_col
    else
      @view_class.untouched num, repo, @repos.max_col
    end
  end

  @view_class.separator

  @repos.save
  Messages.ok 'Repositories upgraded!'
end