utils 0.63.0 → 0.64.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: c57d27bd0ccbe0822c7d234983f01ca7014b0d2d21313aecdfad2bad40e00ec9
4
- data.tar.gz: 333db226cb9e85c47dc3f585a1e258cad35630827442c4bec44b8a20f10210f8
3
+ metadata.gz: 04c80c59e58b4eddfd99b4890f90e9b79197a3058650355e93317234ffdacb21
4
+ data.tar.gz: 6b169b24ba94fd2c8fa1d64c53d69b3d93c4c60ca5ee8bf85098492f9d446904
5
5
  SHA512:
6
- metadata.gz: a0e71cdf38a4911ef2dc1c60949f86b84bc9c0052fa47534448a2b3d957eb4ab01b8487540f77538241e1b9d606a81e677f49cb0e88c46c52a6c0fe1cc16fb8c
7
- data.tar.gz: ed17da49e7b31403d91b1aee7d2704ca53283cc359079b350838c7e5f10eb6e7110b0f221d17e272e8a0cc9608404b0cfb58a72b7e4ee1d84c92fdd71f7810ab
6
+ metadata.gz: 3f0e39525fe0f42fe02cd834f436b09084d72532e47ee720eea97652420cf2f2502c47a265479c1a3501107fa945ec6433ff053cba78b6a148d7a4ffd797cfd1
7
+ data.tar.gz: b370aea11cc359cbf88261f305b2574764243d23c4f402fab14a5e1caf13b3328069a1e6dac82cf5809da6fc4c74fd51d830177d1a38a9ab5d6c961641d9e7e6
data/.utilsrc ADDED
@@ -0,0 +1,30 @@
1
+ # vim: set ft=ruby:
2
+
3
+ search do
4
+ prune_dirs /\A(\.svn|\.git|\.terraform|CVS|tmp|coverage|corpus|pkg|\.yardoc)\z/
5
+ skip_files /(\A\.|\.sw[pon]\z|\.(log|fnm|jpg|jpeg|png|pdf|svg)\z|\Atags\z|~\z)/i
6
+ end
7
+
8
+ discover do
9
+ prune_dirs /\A(\.svn|\.git|\.terraform|\.yardoc|CVS|tmp|coverage|corpus|pkg|\.yardoc)\z/
10
+ skip_files /(\A\.|\.sw[pon]\z|\.log\z|~\z)/
11
+ index_expire_after 3_600
12
+ end
13
+
14
+ strip_spaces do
15
+ prune_dirs /\A(\..*|CVS|pkg|\.yardoc)\z/
16
+ skip_files /(\A\.|\.sw[pon]\z|\.log\z|~\z)/
17
+ end
18
+
19
+ probe do
20
+ test_framework :'test-unit'
21
+ end
22
+
23
+ ssh_tunnel do
24
+ terminal_multiplexer :tmux
25
+ login_session "/home/#{ENV['USER']}"
26
+ end
27
+
28
+ classify do
29
+ shift_path_by_default 1
30
+ end
data/Rakefile CHANGED
@@ -19,7 +19,7 @@ GemHadar do
19
19
  readme 'README.md'
20
20
  licenses << 'GPL-2.0'
21
21
 
22
- dependency 'drb'
22
+ dependency 'unix_socks'
23
23
  dependency 'webrick'
24
24
  dependency 'tins', '~> 1.14'
25
25
  dependency 'term-ansicolor', '~> 1.11'
@@ -32,6 +32,7 @@ GemHadar do
32
32
  dependency 'kramdown-ansi', '~> 0.0.1'
33
33
  dependency 'simplecov'
34
34
  dependency 'debug'
35
+ development_dependency 'test-unit'
35
36
 
36
37
  install_library do
37
38
  libdir = CONFIG["sitelibdir"]
data/bin/code_comment CHANGED
@@ -95,7 +95,7 @@ EOT
95
95
  system = nil
96
96
 
97
97
  prompt = <<EOT
98
- Analyze this code:
98
+ Look at this code to document it:
99
99
 
100
100
  #{files.map { File.read(_1) } * ?\n}
101
101
 
data/bin/probe CHANGED
@@ -5,7 +5,6 @@ require 'tins/lines_file'
5
5
  include Tins::GO
6
6
  require 'utils'
7
7
  include Utils
8
- require 'drb'
9
8
  require 'shellwords'
10
9
 
11
10
  def usage
@@ -19,7 +18,6 @@ def usage
19
18
  -c start probe as a client
20
19
  -C FOO[=BAR] set/get env variable on probe server
21
20
  -l start probe as a server
22
- -u URI use this DRb URI communication
23
21
  -h display this help
24
22
 
25
23
  Version is #{File.basename($0)} #{Utils::VERSION}.
@@ -39,25 +37,17 @@ end
39
37
 
40
38
  def start_server
41
39
  Thread.abort_on_exception = $DEBUG
42
-
43
- begin
44
- DRb.start_service
45
- DRbObject.new_with_uri($uri).shutdown
46
- rescue DRb::DRbConnError
47
- end
48
-
49
- Utils::ProbeServer.new($uri).start
40
+ Utils::ProbeServer.new.start
50
41
  end
51
42
 
52
43
  def connect_server
53
- DRb.start_service
54
- probe_server = DRbObject.new_with_uri($uri)
44
+ probe_client = ProbeClient.new
55
45
  if setting = $opts[?C]
56
46
  case setting
57
47
  when /\A([^=]+)=([^=]+)\z/
58
- probe_server.env[$1] = $2
48
+ puts probe_client.env[$1] = $2
59
49
  when /\A([^=]+)\z/
60
- puts probe_server.env[$1]
50
+ puts probe_client.env[$1]
61
51
  else
62
52
  usage
63
53
  end
@@ -66,7 +56,7 @@ def connect_server
66
56
  opts = $opts.subhash(*%w[n t]).each_with_object([]) { |(k, v), a|
67
57
  v.full? and a.concat [ "-#{k}", v ]
68
58
  }
69
- probe_server.enqueue opts + $args
59
+ probe_client.enqueue opts + $args
70
60
  exit
71
61
  end
72
62
  end
@@ -80,11 +70,9 @@ if i = ARGV.index('--')
80
70
  else
81
71
  $args = ARGV.dup
82
72
  end
83
- $opts = go 'lct:n:u:C:h', $args
73
+ $opts = go 'lct:n:C:h', $args
84
74
  $opts[?h] and usage
85
75
 
86
- $uri = $opts[?u] || 'drbunix:probe.socket'
87
-
88
76
  case
89
77
  when $opts[?l]
90
78
  start_server
@@ -1,3 +1,4 @@
1
+ require 'unix_socks'
1
2
  require 'tins/xt'
2
3
  require 'term/ansicolor'
3
4
  class String
@@ -5,48 +6,91 @@ class String
5
6
  end
6
7
 
7
8
  module Utils
8
- class ProbeServer
9
- class Job
10
- def initialize(probe_server, args)
11
- @id = probe_server.next_job_id
12
- @args = Array(args)
9
+ class ProcessJob
10
+ def initialize(args:, probe_server: nil)
11
+ @id = probe_server&.next_job_id
12
+ @args = Array(args)
13
+ end
14
+
15
+ attr_reader :id
16
+
17
+ attr_reader :args
18
+
19
+ attr_writer :ok
20
+
21
+ def type
22
+ 'process_job'
23
+ end
24
+
25
+ def ok
26
+ case @ok
27
+ when false then 'n'
28
+ when true then 'y'
29
+ else '…'
13
30
  end
31
+ end
14
32
 
15
- attr_reader :id
33
+ def ok_colorize(string)
34
+ case @ok
35
+ when false then string.white.on_red
36
+ when true then string.black.on_green
37
+ else string
38
+ end
39
+ end
16
40
 
17
- attr_reader :args
41
+ def inspect
42
+ ok_colorize("#{id} #{args.map { |a| a.include?(' ') ? a.inspect : a } * ' '}")
43
+ end
18
44
 
19
- attr_writer :ok
45
+ alias to_s inspect
20
46
 
21
- def ok
22
- case @ok
23
- when false then 'n'
24
- when true then 'y'
25
- else '…'
26
- end
47
+ def as_json(*)
48
+ { type:, id:, args:, }
49
+ end
50
+
51
+ def to_json(*)
52
+ as_json.to_json(*)
53
+ end
54
+ end
55
+
56
+ class ProbeClient
57
+ class EnvProxy
58
+ def initialize(server)
59
+ @server = server
27
60
  end
28
61
 
29
- def ok_colorize(string)
30
- case @ok
31
- when false then string.white.on_red
32
- when true then string.black.on_green
33
- else string
34
- end
62
+ def []=(key, value)
63
+ response = @server.transmit_with_response(type: 'set_env', key:, value:)
64
+ response.env
35
65
  end
36
66
 
37
- def inspect
38
- ok_colorize("#{id} #{args.map { |a| a.include?(' ') ? a.inspect : a } * ' '}")
67
+ def [](key)
68
+ response = @server.transmit_with_response(type: 'get_env', key:)
69
+ response.env
39
70
  end
40
71
 
41
- alias to_s inspect
72
+ attr_reader :env
73
+ end
74
+
75
+ def initialize
76
+ @server = UnixSocks::Server.new(socket_name: 'probe.sock', runtime_dir: Dir.pwd)
77
+ end
78
+
79
+ def env
80
+ EnvProxy.new(@server)
81
+ end
82
+
83
+ def enqueue(args)
84
+ @server.transmit({ type: 'process_job', args: })
42
85
  end
86
+ end
43
87
 
44
- def initialize(uri)
45
- @uri = uri
46
- @history = [].freeze
47
- @jobs_queue = Queue.new
88
+ class ProbeServer
89
+ def initialize
90
+ @server = UnixSocks::Server.new(socket_name: 'probe.sock', runtime_dir: Dir.pwd)
91
+ @history = [].freeze
92
+ @jobs_queue = Queue.new
48
93
  @current_job_id = 0
49
- Thread.new { work_loop }
50
94
  end
51
95
 
52
96
  def print(*msg)
@@ -56,10 +100,15 @@ module Utils
56
100
  end
57
101
 
58
102
  def start
59
- output_message "Starting probe server listening to #{@uri.inspect}.", type: :info
60
- DRb.start_service(@uri, self)
103
+ output_message "Starting probe server listening to #{@server.server_socket_path}.", type: :info
104
+ work_loop = Thread.new do
105
+ loop do
106
+ job = @jobs_queue.pop
107
+ run_job job
108
+ end
109
+ end
61
110
  begin
62
- DRb.thread.join
111
+ receive_loop.join
63
112
  rescue Interrupt
64
113
  ARGV.clear << '-f'
65
114
  output_message %{\nEntering interactive mode.}, type: :info
@@ -70,7 +119,8 @@ module Utils
70
119
  ensure
71
120
  $VERBOSE = old
72
121
  end
73
- output_message "Quitting interactive mode, but still listening to #{@uri.inspect}.", type: :info
122
+ @server.remove_socket_path
123
+ output_message "Quitting interactive mode, but still listening to #{@server.server_socket_path}.", type: :info
74
124
  retry
75
125
  end
76
126
  end
@@ -91,17 +141,17 @@ module Utils
91
141
  docs_size = docs.map { |a| a.first.size }.max
92
142
  format = "%-#{docs_size}s %-3s %s"
93
143
  output_message [
94
- (format % %w[ command sho description ]).on_color(20).white
95
- ] << docs.map { |cmd, doc|
96
- shortcut = shortcut_of(cmd) and shortcut = "(#{shortcut})"
97
- format % [ cmd, shortcut, doc ]
98
- }
144
+ (format % %w[ command sho description ]).on_color(20).white
145
+ ] << docs.map { |cmd, doc|
146
+ shortcut = shortcut_of(cmd) and shortcut = "(#{shortcut})"
147
+ format % [ cmd, shortcut, doc ]
148
+ }
99
149
  end
100
150
 
101
- doc 'Enqueue a new job with the argument array <job_args>.'
151
+ doc 'Enqueue a new job with the argument array <args>.'
102
152
  shortcut :e
103
- def job_enqueue(job_args)
104
- job = Job.new(self, job_args)
153
+ def job_enqueue(args)
154
+ job = ProcessJob.new(args:, probe_server: self)
105
155
  output_message " → #{job.inspect} enqueued.", type: :info
106
156
  @jobs_queue.push job
107
157
  end
@@ -118,7 +168,7 @@ module Utils
118
168
  doc 'Repeat the job with <job_id> or the last, it will be assigned a new id, though.'
119
169
  shortcut :r
120
170
  def job_repeat(job_id = @history.last)
121
- Job === job_id and job_id = job_id.id
171
+ ProcessJob === job_id and job_id = job_id.id
122
172
  if old_job = @history.find { |job| job.id == job_id }
123
173
  job_enqueue old_job.args
124
174
  true
@@ -209,15 +259,21 @@ module Utils
209
259
  message << " and failed with exit status #{$?.exitstatus}!"
210
260
  output_message message, type: :failure
211
261
  end
212
- @history += [ @job.freeze ]
262
+ @history += [ job.freeze ]
213
263
  @history.freeze
214
- @job = nil
215
264
  end
216
265
 
217
- def work_loop
218
- loop do
219
- @job = @jobs_queue.shift
220
- run_job @job
266
+ def receive_loop
267
+ @server.receive_in_background do |job|
268
+ case job.type
269
+ when 'process_job'
270
+ enqueue job.args
271
+ when 'set_env'
272
+ env[job.key] = job.value
273
+ job.respond(env: env[job.key])
274
+ when 'get_env'
275
+ job.respond(env: env[job.key])
276
+ end
221
277
  end
222
278
  end
223
279
 
data/lib/utils/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Utils
2
2
  # Utils version
3
- VERSION = '0.63.0'
3
+ VERSION = '0.64.0'
4
4
  VERSION_ARRAY = VERSION.split('.').map(&:to_i) # :nodoc:
5
5
  VERSION_MAJOR = VERSION_ARRAY[0] # :nodoc:
6
6
  VERSION_MINOR = VERSION_ARRAY[1] # :nodoc:
@@ -0,0 +1,2 @@
1
+ require 'test/unit'
2
+ require 'utils'
@@ -0,0 +1,11 @@
1
+ require 'test_helper'
2
+
3
+ class UtilsTest < Test::Unit::TestCase
4
+ def setup
5
+ end
6
+
7
+
8
+ def test_foo
9
+ assert true
10
+ end
11
+ end
data/utils.gemspec CHANGED
@@ -1,29 +1,31 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: utils 0.63.0 ruby lib
2
+ # stub: utils 0.64.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "utils".freeze
6
- s.version = "0.63.0".freeze
6
+ s.version = "0.64.0".freeze
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib".freeze]
10
10
  s.authors = ["Florian Frank".freeze]
11
- s.date = "2025-01-23"
11
+ s.date = "1980-01-02"
12
12
  s.description = "This ruby gem provides some useful command line utilities".freeze
13
13
  s.email = "flori@ping.de".freeze
14
14
  s.executables = ["ascii7".freeze, "blameline".freeze, "changes".freeze, "classify".freeze, "code_comment".freeze, "commit_message".freeze, "create_cstags".freeze, "create_tags".freeze, "discover".freeze, "edit".freeze, "edit_wait".freeze, "enum".freeze, "git-empty".freeze, "git-versions".freeze, "json_check".freeze, "long_lines".freeze, "myex".freeze, "number_files".freeze, "on_change".freeze, "path".freeze, "print_method".freeze, "probe".freeze, "rd2md".freeze, "search".freeze, "sedit".freeze, "serve".freeze, "ssh-tunnel".freeze, "strip_spaces".freeze, "sync_dir".freeze, "untest".freeze, "utils-utilsrc".freeze, "vcf2alias".freeze, "yaml_check".freeze]
15
15
  s.extra_rdoc_files = ["README.md".freeze, "lib/utils.rb".freeze, "lib/utils/config_file.rb".freeze, "lib/utils/editor.rb".freeze, "lib/utils/finder.rb".freeze, "lib/utils/grepper.rb".freeze, "lib/utils/irb.rb".freeze, "lib/utils/line_blamer.rb".freeze, "lib/utils/line_formatter.rb".freeze, "lib/utils/md5.rb".freeze, "lib/utils/patterns.rb".freeze, "lib/utils/probe_server.rb".freeze, "lib/utils/ssh_tunnel_specification.rb".freeze, "lib/utils/version.rb".freeze, "lib/utils/xt/source_location_extension.rb".freeze]
16
- s.files = [".github/dependabot.yml".freeze, ".github/workflows/codeql-analysis.yml".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "bin/ascii7".freeze, "bin/blameline".freeze, "bin/changes".freeze, "bin/classify".freeze, "bin/code_comment".freeze, "bin/commit_message".freeze, "bin/create_cstags".freeze, "bin/create_tags".freeze, "bin/discover".freeze, "bin/edit".freeze, "bin/edit_wait".freeze, "bin/enum".freeze, "bin/git-empty".freeze, "bin/git-versions".freeze, "bin/json_check".freeze, "bin/long_lines".freeze, "bin/myex".freeze, "bin/number_files".freeze, "bin/on_change".freeze, "bin/path".freeze, "bin/print_method".freeze, "bin/probe".freeze, "bin/rd2md".freeze, "bin/search".freeze, "bin/sedit".freeze, "bin/serve".freeze, "bin/ssh-tunnel".freeze, "bin/strip_spaces".freeze, "bin/sync_dir".freeze, "bin/untest".freeze, "bin/utils-utilsrc".freeze, "bin/vcf2alias".freeze, "bin/yaml_check".freeze, "lib/utils.rb".freeze, "lib/utils/config_file.rb".freeze, "lib/utils/editor.rb".freeze, "lib/utils/finder.rb".freeze, "lib/utils/grepper.rb".freeze, "lib/utils/irb.rb".freeze, "lib/utils/line_blamer.rb".freeze, "lib/utils/line_formatter.rb".freeze, "lib/utils/md5.rb".freeze, "lib/utils/patterns.rb".freeze, "lib/utils/probe_server.rb".freeze, "lib/utils/ssh_tunnel_specification.rb".freeze, "lib/utils/version.rb".freeze, "lib/utils/xt/source_location_extension.rb".freeze, "utils.gemspec".freeze]
16
+ s.files = [".github/dependabot.yml".freeze, ".github/workflows/codeql-analysis.yml".freeze, ".utilsrc".freeze, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "bin/ascii7".freeze, "bin/blameline".freeze, "bin/changes".freeze, "bin/classify".freeze, "bin/code_comment".freeze, "bin/commit_message".freeze, "bin/create_cstags".freeze, "bin/create_tags".freeze, "bin/discover".freeze, "bin/edit".freeze, "bin/edit_wait".freeze, "bin/enum".freeze, "bin/git-empty".freeze, "bin/git-versions".freeze, "bin/json_check".freeze, "bin/long_lines".freeze, "bin/myex".freeze, "bin/number_files".freeze, "bin/on_change".freeze, "bin/path".freeze, "bin/print_method".freeze, "bin/probe".freeze, "bin/rd2md".freeze, "bin/search".freeze, "bin/sedit".freeze, "bin/serve".freeze, "bin/ssh-tunnel".freeze, "bin/strip_spaces".freeze, "bin/sync_dir".freeze, "bin/untest".freeze, "bin/utils-utilsrc".freeze, "bin/vcf2alias".freeze, "bin/yaml_check".freeze, "lib/utils.rb".freeze, "lib/utils/config_file.rb".freeze, "lib/utils/editor.rb".freeze, "lib/utils/finder.rb".freeze, "lib/utils/grepper.rb".freeze, "lib/utils/irb.rb".freeze, "lib/utils/line_blamer.rb".freeze, "lib/utils/line_formatter.rb".freeze, "lib/utils/md5.rb".freeze, "lib/utils/patterns.rb".freeze, "lib/utils/probe_server.rb".freeze, "lib/utils/ssh_tunnel_specification.rb".freeze, "lib/utils/version.rb".freeze, "lib/utils/xt/source_location_extension.rb".freeze, "tests/test_helper.rb".freeze, "tests/utils_test.rb".freeze, "utils.gemspec".freeze]
17
17
  s.homepage = "http://github.com/flori/utils".freeze
18
18
  s.licenses = ["GPL-2.0".freeze]
19
19
  s.rdoc_options = ["--title".freeze, "Utils - Some useful command line utilities".freeze, "--main".freeze, "README.md".freeze]
20
- s.rubygems_version = "3.6.2".freeze
20
+ s.rubygems_version = "3.6.9".freeze
21
21
  s.summary = "Some useful command line utilities".freeze
22
+ s.test_files = ["tests/test_helper.rb".freeze, "tests/utils_test.rb".freeze]
22
23
 
23
24
  s.specification_version = 4
24
25
 
25
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.19".freeze])
26
- s.add_runtime_dependency(%q<drb>.freeze, [">= 0".freeze])
26
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.20".freeze])
27
+ s.add_development_dependency(%q<test-unit>.freeze, [">= 0".freeze])
28
+ s.add_runtime_dependency(%q<unix_socks>.freeze, [">= 0".freeze])
27
29
  s.add_runtime_dependency(%q<webrick>.freeze, [">= 0".freeze])
28
30
  s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.14".freeze])
29
31
  s.add_runtime_dependency(%q<term-ansicolor>.freeze, ["~> 1.11".freeze])
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.63.0
4
+ version: 0.64.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-01-23 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: gem_hadar
@@ -15,16 +15,30 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '1.19'
18
+ version: '1.20'
19
19
  type: :development
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '1.19'
25
+ version: '1.20'
26
26
  - !ruby/object:Gem::Dependency
27
- name: drb
27
+ name: test-unit
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :development
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: unix_socks
28
42
  requirement: !ruby/object:Gem::Requirement
29
43
  requirements:
30
44
  - - ">="
@@ -261,6 +275,7 @@ extra_rdoc_files:
261
275
  files:
262
276
  - ".github/dependabot.yml"
263
277
  - ".github/workflows/codeql-analysis.yml"
278
+ - ".utilsrc"
264
279
  - COPYING
265
280
  - Gemfile
266
281
  - README.md
@@ -312,6 +327,8 @@ files:
312
327
  - lib/utils/ssh_tunnel_specification.rb
313
328
  - lib/utils/version.rb
314
329
  - lib/utils/xt/source_location_extension.rb
330
+ - tests/test_helper.rb
331
+ - tests/utils_test.rb
315
332
  - utils.gemspec
316
333
  homepage: http://github.com/flori/utils
317
334
  licenses:
@@ -335,7 +352,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
352
  - !ruby/object:Gem::Version
336
353
  version: '0'
337
354
  requirements: []
338
- rubygems_version: 3.6.2
355
+ rubygems_version: 3.6.9
339
356
  specification_version: 4
340
357
  summary: Some useful command line utilities
341
- test_files: []
358
+ test_files:
359
+ - tests/test_helper.rb
360
+ - tests/utils_test.rb