gigamo-aurb 0.5.6 → 0.5.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. data/aurb.gemspec +2 -2
  2. data/bin/aurb +58 -69
  3. metadata +2 -2
data/aurb.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'aurb'
3
- s.version = '0.5.6'
4
- s.date = %q{2009-04-13}
3
+ s.version = '0.5.7'
4
+ s.date = %q{2009-04-14}
5
5
  s.summary = %q{A simple AUR utility}
6
6
  s.email = %q{gigamo@gmail.com}
7
7
  s.homepage = %q{http://github.com/gigamo/aurb}
data/bin/aurb CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ require 'open-uri'
2
3
  require 'rubygems'
3
4
 
4
5
  module Aurb
@@ -13,11 +14,11 @@ end
13
14
  module Util
14
15
  # Colorize a string
15
16
  #
16
- # color('Text', :green)
17
+ # ansi('Text', :green)
17
18
  #
18
19
  # For a full list of available effects, see
19
20
  # http://facets.rubyforge.org/doc/api/more/classes/ANSICode.html
20
- def color text, effect
21
+ def ansi text, effect
21
22
  require 'facets/ansicode' unless defined? ANSICode
22
23
 
23
24
  ANSICode.send(effect.to_sym) << text << ANSICode.clear
@@ -41,15 +42,13 @@ class Aur
41
42
  @opts = Opts.new(ARGV)
42
43
  end
43
44
 
44
- # Starts Aurb
45
45
  def start
46
- # Exit peacefully on *INT
47
- trap(:INT) { exit 0 }
46
+ trap(:INT) { exit 0 } # Exit peacefully on *INT
48
47
 
49
48
  # Evaluate a command in string form
50
49
  # Example: instance_eval('search("package")')
51
50
  # Which will invoke the search method
52
- instance_eval(@opts[:cmd])
51
+ instance_eval @opts[:cmd]
53
52
  rescue AurbError => e
54
53
  $stderr.puts e.message
55
54
  exit 1
@@ -63,23 +62,13 @@ class Aur
63
62
  packages.each do |package|
64
63
  list(package).each do |names|
65
64
  if names.first == package
66
- # Check if the package exists in the community repo
67
- # Invoke pacman if so
68
65
  if in_sync? package
69
- puts "#{color('==>', :yellow)} Found #{package} in community repo."
66
+ puts "#{ansi('==>', :yellow)} Found #{package} in community repo. Pacman!"
70
67
  exec "sudo pacman -S #{package}"
71
68
  else
72
- Dir.chdir(@config.dir) do |dir|
73
- # Remove old files if they already exist instead of overwriting
74
- require 'fileutils'
75
-
76
- FileUtils.rm("#{package}.tar.gz") if File.exists?("#{package}.tar.gz")
77
- fetch(package, dir)
78
- puts "#{color('==>', :yellow)} Downloaded #{package}"
79
-
80
- FileUtils.rm_r(package) if File.directory?(package)
81
- untar(package)
82
- puts "#{color('==>', :yellow)} Unpacked #{package}"
69
+ Dir.chdir(@config.dir) do
70
+ fetch package
71
+ untar package
83
72
  end
84
73
  end
85
74
  end
@@ -95,75 +84,64 @@ class Aur
95
84
  count, threads = 0, []
96
85
 
97
86
  list(package).each do |names|
98
- # Launch a separate thread for each packagename to be checked
99
- threads << Thread.new do
100
- result = json(@config.info % names[1])
101
-
102
- unless result['type'] == 'error'
103
- result = result['results']
104
- # Skip this iteration if the package is found in the community repo
105
- next if in_sync? result['Name']
106
-
107
- if package.any? do |pac|
108
- # Check both name and description for matches
109
- (result['Name'].include?(pac)) || (result['Description'].include?(pac))
110
- end
111
- count += 1
112
- puts "[#{result['OutOfDate'] == '1' ? color('✘', :red) : color('✔', :green)}] \
113
- #{color(result['Name'], :blue)} (#{result['Version']}): #{result['Description']}"
114
- end
87
+ result = json(@config.info % names[1])
88
+
89
+ unless result['type'] == 'error'
90
+ result = result['results']
91
+ next if in_sync? result['Name']
92
+
93
+ if package.any? do |pac| # Check both name and description for matches
94
+ (result['Name'].include?(pac)) || (result['Description'].include?(pac))
95
+ end
96
+ count += 1
97
+ puts "[#{result['OutOfDate'] == '1' ? ansi('✘', :red) : ansi('✔', :green)}] \
98
+ #{ansi(result['Name'], :blue)} (#{result['Version']}): #{result['Description']}"
115
99
  end
116
100
  end
117
101
  end
118
- # Join the threads after searching is finished
119
- threads.each { |t| t.join }
120
102
 
121
- puts "\n#{color('==>', :yellow)} Found #{color(count.to_s, :magenta)} \
103
+ puts "\n#{ansi('==>', :yellow)} Found #{ansi(count.to_s, :magenta)} \
122
104
  #{count == 1 ? 'result' : 'results'}"
123
105
  end
124
106
 
125
107
  # Checks the aur for upgrades to local packages that were not found in any
126
108
  # official repository.
109
+ #
127
110
  def check_upgrade
128
111
  count, upgradable = 0, []
129
112
 
130
113
  `pacman -Qm`.each_line do |line|
131
- # Pacman -Qm output: name 1.1-1
132
- # Split them up in variables
133
114
  name, version = line.chomp.split
134
115
  result = json(@config.info % name)
135
116
 
136
- # Ensure that packages are on the aur before checking
137
117
  unless result['type'] == 'error'
138
118
  result = result['results']
139
119
 
140
- # Check if local version != remote version
141
120
  if (result.is_a?(Hash)) && (result['Version'] != version)
142
- # Make sure the remote version is newer
143
121
  require 'facets/version'
144
122
 
145
123
  if VersionNumber.new(result['Version']) > VersionNumber.new(version)
146
124
  count += 1
147
- # Insert the upgradable package's name into an array which we will
148
- # use later to prompt the download
149
125
  upgradable << name
150
- puts "#{color(name, :bold)} (#{color(version, :red)}) \
151
- can be upgraded to #{color(result['Version'], :green)}"
126
+
127
+ puts "#{ansi(name, :blink)} (#{ansi(version, :red)}) \
128
+ can be upgraded to #{ansi(result['Version'], :green)}"
152
129
  end
153
130
  else
154
- puts "#{color(name, :bold)} (#{color(version, :green)}) is up to date"
131
+ puts "#{ansi(name, :bold)} (#{ansi(version, :green)}) is up to date"
155
132
  end
156
133
  end
157
134
  end
158
135
 
159
- puts "\n#{color('==>', :yellow)} Found #{color(count.to_s, :magenta)} \
136
+ puts "\n#{ansi('==>', :yellow)} Found #{ansi(count.to_s, :magenta)} \
160
137
  #{count == 1 ? 'upgrade' : 'upgrades'}"
161
138
 
162
139
  unless upgradable.empty?
163
- # Prompt asking to download the upgrades
140
+ require 'readline'
141
+
164
142
  upgradable.each do |pkg|
165
- print "#{color('==>', :yellow)} Download '#{pkg}'? [y] "
166
- $stdin.gets.chomp =~ /^y/ ? download(pkg) : next
143
+ answer = Readline::readline("#{ansi('==>', :yellow)} Download #{pkg}? ")
144
+ answer =~ /^y|yes$/i ? download(pkg) : next
167
145
  end
168
146
  end
169
147
  end
@@ -187,26 +165,31 @@ private
187
165
  info, list = json(@config.search % CGI::escape(package)), []
188
166
 
189
167
  if info['type'] == 'error'
190
- raise AurbError, "#{color('Fatal', :on_red)}: no results"
168
+ raise AurbError, "#{ansi('Fatal', :on_red)}: no results"
191
169
  end
192
170
 
193
171
  info['results'].each do |result|
172
+ next if in_sync? result['Name']
194
173
  list << [result['Name'], result['ID']]
195
174
  end
196
175
 
197
- list.empty ? nil : list.sort
176
+ list.sort
198
177
  end
199
178
 
200
179
  # Downloads given +package+ into +dir+
201
180
  #
202
181
  # fetch('awesome-git', $0.dirname)
203
182
  #
204
- def fetch package, dir
183
+ def fetch package
184
+ File.delete("#{package}.tar.gz") if File.exists?("#{package}.tar.gz")
185
+
205
186
  open("http://aur.archlinux.org/packages/#{package}/#{package}.tar.gz") do |remote|
206
- File.open("#{dir}/#{package}.tar.gz", 'wb') do |local|
187
+ File.open("#{package}.tar.gz", 'wb') do |local|
207
188
  local.write(remote.read)
208
189
  end
209
190
  end
191
+
192
+ puts "#{ansi('==>', :yellow)} Fetched #{package}.tar.gz"
210
193
  end
211
194
 
212
195
  # Untars +package+
@@ -216,11 +199,15 @@ private
216
199
  def untar package
217
200
  require 'facets/minitar'
218
201
  require 'zlib'
202
+ require 'fileutils'
203
+
204
+ FileUtils.rm_r(package) if File.directory?(package)
219
205
 
220
206
  Archive::Tar::Minitar.unpack(
221
- Zlib::GzipReader.new(File.open("#{package}.tar.gz", 'rb')),
222
- Dir.pwd
207
+ Zlib::GzipReader.new(File.open("#{package}.tar.gz", 'rb')), Dir.pwd
223
208
  )
209
+
210
+ puts "#{ansi('==>', :yellow)} Untarred #{package}.tar.gz"
224
211
  end
225
212
 
226
213
  # Shortcut to parsing json
@@ -229,7 +216,6 @@ private
229
216
  #
230
217
  def json item
231
218
  require 'json'
232
- require 'open-uri'
233
219
 
234
220
  JSON.parse(open(item).read)
235
221
  end
@@ -246,9 +232,9 @@ private
246
232
  require 'optparse'
247
233
 
248
234
  OptionParser.new do |o|
249
- o.version = [0, 5, 6].join('.')
235
+ o.version = [0, 5, 7].join('.')
250
236
  o.program_name = 'Aurb'
251
- o.release = '2009-04-13'
237
+ o.release = '2009-04-14'
252
238
 
253
239
  o.on('-D', '--download P1,P2,...', Array, "Download package(s).") do |d|
254
240
  self[:cmd] = "download('#{d*"', '"}')"
@@ -259,15 +245,18 @@ private
259
245
  o.on('-U', '--upgrade', 'Check the AUR for upgrades.') do
260
246
  self[:cmd] = 'check_upgrade'
261
247
  end
262
- end.parse!(@@args)
248
+ end.parse! @@args
263
249
  end
264
250
  end
265
- end
266
251
 
267
- at_exit do
268
- if __FILE__ == $0
269
- raise $! if $!
270
- Aurb.aur.start
271
252
  end
272
253
 
254
+ at_exit do
255
+ if __FILE__ == $0
256
+ raise $! if $!
257
+ Aurb.aur.start
258
+ else
259
+ $stderr.puts 'Please only run me by myself. Thanks.'
260
+ exit 1
261
+ end
273
262
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gigamo-aurb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.6
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gigamo
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-04-13 00:00:00 -07:00
12
+ date: 2009-04-14 00:00:00 -07:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency