Class: CircleciArtifact::Fetcher
- Inherits:
-
Object
- Object
- CircleciArtifact::Fetcher
- Defined in:
- lib/circleci_artifact.rb
Overview
This is the main interface, handles fetching and parsing
Instance Method Summary collapse
-
#fetch_queries(queries) ⇒ ResultSet
Give array of Query to find, returns Results.
-
#initialize(token:, username:, reponame:, build:) ⇒ Fetcher
constructor
A new instance of Fetcher.
-
#parse(artifacts:, queries:) ⇒ ResultSet
Internal method for extracting results.
Constructor Details
#initialize(token:, username:, reponame:, build:) ⇒ Fetcher
Returns a new instance of Fetcher.
92 93 94 95 96 97 98 99 100 101 102 103 104 |
# File 'lib/circleci_artifact.rb', line 92 def initialize(token:, username:, reponame:, build:) raise ArgumentError, 'Error: Missing CIRCLE_API_TOKEN' if token.to_s.empty? raise ArgumentError, 'Error: Missing CIRCLE_PROJECT_USERNAME' if username.to_s.empty? raise ArgumentError, 'Error: Missing CIRCLE_PROJECT_REPONAME' if reponame.to_s.empty? raise ArgumentError, 'Error: Missing CIRCLE_BUILD_NUM' if build.to_s.empty? @token = token @username = username @reponame = reponame @build = build @config = CircleCi::Config.new token: token end |
Instance Method Details
#fetch_queries(queries) ⇒ ResultSet
Give array of Query to find, returns Results
110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/circleci_artifact.rb', line 110 def fetch_queries(queries) raise ArgumentError, 'Error: Must have queries' unless queries.is_a?(Array) build = CircleCi::Build.new @username, @reponame, nil, @build, @config artifacts = build.artifacts if artifacts.nil? STDERR.puts 'Error: No artifacts' return Results.new end parse(artifacts: artifacts, queries: queries) end |
#parse(artifacts:, queries:) ⇒ ResultSet
Internal method for extracting results
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/circleci_artifact.rb', line 126 def parse(artifacts:, queries:) raise ArgumentError, 'Error: Must have artifacts' if artifacts.nil? raise ArgumentError, 'Error: Must have queries' unless queries.is_a?(Array) # Example # [ # { # node_index: 0, # path: "/tmp/circle-artifacts.NHQxLku/cherry-pie.png", # pretty_path: "$CIRCLE_ARTIFACTS/cherry-pie.png", # url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/cherry-pie.png" # }, # { # node_index: 0, # path: "/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png", # pretty_path: "$CIRCLE_ARTIFACTS/rhubarb-pie.png", # url: "https://circleci.com/gh/circleci/mongofinil/22/artifacts/0/tmp/circle-artifacts.NHQxLku/rhubarb-pie.png" # } # ] results = ResultSet.new artifacts.body.each do |artifact| url = artifact['url'] if url.nil? STDERR.puts "Warning: No URL found on #{artifact}" next end query = queries.find { |q| url.include?(q.url_substring) } next if query.nil? result = Result.new(query: query, url: url) results.add_result(result) end results end |