buildkite_graphql_ruby 0.1.2 → 0.1.3

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: 3be58744b80556d590b40f92e5b5bfd7c8036174
4
- data.tar.gz: 54b056181cb1a9fb5c35396d2b3ab2f0950ad84d
3
+ metadata.gz: eebb44c22e64df704093d9c619a570d3fdc0d51d
4
+ data.tar.gz: 9cfe4004f3693dcc7ed45772b838c44d106dc393
5
5
  SHA512:
6
- metadata.gz: e08d44aaf3ded617e2dbf3542e329fcf90ce8fe36ca0a30602b47e47e9f49f576bebc245094b7b058a1bcacad6b6af53ef7bd86ed379eb59fa474c4961ffd5b3
7
- data.tar.gz: 6fc7f3a022b56a8da5b718421c10bec8766f0e85e20f744ff35d1405c50add79b4dfd3920e183778e327bf1a75c71aab7f381952bcf8b0a7cccac051f3d3f28a
6
+ metadata.gz: affc352d9fa6b36f242317163ece7af708b7b76a6221f32b0ff7b7325c2cab598f6a47baf434fe50019e939101f67f124b6d6bc7575e79433f8d0b8e6e3b005c
7
+ data.tar.gz: 3385d15f403325a192339aa77627b2d977c9ba4563ddea2ac9377a5652d7092f170096f0f7ed97828dd97ce03e52fc8b31e69c63a66e1ead88b5f93cda789072
@@ -1,11 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
-
3
- require "buildkite_graphql_ruby/cli"
4
- require "buildkite_graphql_ruby/query_builder"
5
- require "buildkite_graphql_ruby/query_runner"
6
- require "buildkite_graphql_ruby/commands/command_map"
7
- require 'pry'
8
-
2
+ require "buildkite_graphql_ruby"
9
3
  options = BuildkiteGraphqlRuby::CLI.parse(args: ARGV)
10
4
  command = BuildkiteGraphqlRuby::Commands::CommandMap.get_command(command_string: options.command)
11
5
  result = command.run!(options: options)
@@ -1,4 +1,9 @@
1
1
  require "buildkite_graphql_ruby/version"
2
+ require "buildkite_graphql_ruby/cli"
3
+ require "buildkite_graphql_ruby/query_builder"
4
+ require "buildkite_graphql_ruby/query_runner"
5
+ require "buildkite_graphql_ruby/commands/command_map"
6
+ require 'pry'
2
7
 
3
8
  module BuildkiteGraphqlRuby
4
9
  end
@@ -26,8 +26,23 @@ module BuildkiteGraphqlRuby
26
26
  options.branch = branch.chomp
27
27
  end
28
28
 
29
+ opts.on("-a", "--artifact_to_pull ARTIFACT_TO_PULL",
30
+ "Artifact to pull for pull_artifacts command") do |artifact_to_pull|
31
+ options.artifact_to_pull = artifact_to_pull.chomp
32
+ end
33
+
34
+ opts.on("-o", "--output_artifact OUTPUT_ARTIFACT",
35
+ "Base name of output artifact for pull_artifacts command. Dir is always tmp") do |output_artifact|
36
+ options.output_artifact = output_artifact.chomp
37
+ end
38
+
39
+ opts.on("-s", "--slug SLUG",
40
+ "Build slug to use for pull_artifacts command") do |slug|
41
+ options.slug = slug.chomp
42
+ end
43
+
29
44
  opts.on("-C", "--command COMMAND",
30
- "What type of query to run (default and only option: branch_status") do |command|
45
+ "What type of query to run (default option: branch_status)") do |command|
31
46
  # TODO: Error on unaccepted query types
32
47
  options.command = command
33
48
  end
@@ -16,7 +16,7 @@ module BuildkiteGraphqlRuby
16
16
 
17
17
  return if report_if_no_builds(total_builds, options)
18
18
 
19
- builds = builds_for_branch["edges"].map{|build_response| ResultsParsers::Build.from_response(build_response) }
19
+ builds = builds_for_branch["edges"].map{|build_response| ResultsParsers::Build.from_response(build_response['node']) }
20
20
 
21
21
  return if report_if_no_finished_builds(builds, options)
22
22
 
@@ -2,9 +2,11 @@ module BuildkiteGraphqlRuby
2
2
  module Commands
3
3
  class CommandMap
4
4
  require "buildkite_graphql_ruby/commands/branch_status"
5
+ require "buildkite_graphql_ruby/commands/pull_artifacts"
5
6
 
6
7
  COMMAND_MAP = {
7
- 'branch_status' => BranchStatus
8
+ 'branch_status' => BranchStatus,
9
+ 'pull_artifacts' => PullArtifacts
8
10
  }
9
11
 
10
12
  def self.get_command(command_string:)
@@ -0,0 +1,29 @@
1
+ module BuildkiteGraphqlRuby
2
+ module Commands
3
+ require 'rainbow'
4
+ require "buildkite_graphql_ruby/results_parsers/build"
5
+ require "buildkite_graphql_ruby/results_parsers/rspec_results"
6
+
7
+ class PullArtifacts
8
+ def run!(options:)
9
+ query = BuildkiteGraphqlRuby::QueryBuilder.new.artifacts_for_build_slug(slug: options.slug)
10
+ query_runner = BuildkiteGraphqlRuby::QueryRunner.new.run_query(query: query, options: options)
11
+ end
12
+
13
+ def report_result(result:, options:)
14
+ build = ResultsParsers::Build.from_response(result['data']['build'])
15
+ all_jobs = build.jobs
16
+ all_artifacts = []
17
+ all_jobs.each do |job|
18
+ all_artifacts += job.artifacts.select{|a| a.path == options.artifact_to_pull}
19
+ end
20
+
21
+ all_artifacts.each_with_index do |artifact, index|
22
+ filename = "tmp/#{index} #{options.output_artifact}"
23
+ puts "Writing file: #{filename}"
24
+ File.open(filename, 'w') { |f| f.write(artifact.download) }
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -1,5 +1,34 @@
1
1
  module BuildkiteGraphqlRuby
2
2
  class QueryBuilder
3
+ def artifacts_for_build_slug(slug:)
4
+ query = <<~EOS
5
+ {
6
+ build(slug:"#{slug}") {
7
+ jobs(last: 50) {
8
+ edges {
9
+ node {
10
+ ... on JobTypeCommand {
11
+ agent {
12
+ id
13
+ }
14
+ artifacts(first: 300) {
15
+ edges {
16
+ node {
17
+ id
18
+ path
19
+ downloadURL
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
27
+ }
28
+ }
29
+ EOS
30
+ end
31
+
3
32
  def branch_status(branch:)
4
33
  query = <<~EOS
5
34
  {
@@ -31,18 +31,16 @@ module BuildkiteGraphqlRuby
31
31
  # NOT_RUN
32
32
  # The build wasn't run
33
33
 
34
- def self.from_response(response)
35
- node = response['node']
36
-
37
- jobs = node['jobs']["edges"].select{|j| j['node'].keys.count > 0 }.map{|build_response| ResultsParsers::Job.from_response(build_response) }
34
+ def self.from_response(build_response)
35
+ jobs = build_response['jobs']["edges"].select{|j| j['node'].keys.count > 0 }.map{|build_response| ResultsParsers::Job.from_response(build_response) }
38
36
 
39
37
  new(
40
- branch: node['branch'],
41
- state: node['state'],
42
- url: node['url'],
43
- started_at: node['startedAt'] && Time.parse(node['startedAt']),
44
- finished_at: node['finishedAt'] && Time.parse(node['finishedAt']),
45
- pull_request: node['pullRequest'],
38
+ branch: build_response['branch'],
39
+ state: build_response['state'],
40
+ url: build_response['url'],
41
+ started_at: build_response['startedAt'] && Time.parse(build_response['startedAt']),
42
+ finished_at: build_response['finishedAt'] && Time.parse(build_response['finishedAt']),
43
+ pull_request: build_response['pullRequest'],
46
44
  jobs: jobs,
47
45
  )
48
46
  end
@@ -1,3 +1,3 @@
1
1
  module BuildkiteGraphqlRuby
2
- VERSION = "0.1.2"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: buildkite_graphql_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Evanczuk
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-18 00:00:00.000000000 Z
11
+ date: 2019-03-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -80,6 +80,20 @@ dependencies:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: pry-stack_explorer
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: 0.4.9.3
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: 0.4.9.3
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rainbow
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -111,6 +125,7 @@ files:
111
125
  - lib/buildkite_graphql_ruby/cli.rb
112
126
  - lib/buildkite_graphql_ruby/commands/branch_status.rb
113
127
  - lib/buildkite_graphql_ruby/commands/command_map.rb
128
+ - lib/buildkite_graphql_ruby/commands/pull_artifacts.rb
114
129
  - lib/buildkite_graphql_ruby/query_builder.rb
115
130
  - lib/buildkite_graphql_ruby/query_runner.rb
116
131
  - lib/buildkite_graphql_ruby/results_parsers/artifact.rb