right_scraper 5.1.1 → 5.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: aeafef3534344761cfb4b2bc01dc8a8aec848390
4
- data.tar.gz: ac21c7c9c6121c4470f8d90b6a8b16a994e963e0
3
+ metadata.gz: af3229fa87070f86fc76485027161ac82a40b77d
4
+ data.tar.gz: c65bfccf9eddef84be1fe95dff0d08a9a6d07e63
5
5
  SHA512:
6
- metadata.gz: 158ca23e31b79c3b9e57f09cce5f1abf95a28132412f6fd1ae5f91d03bc84874c2cc536399ceb465942180d2cc764dbebf6046362a211c9c1759c4a5cbda2752
7
- data.tar.gz: 318501b488f55fe9f4ac2701f0d3bad1ee2d26b7e2ab7645818d38f8d1eadd66720436c3a80b80c204b09014d75c4ff140718e2fb813680455822c3c90e2dc21
6
+ metadata.gz: b0f38e7b46f971944d51e4b44fb4fef807c89a4e246ee7752b7eb8eea5719a188c6cdb549f46b924a8e9f21a1ee481d8225ef1a3a5c9303e3a940a4fc3c7d485
7
+ data.tar.gz: 6f051b52dc8c674eacf16e9c7a0cbdb0efd06c7cdd256e875bbb4d74a887c5367c057f42d4704032d7310d0882968c94046a94ce957703c8310b6aef3aa81232
@@ -39,6 +39,15 @@ main = nil
39
39
  begin
40
40
  options = ::JSON.load(::File.read(::ARGV.shift))
41
41
  repository = ::JSON.load(::File.read(::ARGV.shift))
42
+
43
+ # use credentials from environment, if available.
44
+ if !(repo_first_cred = ::ENV['REPOSITORY_FIRST_CREDENTIAL'].to_s).empty?
45
+ repository['first_credential'] = repo_first_cred
46
+ if !(repo_second_cred = ::ENV['REPOSITORY_SECOND_CREDENTIAL'].to_s).empty?
47
+ repository['second_credential'] = repo_second_cred
48
+ end
49
+ end
50
+
42
51
  main = ::RightScraper::Main.new(options)
43
52
  if retrieved = main.retrieve(repository)
44
53
  # remove any credentials from repository after retrieval; not needed in
@@ -41,18 +41,35 @@ begin
41
41
  retrieved = ::JSON.load(::File.read(::ARGV.shift))
42
42
  main = ::RightScraper::Main.new(options)
43
43
 
44
+ # use credentials from environment, if available.
45
+ if !(aws_access_key_id = ::ENV['AWS_ACCESS_KEY_ID'].to_s).empty?
46
+ options['s3_key'] = aws_access_key_id
47
+ if !(aws_secret_access_key = ::ENV['AWS_SECRET_ACCESS_KEY'].to_s).empty?
48
+ options['s3_secret'] = aws_secret_access_key
49
+ end
50
+ end
51
+
44
52
  # cleanup any leftover errors/warnings in retrieved hash.
45
53
  retrieved.delete('errors')
46
54
  retrieved.delete('warnings')
47
55
  if main.scan(retrieved)
48
- retrieved[:warnings] = main.warnings unless main.warnings.empty?
49
- retrieved[:resources] = main.resources.map do |r|
50
- # remove repository from each returned cookbook due to redundancy.
51
- h = r.to_hash
52
- h.delete(:repository)
53
- h
56
+ result = {}
57
+ result[:warnings] = main.warnings unless main.warnings.empty?
58
+
59
+ # we can optimize by not marshaling back resources when the only scanner is
60
+ # CookbookMetadata. the reason is that we expect this scanner to only be
61
+ # called in unprivileged isolation followed by more scanners with more
62
+ # privileges and only the latter need to return fully resolved resources.
63
+ if main.scanners != [RightScraper::Scanners::CookbookMetadata]
64
+ result[:resources] = main.resources.map do |r|
65
+ # remove relational repository from each returned cookbook due to being
66
+ # the same for each resource and already known to caller.
67
+ h = r.to_hash
68
+ h.delete(:repository)
69
+ h
70
+ end
54
71
  end
55
- $stdout.puts(::JSON.generate(retrieved))
72
+ $stdout.puts(::JSON.generate(result))
56
73
  else
57
74
  result = { errors: main.errors }
58
75
  $stderr.puts(::JSON.generate(result))
@@ -221,6 +221,16 @@ module RightScraper
221
221
  @logger.warnings
222
222
  end
223
223
 
224
+ # (Array):: scanners or empty
225
+ def builders
226
+ return @options[:builders]
227
+ end
228
+
229
+ # (Array):: scanners or empty
230
+ def scanners
231
+ return @options[:scanners]
232
+ end
233
+
224
234
  # Was scraping successful?
225
235
  # Call errors to get error messages if false
226
236
  #
@@ -72,8 +72,8 @@ module RightScraper::Resources
72
72
  def to_hash
73
73
  {
74
74
  repository: repository,
75
- metadata: metadata,
76
- manifest: manifest,
75
+ metadata: ::JSON.dump(metadata), # pass these as opaque JSON blobs to
76
+ manifest: ::JSON.dump(manifest), # be unmarshaled only by from_hash
77
77
  pos: pos
78
78
  }
79
79
  end
@@ -82,7 +82,14 @@ module RightScraper::Resources
82
82
  def self.from_hash(h)
83
83
  h = ::RightSupport::Data::Mash.new(h)
84
84
  c = self.new(h[:repository], h[:pos], h[:repo_dir])
85
- c.manifest = h[:manifest]
85
+ if (md = h[:metadata]).kind_of?(::String)
86
+ md = ::JSON.load(md)
87
+ end
88
+ c.metadata = md
89
+ if (mf = h[:manifest]).kind_of?(::String)
90
+ mf = ::JSON.load(mf)
91
+ end
92
+ c.manifest = mf
86
93
  c
87
94
  end
88
95
 
@@ -23,7 +23,7 @@
23
23
 
24
24
  module RightScraper
25
25
  # for gemspec, etc.
26
- GEM_VERSION = '5.1.1'
26
+ GEM_VERSION = '5.2.2'
27
27
 
28
28
  # (Fixnum) protocol versioning scheme; prepended to hashes to
29
29
  # prevent collisions.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_scraper
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.1
4
+ version: 5.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Raphael Simon
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-03-15 00:00:00.000000000 Z
13
+ date: 2016-03-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: right_aws