cmetrics 0.2.0 → 0.2.4

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: 7718f2df26fa25f74be30a4ac65f555b53576641df5ceb5fcb4db8e67ed8b1d0
4
- data.tar.gz: 7e154efbf9beaff565af8f812bd63932ebf0594faf800fda4b82790d11911fe1
3
+ metadata.gz: 5f7a2ed53936604ee92cc24e2aa15bfa07389c54e1612170c266d8953fb113a2
4
+ data.tar.gz: e25ebd242bbfc84b994545675c3de1fa66276e643b57d6acaff2e8009e611c89
5
5
  SHA512:
6
- metadata.gz: 807d890634944b9bc738fd518af39a28cfea55a2daad19c0435786ece2535bd94c5fe34c8ab9ebae4c3408180e8005b75ee97377ace9fb6c67c802baad39da1d
7
- data.tar.gz: '0698fef3a0195bd4499cedff46f3146aff5a49831e23ef3bc6ce6789df77cb36ef2b956cbcb99d254fabbd44709f964c44612c03c64a9f49b67b9fb4819f2a6c'
6
+ metadata.gz: 3848618b6b384afb7867db62133784c9492335757f53f92641c11a75ee82269a9a21150a8a73e81361ff2a6be252bfc6477c2269392ce75cb50f356d62b2ebb9
7
+ data.tar.gz: 360bf386dfb723f5daf2cf14e028c23ed7a546aa9e51a5ef9a403c19ffc9f380199f47eed82f0e8978991b939e64418a38839e88b4a333680888a5e64ed9842b
@@ -0,0 +1,39 @@
1
+ name: Apt based Linux
2
+ on:
3
+ push:
4
+ pull_request:
5
+ jobs:
6
+ build:
7
+ name: Build
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ label:
12
+ - Debian GNU/Linux Bullseye amd64
13
+ - Debian GNU/Linux Buster amd64
14
+ - Ubuntu Bionic amd64
15
+ - Ubuntu Focal amd64
16
+ include:
17
+ - label: Debian GNU/Linux Bullseye amd64
18
+ test-docker-image: debian:bullseye
19
+ test-script: ci/apt-test.sh
20
+ - label: Debian GNU/Linux Buster amd64
21
+ test-docker-image: debian:buster
22
+ test-script: ci/apt-test.sh
23
+ - label: Ubuntu Bionic amd64
24
+ test-docker-image: ubuntu:bionic
25
+ test-script: ci/apt-test.sh
26
+ - label: Ubuntu Focal amd64
27
+ test-docker-image: ubuntu:focal
28
+ test-script: ci/apt-test.sh
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@master
32
+ - name: rake compile & rake test
33
+ run: |
34
+ docker run \
35
+ --rm \
36
+ --tty \
37
+ --volume ${PWD}:/cmetrics-ruby \
38
+ ${{ matrix.test-docker-image }} \
39
+ /cmetrics-ruby/${{ matrix.test-script }}
@@ -10,9 +10,9 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
- ruby-version: 3.0.1
13
+ ruby-version: '3.0'
14
14
  - name: Run the default task
15
15
  run: |
16
- gem install bundler -v 2.2.15
16
+ gem install bundler -v 2.2.26
17
17
  bundle install
18
18
  bundle exec rake
@@ -10,9 +10,9 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
- ruby-version: 3.0.1
13
+ ruby-version: '3.0'
14
14
  - name: Run the default task
15
15
  run: |
16
- gem install bundler -v 2.2.15
16
+ gem install bundler -v 2.2.26
17
17
  bundle install
18
18
  bundle exec rake
@@ -10,9 +10,9 @@ jobs:
10
10
  - name: Set up Ruby
11
11
  uses: ruby/setup-ruby@v1
12
12
  with:
13
- ruby-version: 3.0.1
13
+ ruby-version: '3.0'
14
14
  - name: Run the default task
15
15
  run: |
16
- gem install bundler -v 2.2.15
16
+ gem install bundler -v 2.2.26
17
17
  ridk exec bundle install
18
18
  ridk exec bundle exec rake
@@ -0,0 +1,39 @@
1
+ name: Yum based Linux
2
+ on:
3
+ push:
4
+ pull_request:
5
+ jobs:
6
+ build:
7
+ name: Build
8
+ strategy:
9
+ fail-fast: false
10
+ matrix:
11
+ label:
12
+ - CentOS 7 x86_64
13
+ - CentOS 8 x86_64
14
+ - Fedora 34 x86_64
15
+ - AmazonLinux 2 x86_64
16
+ include:
17
+ - label: CentOS 7 x86_64
18
+ test-docker-image: centos:7
19
+ test-script: ci/yum-test.sh
20
+ - label: CentOS 8 x86_64
21
+ test-docker-image: centos:8
22
+ test-script: ci/yum-test.sh
23
+ - label: Fedora 34 x86_64
24
+ test-docker-image: fedora:34
25
+ test-script: ci/yum-test.sh
26
+ - label: AmazonLinux 2 x86_64
27
+ test-docker-image: amazonlinux:2
28
+ test-script: ci/yum-test.sh
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - uses: actions/checkout@master
32
+ - name: rake compile & rake test
33
+ run: |
34
+ docker run \
35
+ --rm \
36
+ --tty \
37
+ --volume ${PWD}:/cmetrics-ruby \
38
+ ${{ matrix.test-docker-image }} \
39
+ /cmetrics-ruby/${{ matrix.test-script }}
data/Gemfile CHANGED
@@ -7,4 +7,10 @@ gemspec
7
7
 
8
8
  gem "rake", "~> 13.0"
9
9
 
10
- gem "test-unit", "~> 3.0"
10
+ gem "test-unit", "~> 3.4"
11
+
12
+ local_gemfile = File.join(File.dirname(__FILE__), "Gemfile.local")
13
+ if File.exist?(local_gemfile)
14
+ puts "Loading Gemfile.local ..." if $DEBUG # `ruby -d` or `bundle -v`
15
+ instance_eval File.read(local_gemfile)
16
+ end
data/ci/apt-test.sh ADDED
@@ -0,0 +1,40 @@
1
+ #!/bin/bash
2
+
3
+ set -exu
4
+
5
+ export DEBIAN_FRONTEND=noninteractive
6
+
7
+ if [ -f /etc/lsb-release ]; then
8
+ . /etc/lsb-release
9
+ distribution=$DISTRIB_ID
10
+ version=${DISTRIB_RELEASE%%.*}
11
+ codename=${DISTRIB_CODENAME%%.*}
12
+ else
13
+ distribution="Debian"
14
+ version=$(cat /etc/debian_version | cut -d'.' -f1)
15
+ fi
16
+
17
+ apt update
18
+
19
+ case "$distribution" in
20
+ "Ubuntu")
21
+ case "$codename" in
22
+ "bionic")
23
+ apt install -V -y wget gpg
24
+ wget -O - https://apt.kitware.com/keys/kitware-archive-latest.asc 2>/dev/null | gpg --dearmor - | tee /usr/share/keyrings/kitware-archive-keyring.gpg >/dev/null && \
25
+ echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' | tee /etc/apt/sources.list.d/kitware.list >/dev/null && \
26
+ apt update
27
+ ;;
28
+ *)
29
+ ;;
30
+ esac
31
+ ;;
32
+ esac
33
+
34
+ apt install -V -y lsb-release
35
+
36
+ apt install -V -y ruby-dev git build-essential pkg-config cmake
37
+ cd /cmetrics-ruby && \
38
+ gem install bundler --no-document && \
39
+ bundle install && \
40
+ bundle exec rake
data/ci/yum-test.sh ADDED
@@ -0,0 +1,77 @@
1
+ #!/bin/bash
2
+
3
+ set -exu
4
+
5
+ USE_SCL=0
6
+ USE_AMZN_EXT=0
7
+
8
+ distribution=$(cat /etc/system-release-cpe | awk '{print substr($0, index($1, "o"))}' | cut -d: -f2)
9
+ version=$(cat /etc/system-release-cpe | awk '{print substr($0, index($1, "o"))}' | cut -d: -f4)
10
+ USE_SCL=0
11
+ USE_AMZN_EXT=0
12
+
13
+ case ${distribution} in
14
+ amazon)
15
+ case ${version} in
16
+ 2)
17
+ DNF=yum
18
+ USE_AMZN_EXT=1
19
+ ;;
20
+ esac
21
+ ;;
22
+ centos)
23
+ case ${version} in
24
+ 7)
25
+ DNF=yum
26
+ USE_SCL=1
27
+ ;;
28
+ *)
29
+ DNF="dnf --enablerepo=powertools"
30
+ ;;
31
+ esac
32
+ ;;
33
+ fedoraproject)
34
+ case ${version} in
35
+ 33|34)
36
+ DNF=yum
37
+ ;;
38
+ esac
39
+ ;;
40
+ esac
41
+
42
+ ${DNF} groupinstall -y "Development Tools"
43
+
44
+ if [ $USE_SCL -eq 1 ]; then
45
+ ${DNF} install -y centos-release-scl && \
46
+ ${DNF} install -y epel-release && \
47
+ ${DNF} install -y \
48
+ rh-ruby26-ruby-devel \
49
+ rh-ruby26-rubygems \
50
+ rh-ruby26-rubygem-rake \
51
+ rpm-build \
52
+ cmake3
53
+ elif [ $USE_AMZN_EXT -eq 1 ]; then
54
+ yum update -y && \
55
+ yum install -y yum-utils && \
56
+ yum-config-manager --enable epel && \
57
+ amazon-linux-extras install -y ruby2.6 && \
58
+ ${DNF} install -y ruby-devel \
59
+ cmake3
60
+ else
61
+ ${DNF} install -y ruby-devel \
62
+ rubygems \
63
+ rpm-build \
64
+ cmake \
65
+ libarchive
66
+ fi
67
+
68
+ if [ $USE_SCL -eq 1 ]; then
69
+ # For unbound variable error
70
+ export MANPATH=
71
+ cd /cmetrics-ruby && source /opt/rh/rh-ruby26/enable && gem install bundler --no-document && bundle install && bundle exec rake
72
+ else
73
+ if [ $USE_AMZN_EXT -eq 1 ]; then
74
+ echo 'gem "io-console"' > /cmetrics-ruby/Gemfile.local
75
+ fi
76
+ cd /cmetrics-ruby && gem install bundler --no-document && bundle install && bundle exec rake
77
+ fi
@@ -29,6 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency "rake", ">= 0"
30
30
  spec.add_development_dependency "rake-compiler", "~> 1.0"
31
31
  spec.add_development_dependency "rake-compiler-dock", "~> 1.0"
32
+ spec.add_development_dependency "msgpack", "~> 1.4.2"
32
33
 
33
- spec.add_dependency 'mini_portile2', '~> 2.1'
34
+ spec.add_dependency 'mini_portile2', '~> 2.7'
34
35
  end
@@ -65,5 +65,8 @@ void Init_cmetrics_counter(VALUE rb_mCMetrics);
65
65
  void Init_cmetrics_gauge(VALUE rb_mCMetrics);
66
66
  void Init_cmetrics_serde(VALUE rb_mCMetrics);
67
67
  void Init_cmetrics_untyped(VALUE rb_mCMetrics);
68
+ const struct CMetricsCounter *cmetrics_counter_get_ptr(VALUE rb_mCMetrics);
69
+ const struct CMetricsGauge *cmetrics_gauge_get_ptr(VALUE rb_mCMetrics);
70
+ const struct CMetricsUntyped *cmetrics_untyped_get_ptr(VALUE rb_mCMetrics);
68
71
 
69
72
  #endif // _CMETRICS_C_H
@@ -34,16 +34,32 @@ static const rb_data_type_t rb_cmetrics_counter_type = { "cmetrics/counter",
34
34
  RUBY_TYPED_FREE_IMMEDIATELY };
35
35
 
36
36
 
37
+ const struct CMetricsCounter *cmetrics_counter_get_ptr(VALUE self)
38
+ {
39
+ struct CMetricsCounter *cmetricsCounter = NULL;
40
+
41
+ TypedData_Get_Struct(
42
+ self, struct CMetricsCounter, &rb_cmetrics_counter_type, cmetricsCounter);
43
+
44
+ if (NIL_P(self)) {
45
+ rb_raise(rb_eRuntimeError, "Given CMetrics argument must not be nil");
46
+ }
47
+ if (!cmetricsCounter->counter) {
48
+ rb_raise(rb_eRuntimeError, "Create counter with CMetrics::Counter#create first.");
49
+ }
50
+ return cmetricsCounter;
51
+ }
52
+
37
53
  static void
38
54
  counter_free(void* ptr)
39
55
  {
40
56
  struct CMetricsCounter* cmetricsCounter = (struct CMetricsCounter*)ptr;
41
57
 
42
- if (!cmetricsCounter) {
43
- if (!cmetricsCounter->counter) {
58
+ if (cmetricsCounter) {
59
+ if (cmetricsCounter->counter) {
44
60
  cmt_counter_destroy(cmetricsCounter->counter);
45
61
  }
46
- if (!cmetricsCounter->instance) {
62
+ if (cmetricsCounter->instance) {
47
63
  cmt_destroy(cmetricsCounter->instance);
48
64
  }
49
65
  }
@@ -34,16 +34,32 @@ static const rb_data_type_t rb_cmetrics_gauge_type = { "cmetrics/gauge",
34
34
  RUBY_TYPED_FREE_IMMEDIATELY };
35
35
 
36
36
 
37
+ const struct CMetricsGauge *cmetrics_gauge_get_ptr(VALUE self)
38
+ {
39
+ struct CMetricsGauge *cmetricsGauge = NULL;
40
+
41
+ TypedData_Get_Struct(
42
+ self, struct CMetricsGauge, &rb_cmetrics_gauge_type, cmetricsGauge);
43
+
44
+ if (NIL_P(self)) {
45
+ rb_raise(rb_eRuntimeError, "Given CMetrics argument must not be nil");
46
+ }
47
+ if (!cmetricsGauge->gauge) {
48
+ rb_raise(rb_eRuntimeError, "Create gauge with CMetrics::Gauge#create first.");
49
+ }
50
+ return cmetricsGauge;
51
+ }
52
+
37
53
  static void
38
54
  gauge_free(void* ptr)
39
55
  {
40
56
  struct CMetricsGauge* cmetricsGauge = (struct CMetricsGauge*)ptr;
41
57
 
42
- if (!cmetricsGauge) {
43
- if (!cmetricsGauge->gauge) {
58
+ if (cmetricsGauge) {
59
+ if (cmetricsGauge->gauge) {
44
60
  cmt_gauge_destroy(cmetricsGauge->gauge);
45
61
  }
46
- if (!cmetricsGauge->instance) {
62
+ if (cmetricsGauge->instance) {
47
63
  cmt_destroy(cmetricsGauge->instance);
48
64
  }
49
65
  }
@@ -20,9 +20,14 @@
20
20
  #include "cmetrics_c.h"
21
21
  #include <cmetrics/cmt_map.h>
22
22
  #include <cmetrics/cmt_metric.h>
23
+ #include <cmetrics/cmt_cat.h>
23
24
 
24
25
  VALUE rb_cSerde;
25
26
 
27
+ extern VALUE rb_cCounter;
28
+ extern VALUE rb_cGauge;
29
+ extern VALUE rb_cUntyped;
30
+
26
31
  static void serde_free(void* ptr);
27
32
 
28
33
  static const rb_data_type_t rb_cmetrics_serde_type = { "cmetrics/serde",
@@ -41,8 +46,8 @@ serde_free(void* ptr)
41
46
  {
42
47
  struct CMetricsSerde* cmetricsSerde = (struct CMetricsSerde*)ptr;
43
48
 
44
- if (!cmetricsSerde) {
45
- if (!cmetricsSerde->instance) {
49
+ if (cmetricsSerde) {
50
+ if (cmetricsSerde->instance) {
46
51
  cmt_destroy(cmetricsSerde->instance);
47
52
  }
48
53
  }
@@ -135,13 +140,14 @@ rb_cmetrics_serde_from_msgpack_feed_each_impl(VALUE self, VALUE rb_msgpack_buffe
135
140
  struct CMetricsSerde* cmetricsSerde;
136
141
  struct cmt *cmt = NULL;
137
142
  int ret = 0;
143
+ size_t offset = 0;
138
144
 
139
145
  RETURN_ENUMERATOR(self, 0, 0);
140
146
 
141
147
  TypedData_Get_Struct(
142
148
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
143
149
 
144
- for (size_t offset = 0; offset <= msgpack_length; ) {
150
+ for (offset = 0; offset <= msgpack_length; ) {
145
151
  ret = cmt_decode_msgpack_create(&cmt, StringValuePtr(rb_msgpack_buffer), msgpack_length, &offset);
146
152
  if (ret == 0) {
147
153
  cmetricsSerde->instance = cmt;
@@ -167,6 +173,41 @@ rb_cmetrics_serde_from_msgpack_feed_each(VALUE self, VALUE rb_data)
167
173
  }
168
174
  }
169
175
 
176
+ static VALUE
177
+ rb_cmetrics_serde_concat_metric(VALUE self, VALUE rb_data)
178
+ {
179
+ struct CMetricsSerde* cmetricsSerde = NULL;
180
+ struct CMetricsCounter* cmetricsCounter = NULL;
181
+ struct CMetricsGauge* cmetricsGauge = NULL;
182
+ struct CMetricsUntyped* cmetricsUntyped = NULL;
183
+
184
+ TypedData_Get_Struct(
185
+ self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
186
+
187
+ if (!NIL_P(rb_data)) {
188
+ if (cmetricsSerde->instance == NULL) {
189
+ cmetricsSerde->instance = cmt_create();
190
+ }
191
+
192
+ if (rb_obj_is_kind_of(rb_data, rb_cCounter)) {
193
+ cmetricsCounter = (struct CMetricsCounter *)cmetrics_counter_get_ptr(rb_data);
194
+ cmt_cat(cmetricsSerde->instance, cmetricsCounter->instance);
195
+ } else if (rb_obj_is_kind_of(rb_data, rb_cGauge)) {
196
+ cmetricsGauge = (struct CMetricsGauge *)cmetrics_gauge_get_ptr(rb_data);
197
+ cmt_cat(cmetricsSerde->instance, cmetricsGauge->instance);
198
+ } else if (rb_obj_is_kind_of(rb_data, rb_cUntyped)) {
199
+ cmetricsUntyped = (struct CMetricsUntyped *)cmetrics_untyped_get_ptr(rb_data);
200
+ cmt_cat(cmetricsSerde->instance, cmetricsUntyped->instance);
201
+ } else {
202
+ rb_raise(rb_eArgError, "specified type of instance is not supported.");
203
+ }
204
+ } else {
205
+ rb_raise(rb_eArgError, "nil is not valid value for concatenating");
206
+ }
207
+
208
+ return Qnil;
209
+ }
210
+
170
211
  static VALUE
171
212
  rb_cmetrics_serde_to_prometheus(VALUE self)
172
213
  {
@@ -177,6 +218,10 @@ rb_cmetrics_serde_to_prometheus(VALUE self)
177
218
  TypedData_Get_Struct(
178
219
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
179
220
 
221
+ if (cmetricsSerde->instance == NULL) {
222
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
223
+ }
224
+
180
225
  prom = cmt_encode_prometheus_create(cmetricsSerde->instance, CMT_TRUE);
181
226
 
182
227
  str = rb_str_new2(prom);
@@ -196,6 +241,10 @@ rb_cmetrics_serde_to_influx(VALUE self)
196
241
  TypedData_Get_Struct(
197
242
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
198
243
 
244
+ if (cmetricsSerde->instance == NULL) {
245
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
246
+ }
247
+
199
248
  prom = cmt_encode_influx_create(cmetricsSerde->instance);
200
249
 
201
250
  str = rb_str_new2(prom);
@@ -215,6 +264,10 @@ rb_cmetrics_serde_to_msgpack(VALUE self)
215
264
  TypedData_Get_Struct(
216
265
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
217
266
 
267
+ if (cmetricsSerde->instance == NULL) {
268
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
269
+ }
270
+
218
271
  ret = cmt_encode_msgpack_create(cmetricsSerde->instance, &buffer, &buffer_size);
219
272
 
220
273
  if (ret == 0) {
@@ -234,6 +287,10 @@ rb_cmetrics_serde_to_text(VALUE self)
234
287
  TypedData_Get_Struct(
235
288
  self, struct CMetricsSerde, &rb_cmetrics_serde_type, cmetricsSerde);
236
289
 
290
+ if (cmetricsSerde->instance == NULL) {
291
+ rb_raise(rb_eRuntimeError, "Invalid cmt context");
292
+ }
293
+
237
294
  buffer = cmt_encode_text_create(cmetricsSerde->instance);
238
295
  if (buffer == NULL) {
239
296
  return Qnil;
@@ -398,6 +455,7 @@ void Init_cmetrics_serde(VALUE rb_mCMetrics)
398
455
  rb_define_alloc_func(rb_cSerde, rb_cmetrics_serde_alloc);
399
456
 
400
457
  rb_define_method(rb_cSerde, "initialize", rb_cmetrics_serde_initialize, 0);
458
+ rb_define_method(rb_cSerde, "concat", rb_cmetrics_serde_concat_metric, 1);
401
459
  rb_define_method(rb_cSerde, "from_msgpack", rb_cmetrics_serde_from_msgpack, -1);
402
460
  rb_define_method(rb_cSerde, "to_prometheus", rb_cmetrics_serde_to_prometheus, 0);
403
461
  rb_define_method(rb_cSerde, "to_influx", rb_cmetrics_serde_to_influx, 0);
@@ -34,16 +34,32 @@ static const rb_data_type_t rb_cmetrics_untyped_type = { "cmetrics/untyped",
34
34
  RUBY_TYPED_FREE_IMMEDIATELY };
35
35
 
36
36
 
37
+ const struct CMetricsUntyped *cmetrics_untyped_get_ptr(VALUE self)
38
+ {
39
+ struct CMetricsUntyped *cmetricsUntyped = NULL;
40
+
41
+ TypedData_Get_Struct(
42
+ self, struct CMetricsUntyped, &rb_cmetrics_untyped_type, cmetricsUntyped);
43
+
44
+ if (NIL_P(self)) {
45
+ rb_raise(rb_eRuntimeError, "Given CMetrics argument must not be nil");
46
+ }
47
+ if (!cmetricsUntyped->untyped) {
48
+ rb_raise(rb_eRuntimeError, "Create untyped with CMetrics::Untyped#create first.");
49
+ }
50
+ return cmetricsUntyped;
51
+ }
52
+
37
53
  static void
38
54
  untyped_free(void* ptr)
39
55
  {
40
56
  struct CMetricsUntyped* cmetricsUntyped = (struct CMetricsUntyped*)ptr;
41
57
 
42
- if (!cmetricsUntyped) {
43
- if (!cmetricsUntyped->untyped) {
58
+ if (cmetricsUntyped) {
59
+ if (cmetricsUntyped->untyped) {
44
60
  cmt_untyped_destroy(cmetricsUntyped->untyped);
45
61
  }
46
- if (!cmetricsUntyped->instance) {
62
+ if (cmetricsUntyped->instance) {
47
63
  cmt_destroy(cmetricsUntyped->instance);
48
64
  }
49
65
  }
@@ -13,17 +13,35 @@ def windows?
13
13
  RUBY_PLATFORM =~ /mingw|mswin/
14
14
  end
15
15
 
16
+ def determine_preferred_command(bin, default_bin)
17
+ printf "checking for whether %s or %s is usable... ", bin, default_bin
18
+ STDOUT.flush
19
+ bin += RbConfig::CONFIG['EXEEXT']
20
+ path = ENV['PATH'].split(RbConfig::CONFIG['PATH_SEPARATOR'])
21
+ for dir in path
22
+ file = File.join(dir, bin)
23
+ if FileTest.executable?(file)
24
+ printf "%s\n", bin
25
+ return bin
26
+ else
27
+ next
28
+ end
29
+ end
30
+ printf "%s\n", default_bin
31
+ return default_bin
32
+ end
33
+
16
34
  class BuildCMetrics
17
35
 
18
36
  attr_reader :recipe
19
37
 
20
- def initialize(version=nil)
38
+ def initialize(version=nil, **kwargs)
21
39
  @version = if version
22
40
  version
23
41
  else
24
42
  "master".freeze
25
43
  end
26
- @recipe = MiniPortileCMake.new("cmetrics", @version)
44
+ @recipe = MiniPortileCMake.new("cmetrics", @version, **kwargs)
27
45
  @checkpoint = ".#{@recipe.name}-#{@recipe.version}.installed"
28
46
  @recipe.target = File.join(ROOT, "ports")
29
47
  @recipe.files << {
@@ -52,7 +70,7 @@ class BuildCMetrics
52
70
  end
53
71
  end
54
72
 
55
- cmetrics = BuildCMetrics.new("0.2.1")
73
+ cmetrics = BuildCMetrics.new("0.2.1", cmake_command: determine_preferred_command("cmake3", "cmake"))
56
74
  cmetrics.build
57
75
 
58
76
  libdir = RbConfig::CONFIG["libdir"]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CMetrics
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.4"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmetrics
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Hiroshi Hatake
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-23 00:00:00.000000000 Z
11
+ date: 2021-09-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,20 +66,34 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: msgpack
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: 1.4.2
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: 1.4.2
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: mini_portile2
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - "~>"
74
88
  - !ruby/object:Gem::Version
75
- version: '2.1'
89
+ version: '2.7'
76
90
  type: :runtime
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
94
  - - "~>"
81
95
  - !ruby/object:Gem::Version
82
- version: '2.1'
96
+ version: '2.7'
83
97
  description: C binding for cmetric library.
84
98
  email:
85
99
  - cosmo0920.oucc@gmail.com
@@ -88,9 +102,11 @@ extensions:
88
102
  - ext/cmetrics/extconf.rb
89
103
  extra_rdoc_files: []
90
104
  files:
105
+ - ".github/workflows/apt.yml"
91
106
  - ".github/workflows/linux.yml"
92
107
  - ".github/workflows/macos.yml"
93
108
  - ".github/workflows/windows.yml"
109
+ - ".github/workflows/yum.yml"
94
110
  - ".gitignore"
95
111
  - Gemfile
96
112
  - LICENSE
@@ -98,6 +114,8 @@ files:
98
114
  - Rakefile
99
115
  - bin/console
100
116
  - bin/setup
117
+ - ci/apt-test.sh
118
+ - ci/yum-test.sh
101
119
  - cmetrics-ruby.gemspec
102
120
  - ext/cmetrics/cmetrics.c
103
121
  - ext/cmetrics/cmetrics_c.h
@@ -114,7 +132,7 @@ licenses:
114
132
  metadata:
115
133
  homepage_uri: https://github.com/calyptia/cmetrics-ruby
116
134
  changelog_uri: https://github.com/calyptia/cmetrics-ruby/blob/master/CHANGELOG.md
117
- post_install_message:
135
+ post_install_message:
118
136
  rdoc_options: []
119
137
  require_paths:
120
138
  - lib
@@ -130,7 +148,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
130
148
  version: '0'
131
149
  requirements: []
132
150
  rubygems_version: 3.2.22
133
- signing_key:
151
+ signing_key:
134
152
  specification_version: 4
135
153
  summary: C binding for cmetric library.
136
154
  test_files: []