grabass 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. data/bin/grabass +16 -14
  2. data/lib/grabass.rb +22 -5
  3. metadata +2 -2
@@ -2,7 +2,7 @@
2
2
 
3
3
  require_relative '../lib/grabass'
4
4
 
5
- commands = ['install', 'help']
5
+ commands = ['install', 'update', 'help']
6
6
  command = ARGV.shift if commands.include? ARGV[0]
7
7
  command ||= commands[0]
8
8
 
@@ -12,10 +12,17 @@ options[:quiet] = (ARGV.delete '--quiet') || (ARGV.delete '-q')
12
12
  options[:help] = (ARGV.delete '--help') || (ARGV.delete '-h')
13
13
  options[:version] = (ARGV.delete '--version') || (ARGV.delete '-v')
14
14
 
15
- manifest = ARGV.shift if not ARGV[0].nil? and File.exists? ARGV[0]
16
- manifest = Grabass::AssetManifest.new manifest || 'assets.json'
15
+ options[:force] = true if command == 'update'
17
16
 
18
- destinations = ARGV
17
+ manifest = (ARGV.shift if not ARGV[0].nil? and File.exists? ARGV[0]) || 'assets.json'
18
+
19
+ options[:query] = ARGV.map do |arg|
20
+ Regexp.new(".*#{arg}.*", Regexp::IGNORECASE) || /.*/
21
+ end
22
+
23
+ options[:query] = [/.*/] if options[:query].length == 0
24
+
25
+ manifest = Grabass::AssetManifest.new manifest
19
26
 
20
27
  unless options[:quiet]
21
28
  started = Time.now
@@ -23,16 +30,11 @@ end
23
30
 
24
31
  case command
25
32
  when 'help'
26
- puts 'Help!'
27
- when 'install'
28
- if destinations.length == 0
29
- # Grab entire manifest
30
- results = manifest.install options
31
- else
32
- # Grab the given destinations
33
- puts 'TODO: Install specific destinations from the command line'
34
- exit
35
- end
33
+ puts 'Try `grabass assets.json`.'
34
+
35
+ when 'install', 'update'
36
+ # Grab entire manifest
37
+ results = manifest.install options
36
38
  end
37
39
 
38
40
  unless options[:quiet] or results.nil?
@@ -15,6 +15,8 @@ class Grabass
15
15
  end
16
16
 
17
17
  class Source
18
+ attr_accessor :location
19
+
18
20
  def initialize(location)
19
21
  @location = location
20
22
 
@@ -87,7 +89,7 @@ class Grabass
87
89
  end
88
90
 
89
91
  def clone_git_repo(options = {})
90
- puts Grabass::indent "Temporarily cloning #{@location}" unless options[:quiet]
92
+ puts "Temporarily cloning #{@location}" unless options[:quiet]
91
93
  `git clone --quiet #{@location} #{temp_dir}`
92
94
  end
93
95
 
@@ -158,6 +160,8 @@ class Grabass
158
160
  end
159
161
 
160
162
  class Asset
163
+ attr_accessor :source
164
+
161
165
  def initialize(source, selections)
162
166
  @source = Source.new(source)
163
167
 
@@ -190,6 +194,7 @@ class Grabass
190
194
  end
191
195
 
192
196
  class Comment
197
+ attr_accessor :content
193
198
  def initialize(content)
194
199
  @content = content
195
200
  end
@@ -230,12 +235,24 @@ class Grabass
230
235
  results = {:pass => 0, :fail => 0}
231
236
 
232
237
  @assets.each do |asset|
238
+ match = true
233
239
  if asset.is_a? Comment
234
- asset.display options
240
+ match = options[:query].any? do |query|
241
+ asset.content =~ query
242
+ end
243
+
244
+ asset.display options if match
235
245
  elsif asset.is_a? Asset
236
- asset_results = asset.install options
237
- results[:pass] += asset_results[:pass]
238
- results[:fail] += asset_results[:fail]
246
+ match = options[:query].any? do |query|
247
+ asset.source.location =~ query
248
+ end
249
+
250
+ if match
251
+ puts asset.source.location
252
+ asset_results = asset.install options
253
+ results[:pass] += asset_results[:pass]
254
+ results[:fail] += asset_results[:fail]
255
+ end
239
256
  end
240
257
  end
241
258
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grabass
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-26 00:00:00.000000000 Z
12
+ date: 2012-06-11 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description: Grab static assets and put them somewhere
15
15
  email: brian.carstensen@gmail.com