Class: Slackware::System

Inherits:
Object
  • Object
show all
Defined in:
lib/slackware/system.rb

Class Method Summary collapse

Class Method Details

.arch_usedObject



78
79
80
# File 'lib/slackware/system.rb', line 78

def self::arch_used
  return installed_packages().map {|p| p.arch }.uniq
end

.debug(msg) ⇒ Object

A debug log helper



38
39
40
# File 'lib/slackware/system.rb', line 38

def self::debug(msg)
  Slackware::Log.instance.debug(self.name) { msg }
end

.find_installed(name) ⇒ Object



86
87
88
89
# File 'lib/slackware/system.rb', line 86

def self::find_installed(name)
  d = Dir.new(Paths::installed_packages())
  return d.select {|p| p.include?(name) }.map {|p| Package.parse(p) }
end

.find_removed(name) ⇒ Object



91
92
93
94
# File 'lib/slackware/system.rb', line 91

def self::find_removed(name)
  d = Dir.new(Paths::removed_packages())
  return d.select {|p| p.include?(name) }.map {|p| Package.parse(p) }
end

.installed_after(time) ⇒ Object

Return an Array of packages, that were installed after provided time (“installed” meaning the file’s mtime)



109
110
111
112
113
114
115
116
117
118
119
# File 'lib/slackware/system.rb', line 109

def self::installed_after(time)
  arr = []
  Dir.new(Paths::installed_packages()).each {|p|
    if (File.mtime(Paths::installed_packages(p)) >= time)
      pkg = Package.parse(p)
      pkg.get_time
      arr << pkg
    end
  }
  return arr
end

.installed_before(time) ⇒ Object

Return an Array of packages, that were installed before provided time (“installed” meaning the file’s mtime)



123
124
125
126
127
128
129
130
131
132
133
# File 'lib/slackware/system.rb', line 123

def self::installed_before(time)
  arr = []
  Dir.new(Paths::installed_packages()).each {|p|
    if (File.mtime(Paths::installed_packages(p)) <= time)
      pkg = Package.parse(p)
      pkg.get_time
      arr << pkg
    end
  }
  return arr
end

.installed_packagesObject



42
43
44
45
# File 'lib/slackware/system.rb', line 42

def self::installed_packages
  path = Paths::installed_packages("*")
  return Dir.glob(path).sort.map {|p| Package.parse(p) }
end

.installed_scriptsObject



52
53
54
55
# File 'lib/slackware/system.rb', line 52

def self::installed_scripts
  path = Paths::installed_scripts("*")
  return Dir.glob(path).sort.map {|s| Script.parse(s) }
end

.is_upgraded?(pkg) ⇒ Boolean

Check whether a given Slackware::Package has been upgraded before

Returns:

  • (Boolean)


162
163
164
165
166
167
168
# File 'lib/slackware/system.rb', line 162

def self::is_upgraded?(pkg)
  if (find_removed(pkg).map {|p| p.name if p.upgrade_time }.include?(pkg) )
    return true
  else
    return false
  end
end

.owns_file(file) ⇒ Object

Search installation of Slackware::Package’s for what owns the questioned file Returns an Array, of matching pairs. The pairs are [Slackware::Package, <matching file>]



172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
# File 'lib/slackware/system.rb', line 172

def self::owns_file(file)
  pkgs = installed_packages()
  debug('owns_file(): pkgs.count => %d' % pkgs.count)
  found_files = []
  file = file.sub(/^\//, "") # clean off the leading '/'
  re = /#{file}/
  debug('owns_file(): file Regexp => %s' % re.inspect)
  pkgs.each {|pkg|
    pkg.get_owned_files().select {|f|
      begin
        f =~ re
      rescue ArgumentError => ex
        Log.instance.debug(self.name) {
          "encoding mismatch: " + f
        }
        false # this needs to return false, for the .select
      end
    }.each do |f|
        found_files << [pkg, f]
    end
  }
  return found_files
end

.removed_after(time) ⇒ Object

Return an Array of packages, that were removed after provided time



136
137
138
139
140
141
142
143
144
145
146
# File 'lib/slackware/system.rb', line 136

def self::removed_after(time)
  arr = []
  Dir.new(Paths::removed_packages()).each {|p|
    if (Paths::installed_packages(p) =~ RE_REMOVED_NAMES)
      if (Time.strptime($2 + ' ' + $3, fmt=FMT_UPGRADE_TIME) >= time)
        arr << Package.parse(p)
      end
    end
  }
  return arr
end

.removed_before(time) ⇒ Object

Return an Array of packages, that were removed before provided time



149
150
151
152
153
154
155
156
157
158
159
# File 'lib/slackware/system.rb', line 149

def self::removed_before(time)
  arr = []
  Dir.new(Paths::removed_packages()).each {|p|
    if (Paths::installed_packages(p) =~ RE_REMOVED_NAMES)
      if (Time.strptime($2 + ' ' + $3, fmt=FMT_UPGRADE_TIME) <= time)
        arr << Package.parse(p)
      end
    end
  }
  return arr
end

.removed_packagesObject



47
48
49
50
# File 'lib/slackware/system.rb', line 47

def self::removed_packages
  path = Paths::removed_packages("*")
  return Dir.glob(path).sort.map {|p| Package.parse(p) }
end

.removed_scriptsObject



57
58
59
60
# File 'lib/slackware/system.rb', line 57

def self::removed_scripts
  path = Paths::removed_scripts("*")
  return Dir.glob(path).sort.map {|s| Script.parse(s) }
end

.tags_usedObject



62
63
64
65
66
67
68
69
70
71
72
# File 'lib/slackware/system.rb', line 62

def self::tags_used
  pkgs = installed_packages()
  set = []
  pkgs.map {|p| p.tag }.uniq.each {|tag|
    m_set = {}
    m_set[:tag] = tag
    m_set[:count] = pkgs.select {|p| p.tag == tag }.count
    set << m_set
  }
  return set
end

.upgrades(pkg) ⇒ Object

Returns a list of the upgrades for a particular package name Example:

Slackware::System.upgrades("xz")
=> [#<Slackware::Package:0x981e6c name="xz" version="5.0.0" arch="x86_64" build=1 tag="">,
#<Slackware::Package:0x97e04c name="xz" version="4.999.9beta" arch="x86_64" build=1 tag="">]
Slackware::System.upgrades("fart")
=> []


103
104
105
# File 'lib/slackware/system.rb', line 103

def self::upgrades(pkg)
  find_removed(pkg).select {|p| (p.name == pkg) && (p.upgrade_time) }.sort {|a,b| a.upgrade_time <=> b.upgrade_time }
end

.versionObject

Return the version of Slackware Linux currently installed



197
198
199
200
# File 'lib/slackware/system.rb', line 197

def self::version
  debug(SLACKWARE_VERSION)
  SLACKWARE_VERSION
end

.with_arch(arch) ⇒ Object



82
83
84
# File 'lib/slackware/system.rb', line 82

def self::with_arch(arch)
  return installed_packages().select {|pkg| pkg.arch == arch }
end

.with_tag(tag) ⇒ Object



74
75
76
# File 'lib/slackware/system.rb', line 74

def self::with_tag(tag)
  return installed_packages().select {|pkg| pkg.tag == tag }
end