utils 0.63.0 → 0.65.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: 8d1633f8d2d41b4f3498a2f8c25abd00d14800cba7d3266e3c95ee23f50c47e8
4
+ data.tar.gz: d928e826ea6a28690d62d7f7051c2424708230e859b787d7914472bfa315dda4
5
5
  SHA512:
6
- metadata.gz: a0e71cdf38a4911ef2dc1c60949f86b84bc9c0052fa47534448a2b3d957eb4ab01b8487540f77538241e1b9d606a81e677f49cb0e88c46c52a6c0fe1cc16fb8c
7
- data.tar.gz: ed17da49e7b31403d91b1aee7d2704ca53283cc359079b350838c7e5f10eb6e7110b0f221d17e272e8a0cc9608404b0cfb58a72b7e4ee1d84c92fdd71f7810ab
6
+ metadata.gz: c80fbe8111a06467d7c02868e010e911c06785783364f1f3047b76f88e0f90a7f70a57b49375fb4351d332068fb04f5cc00c86884918d2477ea5837b6543b7e4
7
+ data.tar.gz: 9b46861f764339dc572741b124c574683d2cbd3f2144751f196c1a96bbe7d9a6115f9ac908b1c0ec22168c48a77253ecee005c75a13f1ad3712ab52adf80b18b
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'
@@ -28,10 +28,11 @@ GemHadar do
28
28
  dependency 'mize', '~> 0.6'
29
29
  dependency 'search_ui', '~> 0.0'
30
30
  dependency 'all_images', '~> 0.5.0'
31
- dependency 'ollama-ruby'
31
+ dependency 'ollama-ruby', '~> 1.4.0'
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/changes CHANGED
@@ -3,6 +3,8 @@
3
3
  require 'ollama'
4
4
  include Ollama
5
5
  require 'tins/xt'
6
+ require 'utils'
7
+ include Utils::XDGConfig
6
8
 
7
9
  def x(cmd)
8
10
  output = `#{cmd}`
@@ -43,48 +45,23 @@ def compute_change(range_from, range_to)
43
45
  EOT
44
46
  end
45
47
 
46
- base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
47
- model = ENV.fetch('OLLAMA_MODEL', 'llama3.1')
48
+ config = xdg_config('changes')
48
49
 
49
- system = <<~EOT
50
- You are a Ruby programmer generating a change log entry in markdown syntax,
51
- summarizing the code changes for a new version in a professional way.
52
- EOT
53
-
54
- prompt = <<~EOT
55
- - Summarize the changes in the following git log messages as bullet points.
56
- - Don't mention the version of the change set
57
- - Skip bullet points about version bumps.
58
- - List significant changes as bullet points using markdown when applicable.
59
- - Mark all names and values for variables, methods, functions, and
60
- constants, you see in the messages as markdown code surrounded by
61
- backtick characters.
62
- - Mark all version numbers you see in the messages as markdown bold
63
- surrounded by two asterisk characters.
64
- - Don't refer to single commits by sha1 hash.
65
- - Don't add information about changes you are not sure about.
66
- - Don't output any additional chatty remarks, notes, introductions,
67
- communications, etc.
68
-
69
- #{log}
70
- EOT
50
+ base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
51
+ model = ENV.fetch('OLLAMA_MODEL', 'llama3.1')
52
+ system = File.read("#{config}/system.txt")
53
+ prompt = File.read("#{config}/prompt.txt") + "\n\n#{log}\n"
54
+ client_config = Client::Config.load_from_json("#{config}/client.json")
55
+ client_config.base_url = base_url
71
56
 
72
57
  if ENV['DEBUG'].to_i == 1
73
58
  STDERR.puts "system:\n#{system}"
74
59
  STDERR.puts "prompt:\n#{prompt}"
75
60
  end
76
61
 
77
- options = Ollama::Options.new(
78
- num_ctx: 16384,
79
- num_predict: 1024,
80
- temperature: 0,
81
- #seed: 1337,
82
- top_p: 1,
83
- min_p: 0.1,
84
- )
85
-
86
- ollama = Client.new(base_url:, read_timeout: 120)
87
- changes = ollama.generate(model:, system:, prompt:, options:, stream: false)
62
+ ollama = Client.configure_with(client_config)
63
+ options = Options.load_from_json "#{config}/options.json"
64
+ changes = ollama.generate(model:, system:, prompt:, options:, stream: false, think: false)
88
65
  changes = changes.response.gsub(/\t/, ' ')
89
66
 
90
67
  return <<~EOT
data/bin/code_comment CHANGED
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'utils'
4
3
  require 'ollama'
5
4
  include Ollama
5
+ require 'utils'
6
+ include Utils::XDGConfig
6
7
 
7
8
  def fetch_method(filename_linenumber)
8
9
  result = ''
@@ -31,7 +32,7 @@ method_indent = method[/\A( *)/, 1].size
31
32
  #file = fetch_file(filename_linenumber)
32
33
  files = Dir['{lib,spec,test}/**/*.rb']
33
34
  base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
34
- model = ENV.fetch('OLLAMA_MODEL', 'llama3.2')
35
+ model = ENV.fetch('OLLAMA_MODEL', 'llama3.1')
35
36
  #file = File.read(file_name)
36
37
  #call_sites = %x(cscope -L -3 "#{method_name}" $(find . -name '*.rb') | awk '{ print $1 ":" $3 }').lines.map(&:chomp).uniq
37
38
  #methods = call_sites.map { fetch_method(_1) } * ?\n
@@ -95,7 +96,7 @@ EOT
95
96
  system = nil
96
97
 
97
98
  prompt = <<EOT
98
- Analyze this code:
99
+ Look at this code to document it:
99
100
 
100
101
  #{files.map { File.read(_1) } * ?\n}
101
102
 
@@ -167,6 +168,9 @@ if ENV['DEBUG'].to_i == 1
167
168
  end
168
169
  end
169
170
 
170
- ollama = Client.new(base_url:, read_timeout: 120)
171
+ config = xdg_config('code_comment')
172
+ client_config = Client::Config.load_from_json "#{config}/client.json"
173
+ client_config.base_url = base_url
174
+ ollama = Client.configure_with(client_config)
171
175
  response = ollama.generate(model:, system:, prompt:, options:, stream: false).response
172
176
  puts response.gsub(/^/) { ' ' * method_indent }
data/bin/commit_message CHANGED
@@ -1,11 +1,9 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- config =
4
- if (xdg = ENV['XDG_CONFIG_HOME'].to_s.strip).size == 0
5
- File.join(ENV.fetch('HOME'), '.config', 'commit_message')
6
- else
7
- File.join(xdg, 'commit_message')
8
- end
3
+ require 'utils'
4
+ include Utils::XDGConfig
5
+
6
+ config = xdg_config('commit_message')
9
7
 
10
8
  branch = `git rev-parse --abbrev-ref HEAD`.chomp
11
9
  exec 'ollama_cli', '-M', "#{config}/options.json", '-P', "branch=#{branch}",
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.65.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,10 @@
1
+ module Utils::XDGConfig
2
+ def xdg_config(name)
3
+ @config and return @config
4
+ @config = if xdg = ENV['XDG_CONFIG_HOME'].full?
5
+ File.join(xdg, name)
6
+ else
7
+ File.join(ENV.fetch('HOME'), '.config', name)
8
+ end
9
+ end
10
+ end
data/lib/utils.rb CHANGED
@@ -9,6 +9,7 @@ module Utils
9
9
  require 'utils/probe_server'
10
10
  require 'utils/ssh_tunnel_specification'
11
11
  require 'utils/line_blamer'
12
+ require 'utils/xdg_config'
12
13
 
13
14
  require 'utils/xt/source_location_extension'
14
15
  class ::Object
@@ -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.65.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.65.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
- 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]
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/xdg_config.rb".freeze, "lib/utils/xt/source_location_extension.rb".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/xdg_config.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])
@@ -32,7 +34,7 @@ Gem::Specification.new do |s|
32
34
  s.add_runtime_dependency(%q<mize>.freeze, ["~> 0.6".freeze])
33
35
  s.add_runtime_dependency(%q<search_ui>.freeze, ["~> 0.0".freeze])
34
36
  s.add_runtime_dependency(%q<all_images>.freeze, ["~> 0.5.0".freeze])
35
- s.add_runtime_dependency(%q<ollama-ruby>.freeze, [">= 0".freeze])
37
+ s.add_runtime_dependency(%q<ollama-ruby>.freeze, ["~> 1.4.0".freeze])
36
38
  s.add_runtime_dependency(%q<kramdown-ansi>.freeze, ["~> 0.0.1".freeze])
37
39
  s.add_runtime_dependency(%q<simplecov>.freeze, [">= 0".freeze])
38
40
  s.add_runtime_dependency(%q<debug>.freeze, [">= 0".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.65.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
  - - ">="
@@ -153,16 +167,16 @@ dependencies:
153
167
  name: ollama-ruby
154
168
  requirement: !ruby/object:Gem::Requirement
155
169
  requirements:
156
- - - ">="
170
+ - - "~>"
157
171
  - !ruby/object:Gem::Version
158
- version: '0'
172
+ version: 1.4.0
159
173
  type: :runtime
160
174
  prerelease: false
161
175
  version_requirements: !ruby/object:Gem::Requirement
162
176
  requirements:
163
- - - ">="
177
+ - - "~>"
164
178
  - !ruby/object:Gem::Version
165
- version: '0'
179
+ version: 1.4.0
166
180
  - !ruby/object:Gem::Dependency
167
181
  name: kramdown-ansi
168
182
  requirement: !ruby/object:Gem::Requirement
@@ -257,10 +271,12 @@ extra_rdoc_files:
257
271
  - lib/utils/probe_server.rb
258
272
  - lib/utils/ssh_tunnel_specification.rb
259
273
  - lib/utils/version.rb
274
+ - lib/utils/xdg_config.rb
260
275
  - lib/utils/xt/source_location_extension.rb
261
276
  files:
262
277
  - ".github/dependabot.yml"
263
278
  - ".github/workflows/codeql-analysis.yml"
279
+ - ".utilsrc"
264
280
  - COPYING
265
281
  - Gemfile
266
282
  - README.md
@@ -311,7 +327,10 @@ files:
311
327
  - lib/utils/probe_server.rb
312
328
  - lib/utils/ssh_tunnel_specification.rb
313
329
  - lib/utils/version.rb
330
+ - lib/utils/xdg_config.rb
314
331
  - lib/utils/xt/source_location_extension.rb
332
+ - tests/test_helper.rb
333
+ - tests/utils_test.rb
315
334
  - utils.gemspec
316
335
  homepage: http://github.com/flori/utils
317
336
  licenses:
@@ -335,7 +354,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
335
354
  - !ruby/object:Gem::Version
336
355
  version: '0'
337
356
  requirements: []
338
- rubygems_version: 3.6.2
357
+ rubygems_version: 3.6.9
339
358
  specification_version: 4
340
359
  summary: Some useful command line utilities
341
- test_files: []
360
+ test_files:
361
+ - tests/test_helper.rb
362
+ - tests/utils_test.rb