kennel 1.94.1 → 1.96.1

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: 794c9eb35b6b3b66294b4a927ba39e9fd8b52a3aad324704799128b1b1818567
4
- data.tar.gz: 2f653b0669dfbfe8972cdad38c96c016f13c2d2d29d332cc53883e879ec9e766
3
+ metadata.gz: aca7576bcde423ec1f4e559d88f13ee64ed5efb116a212f49e67ac6b792ddb16
4
+ data.tar.gz: a6b60f7d6a73ca82d2478f565435e0ebb95a79f7d3bd5bcebfd6712a3e9c8cfb
5
5
  SHA512:
6
- metadata.gz: 1591fab84de0bfbdb77621ef7a449c9f764f5391d73f3135288eb661da84e503109b5305f82e68a4249feee5fbf0a4d8d1abf9a872e25f501b4f5b1b5b3b3d9d
7
- data.tar.gz: 571579849c0726f80efdd90ff04e61dc5f897163c0d0f4d2b87572769339e475e0f5a7b01f58ee025be29011241109527d2c3c55763590d053f64748ad275cde
6
+ metadata.gz: 1767ebe1e61ea9a314b99f14a2cd15a31dc09419dafa2a9100244c83acfc40cd9eba0ccf1e9ad6c4cf9c3026cd1493e6b62cdc6a867b18720ed517908e702768
7
+ data.tar.gz: 382486fbfb3c52346262ad43c63ed21164676189a880d405914de54539907a0a193960f173daa9aa16f41d847959b140a9c60cee886f85d63473d599bd00b807
@@ -154,7 +154,11 @@ module Kennel
154
154
  prefix = $2
155
155
  string = $3
156
156
  comma = $4
157
- "#{indent}#{prefix}<<~TXT#{comma}\n#{indent} #{string.gsub("\\n", "\n#{indent} ").rstrip}\n#{indent}TXT\n"
157
+ <<~CODE.gsub(/ +$/, "")
158
+ #{indent}#{prefix}<<~TXT#{comma}
159
+ #{indent} #{string.gsub("\\n", "\n#{indent} ").rstrip}
160
+ #{indent}TXT
161
+ CODE
158
162
  end
159
163
  end
160
164
 
@@ -69,7 +69,10 @@ module Kennel
69
69
  template_variable_presets: nil
70
70
  }.freeze
71
71
 
72
- settings :title, :description, :definitions, :widgets, :layout_type, :template_variable_presets, :reflow_type
72
+ settings(
73
+ :title, :description, :definitions, :widgets, :layout_type, :template_variable_presets, :reflow_type,
74
+ :tags
75
+ )
73
76
 
74
77
  defaults(
75
78
  description: -> { "" },
@@ -77,6 +80,10 @@ module Kennel
77
80
  widgets: -> { [] },
78
81
  template_variable_presets: -> { DEFAULTS.fetch(:template_variable_presets) },
79
82
  reflow_type: -> { layout_type == "ordered" ? "auto" : nil },
83
+ tags: -> do # not inherited by default to make onboarding to using dashboard tags simple
84
+ team = project.team
85
+ team.tag_dashboards ? team.tags : []
86
+ end,
80
87
  id: -> { nil }
81
88
  )
82
89
 
@@ -145,10 +152,12 @@ module Kennel
145
152
  return @json if @json
146
153
  all_widgets = render_definitions(definitions) + widgets
147
154
  expand_q all_widgets
155
+ tags = tags()
156
+ tags_as_string = (tags.empty? ? "" : " (#{tags.join(" ")})")
148
157
 
149
158
  @json = {
150
159
  layout_type: layout_type,
151
- title: "#{title}#{LOCK}",
160
+ title: "#{title}#{tags_as_string}#{LOCK}",
152
161
  description: description,
153
162
  template_variables: render_template_variables,
154
163
  template_variable_presets: template_variable_presets,
@@ -2,10 +2,11 @@
2
2
  module Kennel
3
3
  module Models
4
4
  class Team < Base
5
- settings :mention, :tags, :renotify_interval, :kennel_id
5
+ settings :mention, :tags, :renotify_interval, :kennel_id, :tag_dashboards
6
6
  defaults(
7
7
  tags: -> { ["team:#{kennel_id.sub(/^teams_/, "")}"] },
8
- renotify_interval: -> { 0 }
8
+ renotify_interval: -> { 0 },
9
+ tag_dashboards: -> { false }
9
10
  )
10
11
  end
11
12
  end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Kennel
3
- VERSION = "1.94.1"
3
+ VERSION = "1.96.1"
4
4
  end
data/lib/kennel.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  require "faraday"
3
3
  require "json"
4
+ require "zeitwerk"
4
5
  require "shellwords"
5
6
  require "English"
6
7
 
@@ -30,6 +31,10 @@ require "kennel/models/synthetic_test"
30
31
  require "kennel/models/project"
31
32
  require "kennel/models/team"
32
33
 
34
+ # need to define early since we autoload the teams/ folder into it
35
+ module Teams
36
+ end
37
+
33
38
  module Kennel
34
39
  class ValidationError < RuntimeError
35
40
  end
@@ -128,9 +133,34 @@ module Kennel
128
133
  end
129
134
 
130
135
  def load_all
131
- ["teams", "parts", "projects"].each do |folder|
136
+ loader = Zeitwerk::Loader.new
137
+ Dir.exist?("teams") && loader.push_dir("teams", namespace: Teams)
138
+ Dir.exist?("parts") && loader.push_dir("parts")
139
+ loader.setup
140
+
141
+ # TODO: also do projects and update expected path too
142
+ ["projects"].each do |folder|
132
143
  Dir["#{folder}/**/*.rb"].sort.each { |f| require "./#{f}" }
133
144
  end
145
+ rescue NameError => e
146
+ message = e.message
147
+ raise unless klass = message[/uninitialized constant (.*)/, 1]
148
+
149
+ # inverse of zeitwerk lib/zeitwerk/inflector.rb
150
+ path = klass.gsub("::", "/").gsub(/([a-z])([A-Z])/, "\\1_\\2").downcase + ".rb"
151
+ expected_path = (path.start_with?("teams/") ? path : "parts/#{path}")
152
+
153
+ # TODO: prefer to raise a new exception with the old backtrace attacked
154
+ e.define_singleton_method(:message) do
155
+ "\n" + <<~MSG.gsub(/^/, " ")
156
+ #{message}
157
+ Unable to load #{klass} from #{expected_path}
158
+ - Option 1: rename the constant or the file it lives in, to make them match
159
+ - Option 2: Use `require` or `require_relative` to load the constant
160
+ MSG
161
+ end
162
+
163
+ raise
134
164
  end
135
165
  end
136
166
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kennel
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.94.1
4
+ version: 1.96.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Grosser
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-10-15 00:00:00.000000000 Z
11
+ date: 2021-10-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '1.8'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '1.8'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: hashdiff
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '4.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: zeitwerk
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '2.4'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '2.4'
55
69
  description:
56
70
  email: michael@grosser.it
57
71
  executables: []