codemonitor 0.6.5 → 0.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c2ae4cb692b07faaadf879b17c6b55cc72ac409190809049ab434eac84bf3e19
4
- data.tar.gz: 79824fce726d21204bb8997fccdeb92c1dd6b7ff30b81b42a85f3d9edc3ff86f
3
+ metadata.gz: 98361b3cfcf085c2e8550cac0152795481c97eaa63a7acea43163f3e36459d6e
4
+ data.tar.gz: 1f12c1834e47e54e57abc517316e49a77ee0035691e269ff2520c0b03a6ee391
5
5
  SHA512:
6
- metadata.gz: efda8e213c3f22f39e5d51fea8eadec56dc809ea5b945abdfce93c1a0a99e5616c67b900151df08b76c638e5f746b5956bff8eefd0cfe315dc3c3d14ffd44d36
7
- data.tar.gz: 15c848dd5a8d572120f68786ac6a75fe9ddb9c92578dce6cda3cc24cb4f8124e30789d68857014e910dde0f0e58910f893b8825c2d6e0940201a99f6f8e1ccde
6
+ metadata.gz: '0641854a90117ce93fd97ed7b61494afed8179b7b11e965c9b3acc10271e81f44e537d7ec551c91d8a334282e3cf8bc34a38cb3e72186450a2d5558a45d76ee2'
7
+ data.tar.gz: e333ae0ba2960898cc0e27f531e7564b3234fb74d198131453a215a313eb1fa70da9448fc88be4428d2a28a29e691eab5642ad527ac5240adb560fe964a39fa1
data/.tool-versions ADDED
@@ -0,0 +1 @@
1
+ ruby 3.3.5
data/Gemfile.lock CHANGED
@@ -1,27 +1,33 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- codemonitor (0.6.4)
4
+ codemonitor (0.7.0)
5
5
  dogapi (~> 1.45)
6
- octokit (~> 4.0)
6
+ octokit (~> 9.0)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- addressable (2.8.1)
12
- public_suffix (>= 2.0.2, < 6.0)
11
+ addressable (2.8.7)
12
+ public_suffix (>= 2.0.2, < 7.0)
13
13
  ast (2.4.2)
14
14
  coderay (1.1.3)
15
15
  diff-lcs (1.3)
16
16
  dogapi (1.45.0)
17
17
  multi_json
18
- faraday (2.7.4)
19
- faraday-net_http (>= 2.0, < 3.1)
20
- ruby2_keywords (>= 0.0.4)
21
- faraday-net_http (3.0.2)
18
+ faraday (2.13.4)
19
+ faraday-net_http (>= 2.0, < 3.5)
20
+ json
21
+ logger
22
+ faraday-net_http (3.4.1)
23
+ net-http (>= 0.5.0)
24
+ json (2.13.2)
25
+ logger (1.7.0)
22
26
  method_source (1.0.0)
23
- multi_json (1.15.0)
24
- octokit (4.25.1)
27
+ multi_json (1.17.0)
28
+ net-http (0.6.0)
29
+ uri
30
+ octokit (9.2.0)
25
31
  faraday (>= 1, < 3)
26
32
  sawyer (~> 0.9)
27
33
  parallel (1.20.1)
@@ -30,7 +36,7 @@ GEM
30
36
  pry (0.13.1)
31
37
  coderay (~> 1.1)
32
38
  method_source (~> 1.0)
33
- public_suffix (5.0.1)
39
+ public_suffix (6.0.2)
34
40
  rainbow (3.0.0)
35
41
  rake (13.0.3)
36
42
  regexp_parser (2.1.1)
@@ -60,11 +66,11 @@ GEM
60
66
  rubocop-ast (1.5.0)
61
67
  parser (>= 3.0.1.1)
62
68
  ruby-progressbar (1.11.0)
63
- ruby2_keywords (0.0.5)
64
69
  sawyer (0.9.2)
65
70
  addressable (>= 2.3.5)
66
71
  faraday (>= 0.17.3, < 3)
67
72
  unicode-display_width (1.7.0)
73
+ uri (1.0.3)
68
74
 
69
75
  PLATFORMS
70
76
  ruby
data/README.md CHANGED
@@ -135,11 +135,37 @@ scc -f json scc.output.json
135
135
 
136
136
  ## Console
137
137
 
138
- TODO
138
+ Simply outputs all metrics to the console.
139
+
140
+ **Usage**:
141
+
142
+ The console provider prints metrics in the format `metric_name: value`. If metrics include tags (using the `#` delimiter format), they are printed as is:
143
+
144
+ ```
145
+ requests: 100
146
+ errors: 5
147
+ requests#production: 200
148
+ latency#backend,region:us-east-1,env:prod: 150
149
+ ```
139
150
 
140
151
  ## Datadog
141
152
 
142
- TODO
153
+ Sends metrics to Datadog using the Datadog API. Supports metric tagging for better organization and filtering.
154
+
155
+ **Environment Variables**:
156
+
157
+ - `DATADOG_API_KEY` (required): your Datadog API key
158
+ - `DATADOG_PREFIX` (optional): prefix to add to all metric names (default: `'codemonitor.'`)
159
+
160
+ **Metric Tagging**:
161
+
162
+ The Datadog provider supports adding tags to metrics by including them in the metric name using the `#` delimiter:
163
+
164
+ - Format: `metric_name#tag1,tag2:value,tag3`
165
+ - Example: `requests#frontend,app:webserver` → sends metric `requests` with tags `['frontend', 'app:webserver']`
166
+ - Tags follow Datadog's standard format where tags can be simple (`tag`) or key-value pairs (`key:value`)
167
+
168
+ More about tagging: [https://docs.datadoghq.com/getting_started/tagging/](https://docs.datadoghq.com/getting_started/tagging/)
143
169
 
144
170
  # Contribute
145
171
 
data/codemonitor.gemspec CHANGED
@@ -37,7 +37,7 @@ Gem::Specification.new do |spec|
37
37
  spec.require_paths = ['lib']
38
38
 
39
39
  spec.add_runtime_dependency 'dogapi', '~> 1.45'
40
- spec.add_runtime_dependency 'octokit', '~> 4.0'
40
+ spec.add_runtime_dependency 'octokit', '~> 9.0'
41
41
 
42
42
  spec.add_development_dependency 'bundler', '~> 2.0'
43
43
  spec.add_development_dependency 'pry', '~> 0.13.1'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CodeMonitor
4
- VERSION = '0.6.5'
4
+ VERSION = '0.7.0'
5
5
  end
data/providers/datadog.rb CHANGED
@@ -17,9 +17,10 @@ module Providers
17
17
  def send
18
18
  datadog_client.batch_metrics do
19
19
  pending.each do |metric, value|
20
- metric = "#{metric_prefix}#{metric}"
21
- puts "#{metric}: #{value}"
22
- datadog_client.emit_point(metric, value, type: 'gauge')
20
+ metric_name, tags = extract_tags(metric)
21
+ metric_name = "#{metric_prefix}#{metric_name}"
22
+ puts "#{metric_name}#{tags ? "[#{tags.join(',')}]" : ''}: #{value}"
23
+ datadog_client.emit_point(metric_name, value, type: 'gauge', tags: tags)
23
24
  end
24
25
  end
25
26
  end
@@ -27,5 +28,15 @@ module Providers
27
28
  private
28
29
 
29
30
  attr_reader :pending, :metric_prefix, :datadog_client
31
+
32
+ def extract_tags(metric)
33
+ if metric.include?('#')
34
+ metric_name, tag_string = metric.split('#', 2)
35
+ tags = tag_string.split(',')
36
+ [metric_name, tags]
37
+ else
38
+ [metric, nil]
39
+ end
40
+ end
30
41
  end
31
42
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codemonitor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.5
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ferran Basora
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-12 00:00:00.000000000 Z
11
+ date: 2025-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: dogapi
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '4.0'
33
+ version: '9.0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '4.0'
40
+ version: '9.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -120,6 +120,7 @@ extra_rdoc_files:
120
120
  files:
121
121
  - ".gitignore"
122
122
  - ".rubocop.yml"
123
+ - ".tool-versions"
123
124
  - ".travis.yml"
124
125
  - Gemfile
125
126
  - Gemfile.lock
@@ -155,7 +156,7 @@ licenses:
155
156
  metadata:
156
157
  source_code_uri: https://github.com/fcsonline/codemonitor
157
158
  bug_tracker_uri: https://github.com/fcsonline/codemonitor/issues
158
- post_install_message:
159
+ post_install_message:
159
160
  rdoc_options: []
160
161
  require_paths:
161
162
  - lib
@@ -170,8 +171,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
170
171
  - !ruby/object:Gem::Version
171
172
  version: '0'
172
173
  requirements: []
173
- rubygems_version: 3.0.3.1
174
- signing_key:
174
+ rubygems_version: 3.5.16
175
+ signing_key:
175
176
  specification_version: 4
176
177
  summary: Collect many metrics your code is generating
177
178
  test_files: []