class Zypper::Upgraderepo::Repository

Attributes

filename[R]
old_alias[R]
old_name[R]
old_url[R]

Public Class Methods

new(filename) click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 108
def initialize(filename)
  @filename = filename
  @repo = IniParse.parse(File.read(filename))
  @key = get_key
  @old_url = nil
  @old_name = nil
  @old_alias = nil
end

Public Instance Methods

alias() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 161
def alias
  @key
end
alias=(value) click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 165
def alias=(value)
  @repo = IniParse.parse(@repo.to_ini.sub(/\[[^\]]+\]/, "[#{value}]"))
  @key = get_key
end
enable!(value = true) click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 121
def enable!(value = true)
  @repo[@key]['enabled'] = (value.to_s =~ /true|1|yes/i) ? 1 : 0
end
enabled?() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 117
def enabled?
  @repo[@key]['enabled'].to_i == 1
end
name() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 129
def name
  @repo[@key]['name'] || @key
end
name=(value) click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 133
def name=(value)
  @repo[@key]['name'] = value
end
priority() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 137
def priority
  @repo[@key]['priority'] || 99
end
protocol() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 149
def protocol
  URI(url.to_s).scheme
end
save() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 189
def save
  raise InvalidWritePermissions, @filename unless File.writable? @filename
  process, pid = libzypp_process
  raise SystemUpdateRunning, { pid: pid, process: process } if pid
  @repo.save(@filename)
end
type() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 125
def type
  @repo[@key]['type']
end
unversioned?() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 153
def unversioned?
  (url =~ /\d\d\.\d/).nil?
end
upgrade!(version, args = {}) click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 170
def upgrade!(version, args = {})
  @old_url ||= self.url
  @old_alias ||= self.alias
  @old_name ||= self.name

  if args[:url_override]
    self.url = args[:url_override]
  else
    self.url = self.url.gsub(/\d\d\.\d/, version)
  end

  self.alias = self.alias.gsub(/\d\d\.\d/, version) if args[:alias]
  self.name = self.name.gsub(/\d\d\.\d/, version) if args[:name]
end
upgraded?(item = :url) click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 185
def upgraded?(item = :url)
  (!self.send("old_#{item}").nil?) && (self.send("old_#{item}") != self.send(item))
end
url() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 141
def url
  @repo[@key]['baseurl']
end
url=(value) click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 145
def url=(value)
  @repo[@key]['baseurl'] = value
end
versioned?() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 157
def versioned?
  !unversioned?
end

Private Instance Methods

get_key() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 206
def get_key
  @repo.to_hash.keys.delete_if {|k| k == '0'}.pop
end
libzypp_process() click to toggle source
# File lib/zypper/upgraderepo/repository.rb, line 199
def libzypp_process
  libpath = `ldd /usr/bin/zypper | grep "libzypp.so"`.split(' => ')[1].split(' ').shift
  process = `sudo lsof #{libpath} | tail -n 1`
  process, pid = process.split(' ')
  [process, pid]
end