seira 0.8.1 → 0.8.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: eb319292b2073d2caa5a7d526f70b7f6a707dfa8a7e8b7eba014d488c1ce50ee
4
- data.tar.gz: b6dfc7dd336518acc1d510177d8eff2f02252351cece68e57c68d9019272d674
3
+ metadata.gz: 0cedfa6841e5eaab7d04673e58182a6eeed7309999ebca2571fba54a2da8379e
4
+ data.tar.gz: ac45a36439ed8e56e856f6ecf917d848606b14b85752e034bacd86def1a90241
5
5
  SHA512:
6
- metadata.gz: 137620c27df4b7fb22580bb33249d8c6ea6b087f2203205b73f844eef456b20342af2f9c753264439e390ec9c82ad1e47dcda719885cd57ba2a980dbe9803ad9
7
- data.tar.gz: f40b95e33ab48142deb3673b804507f7f9bf91e37b7a66827e92feb5afbdfaadf59032d6ea3d1848be956037037cd2f4e5d9910a8b442e0b86d34ff2a7b58cfe
6
+ metadata.gz: '0946ca82098b4c329f04d91a6b8aefd831baa887ba638712e8779ded8494aac3883c9a09e79c49aa916102a758fab822e89ef42a0ed53a36cf0cb7b1f70bc10b'
7
+ data.tar.gz: 9fd9290e4778264498de98cdf37a55fe8bb67cd431c76410c6cc25fe0ea5fef120415a9dad4101fecb6828c1816daab254142b183c47cc41fc135b24a7ef1891
@@ -5,18 +5,16 @@ on: push
5
5
  jobs:
6
6
  test:
7
7
 
8
- runs-on: ubuntu-20.04
8
+ runs-on: ubuntu-22.04
9
9
 
10
10
  strategy:
11
11
  matrix:
12
- ruby-version: ['2.6.3', '2.7.2']
12
+ ruby-version: ['2.6.3', '2.7.4']
13
13
 
14
14
  steps:
15
- # Pin to this commit: v2
16
- - uses: actions/checkout@5a4ac9002d0be2fb38bd78e4b4dbde5606d7042f
15
+ - uses: actions/checkout@v3.5.3
17
16
  - name: Set up Ruby
18
- # Pin to this commit, v1.82.0
19
- uses: ruby/setup-ruby@5e4f0a10bfc39c97cd5358121291e27e5d97e09b
17
+ uses: ruby/setup-ruby@v1.152.0
20
18
  with:
21
19
  ruby-version: ${{ matrix.ruby-version }}
22
20
  bundler-cache: true # runs 'bundle install' and caches installed gems automatically
data/.rubocop.yml CHANGED
@@ -2,7 +2,7 @@ AllCops:
2
2
  Exclude:
3
3
  - bin/**/*
4
4
 
5
- TargetRubyVersion: 2.5.3
5
+ TargetRubyVersion: 2.7.7
6
6
 
7
7
  Rails:
8
8
  Enabled: false
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ 2.7.7
@@ -1,8 +1,8 @@
1
1
  module Seira
2
2
  module Teleport
3
3
  class Request
4
- def initialize(role, reviewer: nil, context: nil)
5
- @role = role
4
+ def initialize(roles, reviewer: nil, context: nil)
5
+ @roles = roles.kind_of?(Array) ? roles.join(",") : roles
6
6
  @reviewer = reviewer
7
7
  @context = context
8
8
  end
@@ -12,7 +12,7 @@ module Seira
12
12
  end
13
13
 
14
14
  def cmd
15
- cmd = "request create --roles '#{@role}'"
15
+ cmd = "request create --roles '#{@roles}'"
16
16
  cmd += " --reason '#{reason}'"
17
17
  cmd += " --reviewers #{@reviewer}" unless @reviewer.nil?
18
18
 
@@ -3,13 +3,13 @@ module Seira
3
3
  class RoleRequirement
4
4
  include Comparable
5
5
 
6
- attr_reader :commands, :category, :role
6
+ attr_reader :commands, :category, :roles
7
7
 
8
8
  def initialize(requirement)
9
9
  @requirement = requirement
10
10
  @category = requirement['category']
11
11
  @commands = requirement['commands']
12
- @role = requirement['role']
12
+ @roles = requirement['roles']
13
13
  end
14
14
 
15
15
  def matches?(category, command)
@@ -50,7 +50,7 @@ module Seira
50
50
  if out == ''
51
51
  {}
52
52
  else
53
- JSON.parse(cmd.invoke(clean_output: true, return_output: true))
53
+ JSON.parse(out)
54
54
  end
55
55
  end
56
56
  end
data/lib/seira/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Seira
2
- VERSION = "0.8.1".freeze
2
+ VERSION = "0.8.2".freeze
3
3
  end
data/lib/seira.rb CHANGED
@@ -121,11 +121,13 @@ module Seira
121
121
 
122
122
  if settings.use_teleport?(cluster)
123
123
  role_requirements = settings.teleport_role_requirements(cluster)
124
- required_role = role_requirements.filter { |rr| rr.matches?(category, action) }.sort.first&.role
124
+ filtered_requirements = role_requirements.filter { |rr| rr.matches?(category, action) }
125
+ required_roles = filtered_requirements.map(&:roles).reduce([]) { |a, b| a + b }.uniq
126
+
125
127
  status = Seira::Teleport::Status.new
126
128
 
127
- unless required_role.nil? || status.has_role?(required_role)
128
- Seira::Teleport::Request.new(required_role, reviewer: ENV['TELEPORT_REVIEWER'], context: passed_context).invoke
129
+ unless required_roles.empty? || required_roles.any? { |r| status.has_role?(r) }
130
+ Seira::Teleport::Request.new(required_roles, reviewer: ENV['TELEPORT_REVIEWER'], context: passed_context).invoke
129
131
  end
130
132
  end
131
133
 
data/seira.gemspec CHANGED
@@ -24,7 +24,7 @@ Gem::Specification.new do |spec|
24
24
  spec.add_runtime_dependency "colorize"
25
25
 
26
26
  spec.add_development_dependency "bundler", "~> 2"
27
- spec.add_development_dependency "rake", "~> 10.0"
27
+ spec.add_development_dependency "rake", "~> 13.0"
28
28
  spec.add_development_dependency "rspec", "~> 3.0"
29
- spec.add_development_dependency "rubocop", "0.54.0"
30
- end
29
+ spec.add_development_dependency "rubocop", "0.93.1"
30
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seira
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Ringwelski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-09 00:00:00.000000000 Z
11
+ date: 2023-08-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
@@ -58,14 +58,14 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '10.0'
61
+ version: '13.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '10.0'
68
+ version: '13.0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rspec
71
71
  requirement: !ruby/object:Gem::Requirement
@@ -86,14 +86,14 @@ dependencies:
86
86
  requirements:
87
87
  - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: 0.54.0
89
+ version: 0.93.1
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: 0.54.0
96
+ version: 0.93.1
97
97
  description: An opinionated library for building applications on Kubernetes.
98
98
  email:
99
99
  - scott@joinhandshake.com
@@ -163,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
163
  - !ruby/object:Gem::Version
164
164
  version: '0'
165
165
  requirements: []
166
- rubygems_version: 3.0.3
166
+ rubygems_version: 3.1.6
167
167
  signing_key:
168
168
  specification_version: 4
169
169
  summary: An opinionated library for building applications on Kubernetes.