concourse.rb 0.4.0 → 0.5.0.pre.5

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
  SHA256:
3
- metadata.gz: eb8b139f1aab79758d10152e99142dca3847e0663fd1d23fd0a7038a243ced17
4
- data.tar.gz: 3686d042ec39bc7c9ff2e15fc5b09e9586da235ab67f1daba2ef7a824ac1fc3b
3
+ metadata.gz: 4b962c43e06cbcb7f9264c2491413cb3b74e072ced90f07e3df64797d9442e2a
4
+ data.tar.gz: e28d1b0bb9c7b48130c7f65bebc57406572af0e228a131917c8e5c71dd4612e9
5
5
  SHA512:
6
- metadata.gz: ddc2b6e3e7789e1ec72e2e7e2359cda1958f4adc0e6e2ecc0c78297612f8a52caf29d67957ba678df1e5575121ba8c649b8e651a3ca869bd70e62548cb1ba283
7
- data.tar.gz: b49eb9ea8f046b6cdc5a33a1a95cea3c6d72401edca192989b772011a81d553add099349714774fa1efa59fc176ac1905bcfed4a5fa2fdaa50f4d58e46d9f867
6
+ metadata.gz: a025fbef6d2309324771840943068bfc09d61535787a04640e207f6ec5d9f810b15064987a1f916defbbd78002090c671eedce078892149b075609cb89ffb3fc
7
+ data.tar.gz: 886c79341633daf899dae07f2ab779f2cf1ae04ae95fbcc76f3ed88b014f25c22f4bdf6f6480930a073abd9a85459a757498c4daa369d2b1dbb81691937ac833
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify dependencies in concourse.rb.gemspec
data/Gemfile.lock CHANGED
@@ -1,15 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- concourse.rb (0.4.0)
5
- dry-schema (~> 0.5)
6
- excon (~> 0.72)
7
- semantic (~> 1.5)
4
+ concourse.rb (0.5.0.pre.5)
5
+ excon (>= 0.72, < 1)
6
+ semantic (>= 1.5, < 2)
8
7
 
9
8
  GEM
10
9
  remote: https://rubygems.org/
11
10
  specs:
12
- activesupport (6.1.0)
11
+ activesupport (6.1.3.1)
13
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
13
  i18n (>= 1.6, < 2)
15
14
  minitest (>= 5.1)
@@ -17,63 +16,40 @@ GEM
17
16
  zeitwerk (~> 2.3)
18
17
  addressable (2.7.0)
19
18
  public_suffix (>= 2.0.2, < 5.0)
19
+ ast (2.4.2)
20
20
  colored2 (3.1.2)
21
- concurrent-ruby (1.1.7)
21
+ concurrent-ruby (1.1.8)
22
22
  diff-lcs (1.4.4)
23
- dry-configurable (0.12.0)
24
- concurrent-ruby (~> 1.0)
25
- dry-core (~> 0.5, >= 0.5.0)
26
- dry-container (0.7.2)
27
- concurrent-ruby (~> 1.0)
28
- dry-configurable (~> 0.1, >= 0.1.3)
29
- dry-core (0.5.0)
30
- concurrent-ruby (~> 1.0)
31
- dry-equalizer (0.3.0)
32
- dry-inflector (0.2.0)
33
- dry-initializer (3.0.4)
34
- dry-logic (1.1.0)
35
- concurrent-ruby (~> 1.0)
36
- dry-core (~> 0.5, >= 0.5)
37
- dry-schema (0.6.0)
38
- concurrent-ruby (~> 1.0)
39
- dry-configurable (~> 0.8, >= 0.8.0)
40
- dry-core (~> 0.4)
41
- dry-equalizer (~> 0.2)
42
- dry-initializer (~> 3.0)
43
- dry-logic (~> 1.0)
44
- dry-types (~> 1.0)
45
- dry-types (1.4.0)
46
- concurrent-ruby (~> 1.0)
47
- dry-container (~> 0.3)
48
- dry-core (~> 0.4, >= 0.4.4)
49
- dry-equalizer (~> 0.3)
50
- dry-inflector (~> 0.1, >= 0.1.2)
51
- dry-logic (~> 1.0, >= 1.0.2)
52
- excon (0.78.1)
53
- faker (2.15.1)
23
+ docile (1.3.5)
24
+ excon (0.79.0)
25
+ faker (2.17.0)
54
26
  i18n (>= 1.6, < 2)
55
27
  faraday (1.3.0)
56
28
  faraday-net_http (~> 1.0)
57
29
  multipart-post (>= 1.2, < 3)
58
30
  ruby2_keywords
59
- faraday-net_http (1.0.0)
60
- gem-release (2.2.0)
31
+ faraday-net_http (1.0.1)
32
+ gem-release (2.2.1)
61
33
  hamster (3.0.0)
62
34
  concurrent-ruby (~> 1.0)
63
- i18n (1.8.6)
35
+ i18n (1.8.10)
64
36
  concurrent-ruby (~> 1.0)
65
37
  jwt (2.2.2)
66
- lino (1.7.0)
38
+ lino (1.9.0)
67
39
  hamster (~> 3.0)
68
40
  open4 (~> 1.3)
69
- minitest (5.14.2)
41
+ minitest (5.14.4)
70
42
  multipart-post (2.1.1)
71
43
  octokit (4.20.0)
72
44
  faraday (>= 0.9)
73
45
  sawyer (~> 0.8.0, >= 0.5.3)
74
46
  open4 (1.3.4)
75
47
  openssl (2.2.0)
48
+ parallel (1.20.1)
49
+ parser (3.0.0.0)
50
+ ast (~> 2.4.1)
76
51
  public_suffix (4.0.6)
52
+ rainbow (3.0.0)
77
53
  rake (13.0.3)
78
54
  rake_circle_ci (0.9.0)
79
55
  colored2 (~> 3.1)
@@ -95,6 +71,8 @@ GEM
95
71
  colored2 (~> 3.1)
96
72
  rake_factory (~> 0.23)
97
73
  sshkey (~> 2.0)
74
+ regexp_parser (2.1.1)
75
+ rexml (3.2.4)
98
76
  rspec (3.10.0)
99
77
  rspec-core (~> 3.10.0)
100
78
  rspec-expectations (~> 3.10.0)
@@ -104,20 +82,44 @@ GEM
104
82
  rspec-expectations (3.10.1)
105
83
  diff-lcs (>= 1.2.0, < 2.0)
106
84
  rspec-support (~> 3.10.0)
107
- rspec-mocks (3.10.1)
85
+ rspec-mocks (3.10.2)
108
86
  diff-lcs (>= 1.2.0, < 2.0)
109
87
  rspec-support (~> 3.10.0)
110
- rspec-support (3.10.1)
111
- ruby2_keywords (0.0.2)
88
+ rspec-support (3.10.2)
89
+ rubocop (1.12.0)
90
+ parallel (~> 1.10)
91
+ parser (>= 3.0.0.0)
92
+ rainbow (>= 2.2.2, < 4.0)
93
+ regexp_parser (>= 1.8, < 3.0)
94
+ rexml
95
+ rubocop-ast (>= 1.2.0, < 2.0)
96
+ ruby-progressbar (~> 1.7)
97
+ unicode-display_width (>= 1.4.0, < 3.0)
98
+ rubocop-ast (1.4.1)
99
+ parser (>= 2.7.1.5)
100
+ rubocop-rake (0.5.1)
101
+ rubocop
102
+ rubocop-rspec (2.2.0)
103
+ rubocop (~> 1.0)
104
+ rubocop-ast (>= 1.1.0)
105
+ ruby-progressbar (1.11.0)
106
+ ruby2_keywords (0.0.4)
112
107
  ruby_gpg2 (0.8.0)
113
108
  lino (>= 1.5)
114
109
  sawyer (0.8.2)
115
110
  addressable (>= 2.3.5)
116
111
  faraday (> 0.8, < 2.0)
117
112
  semantic (1.6.1)
113
+ simplecov (0.21.2)
114
+ docile (~> 1.1)
115
+ simplecov-html (~> 0.11)
116
+ simplecov_json_formatter (~> 0.1)
117
+ simplecov-html (0.12.3)
118
+ simplecov_json_formatter (0.1.2)
118
119
  sshkey (2.0.0)
119
120
  tzinfo (2.0.4)
120
121
  concurrent-ruby (~> 1.0)
122
+ unicode-display_width (2.0.0)
121
123
  zeitwerk (2.4.2)
122
124
 
123
125
  PLATFORMS
@@ -126,18 +128,22 @@ PLATFORMS
126
128
  x86_64-linux
127
129
 
128
130
  DEPENDENCIES
129
- bundler (~> 2.0)
131
+ bundler
130
132
  concourse.rb!
131
- faker (~> 2.15)
132
- gem-release (~> 2.0)
133
- jwt (~> 2.2)
134
- openssl (~> 2.2)
135
- rake (~> 13.0)
136
- rake_circle_ci (~> 0.9)
137
- rake_github (~> 0.5)
138
- rake_gpg (~> 0.12)
139
- rake_ssh (~> 0.4)
140
- rspec (~> 3.9)
133
+ faker
134
+ gem-release
135
+ jwt
136
+ openssl
137
+ rake
138
+ rake_circle_ci
139
+ rake_github
140
+ rake_gpg
141
+ rake_ssh
142
+ rspec
143
+ rubocop
144
+ rubocop-rake
145
+ rubocop-rspec
146
+ simplecov
141
147
 
142
148
  BUNDLED WITH
143
- 2.2.4
149
+ 2.2.18
data/README.md CHANGED
@@ -24,15 +24,35 @@ Add usage here.
24
24
 
25
25
  ## Development
26
26
 
27
- After checking out the repo, run `bin/setup` to install dependencies. Then, run
28
- `rake spec` to run the tests. You can also run `bin/console` for an interactive
29
- prompt that will allow you to experiment.
30
-
31
- To install this gem onto your local machine, run `bundle exec rake install`. To
32
- release a new version, update the version number in `version.rb`, and then run
33
- `bundle exec rake release`, which will create a git tag for the version, push
34
- git commits and tags, and push the `.gem` file to
35
- [rubygems.org](https://rubygems.org).
27
+ To install dependencies and run the build, run the pre-commit build:
28
+
29
+ ```shell script
30
+ ./go
31
+ ```
32
+
33
+ This runs all unit tests and other checks including coverage and code linting /
34
+ formatting.
35
+
36
+ To run only the unit tests, including coverage:
37
+
38
+ ```shell script
39
+ ./go test:unit
40
+ ```
41
+
42
+ To attempt to fix any code linting / formatting issues:
43
+
44
+ ```shell script
45
+ ./go library:fix
46
+ ```
47
+
48
+ To check for code linting / formatting issues without fixing:
49
+
50
+ ```shell script
51
+ ./go library:check
52
+ ```
53
+
54
+ You can also run `bin/console` for an interactive prompt that will allow you to
55
+ experiment.
36
56
 
37
57
  ### Common Tasks
38
58
 
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  require 'rake_circle_ci'
3
5
  require 'rake_github'
@@ -5,13 +7,16 @@ require 'rake_ssh'
5
7
  require 'rake_gpg'
6
8
  require 'securerandom'
7
9
  require 'rspec/core/rake_task'
10
+ require 'rubocop/rake_task'
8
11
 
9
- task :default => :spec
10
-
11
- RSpec::Core::RakeTask.new(:spec)
12
+ task default: %i[
13
+ library:fix
14
+ test:unit
15
+ ]
12
16
 
13
17
  namespace :encryption do
14
18
  namespace :passphrase do
19
+ desc 'Generate encryption passphrase for CI GPG key'
15
20
  task :generate do
16
21
  File.open('config/secrets/ci/encryption.passphrase', 'w') do |f|
17
22
  f.write(SecureRandom.base64(36))
@@ -23,86 +28,103 @@ end
23
28
  namespace :keys do
24
29
  namespace :deploy do
25
30
  RakeSSH.define_key_tasks(
26
- path: 'config/secrets/ci/',
27
- comment: 'maintainers@infrablocks.io')
31
+ path: 'config/secrets/ci/',
32
+ comment: 'maintainers@infrablocks.io'
33
+ )
28
34
  end
29
35
 
30
36
  namespace :gpg do
31
37
  RakeGPG.define_generate_key_task(
32
- output_directory: 'config/secrets/ci',
33
- name_prefix: 'gpg',
34
- owner_name: 'InfraBlocks Maintainers',
35
- owner_email: 'maintainers@infrablocks.io',
36
- owner_comment: 'concourse.rb CI Key')
38
+ output_directory: 'config/secrets/ci',
39
+ name_prefix: 'gpg',
40
+ owner_name: 'InfraBlocks Maintainers',
41
+ owner_email: 'maintainers@infrablocks.io',
42
+ owner_comment: 'concourse.rb CI Key'
43
+ )
37
44
  end
38
45
  end
39
46
 
47
+ RuboCop::RakeTask.new
48
+
49
+ namespace :library do
50
+ desc 'Run all checks of the library'
51
+ task check: [:rubocop]
52
+
53
+ desc 'Attempt to automatically fix issues with the library'
54
+ task fix: [:'rubocop:auto_correct']
55
+ end
56
+
57
+ namespace :test do
58
+ RSpec::Core::RakeTask.new(:unit)
59
+ end
60
+
40
61
  RakeCircleCI.define_project_tasks(
41
- namespace: :circle_ci,
42
- project_slug: 'github/infrablocks/concourse.rb'
62
+ namespace: :circle_ci,
63
+ project_slug: 'github/infrablocks/concourse.rb'
43
64
  ) do |t|
44
65
  circle_ci_config =
45
- YAML.load_file('config/secrets/circle_ci/config.yaml')
66
+ YAML.load_file('config/secrets/circle_ci/config.yaml')
46
67
 
47
- t.api_token = circle_ci_config["circle_ci_api_token"]
68
+ t.api_token = circle_ci_config['circle_ci_api_token']
48
69
  t.environment_variables = {
49
- ENCRYPTION_PASSPHRASE:
50
- File.read('config/secrets/ci/encryption.passphrase')
51
- .chomp
70
+ ENCRYPTION_PASSPHRASE:
71
+ File.read('config/secrets/ci/encryption.passphrase')
72
+ .chomp
52
73
  }
53
74
  t.checkout_keys = []
54
75
  t.ssh_keys = [
55
- {
56
- hostname: "github.com",
57
- private_key: File.read('config/secrets/ci/ssh.private')
58
- }
76
+ {
77
+ hostname: 'github.com',
78
+ private_key: File.read('config/secrets/ci/ssh.private')
79
+ }
59
80
  ]
60
81
  end
61
82
 
62
83
  RakeGithub.define_repository_tasks(
63
- namespace: :github,
64
- repository: 'infrablocks/concourse.rb',
84
+ namespace: :github,
85
+ repository: 'infrablocks/concourse.rb'
65
86
  ) do |t|
66
87
  github_config =
67
- YAML.load_file('config/secrets/github/config.yaml')
88
+ YAML.load_file('config/secrets/github/config.yaml')
68
89
 
69
- t.access_token = github_config["github_personal_access_token"]
90
+ t.access_token = github_config['github_personal_access_token']
70
91
  t.deploy_keys = [
71
- {
72
- title: 'CircleCI',
73
- public_key: File.read('config/secrets/ci/ssh.public')
74
- }
92
+ {
93
+ title: 'CircleCI',
94
+ public_key: File.read('config/secrets/ci/ssh.public')
95
+ }
75
96
  ]
76
97
  end
77
98
 
78
99
  namespace :pipeline do
79
- task :prepare => [
80
- :'circle_ci:project:follow',
81
- :'circle_ci:env_vars:ensure',
82
- :'circle_ci:checkout_keys:ensure',
83
- :'circle_ci:ssh_keys:ensure',
84
- :'github:deploy_keys:ensure'
100
+ desc 'Prepare CircleCI Pipeline'
101
+ task prepare: %i[
102
+ circle_ci:project:follow
103
+ circle_ci:env_vars:ensure
104
+ circle_ci:checkout_keys:ensure
105
+ circle_ci:ssh_keys:ensure
106
+ github:deploy_keys:ensure
85
107
  ]
86
108
  end
87
109
 
88
110
  namespace :version do
89
- desc "Bump version for specified type (pre, major, minor, patch)"
111
+ desc 'Bump version for specified type (pre, major, minor, patch)'
90
112
  task :bump, [:type] do |_, args|
91
113
  bump_version_for(args.type)
92
114
  end
93
115
  end
94
116
 
95
- desc "Release gem"
117
+ desc 'Release gem'
96
118
  task :release do
97
- sh "gem release --tag --push"
119
+ sh 'gem release --tag --push'
98
120
  end
99
121
 
100
122
  def bump_version_for(version_type)
101
- sh "gem bump " +
102
- "--skip-ci " +
103
- "--version #{version_type} " +
104
- "--file lib/concourse/version.rb " +
105
- "&& bundle install " +
106
- "&& export LAST_MESSAGE=\"$(git log -1 --pretty=%B)\" " +
107
- "&& git commit -a --amend -m \"${LAST_MESSAGE}\""
123
+ sh 'gem bump ' \
124
+ '--skip-ci ' \
125
+ "--version #{version_type} " \
126
+ '--file lib/concourse/version.rb ' \
127
+ '&& bundle install ' \
128
+ '&& export LAST_MESSAGE="$(git log -1 --pretty=%B)" ' \
129
+ '&& git commit -a --amend -m "${LAST_MESSAGE}"'
108
130
  end
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'concourse'
data/concourse.rb.gemspec CHANGED
@@ -1,23 +1,34 @@
1
- # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
5
  require 'concourse/version'
5
6
  require 'date'
6
7
 
8
+ files = %w[
9
+ bin
10
+ lib
11
+ CODE_OF_CONDUCT.md
12
+ concourse.rb.gemspec
13
+ Gemfile
14
+ LICENSE.txt
15
+ Rakefile
16
+ README.md
17
+ ]
18
+
7
19
  Gem::Specification.new do |spec|
8
20
  spec.name = 'concourse.rb'
9
21
  spec.version = Concourse::VERSION
10
- spec.authors = ['Toby Clemson']
11
- spec.email = ['tobyclemson@gmail.com']
22
+ spec.authors = ['InfraBlocks Maintainers']
23
+ spec.email = ['maintainers@infrablocks.io']
12
24
 
13
- spec.date = Date.today.to_s
14
25
  spec.summary = 'A Ruby SDK for the Concourse CI API.'
15
26
  spec.description = 'A Ruby SDK for the Concourse CI API.'
16
27
  spec.homepage = 'https://github.com/infrablocks/concourse.rb'
17
28
  spec.license = 'MIT'
18
29
 
19
30
  spec.files = `git ls-files -z`.split("\x0").select do |f|
20
- f.match(%r{^(bin|lib|CODE_OF_CONDUCT\.md|concourse\.rb\.gemspec|Gemfile|LICENSE\.txt|Rakefile|README\.md)})
31
+ f.match(/^(#{files.map { |g| Regexp.escape(g) }.join('|')})/)
21
32
  end
22
33
  spec.bindir = 'exe'
23
34
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
@@ -25,19 +36,22 @@ Gem::Specification.new do |spec|
25
36
 
26
37
  spec.required_ruby_version = '>= 2.6.0'
27
38
 
28
- spec.add_dependency 'excon', '~> 0.72'
29
- spec.add_dependency 'dry-schema', '~> 0.5'
30
- spec.add_dependency 'semantic', '~> 1.5'
31
-
32
- spec.add_development_dependency 'bundler', '~> 2.0'
33
- spec.add_development_dependency 'rake', '~> 13.0'
34
- spec.add_development_dependency 'rake_circle_ci', '~> 0.9'
35
- spec.add_development_dependency 'rake_github', '~> 0.5'
36
- spec.add_development_dependency 'rake_ssh', '~> 0.4'
37
- spec.add_development_dependency 'rake_gpg', '~> 0.12'
38
- spec.add_development_dependency 'rspec', '~> 3.9'
39
- spec.add_development_dependency 'jwt', '~> 2.2'
40
- spec.add_development_dependency 'openssl', '~> 2.2'
41
- spec.add_development_dependency 'faker', '~> 2.15'
42
- spec.add_development_dependency 'gem-release', '~> 2.0'
39
+ spec.add_dependency 'excon', '>= 0.72', '< 1'
40
+ spec.add_dependency 'semantic', '>= 1.5', '< 2'
41
+
42
+ spec.add_development_dependency 'bundler'
43
+ spec.add_development_dependency 'faker'
44
+ spec.add_development_dependency 'gem-release'
45
+ spec.add_development_dependency 'jwt'
46
+ spec.add_development_dependency 'openssl'
47
+ spec.add_development_dependency 'rake'
48
+ spec.add_development_dependency 'rake_circle_ci'
49
+ spec.add_development_dependency 'rake_github'
50
+ spec.add_development_dependency 'rake_gpg'
51
+ spec.add_development_dependency 'rake_ssh'
52
+ spec.add_development_dependency 'rspec'
53
+ spec.add_development_dependency 'rubocop'
54
+ spec.add_development_dependency 'rubocop-rake'
55
+ spec.add_development_dependency 'rubocop-rspec'
56
+ spec.add_development_dependency 'simplecov'
43
57
  end
data/lib/concourse.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'concourse/version'
2
4
  require_relative 'concourse/models'
3
5
  require_relative 'concourse/errors'
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'excon'
2
4
  require 'json'
3
5
 
@@ -11,15 +13,19 @@ module Concourse
11
13
 
12
14
  def for_skymarshal
13
15
  Concourse::SubClients::SkymarshalClient.new(
14
- @options.merge(version: get_info[:version]))
16
+ @options.merge(version: get_info[:version])
17
+ )
15
18
  end
16
19
 
20
+ # rubocop:disable Naming/AccessorMethodName
17
21
  def get_info
18
22
  JSON.parse(
19
- Excon.get(Concourse::Urls.info_url(@options[:url]))
20
- .body,
21
- symbolize_names: true)
23
+ Excon.get(Concourse::Urls.info_url(@options[:url]))
24
+ .body,
25
+ symbolize_names: true
26
+ )
22
27
  end
28
+ # rubocop:enable Naming/AccessorMethodName
23
29
 
24
30
  def ==(other)
25
31
  other.class == self.class && other.state == state
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Concourse
2
4
  module Errors
3
5
  class ApiError < StandardError
@@ -5,10 +7,10 @@ module Concourse
5
7
  @request = parameters[:request]
6
8
  @response = parameters[:response]
7
9
 
8
- super("Request to #{@request.url} failed " +
9
- "with status #{@response.status} " +
10
- "and body #{@response.body}")
10
+ super("Request to #{@request.url} failed " \
11
+ "with status #{@response.status} " \
12
+ "and body #{@response.body}")
11
13
  end
12
14
  end
13
15
  end
14
- end
16
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'base64'
2
4
 
3
5
  module Concourse
@@ -17,25 +19,25 @@ module Concourse
17
19
 
18
20
  module HeaderNames
19
21
  def self.content_type
20
- "Content-Type"
22
+ 'Content-Type'
21
23
  end
22
-
24
+
23
25
  def self.authorization
24
- "Authorization"
26
+ 'Authorization'
25
27
  end
26
28
 
27
29
  def self.date
28
- "Date"
30
+ 'Date'
29
31
  end
30
32
  end
31
33
 
32
34
  module Headers
33
35
  def self.content_type(content_type)
34
- {Concourse::HeaderNames.content_type => content_type}
36
+ { Concourse::HeaderNames.content_type => content_type }
35
37
  end
36
38
 
37
39
  def self.authorization(authorization)
38
- {Concourse::HeaderNames.authorization => authorization}
40
+ { Concourse::HeaderNames.authorization => authorization }
39
41
  end
40
42
  end
41
- end
43
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Concourse
2
4
  module Http
3
5
  class Request
@@ -26,15 +28,16 @@ module Concourse
26
28
  def state
27
29
  [@url, @headers, @body]
28
30
  end
29
-
30
31
  end
31
32
 
32
33
  def assert_successful(request, response)
33
- unless response.status < 400
34
- raise Errors::ApiError.new(
35
- request: request,
36
- response: response)
37
- end
34
+ raise api_error(request, response) unless response.status < 400
35
+ end
36
+
37
+ private
38
+
39
+ def api_error(request, response)
40
+ Errors::ApiError.new(request: request, response: response)
38
41
  end
39
42
  end
40
- end
43
+ end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'concourse/models/token'
2
4
 
3
5
  module Concourse
4
6
  module Models
5
7
  end
6
- end
8
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Concourse
2
4
  module Models
3
5
  class Token
@@ -29,4 +31,4 @@ module Concourse
29
31
  end
30
32
  end
31
33
  end
32
- end
34
+ end
@@ -1,6 +1,8 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'concourse/sub_clients/skymarshal_client'
2
4
 
3
5
  module Concourse
4
6
  module SubClients
5
7
  end
6
- end
8
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'semantic'
2
4
  require 'time'
3
5
  require 'json'
@@ -43,60 +45,87 @@ module Concourse
43
45
  private
44
46
 
45
47
  def create_token_url
46
- @version >= VERSION_6_1 ?
47
- Concourse::Urls.sky_issuer_token_url(@url) :
48
- Concourse::Urls.sky_token_url(@url)
48
+ if @version >= VERSION_6_1
49
+ Concourse::Urls.sky_issuer_token_url(@url)
50
+ else
51
+ Concourse::Urls.sky_token_url(@url)
52
+ end
49
53
  end
50
54
 
51
55
  def create_token_headers
52
56
  {}
53
- .merge(Concourse::Headers.content_type(
54
- Concourse::ContentTypes::APPLICATION_WWW_FORM_URLENCODED))
55
- .merge(Concourse::Headers.authorization(
56
- Concourse::Authorization.basic(
57
- "fly", "Zmx5")))
57
+ .merge(Concourse::Headers.content_type(
58
+ Concourse::ContentTypes::APPLICATION_WWW_FORM_URLENCODED
59
+ ))
60
+ .merge(Concourse::Headers.authorization(
61
+ Concourse::Authorization.basic(
62
+ 'fly', 'Zmx5'
63
+ )
64
+ ))
58
65
  end
59
66
 
60
67
  def create_token_body(parameters)
61
68
  username = parameters[:username]
62
69
  password = parameters[:password]
63
70
 
64
- scope = @version >= VERSION_6_1 ?
65
- 'openid profile email federated:id groups' :
66
- 'openid+profile+email+federated:id+groups'
67
-
68
- URI.encode_www_form({
71
+ URI.encode_www_form(
72
+ {
69
73
  grant_type: 'password',
70
74
  username: username,
71
75
  password: password,
72
76
  scope: scope
73
- })
77
+ }
78
+ )
74
79
  end
75
80
 
76
81
  def token(token_response)
77
- token_response_date = @version >= VERSION_6_1 ?
78
- Time.parse(
79
- token_response.headers[Concourse::HeaderNames.date]) :
80
- nil
81
- token_response_body =
82
- JSON.parse(token_response.body, symbolize_names: true)
83
-
84
- @version >= VERSION_6_1 ?
85
- Models::Token.new(
86
- access_token: token_response_body[:access_token],
87
- token_type: token_response_body[:token_type].downcase,
88
- expires_at:
89
- (token_response_date + token_response_body[:expires_in])
90
- .iso8601,
91
- id_token: token_response_body[:id_token]
92
- ) :
93
- Models::Token.new(
94
- access_token: token_response_body[:access_token],
95
- token_type: token_response_body[:token_type].downcase,
96
- expires_at: token_response_body[:expiry],
97
- id_token: token_response_body[:access_token]
98
- )
82
+ if @version >= VERSION_6_1
83
+ post_version_6_1_token(token_response)
84
+ else
85
+ pre_version_6_1_token(token_response)
86
+ end
87
+ end
88
+
89
+ def scope
90
+ if @version >= VERSION_6_1
91
+ 'openid profile email federated:id groups'
92
+ else
93
+ 'openid+profile+email+federated:id+groups'
94
+ end
95
+ end
96
+
97
+ def token_response_date(token_response)
98
+ Time.parse(token_response.headers[Concourse::HeaderNames.date])
99
+ end
100
+
101
+ def token_response_body(token_response)
102
+ JSON.parse(token_response.body, symbolize_names: true)
103
+ end
104
+
105
+ def pre_version_6_1_token(token_response)
106
+ token_response_body = token_response_body(token_response)
107
+
108
+ Models::Token.new(
109
+ access_token: token_response_body[:access_token],
110
+ token_type: token_response_body[:token_type].downcase,
111
+ expires_at: token_response_body[:expiry],
112
+ id_token: token_response_body[:access_token]
113
+ )
114
+ end
115
+
116
+ def post_version_6_1_token(token_response)
117
+ token_response_body = token_response_body(token_response)
118
+ token_response_date = token_response_date(token_response)
119
+
120
+ Models::Token.new(
121
+ access_token: token_response_body[:access_token],
122
+ token_type: token_response_body[:token_type].downcase,
123
+ expires_at:
124
+ (token_response_date + token_response_body[:expires_in])
125
+ .iso8601,
126
+ id_token: token_response_body[:id_token]
127
+ )
99
128
  end
100
129
  end
101
130
  end
102
- end
131
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Concourse
2
4
  module Urls
3
5
  def self.api_url(concourse_url)
@@ -16,8 +18,6 @@ module Concourse
16
18
  "#{api_url(concourse_url)}/info"
17
19
  end
18
20
 
19
- private
20
-
21
21
  def self.base_url(concourse_url)
22
22
  concourse_url.chomp('/')
23
23
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Concourse
2
- VERSION = '0.4.0'
4
+ VERSION = '0.5.0.pre.5'
3
5
  end
metadata CHANGED
@@ -1,214 +1,268 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: concourse.rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0
4
+ version: 0.5.0.pre.5
5
5
  platform: ruby
6
6
  authors:
7
- - Toby Clemson
7
+ - InfraBlocks Maintainers
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-01-05 00:00:00.000000000 Z
11
+ date: 2021-05-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: excon
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0.72'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '0.72'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '1'
27
33
  - !ruby/object:Gem::Dependency
28
- name: dry-schema
34
+ name: semantic
29
35
  requirement: !ruby/object:Gem::Requirement
30
36
  requirements:
31
- - - "~>"
37
+ - - ">="
32
38
  - !ruby/object:Gem::Version
33
- version: '0.5'
39
+ version: '1.5'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '2'
34
43
  type: :runtime
35
44
  prerelease: false
36
45
  version_requirements: !ruby/object:Gem::Requirement
37
46
  requirements:
38
- - - "~>"
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '1.5'
50
+ - - "<"
39
51
  - !ruby/object:Gem::Version
40
- version: '0.5'
52
+ version: '2'
41
53
  - !ruby/object:Gem::Dependency
42
- name: semantic
54
+ name: bundler
43
55
  requirement: !ruby/object:Gem::Requirement
44
56
  requirements:
45
- - - "~>"
57
+ - - ">="
46
58
  - !ruby/object:Gem::Version
47
- version: '1.5'
48
- type: :runtime
59
+ version: '0'
60
+ type: :development
49
61
  prerelease: false
50
62
  version_requirements: !ruby/object:Gem::Requirement
51
63
  requirements:
52
- - - "~>"
64
+ - - ">="
53
65
  - !ruby/object:Gem::Version
54
- version: '1.5'
66
+ version: '0'
55
67
  - !ruby/object:Gem::Dependency
56
- name: bundler
68
+ name: faker
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ type: :development
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ - !ruby/object:Gem::Dependency
82
+ name: gem-release
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ type: :development
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: '0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: jwt
57
97
  requirement: !ruby/object:Gem::Requirement
58
98
  requirements:
59
- - - "~>"
99
+ - - ">="
60
100
  - !ruby/object:Gem::Version
61
- version: '2.0'
101
+ version: '0'
62
102
  type: :development
63
103
  prerelease: false
64
104
  version_requirements: !ruby/object:Gem::Requirement
65
105
  requirements:
66
- - - "~>"
106
+ - - ">="
67
107
  - !ruby/object:Gem::Version
68
- version: '2.0'
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: openssl
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :development
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
69
123
  - !ruby/object:Gem::Dependency
70
124
  name: rake
71
125
  requirement: !ruby/object:Gem::Requirement
72
126
  requirements:
73
- - - "~>"
127
+ - - ">="
74
128
  - !ruby/object:Gem::Version
75
- version: '13.0'
129
+ version: '0'
76
130
  type: :development
77
131
  prerelease: false
78
132
  version_requirements: !ruby/object:Gem::Requirement
79
133
  requirements:
80
- - - "~>"
134
+ - - ">="
81
135
  - !ruby/object:Gem::Version
82
- version: '13.0'
136
+ version: '0'
83
137
  - !ruby/object:Gem::Dependency
84
138
  name: rake_circle_ci
85
139
  requirement: !ruby/object:Gem::Requirement
86
140
  requirements:
87
- - - "~>"
141
+ - - ">="
88
142
  - !ruby/object:Gem::Version
89
- version: '0.9'
143
+ version: '0'
90
144
  type: :development
91
145
  prerelease: false
92
146
  version_requirements: !ruby/object:Gem::Requirement
93
147
  requirements:
94
- - - "~>"
148
+ - - ">="
95
149
  - !ruby/object:Gem::Version
96
- version: '0.9'
150
+ version: '0'
97
151
  - !ruby/object:Gem::Dependency
98
152
  name: rake_github
99
153
  requirement: !ruby/object:Gem::Requirement
100
154
  requirements:
101
- - - "~>"
155
+ - - ">="
102
156
  - !ruby/object:Gem::Version
103
- version: '0.5'
157
+ version: '0'
104
158
  type: :development
105
159
  prerelease: false
106
160
  version_requirements: !ruby/object:Gem::Requirement
107
161
  requirements:
108
- - - "~>"
162
+ - - ">="
109
163
  - !ruby/object:Gem::Version
110
- version: '0.5'
164
+ version: '0'
111
165
  - !ruby/object:Gem::Dependency
112
- name: rake_ssh
166
+ name: rake_gpg
113
167
  requirement: !ruby/object:Gem::Requirement
114
168
  requirements:
115
- - - "~>"
169
+ - - ">="
116
170
  - !ruby/object:Gem::Version
117
- version: '0.4'
171
+ version: '0'
118
172
  type: :development
119
173
  prerelease: false
120
174
  version_requirements: !ruby/object:Gem::Requirement
121
175
  requirements:
122
- - - "~>"
176
+ - - ">="
123
177
  - !ruby/object:Gem::Version
124
- version: '0.4'
178
+ version: '0'
125
179
  - !ruby/object:Gem::Dependency
126
- name: rake_gpg
180
+ name: rake_ssh
127
181
  requirement: !ruby/object:Gem::Requirement
128
182
  requirements:
129
- - - "~>"
183
+ - - ">="
130
184
  - !ruby/object:Gem::Version
131
- version: '0.12'
185
+ version: '0'
132
186
  type: :development
133
187
  prerelease: false
134
188
  version_requirements: !ruby/object:Gem::Requirement
135
189
  requirements:
136
- - - "~>"
190
+ - - ">="
137
191
  - !ruby/object:Gem::Version
138
- version: '0.12'
192
+ version: '0'
139
193
  - !ruby/object:Gem::Dependency
140
194
  name: rspec
141
195
  requirement: !ruby/object:Gem::Requirement
142
196
  requirements:
143
- - - "~>"
197
+ - - ">="
144
198
  - !ruby/object:Gem::Version
145
- version: '3.9'
199
+ version: '0'
146
200
  type: :development
147
201
  prerelease: false
148
202
  version_requirements: !ruby/object:Gem::Requirement
149
203
  requirements:
150
- - - "~>"
204
+ - - ">="
151
205
  - !ruby/object:Gem::Version
152
- version: '3.9'
206
+ version: '0'
153
207
  - !ruby/object:Gem::Dependency
154
- name: jwt
208
+ name: rubocop
155
209
  requirement: !ruby/object:Gem::Requirement
156
210
  requirements:
157
- - - "~>"
211
+ - - ">="
158
212
  - !ruby/object:Gem::Version
159
- version: '2.2'
213
+ version: '0'
160
214
  type: :development
161
215
  prerelease: false
162
216
  version_requirements: !ruby/object:Gem::Requirement
163
217
  requirements:
164
- - - "~>"
218
+ - - ">="
165
219
  - !ruby/object:Gem::Version
166
- version: '2.2'
220
+ version: '0'
167
221
  - !ruby/object:Gem::Dependency
168
- name: openssl
222
+ name: rubocop-rake
169
223
  requirement: !ruby/object:Gem::Requirement
170
224
  requirements:
171
- - - "~>"
225
+ - - ">="
172
226
  - !ruby/object:Gem::Version
173
- version: '2.2'
227
+ version: '0'
174
228
  type: :development
175
229
  prerelease: false
176
230
  version_requirements: !ruby/object:Gem::Requirement
177
231
  requirements:
178
- - - "~>"
232
+ - - ">="
179
233
  - !ruby/object:Gem::Version
180
- version: '2.2'
234
+ version: '0'
181
235
  - !ruby/object:Gem::Dependency
182
- name: faker
236
+ name: rubocop-rspec
183
237
  requirement: !ruby/object:Gem::Requirement
184
238
  requirements:
185
- - - "~>"
239
+ - - ">="
186
240
  - !ruby/object:Gem::Version
187
- version: '2.15'
241
+ version: '0'
188
242
  type: :development
189
243
  prerelease: false
190
244
  version_requirements: !ruby/object:Gem::Requirement
191
245
  requirements:
192
- - - "~>"
246
+ - - ">="
193
247
  - !ruby/object:Gem::Version
194
- version: '2.15'
248
+ version: '0'
195
249
  - !ruby/object:Gem::Dependency
196
- name: gem-release
250
+ name: simplecov
197
251
  requirement: !ruby/object:Gem::Requirement
198
252
  requirements:
199
- - - "~>"
253
+ - - ">="
200
254
  - !ruby/object:Gem::Version
201
- version: '2.0'
255
+ version: '0'
202
256
  type: :development
203
257
  prerelease: false
204
258
  version_requirements: !ruby/object:Gem::Requirement
205
259
  requirements:
206
- - - "~>"
260
+ - - ">="
207
261
  - !ruby/object:Gem::Version
208
- version: '2.0'
262
+ version: '0'
209
263
  description: A Ruby SDK for the Concourse CI API.
210
264
  email:
211
- - tobyclemson@gmail.com
265
+ - maintainers@infrablocks.io
212
266
  executables: []
213
267
  extensions: []
214
268
  extra_rdoc_files: []
@@ -248,9 +302,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
248
302
  version: 2.6.0
249
303
  required_rubygems_version: !ruby/object:Gem::Requirement
250
304
  requirements:
251
- - - ">="
305
+ - - ">"
252
306
  - !ruby/object:Gem::Version
253
- version: '0'
307
+ version: 1.3.1
254
308
  requirements: []
255
309
  rubygems_version: 3.0.1
256
310
  signing_key: