kennel 0.3.0 → 1.0.0
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 +5 -5
- data/lib/kennel.rb +5 -6
- data/lib/kennel/api.rb +21 -5
- data/lib/kennel/github_reporter.rb +9 -2
- data/lib/kennel/models/screen.rb +1 -1
- data/lib/kennel/tasks.rb +7 -10
- data/lib/kennel/utils.rb +25 -6
- data/lib/kennel/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7f7cba17e46fe78338b0f7dea6acb87e245953879f215bf3f3186e55fddaf6af
|
4
|
+
data.tar.gz: 5b5320d4a392c264be866e053f3acf6bffc092a3067e17c906a547063ecae747
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 450193433fd81c3fb283a976dfa5a6dd283561dede4db4f3bc0c1b2d84800d631ef26c7e6c7a5dd8aeacb1a73d4e6f876d65225bc38fa860b2e2803d485facae
|
7
|
+
data.tar.gz: 44a48ca74e20669d61b2b7a5b38e4d2b36c8f556f33bb624ebba3cdbb9df507d5b6b14345c422004295aa7962e35fcbf3a18b105bf1e91430277cc62f205b93d
|
data/lib/kennel.rb
CHANGED
@@ -44,11 +44,6 @@ module Kennel
|
|
44
44
|
syncer.update if syncer.confirm
|
45
45
|
end
|
46
46
|
|
47
|
-
def report_plan_to_github
|
48
|
-
reporter = GithubReporter.new(ENV.fetch("GITHUB_TOKEN"))
|
49
|
-
reporter.report { plan }
|
50
|
-
end
|
51
|
-
|
52
47
|
private
|
53
48
|
|
54
49
|
def syncer
|
@@ -63,9 +58,13 @@ module Kennel
|
|
63
58
|
@generated ||= begin
|
64
59
|
Progress.progress "Generating" do
|
65
60
|
load_all
|
66
|
-
Models::Project.recursive_subclasses.flat_map do |project_class|
|
61
|
+
parts = Models::Project.recursive_subclasses.flat_map do |project_class|
|
67
62
|
project_class.new.parts
|
68
63
|
end
|
64
|
+
parts.map(&:tracking_id).group_by { |id| id }.select do |id, same|
|
65
|
+
raise "#{id} is defined #{same.size} times" if same.size != 1
|
66
|
+
end
|
67
|
+
parts
|
69
68
|
end
|
70
69
|
end
|
71
70
|
end
|
data/lib/kennel/api.rb
CHANGED
@@ -32,12 +32,28 @@ module Kennel
|
|
32
32
|
def request(method, path, body: nil, params: {})
|
33
33
|
params = params.merge(application_key: @app_key, api_key: @api_key)
|
34
34
|
query = Faraday::FlatParamsEncoder.encode(params)
|
35
|
-
response =
|
36
|
-
|
37
|
-
|
35
|
+
response = nil
|
36
|
+
|
37
|
+
2.times do |i|
|
38
|
+
response = @client.send(method, "#{path}?#{query}") do |request|
|
39
|
+
request.body = JSON.generate(body) if body
|
40
|
+
request.headers["Content-type"] = "application/json"
|
41
|
+
end
|
42
|
+
break if i == 1 || method != :get || response.status != 500
|
43
|
+
end
|
44
|
+
|
45
|
+
unless response.success?
|
46
|
+
message = +"Error #{response.status} during #{method.upcase} #{path}\n"
|
47
|
+
message << "request:\n#{JSON.pretty_generate(body)}\nresponse:\n" if body
|
48
|
+
message << response.body
|
49
|
+
raise message
|
50
|
+
end
|
51
|
+
|
52
|
+
if response.body.empty?
|
53
|
+
{}
|
54
|
+
else
|
55
|
+
JSON.parse(response.body, symbolize_names: true)
|
38
56
|
end
|
39
|
-
raise "Error #{method} #{path} -> #{response.status}:\n#{response.body}" unless response.success?
|
40
|
-
JSON.parse(response.body, symbolize_names: true)
|
41
57
|
end
|
42
58
|
end
|
43
59
|
end
|
@@ -1,6 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module Kennel
|
3
3
|
class GithubReporter
|
4
|
+
class << self
|
5
|
+
def report(token, &block)
|
6
|
+
return yield unless token
|
7
|
+
new(token).report(&block)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
4
11
|
def initialize(token)
|
5
12
|
@token = token
|
6
13
|
@git_sha = Utils.capture_sh("git rev-parse HEAD").strip
|
@@ -8,8 +15,8 @@ module Kennel
|
|
8
15
|
@repo_part = origin[%r{github\.com[:/](.+?)(\.git|$)}, 1] || raise("no origin found")
|
9
16
|
end
|
10
17
|
|
11
|
-
def report
|
12
|
-
output = Utils.strip_shell_control(Utils.
|
18
|
+
def report(&block)
|
19
|
+
output = Utils.strip_shell_control(Utils.tee_stdout(&block).strip)
|
13
20
|
ensure
|
14
21
|
comment "```\n#{output || "Error"}\n```"
|
15
22
|
end
|
data/lib/kennel/models/screen.rb
CHANGED
@@ -66,7 +66,7 @@ module Kennel
|
|
66
66
|
widgets.map do |widget|
|
67
67
|
widget = widget_defaults(widget[:type]).merge(widget)
|
68
68
|
if tile = widget[:tile_def]
|
69
|
-
tile
|
69
|
+
tile.fetch(:requests).each { |r| r[:conditional_formats] ||= [] }
|
70
70
|
tile[:autoscale] = true unless widget[:tile_def].key?(:autoscale)
|
71
71
|
end
|
72
72
|
widget
|
data/lib/kennel/tasks.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
require "English"
|
3
|
+
require "kennel"
|
3
4
|
|
4
5
|
namespace :kennel do
|
5
6
|
desc "Ensure there are no uncommited changes that would be hidden from PR reviewers"
|
@@ -25,24 +26,20 @@ namespace :kennel do
|
|
25
26
|
Kennel.update
|
26
27
|
end
|
27
28
|
|
28
|
-
desc "
|
29
|
-
task report_plan_to_github: :environment do
|
30
|
-
Kennel.report_plan_to_github
|
31
|
-
end
|
32
|
-
|
33
|
-
desc "update if this is a push to the default branch, otherwise report plan"
|
29
|
+
desc "update if this is a push to the default branch, otherwise plan (report to github with GITHUB_TOKEN)"
|
34
30
|
task :travis do
|
35
31
|
on_default_branch = (ENV["TRAVIS_BRANCH"] == (ENV["DEFAULT_BRANCH"] || "master"))
|
36
32
|
is_push = (ENV["TRAVIS_PULL_REQUEST"] == "false")
|
37
33
|
task_name =
|
38
34
|
if on_default_branch && is_push
|
39
35
|
"kennel:update_datadog"
|
40
|
-
elsif ENV["GITHUB_TOKEN"]
|
41
|
-
"kennel:report_plan_to_github"
|
42
36
|
else
|
43
|
-
"kennel:plan"
|
37
|
+
"kennel:plan" # show plan in travis logs
|
44
38
|
end
|
45
|
-
|
39
|
+
|
40
|
+
Kennel::GithubReporter.report(ENV["GITHUB_TOKEN"]) do
|
41
|
+
Rake::Task[task_name].invoke
|
42
|
+
end
|
46
43
|
end
|
47
44
|
|
48
45
|
task :environment do
|
data/lib/kennel/utils.rb
CHANGED
@@ -1,6 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
module Kennel
|
3
3
|
module Utils
|
4
|
+
class TeeIO < IO
|
5
|
+
def initialize(ios)
|
6
|
+
@ios = ios
|
7
|
+
end
|
8
|
+
|
9
|
+
def write(string)
|
10
|
+
@ios.each { |io| io.write string }
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
4
14
|
class << self
|
5
15
|
def snake_case(string)
|
6
16
|
string.gsub(/::/, "_") # Foo::Bar -> foo_bar
|
@@ -33,11 +43,22 @@ module Kennel
|
|
33
43
|
end
|
34
44
|
|
35
45
|
def capture_stdout
|
46
|
+
old = $stdout
|
36
47
|
$stdout = StringIO.new
|
37
48
|
yield
|
38
49
|
$stdout.string
|
39
50
|
ensure
|
40
|
-
$stdout =
|
51
|
+
$stdout = old
|
52
|
+
end
|
53
|
+
|
54
|
+
def tee_stdout
|
55
|
+
old = $stdout
|
56
|
+
string = StringIO.new
|
57
|
+
$stdout = TeeIO.new([$stdout, string])
|
58
|
+
yield
|
59
|
+
string.string
|
60
|
+
ensure
|
61
|
+
$stdout = old
|
41
62
|
end
|
42
63
|
|
43
64
|
def capture_sh(command)
|
@@ -57,11 +78,9 @@ module Kennel
|
|
57
78
|
def parallel(items)
|
58
79
|
items.map do |item|
|
59
80
|
Thread.new do
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
e
|
64
|
-
end
|
81
|
+
yield item
|
82
|
+
rescue StandardError => e
|
83
|
+
e
|
65
84
|
end
|
66
85
|
end.map(&:value).each { |i| raise i if i.is_a?(StandardError) }
|
67
86
|
end
|
data/lib/kennel/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kennel
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -74,7 +74,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
74
74
|
requirements:
|
75
75
|
- - ">="
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 2.
|
77
|
+
version: 2.5.0
|
78
78
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - ">="
|
@@ -82,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
82
|
version: '0'
|
83
83
|
requirements: []
|
84
84
|
rubyforge_project:
|
85
|
-
rubygems_version: 2.6
|
85
|
+
rubygems_version: 2.7.6
|
86
86
|
signing_key:
|
87
87
|
specification_version: 4
|
88
88
|
summary: Keep datadog monitors/dashboards/etc in version control, avoid chaotic management
|