buildbox 0.6.2 → 0.7.beta1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 68dea0dd1dfaec341eed5d652a08e0f8c56c6396
4
- data.tar.gz: f550979f04882945338cf64901ad5efa9e971850
3
+ metadata.gz: 8c826fa8d512aa4840866a5c42d71739e8e7a5f5
4
+ data.tar.gz: 0c8573bf2fed15b3a1b1a9985186e1cad0a94269
5
5
  SHA512:
6
- metadata.gz: 607416e91d377076dbe612f29adc2c66022db3d18afccdfef186f9664a7fdfdc76770ddaa1437fbb84b05e700fdeaa6927c304288ddceab322f256f867a6a68e
7
- data.tar.gz: f7994c33e995b7fd07b50c2bf43e499c3cb23b190b0eaaac68891b7d2b21e72114e8526516230c9ee1ec6bd73a6fd8d295e8a606d827c4f0f4974aee6a34960d
6
+ metadata.gz: 80fe44701584eceef7d1876cda79d8da7421023eb3c52644f1e54adf232f2322e474e69b5c2ed722fc1e36a3a8e65b7a07e798d6166473c24ebe855939426748
7
+ data.tar.gz: 1e4bbd814110f6f5ade70580876447567cb1736bb537e87999577195f1f0aa1d0adaf00bee96153ab2db38facd877249555a21bf87aabac2b7b009f0888e16a8
@@ -1,14 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- buildbox (0.6.1)
5
- celluloid (~> 0.14)
4
+ buildbox (0.6)
5
+ celluloid (~> 0.15)
6
6
  childprocess (~> 0.3)
7
- faraday (~> 0.8.0)
8
- faraday_middleware (~> 0.9)
9
- hashie (~> 2.0)
10
- mime-types (~> 2.0)
11
- multi_json (~> 1.7)
7
+ mime-types (~> 2)
8
+ multipart-post (~> 2)
9
+ oj (~> 2.5)
12
10
 
13
11
  GEM
14
12
  remote: https://rubygems.org/
@@ -16,23 +14,18 @@ GEM
16
14
  addressable (2.3.5)
17
15
  celluloid (0.15.2)
18
16
  timers (~> 1.1.0)
19
- childprocess (0.4.2)
17
+ childprocess (0.4.0)
20
18
  ffi (~> 1.0, >= 1.0.11)
21
19
  crack (0.4.1)
22
20
  safe_yaml (~> 0.9.0)
23
21
  diff-lcs (1.2.5)
24
22
  docile (1.1.0)
25
- faraday (0.8.9)
26
- multipart-post (~> 1.2.0)
27
- faraday_middleware (0.9.0)
28
- faraday (>= 0.7.4, < 0.9)
29
23
  ffi (1.9.3)
30
- ffi (1.9.3-x86-mingw32)
31
- hashie (2.0.5)
32
24
  lockfile (2.1.0)
33
- mime-types (2.1)
25
+ mime-types (2.0)
34
26
  multi_json (1.8.2)
35
- multipart-post (1.2.0)
27
+ multipart-post (2.0.0)
28
+ oj (2.5.4)
36
29
  rake (10.1.0)
37
30
  rspec (2.14.1)
38
31
  rspec-core (~> 2.14.0)
@@ -18,13 +18,11 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency 'faraday', '~> 0.8.0'
22
- spec.add_dependency 'faraday_middleware', '~> 0.9'
23
- spec.add_dependency 'hashie', '~> 2.0'
24
- spec.add_dependency 'multi_json', '~> 1.7'
25
- spec.add_dependency 'celluloid', '~> 0.14'
26
- spec.add_dependency 'childprocess', '~> 0.3'
27
- spec.add_dependency 'mime-types', '~> 2.0'
21
+ spec.add_dependency 'oj', '~> 2.5'
22
+ spec.add_dependency 'celluloid', '~> 0.15'
23
+ spec.add_dependency 'childprocess', '~> 0.3'
24
+ spec.add_dependency 'multipart-post', '~> 2'
25
+ spec.add_dependency 'mime-types', '~> 2'
28
26
 
29
27
  spec.add_development_dependency 'rake'
30
28
  spec.add_development_dependency 'rspec'
@@ -6,10 +6,12 @@ module Buildbox
6
6
  autoload :Artifact, "buildbox/artifact"
7
7
  autoload :Build, "buildbox/build"
8
8
  autoload :Command, "buildbox/command"
9
+ autoload :Connection, "buildbox/connection"
9
10
  autoload :Canceler, "buildbox/canceler"
10
11
  autoload :CLI, "buildbox/cli"
11
12
  autoload :Configuration, "buildbox/configuration"
12
13
  autoload :Monitor, "buildbox/monitor"
14
+ autoload :Model, "buildbox/model"
13
15
  autoload :Platform, "buildbox/platform"
14
16
  autoload :Runner, "buildbox/runner"
15
17
  autoload :Script, "buildbox/script"
@@ -1,29 +1,6 @@
1
- require 'faraday'
2
- require 'faraday_middleware'
3
- require 'hashie/mash'
4
- require 'delegate'
5
-
6
1
  module Buildbox
7
2
  class API
8
- # Faraday uses debug to show response information, but when the agent is in
9
- # DEBUG mode, it's kinda useless noise. So we use a ProxyLogger to only push
10
- # the information we care about to the logger.
11
- class ProxyLogger
12
- def initialize(logger)
13
- @logger = logger
14
- end
15
-
16
- def info(*args)
17
- @logger.debug(*args)
18
- end
19
-
20
- def debug(*args)
21
- # no-op
22
- end
23
- end
24
-
25
- class AgentNotFoundError < Faraday::Error::ClientError; end
26
- class ServerError < Faraday::Error::ClientError; end
3
+ class AgentNotFoundError < StandardError; end
27
4
 
28
5
  def initialize(config = Buildbox.config, logger = Buildbox.logger)
29
6
  @config = config
@@ -31,19 +8,15 @@ module Buildbox
31
8
  end
32
9
 
33
10
  def agent(access_token, options)
34
- put(access_token, options)
35
- rescue Faraday::Error::ClientError => e
36
- if e.response && e.response[:status] == 404
37
- raise AgentNotFoundError.new(e, e.response)
38
- else
39
- raise ServerError.new(e, e.response)
40
- end
11
+ connection.request(:put, access_token, options)
12
+ rescue Buildbox::Connection::NotFoundError => e
13
+ raise AgentNotFoundError.new(e.message)
41
14
  end
42
15
 
43
16
  def next_build(access_token)
44
- response = get("#{access_token}/builds/queue/next")
17
+ response = connection.request(:get, "#{access_token}/builds/queue/next")
45
18
 
46
- if build = response.build
19
+ if build = response['build']
47
20
  Buildbox::Build.new(build)
48
21
  else
49
22
  nil
@@ -51,56 +24,25 @@ module Buildbox
51
24
  end
52
25
 
53
26
  def update_build(access_token, build, options)
54
- put("#{access_token}/builds/#{build.id}", options)
27
+ connection.request(:put, "#{access_token}/builds/#{build.id}", options)
55
28
  end
56
29
 
57
30
  def create_artifacts(access_token, build, artifacts)
58
- post("#{access_token}/builds/#{build.id}/artifacts", :artifacts => artifacts.map(&:as_json))
31
+ connection.request(:post, "#{access_token}/builds/#{build.id}/artifacts", :artifacts => artifacts.map(&:as_json))
59
32
  end
60
33
 
61
34
  def update_artifact(access_token, build, artifact_id, options)
62
- put("#{access_token}/builds/#{build.id}/artifacts/#{artifact_id}", options)
35
+ connection.request(:put, "#{access_token}/builds/#{build.id}/artifacts/#{artifact_id}", options)
63
36
  end
64
37
 
65
38
  private
66
39
 
67
40
  def connection
68
- @connection ||= Faraday.new(:url => @config.api_endpoint,
69
- :ssl => { :ca_file => Buildbox.gem_path.join("lib", "certs", "cacert.pem").to_s }) do |faraday|
70
- faraday.request :retry
71
- faraday.request :json
72
-
73
- faraday.response :logger, ProxyLogger.new(@logger)
74
- faraday.response :mashify
75
-
76
- # JSON needs to come after mashify as it needs to run before the mashify
77
- # middleware.
78
- faraday.response :json
79
- faraday.response :raise_error
80
-
81
- faraday.adapter Faraday.default_adapter
82
-
83
- # Set some sensible defaults on the adapter.
84
- faraday.options[:timeout] = 60
85
- faraday.options[:open_timeout] = 60
86
- end
87
- end
88
-
89
- def post(path, body = {})
90
- connection.post(path) do |request|
91
- request.body = body
92
- request.headers['Content-Type'] = 'application/json'
93
- end.body
94
- end
95
-
96
- def put(path, body = {})
97
- connection.put(path) do |request|
98
- request.body = body
99
- end.body
100
- end
41
+ @connection ||= begin
42
+ ca_file = Buildbox.gem_path.join("lib", "certs", "cacert.pem").to_s
101
43
 
102
- def get(path)
103
- connection.get(path).body
44
+ Buildbox::Connection.new(@logger, @config.api_endpoint, ca_file)
45
+ end
104
46
  end
105
47
  end
106
48
  end
@@ -1,5 +1,6 @@
1
1
  require 'celluloid'
2
- require 'mime/types'
2
+ require 'net/http/post/multipart'
3
+ require 'mime-types'
3
4
 
4
5
  module Buildbox
5
6
  class Artifact::Poster
@@ -8,40 +9,36 @@ module Buildbox
8
9
 
9
10
  def post(api, access_token, build, artifact)
10
11
  upload_action = artifact.upload_instructions['action']
11
- form_data = artifact.upload_instructions['data'].to_hash.dup
12
-
13
- connection = Faraday.new(:url => upload_action['url']) do |faraday|
14
- faraday.request :multipart
15
-
16
- faraday.response :raise_error
17
-
18
- faraday.options[:timeout] = 60
19
- faraday.options[:open_timeout] = 60
20
-
21
- faraday.adapter Faraday.default_adapter
22
- end
12
+ form_data = artifact.upload_instructions['data']
23
13
 
24
14
  mime_type = MIME::Types.type_for(artifact.path)[0].to_s
25
15
 
16
+ # Assign the file to upload to the right key in the form
17
+ # data hash.
26
18
  file_input_key = upload_action['file_input']
27
- form_data[file_input_key] = Faraday::UploadIO.new(artifact.path, mime_type)
19
+ form_data[file_input_key] = UploadIO.new(artifact.path, mime_type)
28
20
 
21
+ # Let Buildbox know we've started the upload
29
22
  api.update_artifact(access_token, build, artifact.remote_id, :state => 'uploading')
30
23
 
31
- upload_exception = nil
32
- response = nil
24
+ # Do the file upload
25
+ response = begin
26
+ uri = URI.join(upload_action['url'], upload_action['path'])
33
27
 
34
- begin
35
- response = connection.post(upload_action['path'], form_data)
36
- rescue => e
37
- upload_exception = e
38
- end
28
+ http = Net::HTTP.new(uri.host, uri.port)
29
+ http.open_timeout = 64
30
+ http.read_timeout = 64
31
+ http.use_ssl = uri.scheme == "https"
32
+
33
+ http.request(Net::HTTP::Post::Multipart.new(uri.path, form_data))
34
+ rescue => upload_exception
35
+ end
39
36
 
40
37
  if upload_exception
41
38
  error "Error uploading #{artifact.basename} with a status of (#{upload_exception.class.name}: #{upload_exception.message})"
42
39
  finished_state = 'error'
43
40
  else
44
- info "Finished uploading #{artifact.basename} with a status of #{response.status}"
41
+ info "Finished uploading #{artifact.basename} with a status of #{response.code}"
45
42
  finished_state = 'finished'
46
43
  end
47
44
 
@@ -7,10 +7,10 @@ module Buildbox
7
7
  include Celluloid::Logger
8
8
 
9
9
  def initialize(api, access_token, build, artifacts)
10
- @api = api
10
+ @api = api
11
11
  @access_token = access_token
12
- @build = build
13
- @artifacts = artifacts
12
+ @build = build
13
+ @artifacts = artifacts
14
14
  end
15
15
 
16
16
  def prepare_and_upload
@@ -20,7 +20,7 @@ module Buildbox
20
20
  responses.each do |response|
21
21
  artifact = @artifacts.find { |artifact| artifact.id == response['id'] }
22
22
 
23
- artifact.remote_id = response['artifact']['id']
23
+ artifact.remote_id = response['artifact']['id']
24
24
  artifact.upload_instructions = response['artifact']['uploader']
25
25
  end
26
26
 
@@ -1,7 +1,11 @@
1
- require 'hashie/mash'
2
-
3
1
  module Buildbox
4
- class Build < Hashie::Mash
2
+ class Build
3
+ include Buildbox::Model
4
+
5
+ attr_accessor :id, :script, :env, :namespace,
6
+ :started_at, :output, :exit_status, :finished_at,
7
+ :process, :artifact_paths
8
+
5
9
  def success?
6
10
  exit_status == 0
7
11
  end
@@ -59,8 +59,8 @@ module Buildbox
59
59
  end
60
60
 
61
61
  access_token = @argv.first
62
- new_access_tokens = Buildbox.config.agent_access_tokens + [access_token]
63
- Buildbox.config.update(:agent_access_tokens => new_access_tokens.uniq)
62
+ agent_access_tokens = Buildbox.config.agent_access_tokens
63
+ Buildbox.config.update(:agent_access_tokens => agent_access_tokens << access_token)
64
64
 
65
65
  puts "Successfully added agent access token"
66
66
  puts "You can now start the agent with: buildbox agent:start."
@@ -26,9 +26,9 @@ module Buildbox
26
26
  end
27
27
 
28
28
  def initialize(*args)
29
- @options = args.last.is_a?(Hash) ? args.pop : {}
29
+ @options = args.last.is_a?(Hash) ? args.pop : {}
30
30
  @arguments = args.dup
31
- @logger = Buildbox.logger
31
+ @logger = Buildbox.logger
32
32
  end
33
33
 
34
34
  def arguments
@@ -55,9 +55,9 @@ module Buildbox
55
55
  IO.pipe
56
56
  end
57
57
 
58
- process.io.stdout = write_pipe
59
- process.io.stderr = write_pipe
60
- process.duplex = true
58
+ process.io.stdout = write_pipe
59
+ process.io.stderr = write_pipe
60
+ process.duplex = true
61
61
 
62
62
  # Set the environment on the process
63
63
  if @options[:environment]
@@ -66,14 +66,20 @@ module Buildbox
66
66
  end
67
67
  end
68
68
 
69
+ # Record the start time for timeout purposes
70
+ start_time = Time.now.to_i
71
+
72
+ # Track the output as it goes
73
+ output = ""
74
+
69
75
  # Start the process
70
76
  process.start
71
77
 
78
+ @logger.debug("Process #{arguments} started with PID: #{process.pid}")
79
+
72
80
  # Make sure the stdin does not buffer
73
81
  process.io.stdin.sync = true
74
82
 
75
- @logger.debug("Process #{arguments} started with PID: #{process.pid}")
76
-
77
83
  if RUBY_PLATFORM != "java"
78
84
  # On Java, we have to close after. See down the method...
79
85
  # Otherwise, we close the writer right here, since we're
@@ -81,28 +87,18 @@ module Buildbox
81
87
  write_pipe.close
82
88
  end
83
89
 
84
- # Record the start time for timeout purposes
85
- start_time = Time.now.to_i
86
-
87
- # Track the output as it goes
88
- output = ""
89
-
90
- @logger.debug("Selecting on IO")
91
90
  while true
92
91
  results = IO.select([read_pipe], nil, nil, timeout || 0.1) || []
93
92
  readers = results[0]
94
93
 
95
94
  # Check if we have exceeded our timeout
96
95
  raise TimeoutExceeded if timeout && (Time.now.to_i - start_time) > timeout
97
- # Kill the process and wait a bit for it to disappear
98
- # Process.kill('KILL', process.pid)
99
- # Process.waitpid2(process.pid)
100
96
 
101
97
  # Check the readers to see if they're ready
102
98
  if readers && !readers.empty?
103
99
  readers.each do |r|
104
100
  # Read from the IO object
105
- data = read_io(r)
101
+ data = read_until_block(r)
106
102
 
107
103
  # We don't need to do anything if the data is empty
108
104
  next if data.empty?
@@ -136,7 +132,7 @@ module Buildbox
136
132
  # process exited.
137
133
 
138
134
  # Read the extra data
139
- extra_data = read_io(read_pipe)
135
+ extra_data = read_until_block(read_pipe)
140
136
 
141
137
  # If there's some that we missed
142
138
  if extra_data != ""
@@ -150,7 +146,7 @@ module Buildbox
150
146
  write_pipe.close
151
147
  end
152
148
 
153
- @output = output.chomp
149
+ @output = output.chomp
154
150
  @exit_status = process.exit_code
155
151
  end
156
152
 
@@ -161,7 +157,7 @@ module Buildbox
161
157
  # data.
162
158
  #
163
159
  # @return [String]
164
- def read_io(io)
160
+ def read_until_block(io)
165
161
  data = ""
166
162
 
167
163
  while true
@@ -1,20 +1,21 @@
1
- require 'hashie/mash'
2
1
  require 'json'
3
2
 
4
3
  module Buildbox
5
- class Configuration < Hashie::Mash
4
+ class Configuration
5
+ include Buildbox::Model
6
+
6
7
  def agent_access_tokens
7
8
  env_agents = ENV['BUILDBOX_AGENTS']
8
9
 
9
10
  if env_agents.nil?
10
- self[:agent_access_tokens] || []
11
+ @agent_access_tokens || []
11
12
  else
12
13
  env_agents.to_s.split(",")
13
14
  end
14
15
  end
15
16
 
16
17
  def api_endpoint
17
- endpoint = ENV['BUILDBOX_API_ENDPOINT'] || self[:api_endpoint] || "https://agent.buildbox.io/v1"
18
+ endpoint = ENV['BUILDBOX_API_ENDPOINT'] || @api_endpoint || "https://agent.buildbox.io/v1"
18
19
 
19
20
  # hack to update legacy endpoints
20
21
  if endpoint == "https://api.buildbox.io/v1"
@@ -27,7 +28,8 @@ module Buildbox
27
28
  end
28
29
 
29
30
  def update(attributes)
30
- attributes.each_pair { |key, value| self[key] = value }
31
+ self.attributes = attributes
32
+
31
33
  save
32
34
  end
33
35
 
@@ -46,11 +48,12 @@ module Buildbox
46
48
  private
47
49
 
48
50
  def pretty_json
49
- JSON.pretty_generate(self)
51
+ JSON.pretty_generate(:agent_access_tokens => agent_access_tokens,
52
+ :api_endpoint => api_endpoint)
50
53
  end
51
54
 
52
55
  def read_and_load
53
- merge! JSON.parse(path.read)
56
+ self.attributes = JSON.parse(path.read)
54
57
  end
55
58
 
56
59
  def path
@@ -0,0 +1,88 @@
1
+ require 'net/http'
2
+ require 'net/https'
3
+ require 'oj'
4
+
5
+ module Buildbox
6
+ class Connection
7
+ class Error < StandardError; end
8
+ class NotFoundError < Error; end
9
+ class UnexpectedResponseError < Error; end
10
+
11
+ def initialize(logger, endpoint, ca_file)
12
+ @logger = logger
13
+ @endpoint = URI.parse(endpoint)
14
+ @ca_file = ca_file
15
+ end
16
+
17
+ def request(method, path, body = nil)
18
+ # Poor mans URI concatination
19
+ path = File.join(@endpoint.request_uri, path)
20
+ attempts = 3
21
+
22
+ begin
23
+ @logger.debug "#{method} #{path}"
24
+
25
+ response = case method
26
+ when :get
27
+ http.get(path)
28
+ when :post
29
+ http.post(path, dump_request_json(body), headers)
30
+ when :put
31
+ http.put(path, dump_request_json(body), headers)
32
+ end
33
+
34
+ handle_response(response)
35
+ rescue => e
36
+ if (attempts -= 1).zero?
37
+ raise e
38
+ else
39
+ retry
40
+ end
41
+ end
42
+ end
43
+
44
+ private
45
+
46
+ def headers
47
+ { "Content-Type" => "application/json" }
48
+ end
49
+
50
+ def dump_request_json(json)
51
+ # Compact ensures symbols get turned into strings
52
+ Oj.dump(json, :mode => :compat)
53
+ end
54
+
55
+ def parse_response_json(response)
56
+ if response.content_type == "application/json"
57
+ Oj.load(response.body)
58
+ else
59
+ raise UnexpectedResponseError.new(response.body[0..100])
60
+ end
61
+ end
62
+
63
+ def handle_response(response)
64
+ case response.code.to_i
65
+ when 200...300
66
+ parse_response_json(response)
67
+ when 404
68
+ raise NotFoundError.new(parse_response_json(response))
69
+ else
70
+ raise UnexpectedResponseError.new(response.body)
71
+ end
72
+ end
73
+
74
+ def http
75
+ http = Net::HTTP.new(@endpoint.host, @endpoint.port)
76
+ http.open_timeout = 64
77
+ http.read_timeout = 64
78
+
79
+ if @endpoint.scheme == "https"
80
+ http.use_ssl = true
81
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
82
+ end
83
+
84
+ http.ca_file = @ca_file
85
+ http
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,15 @@
1
+ module Buildbox
2
+ module Model
3
+ def initialize(attributes = {})
4
+ if attributes.kind_of?(Hash)
5
+ self.attributes = attributes
6
+ end
7
+ end
8
+
9
+ def attributes=(attributes)
10
+ attributes.each_pair do |key, value|
11
+ instance_variable_set("@#{key}", value)
12
+ end
13
+ end
14
+ end
15
+ end
@@ -23,7 +23,7 @@ module Buildbox
23
23
  :output => @build.output,
24
24
  :exit_status => @build.exit_status)
25
25
 
26
- if updated_build.state == 'canceled' && !@build.cancelling?
26
+ if updated_build['state'] == 'canceled' && !@build.cancelling?
27
27
  Buildbox::Canceler.new(@build).async.cancel
28
28
  end
29
29
 
@@ -5,9 +5,10 @@ module Buildbox
5
5
  INTERVAL = 5
6
6
 
7
7
  def initialize(config = Buildbox.config, logger = Buildbox.logger)
8
- @config = config
9
- @logger = logger
8
+ @config = config
9
+ @logger = logger
10
10
  @supervisors = []
11
+ @iterations = 0
11
12
  end
12
13
 
13
14
  def start
@@ -25,6 +26,8 @@ module Buildbox
25
26
  supervisor.actors.first.async.process
26
27
  end
27
28
 
29
+ GC.start
30
+
28
31
  wait INTERVAL
29
32
  end
30
33
  end
@@ -1,3 +1,3 @@
1
1
  module Buildbox
2
- VERSION = "0.6.2"
2
+ VERSION = "0.7.beta1"
3
3
  end
@@ -6,7 +6,7 @@ describe 'running a build' do
6
6
  let(:commit) { "3e0c65433b241ff2c59220f80bcdcd2ebb7e4b96" }
7
7
  let(:command) { "rspec test_spec.rb" }
8
8
  let(:env) { { } }
9
- let(:build) { Buildbox::Build.new(:project => { :id => "test" }, :namespace => "test/test", :id => 1, :script => script, :env => env) }
9
+ let(:build) { Buildbox::Build.new(:namespace => "test/test", :id => 1, :script => script, :env => env) }
10
10
  let(:runner) { Buildbox::Runner.new(build) }
11
11
  let(:script) do
12
12
  <<-SCRIPT
@@ -19,7 +19,6 @@ fi
19
19
  git clean -fd
20
20
  git fetch -q
21
21
  git checkout -qf #{commit}
22
- bundle install --local
23
22
  #{command}
24
23
  SCRIPT
25
24
  end
metadata CHANGED
@@ -1,113 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: buildbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.2
4
+ version: 0.7.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Pitt
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-02-20 00:00:00.000000000 Z
11
+ date: 2014-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: faraday
14
+ name: oj
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.8.0
19
+ version: '2.5'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.8.0
26
+ version: '2.5'
27
27
  - !ruby/object:Gem::Dependency
28
- name: faraday_middleware
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - "~>"
32
- - !ruby/object:Gem::Version
33
- version: '0.9'
34
- type: :runtime
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - "~>"
39
- - !ruby/object:Gem::Version
40
- version: '0.9'
41
- - !ruby/object:Gem::Dependency
42
- name: hashie
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '2.0'
48
- type: :runtime
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '2.0'
55
- - !ruby/object:Gem::Dependency
56
- name: multi_json
28
+ name: celluloid
57
29
  requirement: !ruby/object:Gem::Requirement
58
30
  requirements:
59
31
  - - "~>"
60
32
  - !ruby/object:Gem::Version
61
- version: '1.7'
33
+ version: '0.15'
62
34
  type: :runtime
63
35
  prerelease: false
64
36
  version_requirements: !ruby/object:Gem::Requirement
65
37
  requirements:
66
38
  - - "~>"
67
39
  - !ruby/object:Gem::Version
68
- version: '1.7'
40
+ version: '0.15'
69
41
  - !ruby/object:Gem::Dependency
70
- name: celluloid
42
+ name: childprocess
71
43
  requirement: !ruby/object:Gem::Requirement
72
44
  requirements:
73
45
  - - "~>"
74
46
  - !ruby/object:Gem::Version
75
- version: '0.14'
47
+ version: '0.3'
76
48
  type: :runtime
77
49
  prerelease: false
78
50
  version_requirements: !ruby/object:Gem::Requirement
79
51
  requirements:
80
52
  - - "~>"
81
53
  - !ruby/object:Gem::Version
82
- version: '0.14'
54
+ version: '0.3'
83
55
  - !ruby/object:Gem::Dependency
84
- name: childprocess
56
+ name: multipart-post
85
57
  requirement: !ruby/object:Gem::Requirement
86
58
  requirements:
87
59
  - - "~>"
88
60
  - !ruby/object:Gem::Version
89
- version: '0.3'
61
+ version: '2'
90
62
  type: :runtime
91
63
  prerelease: false
92
64
  version_requirements: !ruby/object:Gem::Requirement
93
65
  requirements:
94
66
  - - "~>"
95
67
  - !ruby/object:Gem::Version
96
- version: '0.3'
68
+ version: '2'
97
69
  - !ruby/object:Gem::Dependency
98
70
  name: mime-types
99
71
  requirement: !ruby/object:Gem::Requirement
100
72
  requirements:
101
73
  - - "~>"
102
74
  - !ruby/object:Gem::Version
103
- version: '2.0'
75
+ version: '2'
104
76
  type: :runtime
105
77
  prerelease: false
106
78
  version_requirements: !ruby/object:Gem::Requirement
107
79
  requirements:
108
80
  - - "~>"
109
81
  - !ruby/object:Gem::Version
110
- version: '2.0'
82
+ version: '2'
111
83
  - !ruby/object:Gem::Dependency
112
84
  name: rake
113
85
  requirement: !ruby/object:Gem::Requirement
@@ -193,6 +165,8 @@ files:
193
165
  - lib/buildbox/cli.rb
194
166
  - lib/buildbox/command.rb
195
167
  - lib/buildbox/configuration.rb
168
+ - lib/buildbox/connection.rb
169
+ - lib/buildbox/model.rb
196
170
  - lib/buildbox/monitor.rb
197
171
  - lib/buildbox/platform.rb
198
172
  - lib/buildbox/runner.rb
@@ -287,9 +261,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
287
261
  version: '0'
288
262
  required_rubygems_version: !ruby/object:Gem::Requirement
289
263
  requirements:
290
- - - ">="
264
+ - - ">"
291
265
  - !ruby/object:Gem::Version
292
- version: '0'
266
+ version: 1.3.1
293
267
  requirements: []
294
268
  rubyforge_project:
295
269
  rubygems_version: 2.2.0