travis-async-listener 1.8.3

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 (184) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +22 -0
  3. data/README.md +2486 -0
  4. data/Rakefile +63 -0
  5. data/assets/cacert.pem +69 -0
  6. data/assets/init/c.yml +4 -0
  7. data/assets/init/clojure.yml +1 -0
  8. data/assets/init/cpp.yml +4 -0
  9. data/assets/init/erlang.yml +3 -0
  10. data/assets/init/go.yml +4 -0
  11. data/assets/init/groovy.yml +1 -0
  12. data/assets/init/haskell.yml +1 -0
  13. data/assets/init/java.yml +4 -0
  14. data/assets/init/node_js.yml +4 -0
  15. data/assets/init/objective-c.yml +1 -0
  16. data/assets/init/perl.yml +4 -0
  17. data/assets/init/php.yml +4 -0
  18. data/assets/init/python.yml +5 -0
  19. data/assets/init/ruby.yml +6 -0
  20. data/assets/init/scala.yml +4 -0
  21. data/assets/notifications/Travis CI.app/Contents/Info.plist +52 -0
  22. data/assets/notifications/Travis CI.app/Contents/MacOS/Travis CI +0 -0
  23. data/assets/notifications/Travis CI.app/Contents/PkgInfo +1 -0
  24. data/assets/notifications/Travis CI.app/Contents/Resources/Travis CI.icns +0 -0
  25. data/assets/notifications/Travis CI.app/Contents/Resources/en.lproj/Credits.rtf +29 -0
  26. data/assets/notifications/Travis CI.app/Contents/Resources/en.lproj/InfoPlist.strings +0 -0
  27. data/assets/notifications/Travis CI.app/Contents/Resources/en.lproj/MainMenu.nib +0 -0
  28. data/assets/notifications/Travis CI.app/Contents/_CodeSignature/CodeResources +173 -0
  29. data/assets/notifications/Travis CI.app/Contents/embedded.provisionprofile +0 -0
  30. data/assets/notifications/icon.png +0 -0
  31. data/assets/travis.sh +163 -0
  32. data/assets/travis.sh.erb +64 -0
  33. data/bin/travis +18 -0
  34. data/examples/org_overview.rb +3 -0
  35. data/examples/pro_auth.rb +23 -0
  36. data/examples/stream.rb +6 -0
  37. data/lib/travis.rb +8 -0
  38. data/lib/travis/auto_login.rb +3 -0
  39. data/lib/travis/cli.rb +126 -0
  40. data/lib/travis/cli/accounts.rb +31 -0
  41. data/lib/travis/cli/api_command.rb +180 -0
  42. data/lib/travis/cli/branches.rb +25 -0
  43. data/lib/travis/cli/cache.rb +76 -0
  44. data/lib/travis/cli/cancel.rb +18 -0
  45. data/lib/travis/cli/command.rb +422 -0
  46. data/lib/travis/cli/console.rb +31 -0
  47. data/lib/travis/cli/disable.rb +15 -0
  48. data/lib/travis/cli/enable.rb +31 -0
  49. data/lib/travis/cli/encrypt.rb +108 -0
  50. data/lib/travis/cli/encrypt_file.rb +140 -0
  51. data/lib/travis/cli/endpoint.rb +35 -0
  52. data/lib/travis/cli/env.rb +66 -0
  53. data/lib/travis/cli/help.rb +23 -0
  54. data/lib/travis/cli/history.rb +49 -0
  55. data/lib/travis/cli/init.rb +82 -0
  56. data/lib/travis/cli/lint.rb +49 -0
  57. data/lib/travis/cli/login.rb +76 -0
  58. data/lib/travis/cli/logout.rb +14 -0
  59. data/lib/travis/cli/logs.rb +65 -0
  60. data/lib/travis/cli/monitor.rb +110 -0
  61. data/lib/travis/cli/open.rb +39 -0
  62. data/lib/travis/cli/parser.rb +43 -0
  63. data/lib/travis/cli/pubkey.rb +30 -0
  64. data/lib/travis/cli/raw.rb +20 -0
  65. data/lib/travis/cli/repo_command.rb +154 -0
  66. data/lib/travis/cli/report.rb +101 -0
  67. data/lib/travis/cli/repos.rb +53 -0
  68. data/lib/travis/cli/requests.rb +47 -0
  69. data/lib/travis/cli/restart.rb +18 -0
  70. data/lib/travis/cli/settings.rb +77 -0
  71. data/lib/travis/cli/setup.rb +66 -0
  72. data/lib/travis/cli/setup/anynines.rb +21 -0
  73. data/lib/travis/cli/setup/appfog.rb +19 -0
  74. data/lib/travis/cli/setup/artifacts.rb +23 -0
  75. data/lib/travis/cli/setup/biicode.rb +19 -0
  76. data/lib/travis/cli/setup/cloud_66.rb +20 -0
  77. data/lib/travis/cli/setup/cloud_control.rb +21 -0
  78. data/lib/travis/cli/setup/cloud_files.rb +20 -0
  79. data/lib/travis/cli/setup/cloud_foundry.rb +23 -0
  80. data/lib/travis/cli/setup/code_deploy.rb +55 -0
  81. data/lib/travis/cli/setup/deis.rb +20 -0
  82. data/lib/travis/cli/setup/divshot.rb +18 -0
  83. data/lib/travis/cli/setup/elastic_beanstalk.rb +23 -0
  84. data/lib/travis/cli/setup/engine_yard.rb +24 -0
  85. data/lib/travis/cli/setup/gcs.rb +22 -0
  86. data/lib/travis/cli/setup/hackage.rb +18 -0
  87. data/lib/travis/cli/setup/heroku.rb +20 -0
  88. data/lib/travis/cli/setup/modulus.rb +18 -0
  89. data/lib/travis/cli/setup/ninefold.rb +20 -0
  90. data/lib/travis/cli/setup/nodejitsu.rb +27 -0
  91. data/lib/travis/cli/setup/npm.rb +20 -0
  92. data/lib/travis/cli/setup/open_shift.rb +20 -0
  93. data/lib/travis/cli/setup/opsworks.rb +22 -0
  94. data/lib/travis/cli/setup/pypi.rb +22 -0
  95. data/lib/travis/cli/setup/releases.rb +35 -0
  96. data/lib/travis/cli/setup/ruby_gems.rb +25 -0
  97. data/lib/travis/cli/setup/s3.rb +25 -0
  98. data/lib/travis/cli/setup/sauce_connect.rb +21 -0
  99. data/lib/travis/cli/setup/service.rb +73 -0
  100. data/lib/travis/cli/show.rb +69 -0
  101. data/lib/travis/cli/sshkey.rb +118 -0
  102. data/lib/travis/cli/status.rb +19 -0
  103. data/lib/travis/cli/sync.rb +30 -0
  104. data/lib/travis/cli/token.rb +14 -0
  105. data/lib/travis/cli/version.rb +17 -0
  106. data/lib/travis/cli/whatsup.rb +30 -0
  107. data/lib/travis/cli/whoami.rb +15 -0
  108. data/lib/travis/client.rb +39 -0
  109. data/lib/travis/client/account.rb +56 -0
  110. data/lib/travis/client/annotation.rb +21 -0
  111. data/lib/travis/client/artifact.rb +88 -0
  112. data/lib/travis/client/auto_login.rb +45 -0
  113. data/lib/travis/client/broadcast.rb +14 -0
  114. data/lib/travis/client/build.rb +47 -0
  115. data/lib/travis/client/cache.rb +25 -0
  116. data/lib/travis/client/commit.rb +28 -0
  117. data/lib/travis/client/entity.rb +238 -0
  118. data/lib/travis/client/env_var.rb +102 -0
  119. data/lib/travis/client/error.rb +38 -0
  120. data/lib/travis/client/has_uuid.rb +13 -0
  121. data/lib/travis/client/job.rb +61 -0
  122. data/lib/travis/client/lint_result.rb +25 -0
  123. data/lib/travis/client/listener.rb +184 -0
  124. data/lib/travis/client/methods.rb +104 -0
  125. data/lib/travis/client/namespace.rb +85 -0
  126. data/lib/travis/client/not_loadable.rb +13 -0
  127. data/lib/travis/client/repository.rb +224 -0
  128. data/lib/travis/client/request.rb +36 -0
  129. data/lib/travis/client/restartable.rb +23 -0
  130. data/lib/travis/client/session.rb +339 -0
  131. data/lib/travis/client/settings.rb +25 -0
  132. data/lib/travis/client/singleton_setting.rb +36 -0
  133. data/lib/travis/client/ssh_key.rb +11 -0
  134. data/lib/travis/client/states.rb +98 -0
  135. data/lib/travis/client/user.rb +67 -0
  136. data/lib/travis/client/weak_entity.rb +26 -0
  137. data/lib/travis/pro.rb +5 -0
  138. data/lib/travis/pro/auto_login.rb +3 -0
  139. data/lib/travis/tools/assets.rb +21 -0
  140. data/lib/travis/tools/completion.rb +54 -0
  141. data/lib/travis/tools/formatter.rb +50 -0
  142. data/lib/travis/tools/github.rb +279 -0
  143. data/lib/travis/tools/notification.rb +69 -0
  144. data/lib/travis/tools/safe_string.rb +22 -0
  145. data/lib/travis/tools/ssl_key.rb +48 -0
  146. data/lib/travis/tools/system.rb +88 -0
  147. data/lib/travis/version.rb +3 -0
  148. data/spec/cli/cancel_spec.rb +15 -0
  149. data/spec/cli/encrypt_spec.rb +43 -0
  150. data/spec/cli/endpoint_spec.rb +34 -0
  151. data/spec/cli/help_spec.rb +33 -0
  152. data/spec/cli/history_spec.rb +38 -0
  153. data/spec/cli/init_spec.rb +226 -0
  154. data/spec/cli/login_spec.rb +13 -0
  155. data/spec/cli/logs_spec.rb +8 -0
  156. data/spec/cli/open_spec.rb +33 -0
  157. data/spec/cli/repo_command_spec.rb +25 -0
  158. data/spec/cli/restart_spec.rb +15 -0
  159. data/spec/cli/setup_spec.rb +5 -0
  160. data/spec/cli/show_spec.rb +9 -0
  161. data/spec/cli/status_spec.rb +28 -0
  162. data/spec/cli/token_spec.rb +22 -0
  163. data/spec/cli/version_spec.rb +18 -0
  164. data/spec/cli/whoami_spec.rb +34 -0
  165. data/spec/client/account_spec.rb +32 -0
  166. data/spec/client/annotation_spec.rb +14 -0
  167. data/spec/client/broadcast_spec.rb +10 -0
  168. data/spec/client/build_spec.rb +31 -0
  169. data/spec/client/commit_spec.rb +22 -0
  170. data/spec/client/job_spec.rb +30 -0
  171. data/spec/client/methods_spec.rb +15 -0
  172. data/spec/client/namespace_spec.rb +19 -0
  173. data/spec/client/repository_spec.rb +39 -0
  174. data/spec/client/session_spec.rb +165 -0
  175. data/spec/client/user_spec.rb +16 -0
  176. data/spec/client_spec.rb +17 -0
  177. data/spec/pro_spec.rb +10 -0
  178. data/spec/spec_helper.rb +29 -0
  179. data/spec/support/fake_api.rb +738 -0
  180. data/spec/support/fake_github.rb +24 -0
  181. data/spec/support/helpers.rb +45 -0
  182. data/spec/travis_spec.rb +10 -0
  183. data/travis.gemspec +323 -0
  184. metadata +489 -0
@@ -0,0 +1,47 @@
1
+ require 'travis/cli'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Requests < RepoCommand
6
+ description "lists recent requests"
7
+ on '-l', '--limit LIMIT', 'Maximum number requests to display'
8
+
9
+ def run
10
+ requests = repository.requests
11
+ requests = requests[0, Integer(limit)] if limit
12
+ requests.each do |request|
13
+ style ||= :success if request.accepted?
14
+ style ||= :error if request.rejected?
15
+ style ||= :info
16
+
17
+ case request.event_type
18
+ when 'push'
19
+ result = request.result || "received"
20
+ message = request.message
21
+ message ||= "validation pending" unless request.rejected? or request.accepted?
22
+ message ||= "unknown reason" unless request.accepted?
23
+ message ||= "triggered new build" unless request.rejected?
24
+ description = "push to #{request.branch || request.tag || "???"}"
25
+ when 'pull_request'
26
+ result = request.result || "received"
27
+ message = request.message
28
+ message ||= "HEAD commit not updated" unless request.accepted?
29
+ message ||= "triggered new build" unless request.rejected?
30
+ description = "push to #{request.branch || request.tag || "???"}"
31
+ description = "PR ##{request.pull_request_number}"
32
+ end
33
+
34
+ say [
35
+ color(description, [:bold, style]),
36
+ color(result, style),
37
+ color("(#{message})", style)
38
+ ].join(" ").strip + "\n"
39
+
40
+ say " " + color(request.commit.short_sha, :bold) + " - " + request.commit.subject if request.commit
41
+ say " received at: #{formatter.time(request.created_at)}"
42
+ empty_line
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,18 @@
1
+ require 'travis/cli'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Restart < RepoCommand
6
+ description "restarts a build or job"
7
+
8
+ def run(number = last_build.number)
9
+ authenticate
10
+ entity = job(number) || build(number)
11
+ error "could not find job or build #{repository.slug}##{number}" unless entity
12
+ entity.restart
13
+
14
+ say "restarted", "#{entity.class.one} ##{entity.number} has been %s"
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,77 @@
1
+ require 'travis/cli'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Settings < RepoCommand
6
+ attr_accessor :setting
7
+
8
+ description "access repository settings"
9
+ on('--keys', 'always use setting key instead of description')
10
+ on('-t', '--enable', 'enable boolean setting(s)') { |c | c.setting = true }
11
+ on('-f', '--disable', 'disable boolean setting(s)') { |c | c.setting = false }
12
+ on('-s', '--set VALUE', 'set to given value') { |c,v| c.setting = v }
13
+ on('-c', '--configure', 'change settings interactively')
14
+
15
+ DESCRIPTIONS = {
16
+ :builds_only_with_travis_yml => "Only run builds with a .travis.yml",
17
+ :build_pushes => "Build pushes",
18
+ :build_pull_requests => "Build pull requests",
19
+ :maximum_number_of_builds => "Maximum number of concurrent builds"
20
+ }
21
+
22
+ def run(*keys)
23
+ exit 1 if interactive? and keys.empty? and !setting.nil? and !all_settings? and !configure?
24
+ authenticate
25
+ say repository.slug, "Settings for %s:"
26
+ repository.settings.to_h.each do |key, value|
27
+ next unless keys.empty? or keys.include? key
28
+ if configure?
29
+ if boolean? key
30
+ repository.settings[key] = agree("#{describe(key, "enable #{key}")}? ") do |q|
31
+ default = setting.nil? ? value : setting
32
+ q.default = default ? "yes" : "no"
33
+ end
34
+ else
35
+ repository.settings[key] = ask("#{describe(key, "Value for #{key}")}: ", Integer) do |q|
36
+ default = setting.to_i if setting and setting.respond_to? :to_i
37
+ default ||= value
38
+ default ||= 0
39
+ q.default = default
40
+ end
41
+ end
42
+ else
43
+ value = repository.settings[key] = setting unless setting.nil?
44
+ descr = color(describe(key, color(key, :info)) { |s| key.ljust(30) + " " + color(s, [:reset, :bold]) }, :info)
45
+ say format_value(value) << " " << descr
46
+ end
47
+ end
48
+ repository.settings.save if configure? or !setting.nil?
49
+ end
50
+
51
+ def boolean?(key)
52
+ key.to_sym != :maximum_number_of_builds
53
+ end
54
+
55
+ def format_value(value)
56
+ case value
57
+ when false, nil then color("[-]", [ :bold, :red ])
58
+ when true then color("[+]", [ :bold, :green ])
59
+ else color(value.to_s.rjust(3), [ :bold, :blue ])
60
+ end
61
+ end
62
+
63
+ def all_settings?
64
+ agree("Really #{setting ? "enable" : "disable"} all settings? ") do |q|
65
+ q.default = "no"
66
+ end
67
+ end
68
+
69
+ def describe(key, description = key)
70
+ return description if keys?
71
+ desc = DESCRIPTIONS[key.to_sym]
72
+ desc &&= yield(desc) if block_given?
73
+ desc || description
74
+ end
75
+ end
76
+ end
77
+ end
@@ -0,0 +1,66 @@
1
+ require 'travis/cli'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup < RepoCommand
6
+ autoload :Anynines, 'travis/cli/setup/anynines'
7
+ autoload :Appfog, 'travis/cli/setup/appfog'
8
+ autoload :Artifacts, 'travis/cli/setup/artifacts'
9
+ autoload :Biicode, 'travis/cli/setup/biicode'
10
+ autoload :CloudControl, 'travis/cli/setup/cloud_control'
11
+ autoload :CloudFoundry, 'travis/cli/setup/cloud_foundry'
12
+ autoload :CodeDeploy, 'travis/cli/setup/code_deploy'
13
+ autoload :EngineYard, 'travis/cli/setup/engine_yard'
14
+ autoload :Heroku, 'travis/cli/setup/heroku'
15
+ autoload :Nodejitsu, 'travis/cli/setup/nodejitsu'
16
+ autoload :NPM, 'travis/cli/setup/npm'
17
+ autoload :OpenShift, 'travis/cli/setup/open_shift'
18
+ autoload :PyPI, 'travis/cli/setup/pypi'
19
+ autoload :RubyGems, 'travis/cli/setup/ruby_gems'
20
+ autoload :Ninefold, 'travis/cli/setup/ninefold'
21
+ autoload :S3, 'travis/cli/setup/s3'
22
+ autoload :CloudFiles, 'travis/cli/setup/cloud_files'
23
+ autoload :Divshot, 'travis/cli/setup/divshot'
24
+ autoload :Hackage, 'travis/cli/setup/hackage'
25
+ autoload :OpsWorks, 'travis/cli/setup/opsworks'
26
+ autoload :SauceConnect, 'travis/cli/setup/sauce_connect'
27
+ autoload :Modulus, 'travis/cli/setup/modulus'
28
+ autoload :Releases, 'travis/cli/setup/releases'
29
+ autoload :GCS, 'travis/cli/setup/gcs'
30
+ autoload :Cloud_66, 'travis/cli/setup/cloud_66'
31
+ autoload :ElasticBeanstalk, 'travis/cli/setup/elastic_beanstalk'
32
+ autoload :Deis, 'travis/cli/setup/deis'
33
+ autoload :Service, 'travis/cli/setup/service'
34
+
35
+ description "sets up an addon or deploy target"
36
+ on('-f', '--force', 'override config section if it already exists')
37
+
38
+ def self.service(name)
39
+ normal_name = Service.normalized_name(name)
40
+ const_name = constants(false).detect { |c| Service.normalized_name(c) == normal_name }
41
+ constant = const_get(const_name) if const_name
42
+ constant if constant and constant < Service and constant.known_as? name
43
+ end
44
+
45
+ def self.services
46
+ constants(false).sort.map { |c| const_get(c) }.select { |c| c < Service }
47
+ end
48
+
49
+ def help
50
+ services = self.class.services.map { |s| "\t" << color(s.service_name.ljust(20), :command) << color(s.description, :info) }.join("\n")
51
+ super("\nAvailable services:\n\n#{services}\n\n")
52
+ end
53
+
54
+ def run(service, file = travis_yaml)
55
+ service(service).run
56
+ save_travis_config(file)
57
+ end
58
+
59
+ def service(name)
60
+ factory = self.class.service(name)
61
+ error("unknown service #{name}") unless factory
62
+ factory.new(self)
63
+ end
64
+ end
65
+ end
66
+ end
@@ -0,0 +1,21 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class Anynines < Service
7
+ description "automatic deployment to anynines"
8
+
9
+ def run
10
+ deploy 'anynines' do |config|
11
+ config['username'] ||= ask("anynines username: ").to_s
12
+ config['password'] ||= ask("anynines password: ") { |q| q.echo = "*" }.to_s
13
+ config['organization'] ||= ask("anynines organization: ").to_s
14
+ config['space'] ||= ask("anynines space: ").to_s
15
+ end
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,19 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class Appfog < Service
7
+ description "automatic deployment to Appfog"
8
+
9
+ def run
10
+ deploy 'appfog' do |config|
11
+ config['email'] = ask("Email address: ").to_s
12
+ config['password'] = ask("Password: ") { |q| q.echo = "*" }.to_s
13
+ config['app'] = ask("App name: ") { |q| q.default = repository.name }.to_s
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,23 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class Artifacts < Service
7
+ description 'automatic artifact shipping to S3'
8
+ service_name 'artifacts'
9
+
10
+ def run
11
+ travis_config['addons'] ||= {}
12
+ configure 'artifacts', {}, travis_config['addons'] do |config|
13
+ config['key'] = ask("Access key ID: ").to_s
14
+ config['secret'] = ask("Secret access key: ") { |q| q.echo = "*" }.to_s
15
+ config['bucket'] = ask("Bucket: ").to_s
16
+ encrypt(config, 'key') if agree("Encrypt access key ID? ") { |q| q.default = 'yes' }
17
+ encrypt(config, 'secret') if agree("Encrypt secret access key? ") { |q| q.default = 'yes' }
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,19 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class Biicode < Service
7
+ description "automatic publish to biicode"
8
+
9
+ def run
10
+ deploy 'biicode', 'release' do |config|
11
+ config['user'] ||= ask("biicode username: ") { |q| q }.to_s
12
+ config['password'] ||= ask("biicode password: ") { |q| q.echo = "*" }.to_s
13
+ on("publish only tagged commits? ", config, 'tags' => true)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,20 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class Cloud_66 < Service
7
+ description "Automatic deployment to Cloud 66"
8
+ service_name 'cloud66'
9
+
10
+ def run
11
+ deploy 'cloud66', 'release' do |config|
12
+ config['redeployment_hook'] ||= ask("Cloud 66 Redeployment Hook Url: ") { |q| q.echo = "*" }.to_s
13
+
14
+ encrypt(config, 'redeployment_hook') if agree("Encrypt Redeployment Hook?") { |q| q.default = 'yes' }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,21 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class CloudControl < Service
7
+ description "automatic deployment to cloudControl"
8
+
9
+ def run
10
+ deploy 'cloudcontrol' do |config|
11
+ config['email'] = ask("cloudControl email: ").to_s
12
+ config['password'] = ask("cloudControl password: ") { |q| q.echo = "*" }.to_s
13
+ app = ask("cloudControl application: ") { |q| q.default = repository.name }.to_s
14
+ dep = ask("cloudControl deployment: ") { |q| q.default = "default" }.to_s
15
+ config['deployment'] = "#{app}/#{dep}"
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,20 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class CloudFiles < Service
7
+ description "automatic pushing to Rackspace Cloud Files"
8
+
9
+ def run
10
+ deploy 'cloudfiles' do |config|
11
+ config['username'] = ask("Rackspace Username: ").to_s
12
+ config['api_key'] = ask("Rackspace Api Key: ") { |q| q.echo = "*" }.to_s
13
+ config['region'] = ask("Cloud Files Region: ").to_s
14
+ config['container'] = ask("Container: ").to_s
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,23 @@
1
+ require 'travis/cli/setup'
2
+
3
+ module Travis
4
+ module CLI
5
+ class Setup
6
+ class CloudFoundry < Service
7
+ description "automatic deployment to Cloud Foundry"
8
+
9
+ def run
10
+ deploy 'cloudfoundry' do |config|
11
+ target_file = File.expand_path('.cf/config.json', Dir.home)
12
+ config['api'] ||= JSON.parse(File.read(target_file))["Target"] if File.exist? target_file
13
+ config['api'] ||= ask("Cloud Foundry api: ").to_s
14
+ config['username'] ||= ask("Cloud Foundry username: ").to_s
15
+ config['password'] ||= ask("Cloud Foundry password: ") { |q| q.echo = "*" }.to_s
16
+ config['organization'] ||= ask("Cloud Foundry organization: ").to_s
17
+ config['space'] ||= ask("Cloud Foundry space: ").to_s
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,55 @@
1
+ require 'travis/cli/setup'
2
+ require 'shellwords'
3
+
4
+ module Travis
5
+ module CLI
6
+ class Setup
7
+ class CodeDeploy < Service
8
+ description "triggering a new deployment on Amazon CodeDeploy"
9
+ AWS_CONFIG = File.expand_path('.aws/config', ENV['HOME'])
10
+
11
+ def run
12
+ if File.readable? AWS_CONFIG
13
+ content = File.read(AWS_CONFIG)
14
+ access_key = content[/aws_access_key_id = (\S+)\n/, 1]
15
+ secret_access_key = content[/aws_secret_access_key = (\S+)\n/, 1]
16
+ end
17
+
18
+ deploy 'codedeploy' do |config|
19
+ config['access_key_id'] = ask("Access key ID: ") { |q| q.default = access_key if access_key }.to_s
20
+ secret_access_key = nil unless access_key == config['access_key_id']
21
+ config['secret_access_key'] = secret_access_key || ask("Secret access key: ") { |q| q.echo = "*" }.to_s
22
+ config['bucket'] = ask("S3 Bucket: ").to_s
23
+ config['key'] = ask("S3 Key: ").to_s
24
+ config['bundle_type'] = ask("Bundle Type: ") { |q| q.default = config['key'][/\.(zip|tar|tgz)$/, 1] }.to_s
25
+ config['application'] = ask("Application Name: ") { |q| q.default = repository.name }.to_s
26
+ config['deployment_group'] = ask("Deployment Group Name: ").to_s
27
+ encrypt(config, 'secret_access_key') if agree("Encrypt secret access key? ") { |q| q.default = 'yes' }
28
+ end
29
+
30
+ if agree("Also push bundle to S3? ")
31
+ cd = travis_config['deploy']
32
+ s3 = {
33
+ 'provider' => 's3',
34
+ 'access_key_id' => cd['access_key_id'],
35
+ 'secret_access_key' => cd['secret_access_key'],
36
+ 'local_dir' => 'dpl_cd_upload',
37
+ 'skip_cleanup' => true,
38
+ 'on' => cd['on'],
39
+ 'bucket' => cd['bucket']
40
+ }
41
+
42
+ s3['upload_dir'] = File.dirname(cd['key']) if cd['key'].include? '/'
43
+ travis_config['deploy'] = [ s3, cd ]
44
+ upload_file_name = File.basename(cd['key'])
45
+ source_file = ask("Source File: ") { |q| q.default = upload_file_name }
46
+ travis_config['before_deploy'] = [
47
+ "mkdir -p dpl_cd_upload",
48
+ "mv #{Shellwords.escape(source_file)} dpl_cd_upload/#{Shellwords.escape(upload_file_name)}"
49
+ ]
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end