slack-utils 0.7.2 → 0.7.3

Sign up to get free protection for your applications and to get access to all the features.
data/bin/slt CHANGED
@@ -37,7 +37,7 @@ Usage:
37
37
  EOS
38
38
  # This is all the flags we want to use, from Slackware::Args
39
39
  option_flags = [:color, :epoch, :case_insensitive, :pkg_name, :pkg_version,
40
- :debug, :pkg_arch, :pkg_build, :pkg_tag]
40
+ :reverse, :debug, :pkg_arch, :pkg_build, :pkg_tag]
41
41
 
42
42
  slog = Slackware::Log.instance
43
43
  slog.level = Slackware::Log::WARN
@@ -46,6 +46,7 @@ options = Slackware::Args.parse(ARGV, option_flags, option_banner)
46
46
 
47
47
  # update level if specified
48
48
  slog.level = Slackware::Log::DEBUG if options[:debug]
49
+ slog.debug($PROGRAM_NAME) { "option_flags: #{option_flags} " }
49
50
  slog.debug($PROGRAM_NAME) {"options: %s" % options}
50
51
 
51
52
  # handing through that we are gathering times
@@ -56,7 +57,7 @@ if (ARGV.count > 0)
56
57
  end
57
58
 
58
59
  begin
59
- print_packages_times(build_packages(options, ARGV), options[:epoch])
60
+ print_packages_times(build_packages(options, ARGV), options[:epoch], options[:reverse])
60
61
  rescue Interrupt
61
62
  exit 0
62
63
  rescue Exception => e
@@ -38,6 +38,11 @@ module Slackware
38
38
  options[:color] = o
39
39
  end
40
40
  end
41
+ if flags.include?(:reverse)
42
+ opts.on("-r", "--reverse", "Reverse the output") do |o|
43
+ options[:reverse] = o
44
+ end
45
+ end
41
46
  if flags.include?(:epoch)
42
47
  opts.on("-e", "--epoch", "Print the time stamp in seconds since 1970-01-01 00:00:00 UTC ") do |o|
43
48
  options[:epoch] = o
@@ -23,6 +23,7 @@
23
23
  require 'slackware/package'
24
24
  require 'date'
25
25
  require 'time'
26
+ require 'stringio'
26
27
 
27
28
  module Slackware
28
29
  # The class for parsing a Slackware standard ChangeLog.txt
@@ -36,10 +37,10 @@ module Slackware
36
37
  # Compiling a fat regex to find the date entries
37
38
  re_daynames = Regexp.new(ABBR_DAYNAMES.join('|'))
38
39
  re_monthnames = Regexp.new(ABBR_MONTHNAMES.join('|'))
39
- RE_DATE = Regexp.new(/^(#{re_daynames}\s+#{re_monthnames}\s+\d+\s+\d{2}:\d{2}:\d{2}\s\w+\s+\d+)$/)
40
+ RE_DATE = /^(#{re_daynames}\s+#{re_monthnames}\s+\d+\s+\d{2}:\d{2}:\d{2}\s\w+\s+\d+)$/
40
41
 
41
42
  # This break has been the same as long as I can find
42
- RE_CHANGELOG_BREAK = Regexp.new(/^\+--------------------------\+$/)
43
+ RE_CHANGELOG_BREAK = /^\+--------------------------\+$/
43
44
 
44
45
  # The regular entry, accounting for usb-and-pxe-installers directory,
45
46
  # and notes after the action
@@ -64,14 +65,20 @@ module Slackware
64
65
  # regarding the updates
65
66
  class Update
66
67
  # FIXME this class needs more proper value setting
67
- def initialize(date = nil, notes = "", entries = Array.new)
68
+ def initialize(date = nil,
69
+ notes = "",
70
+ entries = Array.new,
71
+ changelog = nil )
68
72
  @date = date
69
73
  @notes = notes
70
74
  @entries = entries
75
+ @changelog = changelog
71
76
  end
72
77
  def date; @date; end
73
78
  def notes; @notes; end
74
79
  def entries; @entries; end
80
+ def security; @entries.select {|e| e if e.security }; end
81
+ def security?; @entries.select {|e| e.security }.first; end
75
82
 
76
83
  def date=(timestamp)
77
84
  if (timestamp.is_a?(Time))
@@ -83,16 +90,23 @@ module Slackware
83
90
  end
84
91
  end
85
92
  def notes=(text); @notes = text; end
93
+ def changelog=(changelog); @changelog = changelog if changelog.is_a?(Slackware::ChangeLog); end
86
94
  end
87
95
 
88
96
  # The class for each item in a change set
89
97
  class Entry
90
- def initialize(package = nil, section = nil, action = nil, notes = "", security = false)
98
+ def initialize(package = nil,
99
+ section = nil,
100
+ action = nil,
101
+ notes = "",
102
+ security = false,
103
+ update = nil)
91
104
  @package = package
92
105
  @section = section
93
106
  @action = action
94
- notes.is_a?(String) ? @notes = notes : @notes = ""
95
- security == true ? @security = security : @security = false
107
+ @notes = notes.is_a?(String) ? notes : ""
108
+ @security = security == true
109
+ @update = update
96
110
  end
97
111
 
98
112
  def package; @package; end
@@ -100,57 +114,78 @@ module Slackware
100
114
  def action; @action; end
101
115
  def notes; @notes; end
102
116
  def security; @security; end
117
+ def date; @update ? @update.date: nil;end
103
118
 
104
119
  def package=(package_name); @package = package_name ; end
105
120
  def section=(section_name); @section = section_name ; end
106
121
  def action=(action_name); @action = action_name ; end
122
+ def update=(update); @update = update if update.is_a?(Slackware::ChangeLog::Update) ; end
107
123
  def notes=(notes_txt)
108
- notes_txt.is_a?(String) ? @notes = notes_txt : @notes = ""
124
+ @notes = notes_txt.is_a?(String) ? notes_txt : ""
109
125
  end
110
126
  def security=(bool)
111
- bool == true ? @security = bool : @security = false
127
+ @security = bool == true
112
128
  end
113
129
  end
114
130
 
115
- # +file+ can be a path to a file, or a +File+ object
116
- # +opts+ can include
117
- # * :arch - basically '64' or '32'
118
- # * :version - 13.1, 13.2, current, etc.
119
- # * :url - the URL web link to the ChangeLog.txt
120
- # * :image_url - the URL for the loge used in the RSS feed
121
- def initialize(file = nil, opts = {})
131
+ def initialize(file = nil)
122
132
  @file = file
123
- @opts = opts
133
+ @strio = StringIO.new
124
134
  @updates = Array.new
125
135
  end
126
136
 
127
137
  def file; @file; end
128
- def opts; @opts; end
129
138
  def updates; @updates; end
139
+
140
+ # Returns the latest update in the set
141
+ def latest
142
+ sort().last
143
+ end
144
+ def sort
145
+ @updates.sort {|x,y| x.date <=> y.date }
146
+ end
147
+
148
+ # All entries in this Slackware::ChangeLog
149
+ #
150
+ # Returns an Array of Slackware::ChangeLog::Entry
130
151
  def entries
131
- @updates.map {|update| update.entries.map {|entry| {:date => update.date, :entry => entry } } }.flatten
152
+ @updates.map {|u| u.entries.map {|e| e } }.flatten
132
153
  end
154
+
155
+ # All security in this Slackware::ChangeLog
156
+ #
157
+ # Returns an Array of Slackware::ChangeLog::Entry
133
158
  def security
134
- @updates.map {|u| u.entries.map {|e| {:date => u.date, :entry => e } if e.security } }.flatten.compact
159
+ @updates.map {|u| u.entries.select {|e| e if e.security } }.flatten
135
160
  end
161
+
162
+ # All packages removed in this Slackware::ChangeLog
163
+ #
164
+ # Returns an Array of Slackware::ChangeLog::Entry
136
165
  def pkgs_removed
137
- @updates.map {|u| u.entries.map {|e| {:date => u.date, :entry => e } if e.action == "Removed" } }.flatten.compact
166
+ @updates.map {|u| u.entries.select {|e| e if e.action == "Removed" } }.flatten
138
167
  end
168
+
169
+ # All packages added in this Slackware::ChangeLog
170
+ #
171
+ # Returns an Array of Slackware::ChangeLog::Entry
139
172
  def pkgs_added
140
- @updates.map {|u| u.entries.map {|e| {:date => u.date, :entry => e } if e.action == "Added" } }.flatten.compact
173
+ @updates.map {|u| u.entries.select {|e| e if e.action == "Added" } }.flatten
141
174
  end
175
+
176
+ # All packages upgraded in this Slackware::ChangeLog
177
+ #
178
+ # Returns an Array of Slackware::ChangeLog::Entry
142
179
  def pkgs_upgraded
143
- @updates.map {|u| u.entries.map {|e| {:date => u.date, :entry => e } if e.action == "Upgraded" } }.flatten.compact
180
+ @updates.map {|u| u.entries.select {|e| e if e.action == "Upgraded" } }.flatten
144
181
  end
182
+
183
+ # All packages rebuilt in this Slackware::ChangeLog
184
+ #
185
+ # Returns an Array of Slackware::ChangeLog::Entry
145
186
  def pkgs_rebuilt
146
- @updates.map {|u| u.entries.map {|e| {:date => u.date, :entry => e } if e.action == "Rebuilt" } }.flatten.compact
147
- end
148
- def opts=(hash)
149
- if hash.is_a?(Hash)
150
- @opts = hash
151
- end
187
+ @updates.map {|u| u.entries.select {|e| e if e.action == "Rebuilt" } }.flatten
152
188
  end
153
-
154
189
  def parse(opts = {:file => nil, :data => nil})
155
190
  if not(opts[:file].nil?)
156
191
  @updates = parse_this_file(opts[:file]).updates
@@ -161,19 +196,19 @@ module Slackware
161
196
  end
162
197
 
163
198
  # Class method
164
- def self::parse(file)
165
- return parse_this_file(file)
166
- end
167
-
168
- def self::open(file)
169
- return parse_this_file(file)
199
+ class << self
200
+ def parse(file)
201
+ cl = ChangeLog.new(file)
202
+ return cl.parse()
203
+ end
204
+ alias_method :open, :parse
170
205
  end
171
206
 
172
207
  def inspect
173
208
  "#<%s:0x%x @file=%s, %d @updates, %d @entries>" % [self.class.name, self.object_id.abs, self.file || '""', self.updates.count || 0, self.entries.count || 0]
174
209
  end
175
210
 
176
- #protected
211
+ protected
177
212
  # Parse order is something like:
178
213
  # * if its' a date match, store the date
179
214
  # * take change notes until
@@ -182,7 +217,7 @@ module Slackware
182
217
  # * take packge notes until
183
218
  # * next package or entry separator
184
219
  # * separator creates next change entry
185
- def self::parse_this_file(file)
220
+ def parse_this_file(file)
186
221
  f_handle = ""
187
222
  if file.is_a?(File)
188
223
  f_handle = file
@@ -200,7 +235,10 @@ module Slackware
200
235
  changelog = ChangeLog.new(f_handle)
201
236
  f_handle.each do |line|
202
237
  if (line =~ RE_DATE)
203
- u = Update.new(Time.parse($1))
238
+ update = Update.new(Time.parse($1))
239
+
240
+ # Tying this Slackware::ChangeLog::Update to it's Slackware::ChangeLog parent
241
+ update.changelog = changelog
204
242
  while true
205
243
  if (f_handle.eof?)
206
244
  break
@@ -213,11 +251,15 @@ module Slackware
213
251
  end
214
252
 
215
253
  # the intimate iteration
216
- # +Match+ is more expensive than =~,
254
+ # Match is more expensive than =~,
217
255
  # but ruby-1.8.x is lossing the matched values down below
218
256
  # so this works on both ...
219
257
  if (match = RE_PACKAGE_ENTRY.match(u_line))
220
258
  u_entry = Entry.new()
259
+
260
+ # tying this entry to it's Slackware::ChangeLog::Update parent
261
+ u_entry.update = update
262
+
221
263
  # This silly iteration catches the different cases of
222
264
  # which package line, matches which Regexp. WIN
223
265
  if match[1].nil?
@@ -245,31 +287,32 @@ module Slackware
245
287
  u_entry.action = match[3] unless match[3].nil?
246
288
 
247
289
  # Add this entry to the stack
248
- u.entries << u_entry
290
+ update.entries << u_entry
249
291
  else
250
- # if u.entries is empty, then this text is notes
292
+ # if update.entries is empty, then this text is notes
251
293
  # for the upate, else it is notes, for the entry
252
- if (u.entries.empty?)
253
- u.notes = u.notes + u_line
294
+ if (update.entries.empty?)
295
+ update.notes = update.notes + u_line
254
296
  else
255
297
  # if this line of the entry security fix, toggle the bool
256
298
  if (u_line =~ RE_SECURITY_FIX)
257
- u.entries[-1].security = true
299
+ update.entries[-1].security = true
258
300
  end
259
- u.entries[-1].notes = u.entries[-1].notes + u_line
301
+ update.entries[-1].notes = update.entries[-1].notes + u_line
260
302
  end
261
303
  end
262
304
  end
263
305
 
264
306
  # Add this update to the stack
265
- changelog.updates << u
307
+ changelog.updates << update
266
308
  end
267
309
  end
268
310
 
269
311
  # Give them their change set
270
312
  return changelog
271
- end
313
+ end # def self::parse_this_file
314
+
315
+ end # class ChangeLog
316
+ end # module Slackware
272
317
 
273
- end
274
- end
275
318
  # vim : set sw=2 sts=2 et :
@@ -27,29 +27,22 @@ module Slackware
27
27
  class ChangeLog
28
28
  # or maybe "http://connie.slackware.com/~msimons/slackware/grfx/shared/dobbslack1.jpg"
29
29
  IMAGE_URL = "http://connie.slackware.com/~msimons/slackware/grfx/shared/bluepiSW.jpg"
30
+ # +opts+ can include
31
+ # * :arch - basically '64' or '32'
32
+ # * :version - 13.1, 13.2, current, etc.
33
+ # * :url - the URL web link to the ChangeLog.txt
34
+ # * :image_url - the URL for the loge used in the RSS feed
30
35
  def to_rss(opts = {})
31
- # this way we can use the opts from super,
32
- # or override for this methods
33
- opts = @opts.merge(opts)
34
-
35
36
  version = "2.0" # ["0.9", "1.0", "2.0"]
36
37
  content = RSS::Maker.make(version) do |m|
37
38
  if (opts[:title])
38
39
  m.channel.title = opts[:title]
39
40
  else
40
- added_title = ""
41
- if opts[:arch]
42
- added_title = added_title + "slackware#{opts[:arch]}"
43
- end
41
+ added_title = "slackware#{opts[:arch]}"
44
42
  if opts[:version]
45
- added_title = added_title + "-#{opts[:version]}"
46
- end
47
-
48
- if added_title.empty?
49
- m.channel.title = "Slackware ChangeLog.txt"
50
- else
51
- m.channel.title = "#{added_title} ChangeLog.txt"
43
+ added_title += "-#{opts[:version]}"
52
44
  end
45
+ m.channel.title = "#{added_title} ChangeLog.txt"
53
46
  end
54
47
 
55
48
  if (opts[:url])
@@ -89,8 +82,8 @@ module Slackware
89
82
  i = m.items.new_item
90
83
  # Add a plug to the title of the update, if it includes a security fix
91
84
  # set this here, so we don't have to .map again down below
92
- security = update.entries.map {|e| 1 if e.security }.compact.count
93
- if (security > 0)
85
+ security_count = update.security.length
86
+ if (security_count > 0)
94
87
  i.title = "%s (* Security fix *)" % [update.date.utc.to_s]
95
88
  else
96
89
  i.title = update.date.utc.to_s
@@ -104,8 +97,8 @@ module Slackware
104
97
 
105
98
  i.description = ""
106
99
  if (update.entries.count > 0)
107
- if (security > 0)
108
- i.description = i.description + "%d new update(s), %d security update(s)\n\n" % [update.entries.count, security]
100
+ if (security_count > 0)
101
+ i.description = i.description + "%d new update(s), %d security update(s)\n\n" % [update.entries.count, security_count]
109
102
  else
110
103
  i.description = i.description + "%d new update(s)\n\n" % [update.entries.count]
111
104
  end
@@ -24,7 +24,6 @@ require 'logger'
24
24
  require 'singleton'
25
25
 
26
26
  module Slackware
27
-
28
27
  # Log is a subclass of Logger, but is implemented as a singleton,
29
28
  # so it can be used across library in a somewhat unified manner.
30
29
  # Example:
@@ -42,10 +41,11 @@ module Slackware
42
41
  # It defaults to WARN level and STDERR
43
42
  def initialize(*args)
44
43
  if $logdev
45
- super($logdev, args)
44
+ super($logdev, args)
46
45
  else
47
- super(STDERR, args)
46
+ super(STDERR, args)
48
47
  end
48
+ self.level = Logger::ERROR
49
49
  end
50
50
  end # class Log
51
51
  end # module Slackware
@@ -24,6 +24,9 @@ require 'time'
24
24
  require 'slackware/log'
25
25
  require 'slackware/paths'
26
26
 
27
+ MyTime = RUBY_VERSION < '1.9'? DateTime : Time
28
+
29
+
27
30
  module Slackware
28
31
  class Package
29
32
  RE_FILE_LIST = /^FILE LIST:/
@@ -47,7 +50,7 @@ module Slackware
47
50
  end
48
51
  if (name =~ RE_REMOVED_NAMES)
49
52
  name = $1
50
- self.upgrade_time = Time.strptime($2 + ' ' + $3, fmt=FMT_UPGRADE_TIME)
53
+ self.upgrade_time = MyTime.strptime($2 + ' ' + $3, fmt=FMT_UPGRADE_TIME)
51
54
  end
52
55
  arr = name.split('-')
53
56
  build = arr.pop
@@ -38,7 +38,7 @@ module Slackware
38
38
  RE_COMPRESSED_SIZE = /^PACKAGE SIZE \(compressed\):\s+(.*)$/
39
39
  RE_UNCOMPRESSED_SIZE = /^PACKAGE SIZE \(uncompressed\):\s+(.*)$/
40
40
 
41
- attr_accessor :proto, :mirror, :path, :version, :arch, :changelog, :packages
41
+ attr_accessor :proto, :mirror, :path, :version, :arch, :changelog, :packages, :uri
42
42
 
43
43
  def initialize(repo = nil)
44
44
  @packages = nil
@@ -53,20 +53,25 @@ module Slackware
53
53
  end
54
54
  v
55
55
  end
56
- self.arch = begin
57
- a = RbConfig::CONFIG["arch"]
58
- if a =~ /x86_64/
59
- a = "64"
60
- else
61
- a = ""
62
- end
63
- a
64
- end
56
+ self.arch = RbConfig::CONFIG["arch"] =~ /x86_64/ ? "64" : ""
65
57
  else
66
58
  ## TODO do some hot parsing of 'repo'
59
+ self.uri = URI.parse(repo)
67
60
  end
68
61
  end
69
62
 
63
+ def url
64
+ "%s%s%sslackware%s-%s/" % [self.proto,
65
+ self.mirror,
66
+ self.path,
67
+ self.arch,
68
+ self.version]
69
+ end
70
+
71
+ def url=(thisurl)
72
+ self.uri = URI.parse(thisurl)
73
+ end
74
+
70
75
  def fetch(file = nil)
71
76
  #if file.nil?
72
77
  #url = URI.parse(self.proto + self.mirror + self.path)
@@ -195,7 +195,6 @@ module Slackware
195
195
 
196
196
  # Return the version of Slackware Linux currently installed
197
197
  def self::version
198
- debug(SLACKWARE_VERSION)
199
198
  SLACKWARE_VERSION
200
199
  end
201
200
  end
@@ -1,6 +1,8 @@
1
1
  # encoding: UTF-8
2
2
 
3
- # Copyright 2010,2011 Vincent Batts, Vienna, VA
3
+ # Copyright 2009,2010 Vincent Batts, http://hashbangbash.com/
4
+ # Copyright 2010,2011 Vincent Batts, Vienna, VA, USA
5
+ # Copyright 2012 Vincent Batts, Raleigh, NC, USA
4
6
  # All rights reserved.
5
7
  #
6
8
  # Redistribution and use of this source, with or without modification, is
@@ -22,18 +24,13 @@
22
24
 
23
25
  # started - Fri Oct 9 15:48:43 CDT 2009
24
26
  # updated for args - Tue Mar 23 14:54:19 CDT 2010
25
- # Copyright 2009, 2010 Vincent Batts, http://hashbangbash.com/
26
27
 
27
28
  require 'slackware'
28
29
 
29
30
  # Variables
30
31
  @st = "\033[31;1m"
31
32
  @en = "\033[0m"
32
-
33
- # Classes
34
-
35
-
36
- # Functions
33
+ @slog = Slackware::Log.instance
37
34
 
38
35
  # This is base builder of the packe list
39
36
  def build_packages(opts = {}, args = [])
@@ -180,12 +177,17 @@ def print_packages(pkgs)
180
177
  end
181
178
  end
182
179
 
183
- def print_packages_times(pkgs, epoch = false)
184
- if (epoch == true)
185
- pkgs.each {|pkg| printf("%s : %s\n", pkg.fullname, pkg.time.to_i) }
186
- else
187
- pkgs.each {|pkg| printf("%s : %s\n", pkg.fullname, pkg.time.to_s) }
188
- end
180
+ def print_packages_times(pkgs, epoch = false, reverse = false)
181
+ @slog.debug('print_packages_times') { "epoch: #{epoch} ; reverse: #{reverse}" }
182
+ begin
183
+ if reverse
184
+ pkgs.sort_by {|x| x.time }
185
+ else
186
+ pkgs.sort_by {|x| x.time }.reverse
187
+ end
188
+ end.each {|pkg|
189
+ printf("%s : %s\n", pkg.fullname, epoch ? pkg.time.to_i : pkg.time.to_s )
190
+ }
189
191
  end
190
192
 
191
193
  def print_packages_description(pkgs)
@@ -28,7 +28,7 @@ module Slackware
28
28
  rescue
29
29
  nil
30
30
  end
31
- UTILS_VERSION = "0.7.2"
31
+ UTILS_VERSION = "0.7.3"
32
32
  end
33
33
 
34
34
  # vim : set sw=2 sts=2 et :
metadata CHANGED
@@ -1,20 +1,21 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: slack-utils
3
- version: !ruby/object:Gem::Version
4
- version: 0.7.2
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.3
6
5
  platform: ruby
7
- authors:
6
+ authors:
8
7
  - Vincent Batts
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-02-03 00:00:00.000000000 Z
11
+
12
+ date: 2012-03-09 00:00:00 -05:00
13
+ default_executable:
13
14
  dependencies: []
14
- description: ! " slack-utils is a means by which to access \npackage information on
15
- the Slackware Linux OS. \nSee the examples/ for more information.\n "
15
+
16
+ description: slack-utils is a means by which to access package information on the Slackware Linux OS. See the examples/ for more information.
16
17
  email: vbatts@hashbangbash.com
17
- executables:
18
+ executables:
18
19
  - sli
19
20
  - slf
20
21
  - slo
@@ -24,9 +25,10 @@ executables:
24
25
  - slu
25
26
  - slfindlinked
26
27
  extensions: []
27
- extra_rdoc_files:
28
+
29
+ extra_rdoc_files:
28
30
  - README.rdoc
29
- files:
31
+ files:
30
32
  - README.rdoc
31
33
  - bin/slf
32
34
  - bin/slt
@@ -52,32 +54,34 @@ files:
52
54
  - lib/slackware/repo.rb
53
55
  - lib/slackware/version.rb
54
56
  - lib/slackware/system.rb
57
+ has_rdoc: true
55
58
  homepage: https://github.com/vbatts/slack-utils/
56
- licenses: []
57
59
  post_install_message:
58
- rdoc_options:
60
+ rdoc_options:
59
61
  - --main=README.rdoc
60
62
  - --line-numbers
61
63
  - --inline-source
62
- - --title=Slackware utils (slack-utils) 0.7.2 Documentation
63
- require_paths:
64
+ - --title=Slackware utils (slack-utils) 0.7.3 Documentation
65
+ require_paths:
64
66
  - lib
65
- required_ruby_version: !ruby/object:Gem::Requirement
66
- none: false
67
- requirements:
68
- - - ! '>='
69
- - !ruby/object:Gem::Version
70
- version: '0'
71
- required_rubygems_version: !ruby/object:Gem::Requirement
72
- none: false
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
76
- version: '0'
67
+ required_ruby_version: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: "0"
72
+ version:
73
+ required_rubygems_version: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - ">="
76
+ - !ruby/object:Gem::Version
77
+ version: "0"
78
+ version:
77
79
  requirements: []
80
+
78
81
  rubyforge_project:
79
- rubygems_version: 1.8.6
82
+ rubygems_version: 1.3.1
80
83
  signing_key:
81
- specification_version: 3
84
+ specification_version: 2
82
85
  summary: Accessing information for the Slackware Linux distribution
83
86
  test_files: []
87
+