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.
- data/aurb.gemspec +2 -2
- data/bin/aurb +58 -69
- 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.
|
4
|
-
s.date = %q{2009-04-
|
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
|
-
#
|
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
|
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
|
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 "#{
|
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
|
73
|
-
|
74
|
-
|
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
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
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#{
|
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
|
-
|
151
|
-
|
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 "#{
|
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#{
|
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
|
-
|
140
|
+
require 'readline'
|
141
|
+
|
164
142
|
upgradable.each do |pkg|
|
165
|
-
|
166
|
-
|
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, "#{
|
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.
|
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
|
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("#{
|
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,
|
235
|
+
o.version = [0, 5, 7].join('.')
|
250
236
|
o.program_name = 'Aurb'
|
251
|
-
o.release = '2009-04-
|
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!
|
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.
|
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-
|
12
|
+
date: 2009-04-14 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|