factor-connector-heroku 0.0.5 → 0.0.8

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.
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: []