seira 0.8.1 → 0.8.3

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: e10cda9c969f7e1401f200a538d380f397c1061f4040bef400961a9b74b28b93
4
+ data.tar.gz: 66f4790fa1d7fb8b5ea58d7bb798206cb375d2329b12a029714003f45633e9af
5
5
  SHA512:
6
- metadata.gz: 137620c27df4b7fb22580bb33249d8c6ea6b087f2203205b73f844eef456b20342af2f9c753264439e390ec9c82ad1e47dcda719885cd57ba2a980dbe9803ad9
7
- data.tar.gz: f40b95e33ab48142deb3673b804507f7f9bf91e37b7a66827e92feb5afbdfaadf59032d6ea3d1848be956037037cd2f4e5d9910a8b442e0b86d34ff2a7b58cfe
6
+ metadata.gz: f0534e0ab281bdd9667f8bae85a72464dadc042d3bed0a79f784251df7a3e15b2fd76809efd19fd1edcee5b78697ff8392245a347a98ee2bd451c6d7d19a341d
7
+ data.tar.gz: e85b638eeef614999f8c67dc40933f43ce61e2180fe020fb81cc22e79c67a1a2de6b57c1904062c57fb80c3c7c57264c129d1d75a333876b423fab629d355a81
@@ -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
@@ -0,0 +1,21 @@
1
+ name: Trunk Check
2
+ on: [pull_request]
3
+ concurrency:
4
+ group: ${{ github.head_ref || github.run_id }}
5
+ cancel-in-progress: true
6
+
7
+ permissions: read-all
8
+
9
+ jobs:
10
+ trunk_check:
11
+ runs-on: ubuntu-latest
12
+ permissions:
13
+ checks: write # For trunk to post annotations
14
+ contents: read # For repo checkout
15
+
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@v3
19
+
20
+ - name: Trunk Check
21
+ uses: trunk-io/trunk-action@v1.1.7
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.3
1
+ 2.7.7
data/.trunk/.gitignore ADDED
@@ -0,0 +1,8 @@
1
+ *out
2
+ *logs
3
+ *actions
4
+ *notifications
5
+ *tools
6
+ plugins
7
+ user_trunk.yaml
8
+ user.yaml
@@ -0,0 +1,10 @@
1
+ # Autoformatter friendly markdownlint config (all formatting rules disabled)
2
+ default: true
3
+ blank_lines: false
4
+ bullet: false
5
+ html: false
6
+ indentation: false
7
+ line_length: false
8
+ spaces: false
9
+ url: false
10
+ whitespace: false
@@ -0,0 +1,7 @@
1
+ enable=all
2
+ source-path=SCRIPTDIR
3
+ disable=SC2154
4
+
5
+ # If you're having issues with shellcheck following source, disable the errors via:
6
+ # disable=SC1090
7
+ # disable=SC1091
@@ -0,0 +1,10 @@
1
+ rules:
2
+ quoted-strings:
3
+ required: only-when-needed
4
+ extra-allowed: ["{|}"]
5
+ empty-values:
6
+ forbid-in-block-mappings: true
7
+ forbid-in-flow-mappings: true
8
+ key-duplicates: {}
9
+ octal-values:
10
+ forbid-implicit-octal: true
data/.trunk/trunk.yaml ADDED
@@ -0,0 +1,34 @@
1
+ version: 0.1
2
+ cli:
3
+ version: 1.14.1
4
+ plugins:
5
+ sources:
6
+ - id: trunk
7
+ ref: v1.2.1
8
+ uri: https://github.com/trunk-io/plugins
9
+ runtimes:
10
+ enabled:
11
+ - go@1.19.5
12
+ - node@18.12.1
13
+ - python@3.10.8
14
+ - ruby@3.1.4
15
+ lint:
16
+ enabled:
17
+ - actionlint@1.6.25
18
+ - checkov@2.4.6
19
+ - git-diff-check
20
+ - markdownlint@0.35.0
21
+ - prettier@3.0.2
22
+ - shellcheck@0.9.0
23
+ - shfmt@3.6.0
24
+ - trivy@0.44.1
25
+ - trufflehog@3.48.0
26
+ - yamllint@1.32.0
27
+ disabled:
28
+ - rubocop@1.39.0
29
+ actions:
30
+ enabled:
31
+ - trunk-announce
32
+ - trunk-check-pre-push
33
+ - trunk-fmt-pre-commit
34
+ - trunk-upgrade-available
@@ -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.3".freeze
3
3
  end
data/lib/seira.rb CHANGED
@@ -121,11 +121,20 @@ 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
+ reviewer = ENV['TELEPORT_REVIEWER']
131
+ args.each do |arg|
132
+ if arg.start_with? '--reviewer='
133
+ reviewer = arg.split('=')[1]
134
+ end
135
+ end
136
+
137
+ Seira::Teleport::Request.new(required_roles, reviewer: reviewer, context: passed_context).invoke
129
138
  end
130
139
  end
131
140
 
@@ -178,7 +187,9 @@ module Seira
178
187
 
179
188
  # The first arg must always be the cluster. This ensures commands are not run by
180
189
  # accident on the wrong kubernetes cluster or gcloud project.
181
- exit(1) unless Seira::Cluster.new(action: nil, args: nil, context: nil, settings: settings).switch(target_cluster: cluster, verbose: false)
190
+ exit(1) unless Seira::Cluster.new(action: nil, args: nil, context: nil, settings: settings).switch(
191
+ target_cluster: cluster, verbose: false
192
+ )
182
193
  exit(0) if simple_cluster_change?
183
194
  end
184
195
 
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.3
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-23 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
@@ -102,13 +102,17 @@ executables:
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
- - ".default-rubocop.yml"
106
105
  - ".github/workflows/ruby.yml"
106
+ - ".github/workflows/trunk.yml"
107
107
  - ".gitignore"
108
108
  - ".hound.yml"
109
109
  - ".rspec"
110
- - ".rubocop.yml"
111
110
  - ".ruby-version"
111
+ - ".trunk/.gitignore"
112
+ - ".trunk/configs/.markdownlint.yaml"
113
+ - ".trunk/configs/.shellcheckrc"
114
+ - ".trunk/configs/.yamllint.yaml"
115
+ - ".trunk/trunk.yaml"
112
116
  - Gemfile
113
117
  - LICENSE
114
118
  - README.md
@@ -163,7 +167,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
163
167
  - !ruby/object:Gem::Version
164
168
  version: '0'
165
169
  requirements: []
166
- rubygems_version: 3.0.3
170
+ rubygems_version: 3.1.6
167
171
  signing_key:
168
172
  specification_version: 4
169
173
  summary: An opinionated library for building applications on Kubernetes.