travis 1.11.1 → 1.13.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +34 -3
  3. data/Rakefile +22 -20
  4. data/bin/travis +5 -3
  5. data/examples/org_overview.rb +2 -0
  6. data/examples/pro_auth.rb +3 -1
  7. data/examples/stream.rb +5 -3
  8. data/lib/travis/auto_login.rb +2 -0
  9. data/lib/travis/cli/accounts.rb +12 -9
  10. data/lib/travis/cli/api_command.rb +85 -81
  11. data/lib/travis/cli/branches.rb +8 -6
  12. data/lib/travis/cli/cache.rb +48 -44
  13. data/lib/travis/cli/cancel.rb +4 -2
  14. data/lib/travis/cli/command.rb +170 -142
  15. data/lib/travis/cli/console.rb +5 -5
  16. data/lib/travis/cli/disable.rb +4 -2
  17. data/lib/travis/cli/enable.rb +14 -12
  18. data/lib/travis/cli/encrypt.rb +57 -57
  19. data/lib/travis/cli/encrypt_file.rb +29 -18
  20. data/lib/travis/cli/endpoint.rb +9 -7
  21. data/lib/travis/cli/env.rb +13 -8
  22. data/lib/travis/cli/help.rb +11 -9
  23. data/lib/travis/cli/history.rb +19 -15
  24. data/lib/travis/cli/init.rb +27 -24
  25. data/lib/travis/cli/lint.rb +10 -8
  26. data/lib/travis/cli/login.rb +17 -11
  27. data/lib/travis/cli/logout.rb +4 -2
  28. data/lib/travis/cli/logs.rb +28 -19
  29. data/lib/travis/cli/monitor.rb +11 -8
  30. data/lib/travis/cli/open.rb +17 -14
  31. data/lib/travis/cli/parser.rb +2 -0
  32. data/lib/travis/cli/pubkey.rb +13 -11
  33. data/lib/travis/cli/raw.rb +4 -3
  34. data/lib/travis/cli/regenerate_token.rb +15 -0
  35. data/lib/travis/cli/remove_token.rb +15 -0
  36. data/lib/travis/cli/repo_command.rb +123 -112
  37. data/lib/travis/cli/report.rb +40 -33
  38. data/lib/travis/cli/repos.rb +14 -9
  39. data/lib/travis/cli/requests.rb +13 -12
  40. data/lib/travis/cli/restart.rb +4 -2
  41. data/lib/travis/cli/settings.rb +41 -35
  42. data/lib/travis/cli/setup/anynines.rb +7 -6
  43. data/lib/travis/cli/setup/appfog.rb +6 -4
  44. data/lib/travis/cli/setup/artifacts.rb +7 -5
  45. data/lib/travis/cli/setup/biicode.rb +6 -4
  46. data/lib/travis/cli/setup/cloud_66.rb +6 -4
  47. data/lib/travis/cli/setup/cloud_control.rb +8 -6
  48. data/lib/travis/cli/setup/cloud_files.rb +7 -5
  49. data/lib/travis/cli/setup/cloud_foundry.rb +9 -7
  50. data/lib/travis/cli/setup/code_deploy.rb +33 -29
  51. data/lib/travis/cli/setup/deis.rb +8 -6
  52. data/lib/travis/cli/setup/divshot.rb +20 -18
  53. data/lib/travis/cli/setup/elastic_beanstalk.rb +10 -8
  54. data/lib/travis/cli/setup/engine_yard.rb +9 -7
  55. data/lib/travis/cli/setup/gcs.rb +9 -7
  56. data/lib/travis/cli/setup/hackage.rb +6 -4
  57. data/lib/travis/cli/setup/heroku.rb +10 -4
  58. data/lib/travis/cli/setup/modulus.rb +5 -3
  59. data/lib/travis/cli/setup/ninefold.rb +7 -5
  60. data/lib/travis/cli/setup/nodejitsu.rb +6 -4
  61. data/lib/travis/cli/setup/npm.rb +6 -4
  62. data/lib/travis/cli/setup/open_shift.rb +8 -6
  63. data/lib/travis/cli/setup/opsworks.rb +24 -22
  64. data/lib/travis/cli/setup/pypi.rb +7 -5
  65. data/lib/travis/cli/setup/releases.rb +6 -6
  66. data/lib/travis/cli/setup/ruby_gems.rb +7 -5
  67. data/lib/travis/cli/setup/s3.rb +12 -8
  68. data/lib/travis/cli/setup/sauce_connect.rb +7 -5
  69. data/lib/travis/cli/setup/service.rb +36 -25
  70. data/lib/travis/cli/setup.rb +7 -3
  71. data/lib/travis/cli/show.rb +10 -8
  72. data/lib/travis/cli/sshkey.rb +31 -27
  73. data/lib/travis/cli/status.rb +5 -3
  74. data/lib/travis/cli/sync.rb +9 -7
  75. data/lib/travis/cli/token.rb +4 -2
  76. data/lib/travis/cli/version.rb +4 -3
  77. data/lib/travis/cli/whatsup.rb +10 -8
  78. data/lib/travis/cli/whoami.rb +2 -2
  79. data/lib/travis/cli.rb +81 -76
  80. data/lib/travis/client/account.rb +8 -6
  81. data/lib/travis/client/artifact.rb +16 -12
  82. data/lib/travis/client/auto_login.rb +7 -4
  83. data/lib/travis/client/broadcast.rb +2 -0
  84. data/lib/travis/client/build.rb +7 -3
  85. data/lib/travis/client/cache.rb +4 -2
  86. data/lib/travis/client/commit.rb +5 -2
  87. data/lib/travis/client/entity.rb +50 -46
  88. data/lib/travis/client/env_var.rb +13 -8
  89. data/lib/travis/client/error.rb +5 -3
  90. data/lib/travis/client/has_uuid.rb +3 -1
  91. data/lib/travis/client/job.rb +8 -3
  92. data/lib/travis/client/lint_result.rb +2 -0
  93. data/lib/travis/client/listener.rb +70 -55
  94. data/lib/travis/client/methods.rb +26 -5
  95. data/lib/travis/client/namespace.rb +20 -16
  96. data/lib/travis/client/not_loadable.rb +3 -1
  97. data/lib/travis/client/repository.rb +34 -22
  98. data/lib/travis/client/request.rb +5 -2
  99. data/lib/travis/client/restartable.rb +2 -0
  100. data/lib/travis/client/session.rb +118 -88
  101. data/lib/travis/client/settings.rb +8 -3
  102. data/lib/travis/client/singleton_setting.rb +2 -0
  103. data/lib/travis/client/ssh_key.rb +2 -0
  104. data/lib/travis/client/states.rb +8 -6
  105. data/lib/travis/client/user.rb +2 -0
  106. data/lib/travis/client/weak_entity.rb +6 -3
  107. data/lib/travis/client.rb +4 -1
  108. data/lib/travis/pro/auto_login.rb +2 -0
  109. data/lib/travis/pro.rb +2 -0
  110. data/lib/travis/tools/assets.rb +6 -3
  111. data/lib/travis/tools/completion.rb +10 -6
  112. data/lib/travis/tools/formatter.rb +20 -14
  113. data/lib/travis/tools/github.rb +59 -49
  114. data/lib/travis/tools/notification.rb +18 -13
  115. data/lib/travis/tools/safe_string.rb +4 -1
  116. data/lib/travis/tools/ssl_key.rb +5 -2
  117. data/lib/travis/tools/system.rb +11 -6
  118. data/lib/travis/version.rb +3 -1
  119. data/lib/travis.rb +3 -1
  120. data/spec/cli/api_command_spec.rb +11 -8
  121. data/spec/cli/cancel_spec.rb +2 -4
  122. data/spec/cli/encrypt_file_spec.rb +9 -7
  123. data/spec/cli/encrypt_spec.rb +19 -17
  124. data/spec/cli/endpoint_spec.rb +12 -10
  125. data/spec/cli/help_spec.rb +14 -12
  126. data/spec/cli/history_spec.rb +2 -0
  127. data/spec/cli/init_spec.rb +35 -33
  128. data/spec/cli/logs_spec.rb +2 -0
  129. data/spec/cli/open_spec.rb +6 -4
  130. data/spec/cli/repo_command_spec.rb +8 -4
  131. data/spec/cli/restart_spec.rb +2 -4
  132. data/spec/cli/setup/service_spec.rb +17 -18
  133. data/spec/cli/setup_spec.rb +2 -4
  134. data/spec/cli/show_spec.rb +4 -2
  135. data/spec/cli/status_spec.rb +7 -5
  136. data/spec/cli/token_spec.rb +7 -5
  137. data/spec/cli/version_spec.rb +2 -0
  138. data/spec/cli/whoami_spec.rb +9 -7
  139. data/spec/client/account_spec.rb +28 -20
  140. data/spec/client/auto_login_spec.rb +12 -9
  141. data/spec/client/broadcast_spec.rb +5 -3
  142. data/spec/client/build_spec.rb +28 -24
  143. data/spec/client/commit_spec.rb +17 -14
  144. data/spec/client/job_spec.rb +27 -23
  145. data/spec/client/methods_spec.rb +8 -4
  146. data/spec/client/namespace_spec.rb +8 -4
  147. data/spec/client/repository_spec.rb +33 -30
  148. data/spec/client/session_spec.rb +71 -67
  149. data/spec/client/user_spec.rb +13 -10
  150. data/spec/client_spec.rb +6 -4
  151. data/spec/pro_spec.rb +5 -3
  152. data/spec/spec_helper.rb +3 -1
  153. data/spec/support/fake_api.rb +662 -662
  154. data/spec/support/fake_github.rb +6 -3
  155. data/spec/support/helpers.rb +13 -8
  156. data/spec/travis_spec.rb +5 -3
  157. data/travis.gemspec +402 -399
  158. metadata +31 -49
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
4
  require 'yaml'
3
5
 
@@ -9,15 +11,15 @@ module Travis
9
11
  on '-x', '--[no-]exit-code', 'sets the exit code to 1 if there are warning'
10
12
 
11
13
  def run(file = nil)
12
- file ||= '.travis.yml' if $stdin.tty? or $stdin.eof?
14
+ file ||= '.travis.yml' if $stdin.tty? || $stdin.eof?
13
15
 
14
- if file and file != '-'
16
+ if file && (file != '-')
15
17
  debug "reading #{file}"
16
18
  error "file does not exist: #{color(file, :bold)}" unless File.exist? file
17
19
  error "cannot read #{color(file, :bold)}" unless File.readable? file
18
20
  content = File.read(file)
19
21
  else
20
- debug "reading stdin"
22
+ debug 'reading stdin'
21
23
  file = 'STDIN'
22
24
  content = $stdin.read
23
25
  end
@@ -32,24 +34,24 @@ module Travis
32
34
 
33
35
  unless quiet?
34
36
  if lint.ok?
35
- say "valid", color("Hooray, #{file} looks %s :)", :success)
37
+ say 'valid', color("Hooray, #{file} looks %s :)", :success)
36
38
  else
37
39
  say "Warnings for #{color(file, :info)}:"
38
40
  lint.warnings.each do |warning|
39
- say color('[x]', [:red, :bold]) + " "
41
+ say "#{color('[x]', %i[red bold])} "
40
42
  if warning.key.any?
41
43
  say [
42
44
  color('in ', :info),
43
- color(warning.key.join('.'), [:info, :bold, :underline]),
45
+ color(warning.key.join('.'), %i[info bold underline]),
44
46
  color(' section:', :info), ' '
45
47
  ].join
46
48
  end
47
- say warning.message.gsub(/"(.*?)"/) { color($1, [:info, :important]) }
49
+ say warning.message.gsub(/"(.*?)"/) { color(::Regexp.last_match(1), %i[info important]) }
48
50
  end
49
51
  end
50
52
  end
51
53
 
52
- exit 1 if lint.warnings? and exit_code?
54
+ exit 1 if lint.warnings? && exit_code?
53
55
  end
54
56
  end
55
57
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
4
  require 'travis/tools/github'
3
5
  require 'json'
@@ -7,16 +9,17 @@ module Travis
7
9
  class Login < ApiCommand
8
10
  skip :authenticate
9
11
 
10
- description "authenticates against the API and stores the token"
12
+ description 'authenticates against the API and stores the token'
11
13
  on('-g', '--github-token TOKEN', 'identify by GitHub token')
12
- on('-T', '--auto-token', 'try to figure out who you are automatically (might send another apps token to Travis, token will not be stored)')
14
+ on('-T', '--auto-token',
15
+ 'try to figure out who you are automatically (might send another apps token to Travis, token will not be stored)')
13
16
  on('--list-github-token', 'instead of actually logging in, list found GitHub tokens')
14
17
  on('--skip-token-check', 'don\'t verify the token with github')
15
18
 
16
19
  attr_accessor :user_login
17
20
 
18
21
  def list_token
19
- github.after_tokens = proc { }
22
+ github.after_tokens = proc {}
20
23
  github.each_token do |token|
21
24
  say token
22
25
  end
@@ -26,7 +29,10 @@ module Travis
26
29
  session.access_token = nil
27
30
  github.with_token do |token|
28
31
  endpoint_config['access_token'] = github_auth(token)
29
- error("user mismatch: logged in as %p instead of %p" % [user.login, user_login]) if user_login and user.login != user_login
32
+ if user_login && (user.login != user_login)
33
+ error(format('user mismatch: logged in as %p instead of %p', user.login,
34
+ user_login))
35
+ end
30
36
  unless user.correct_scopes?
31
37
  error(
32
38
  "#{user.login} has not granted Travis CI the required permissions. " \
@@ -37,9 +43,9 @@ module Travis
37
43
  success("Successfully logged in as #{user.login}!")
38
44
  end
39
45
 
40
- unless session.access_token
41
- raise Travis::Client::GitHubLoginFailed, "all GitHub tokens given were invalid"
42
- end
46
+ return if session.access_token
47
+
48
+ raise Travis::Client::GitHubLoginFailed, 'all GitHub tokens given were invalid'
43
49
  end
44
50
 
45
51
  def run
@@ -58,15 +64,15 @@ module Travis
58
64
  g.drop_token = !list_github_token
59
65
  g.login_header = proc { login_header }
60
66
  g.debug = proc { |log| debug(log) }
61
- g.after_tokens = proc { g.explode = true and error("no suitable github token found") }
67
+ g.after_tokens = proc { g.explode = true and error('no suitable github token found') }
62
68
  end
63
69
  end
64
70
  end
65
71
 
66
72
  def login_header
67
- say "GitHub deprecated its Authorizations API exchanging a password for a token."
68
- say "Please visit https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations for more information."
69
- say "Try running with #{color("--github-token", :info)} or #{color("--auto-token", :info)} ."
73
+ say 'GitHub deprecated its Authorizations API exchanging a password for a token.'
74
+ say 'Please visit https://github.blog/2020-07-30-token-authentication-requirements-for-api-and-git-operations for more information.'
75
+ say "Try running with #{color('--github-token', :info)} or #{color('--auto-token', :info)} ."
70
76
  end
71
77
  end
72
78
  end
@@ -1,14 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
4
 
3
5
  module Travis
4
6
  module CLI
5
7
  class Logout < ApiCommand
6
- description "deletes the stored API token"
8
+ description 'deletes the stored API token'
7
9
 
8
10
  def run
9
11
  session.logout
10
12
  endpoint_config.delete('access_token')
11
- success("Successfully logged out!")
13
+ success('Successfully logged out!')
12
14
  end
13
15
  end
14
16
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
4
  require 'travis/tools/safe_string'
3
5
  require 'travis/tools/system'
@@ -6,8 +8,12 @@ module Travis
6
8
  module CLI
7
9
  class Logs < RepoCommand
8
10
  attr_accessor :delete, :reason
9
- description "streams test logs"
10
- on('-d', '--delete [REASON]', 'remove logs') { |c, reason| c.delete, c.reason = true, reason }
11
+
12
+ description 'streams test logs'
13
+ on('-d', '--delete [REASON]', 'remove logs') do |c, reason|
14
+ c.delete = true
15
+ c.reason = reason
16
+ end
11
17
  on('-f', '--force', 'do not ask user to confirm deleting the logs')
12
18
  on('--[no-]stream', 'only print current logs, do not stream')
13
19
 
@@ -25,17 +31,19 @@ module Travis
25
31
 
26
32
  def delete_log(job)
27
33
  unless force?
28
- error "not deleting logs without --force" unless interactive?
29
- error "aborted" unless danger_zone? "Do you really want to delete the build log for #{color(job.inspect_info, :underline)}?"
34
+ error 'not deleting logs without --force' unless interactive?
35
+ error 'aborted' unless danger_zone? "Do you really want to delete the build log for #{color(job.inspect_info,
36
+ :underline)}?"
30
37
  end
31
38
 
32
- warn "deleting log for #{color(job.inspect_info, [:bold, :info])}"
39
+ warn "deleting log for #{color(job.inspect_info, %i[bold info])}"
33
40
  job.delete_log(reason || {})
34
41
  end
35
42
 
36
43
  def display_log(job)
37
- info "displaying logs for #{color(job.inspect_info, [:bold, :info])}"
44
+ info "displaying logs for #{color(job.inspect_info, %i[bold info])}"
38
45
  return print_log(job.log.body) unless stream?
46
+
39
47
  job.log.body { |part| print_log(part) }
40
48
  ensure
41
49
  print "\e[0m" if interactive?
@@ -47,19 +55,20 @@ module Travis
47
55
 
48
56
  private
49
57
 
50
- def job(number)
51
- number = last_build.number + number if number.start_with? '.'
52
- job = super(number) || build(number) || branch(number)
53
- job = job.jobs.first if job.respond_to? :jobs
54
- job
55
- end
58
+ def job(number)
59
+ number = last_build.number + number if number.start_with? '.'
60
+ job = super(number) || build(number) || branch(number)
61
+ job = job.jobs.first if job.respond_to? :jobs
62
+ job
63
+ end
56
64
 
57
- def check_websocket
58
- require 'websocket-native' if stream?
59
- rescue LoadError => e
60
- raise e if e.respond_to?(:path) and e.path != 'websocket-native'
61
- info "speed up log streaming by installing the websocket-native gem"
62
- end
65
+ def check_websocket
66
+ require 'websocket-native' if stream?
67
+ rescue LoadError => e
68
+ raise e if e.respond_to?(:path) && (e.path != 'websocket-native')
69
+
70
+ info 'speed up log streaming by installing the websocket-native gem'
71
+ end
63
72
  end
64
73
  end
65
- end
74
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
4
  require 'travis/tools/notification'
3
5
 
@@ -9,10 +11,10 @@ module Travis
9
11
 
10
12
  on('-r', '--repo SLUG', 'monitor given repository (can be used more than once)') do |c, slug|
11
13
  c.repos << slug
12
- c.send(:error, "SLUG should be of the form OWNER/REPO") unless slug.split('/').compact.size == 2
14
+ c.send(:error, 'SLUG should be of the form OWNER/REPO') unless slug.split('/').compact.size == 2
13
15
  end
14
16
 
15
- types = Tools::Notification::DEFAULT.map(&:to_s).join(", ")
17
+ types = Tools::Notification::DEFAULT.map(&:to_s).join(', ')
16
18
  on('-n', '--[no-]notify [TYPE]', "send out desktop notifications (optional type: #{types})") do |c, type|
17
19
  c.setup_notification(type)
18
20
  end
@@ -75,6 +77,7 @@ module Travis
75
77
 
76
78
  def monitor?(entity)
77
79
  return true if all?
80
+
78
81
  entity.pull_request? ? pull? : push?
79
82
  end
80
83
 
@@ -84,26 +87,26 @@ module Travis
84
87
  color(entity.inspect_info, [entity.color, :bold]),
85
88
  color(entity.state, entity.color),
86
89
  color(entity.commit.subject, entity.color)
87
- ].join(" ")
90
+ ].join(' ')
88
91
  notification.notify(entity.repository.slug, [
89
92
  entity.class.name[/[^:]+$/],
90
93
  entity.number,
91
- entity.state + ":",
94
+ "#{entity.state}:",
92
95
  entity.commit.subject
93
- ].join(" "))
96
+ ].join(' '))
94
97
  end
95
98
 
96
99
  def handle_event(event)
97
100
  entity = event.job || event.build
98
101
  time = entity.finished_at || entity.started_at
99
102
  display(entity, time) if monitor? entity
100
- rescue Travis::Client::Error => error
101
- raise error if explode?
103
+ rescue Travis::Client::Error => e
104
+ raise e if explode?
102
105
  end
103
106
 
104
107
  def run
105
108
  listen(*repos) do |listener|
106
- listener.on_connect { say description, "Monitoring #{"builds for " if builds?}%s:" }
109
+ listener.on_connect { say description, "Monitoring #{'builds for ' if builds?}%s:" }
107
110
  listener.on(*events) { |e| handle_event(e) }
108
111
  end
109
112
  end
@@ -1,10 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
4
  require 'launchy'
3
5
 
4
6
  module Travis
5
7
  module CLI
6
8
  class Open < RepoCommand
7
- description "opens a build or job in the browser"
9
+ description 'opens a build or job in the browser'
8
10
 
9
11
  on('-g', '--github', 'Open the corresponding project, compare view or pull request on GitHub')
10
12
  on('-p', '--print', 'Print out the URL instead of opening it in a browser')
@@ -12,7 +14,7 @@ module Travis
12
14
  def run(number = nil)
13
15
  url = url_for(number)
14
16
  if print?
15
- say url, "web view: %s"
17
+ say url, 'web view: %s'
16
18
  else
17
19
  Launchy.open(url)
18
20
  end
@@ -20,20 +22,21 @@ module Travis
20
22
 
21
23
  private
22
24
 
23
- def url_for(number)
24
- return repo_url unless number
25
- entity = job(number) || build(number)
26
- error "could not find job or build #{repository.slug}##{number}" unless entity
27
- github ? entity.commit.compare_url : "#{repo_url}/#{entity.class.many}/#{entity.id}"
28
- end
25
+ def url_for(number)
26
+ return repo_url unless number
29
27
 
30
- def repo_url
31
- "https://#{host}/#{slug}"
32
- end
28
+ entity = job(number) || build(number)
29
+ error "could not find job or build #{repository.slug}##{number}" unless entity
30
+ github ? entity.commit.compare_url : "#{repo_url}/#{entity.class.many}/#{entity.id}"
31
+ end
33
32
 
34
- def host
35
- github ? "github.com" : session.config['host']
36
- end
33
+ def repo_url
34
+ "https://#{host}/#{slug}"
35
+ end
36
+
37
+ def host
38
+ github ? 'github.com' : session.config['host']
39
+ end
37
40
  end
38
41
  end
39
42
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
4
  require 'optparse'
3
5
 
@@ -1,13 +1,15 @@
1
- # encoding: utf-8
1
+ # frozen_string_literal: true
2
+
2
3
  require 'travis/cli'
3
4
 
4
5
  module Travis
5
6
  module CLI
6
7
  class Pubkey < RepoCommand
7
8
  attr_accessor :key_format
9
+
8
10
  description "prints out a repository's public key"
9
- on('-p', '--pem', 'encode in format used by pem') { |c,_| c.key_format = :pem }
10
- on('-f', '--fingerprint', 'display fingerprint') { |c,_| c.key_format = :fingerprint }
11
+ on('-p', '--pem', 'encode in format used by pem') { |c, _| c.key_format = :pem }
12
+ on('-f', '--fingerprint', 'display fingerprint') { |c, _| c.key_format = :fingerprint }
11
13
 
12
14
  def run
13
15
  error "#{key_format} format not supported by #{api_endpoint}" unless key
@@ -16,15 +18,15 @@ module Travis
16
18
 
17
19
  private
18
20
 
19
- def key
20
- key = repository.public_key
21
- case self.key_format ||= :ssh
22
- when :fingerprint then key.fingerprint
23
- when :pem then key.to_s
24
- when :ssh then key.to_ssh
25
- else raise "unknown format #{key_format}"
26
- end
21
+ def key
22
+ key = repository.public_key
23
+ case self.key_format ||= :ssh
24
+ when :fingerprint then key.fingerprint
25
+ when :pem then key.to_s
26
+ when :ssh then key.to_ssh
27
+ else raise "unknown format #{key_format}"
27
28
  end
29
+ end
28
30
  end
29
31
  end
30
32
  end
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'travis/cli'
2
- require 'pp'
3
4
 
4
5
  module Travis
5
6
  module CLI
6
7
  class Raw < ApiCommand
7
- description "makes an (authenticated) API call and prints out the result"
8
+ description 'makes an (authenticated) API call and prints out the result'
8
9
 
9
10
  skip :authenticate
10
11
  on('--[no-]json', 'display as json')
@@ -13,7 +14,7 @@ module Travis
13
14
  reply = session.get_raw(resource)
14
15
  json? ? say(reply.to_json) : pp(reply)
15
16
  rescue Travis::Client::NotFound
16
- error "resource not found"
17
+ error 'resource not found'
17
18
  end
18
19
  end
19
20
  end
@@ -0,0 +1,15 @@
1
+ require 'travis/cli'
2
+
3
+ module Travis
4
+ module CLI
5
+ class RegenerateToken < ApiCommand
6
+ description "regenerates the stored API token"
7
+
8
+ def run
9
+ token = session.regenerate_token['token']
10
+ endpoint_config['access_token'] = token
11
+ success("Successfully regenerated the token!")
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,15 @@
1
+ require 'travis/cli'
2
+
3
+ module Travis
4
+ module CLI
5
+ class RemoveToken < ApiCommand
6
+ description "deletes the stored API token"
7
+
8
+ def run
9
+ session.remove_token
10
+ endpoint_config['access_token'] = nil
11
+ success("Successfully removed the access token!")
12
+ end
13
+ end
14
+ end
15
+ end