seira 0.8.1 → 0.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.
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.