factor-connector-heroku 0.0.5 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +7 -0
  2. data/lib/factor/connector/heroku.rb +22 -83
  3. metadata +16 -86
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fa5851cbe41f45aaeb29902318205322e125af3f
4
+ data.tar.gz: 65f193a417647d229ead15366361f3e91a7d3358
5
+ SHA512:
6
+ metadata.gz: 62c0b2367fdc90f03c60f252816597585ec6373a95ca65f22d3d51b69c6cc9761443490be5e2b7718a0f2e5d8ff0c67ec720dac3e0942c04f455c0c1555b4c31
7
+ data.tar.gz: b00fa9a375854731e3a000bd39929dfc33ada13331c913a6368b15688f48af60957a8daa5bb04adf37e534a29b0a09fb272f64961f8bcd7c694011ba264cdd8f
@@ -1,14 +1,5 @@
1
1
  require 'factor-connector-api'
2
- require 'json'
3
- require 'rest-client'
4
- require 'heroku-api'
5
- require 'anvil'
6
- require 'anvil/engine'
7
- require 'uri'
8
- require 'zip'
9
- require 'tmpdir'
10
- require 'open-uri'
11
- require 'tempfile'
2
+ require 'platform-api'
12
3
 
13
4
  Factor::Connector.service 'heroku' do
14
5
  action 'deploy' do |params|
@@ -21,92 +12,40 @@ Factor::Connector.service 'heroku' do
21
12
  fail 'No app specified. Where am I supposed to deploy it?' unless app
22
13
  fail 'You need to activate Heroku on the services page' unless api_key
23
14
 
24
- def release(api_key, app, description, slug_url)
25
- payload = {
26
- description: description,
27
- slug_url: slug_url
28
- }
15
+ heroku = PlatformAPI.connect_oauth(api_key)
29
16
 
30
- options = {
31
- 'User-Agent' => 'heroku-push-cli/0.7-ALPHA',
32
- 'X-Ruby-Version' => RUBY_VERSION,
33
- 'X-Ruby-Platform' => RUBY_PLATFORM,
34
- :content_type => :json,
35
- :accept => :json
36
- }
37
-
38
- release_uri = "https://:#{api_key}@cisaurus.heroku.com/v1/apps/#{app}/release"
39
-
40
- response = RestClient.post release_uri, JSON.generate(payload), options
41
- while response.code == 202
42
- release_status_uri = "https://:#{api_key}@cisaurus.heroku.com/#{response.headers[:location]}"
43
- response = RestClient.get release_status_uri, options
44
- sleep(1)
45
- end
46
- JSON.parse response
47
- end
48
-
49
- info 'Getting the resource files from previous step'
17
+ info "Creating a build"
50
18
  begin
51
- source = Tempfile.new('source')
52
- source.write open(content).read
53
- source.rewind
19
+ build = heroku.build.create(app, {source_blob:{url:content}})
54
20
  rescue => ex
55
- fail 'Internal error: failed to get resource files', exception: ex
21
+ fail "Build failed: #{ex.message}"
56
22
  end
57
23
 
58
- info 'Unzipping file'
59
- begin
60
- temp_dir = Dir.mktmpdir
61
- Zip::ZipFile.open(source) do |zip_file|
62
- zip_file.each do |f|
63
- f_path = File.join(temp_dir, f.name)
64
- FileUtils.mkdir_p(File.dirname(f_path))
65
- zip_file.extract(f, f_path) unless File.exist?(f_path)
66
- end
67
- end
68
-
69
- if File.directory?(temp_dir)
70
- dir_list = Dir.glob("#{temp_dir}/*")
71
- temp_dir = dir_list[0] if dir_list.length == 1
72
- end
73
- rescue => ex
74
- fail 'Unzip failed', exception: ex
75
- end
24
+ build_id = build['id']
25
+ fail "Build failed: no build_id found" unless build_id
76
26
 
77
- info "Building the buildpack using Heroku's Anvil service"
27
+ info "Waiting on build to complete"
78
28
  begin
79
- Anvil.append_agent '(heroku-push)'
80
- Anvil.headers['X-Heroku-App'] = app
81
-
82
29
  begin
83
- capture = StringIO.new
84
- old_std = $stdout
85
- $stdout = capture
86
-
87
- slug_url = Anvil::Engine.build(temp_dir)
88
- begin
89
- $stdout.string.split("\n").each do |line|
90
- info line
91
- end
92
- rescue
93
- warn "Build completed but couldn't pull up results of build."
94
- end
95
- ensure
96
- $stdout = old_std
97
- end
30
+ build_info = heroku.build.info(app,build_id)
31
+ sleep 1
32
+ end while build_info['status']=='pending'
98
33
  rescue => ex
99
- fail 'Build failed', exception:ex
34
+ fail "Failed to get info while waiting: #{ex.message}"
100
35
  end
101
36
 
102
- info 'Pushing buildpack to Heroku'
103
- begin
104
- release = release(api_key, app, "Pushed by #{user}", slug_url)
105
- info "Release `#{release['release']}` complete"
37
+ fail "Build completed with status '#{build_info['status']}'" unless build_info['status']=='succeeded'
38
+ slug_id = build_info['slug']['id'] if build_info['slug'] && build_info['slug']['id']
106
39
 
107
- action_callback release
40
+ fail "Build completed, but couldn't identify slug_id" unless slug_id
41
+
42
+ info "Releasing code..."
43
+ begin
44
+ release = heroku.release.create(app, slug:slug_id)
108
45
  rescue => ex
109
- fail "Upload failed: #{ex.message}", exception: ex
46
+ fail "Failed to release the code: #{ex.message}"
110
47
  end
48
+
49
+ action_callback release
111
50
  end
112
51
  end
metadata CHANGED
@@ -1,112 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factor-connector-heroku
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
- prerelease:
4
+ version: 0.0.8
6
5
  platform: ruby
7
6
  authors:
8
7
  - Maciej Skierkowski
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-10-02 00:00:00.000000000 Z
11
+ date: 2014-11-25 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: heroku-anvil-factor
14
+ name: platform-api
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - '='
17
+ - - "~>"
20
18
  - !ruby/object:Gem::Version
21
- version: 0.15.1
19
+ version: 0.2.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - '='
24
+ - - "~>"
28
25
  - !ruby/object:Gem::Version
29
- version: 0.15.1
30
- - !ruby/object:Gem::Dependency
31
- name: heroku-api
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - '='
36
- - !ruby/object:Gem::Version
37
- version: 0.3.19
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - '='
44
- - !ruby/object:Gem::Version
45
- version: 0.3.19
46
- - !ruby/object:Gem::Dependency
47
- name: rest-client
48
- requirement: !ruby/object:Gem::Requirement
49
- none: false
50
- requirements:
51
- - - ~>
52
- - !ruby/object:Gem::Version
53
- version: 1.7.2
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: 1.7.2
62
- - !ruby/object:Gem::Dependency
63
- name: rubyzip
64
- requirement: !ruby/object:Gem::Requirement
65
- none: false
66
- requirements:
67
- - - ~>
68
- - !ruby/object:Gem::Version
69
- version: 1.1.6
70
- type: :runtime
71
- prerelease: false
72
- version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
- requirements:
75
- - - ~>
76
- - !ruby/object:Gem::Version
77
- version: 1.1.6
78
- - !ruby/object:Gem::Dependency
79
- name: json
80
- requirement: !ruby/object:Gem::Requirement
81
- none: false
82
- requirements:
83
- - - '='
84
- - !ruby/object:Gem::Version
85
- version: 1.8.1
86
- type: :runtime
87
- prerelease: false
88
- version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
- requirements:
91
- - - '='
92
- - !ruby/object:Gem::Version
93
- version: 1.8.1
26
+ version: 0.2.0
94
27
  - !ruby/object:Gem::Dependency
95
28
  name: factor-connector-api
96
29
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
30
  requirements:
99
- - - ~>
31
+ - - "~>"
100
32
  - !ruby/object:Gem::Version
101
- version: 0.0.3b
33
+ version: 0.0.13
102
34
  type: :runtime
103
35
  prerelease: false
104
36
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
37
  requirements:
107
- - - ~>
38
+ - - "~>"
108
39
  - !ruby/object:Gem::Version
109
- version: 0.0.3b
40
+ version: 0.0.13
110
41
  description:
111
42
  email:
112
43
  - maciej@factor.io
@@ -117,26 +48,25 @@ files:
117
48
  - lib/factor/connector/heroku.rb
118
49
  homepage: https://factor.io
119
50
  licenses: []
51
+ metadata: {}
120
52
  post_install_message:
121
53
  rdoc_options: []
122
54
  require_paths:
123
55
  - lib
124
56
  required_ruby_version: !ruby/object:Gem::Requirement
125
- none: false
126
57
  requirements:
127
- - - ! '>='
58
+ - - ">="
128
59
  - !ruby/object:Gem::Version
129
60
  version: '0'
130
61
  required_rubygems_version: !ruby/object:Gem::Requirement
131
- none: false
132
62
  requirements:
133
- - - ! '>='
63
+ - - ">="
134
64
  - !ruby/object:Gem::Version
135
65
  version: '0'
136
66
  requirements: []
137
67
  rubyforge_project:
138
- rubygems_version: 1.8.25
68
+ rubygems_version: 2.2.2
139
69
  signing_key:
140
- specification_version: 3
70
+ specification_version: 4
141
71
  summary: Heroku Factor.io Connector
142
72
  test_files: []