utils 0.46.0 → 0.48.0

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: c70230878e670eb2201ade57a3d70154ae068aa3b5aefa3719369666bc94bffd
4
- data.tar.gz: c318827db3a29b112459662eb776ba0fc623ec6e35025fdc8206ac74f4dcc9c8
3
+ metadata.gz: 677af95701a972ced43473bd9c67461ccf2641d85b8f65261ba96c6a0ec04cb7
4
+ data.tar.gz: 57fae4a1824ae33ed64b1f2a3b4cbc735f3b34fd37b6e104ba446c9cf396b0b2
5
5
  SHA512:
6
- metadata.gz: b50150d35c6c70132a78c390fbd6fc4433bd060dd5b249907481d977ccd7a4a8d379896beef8892e0b663bb467ee7354e923b2e63641bdc57c7544a651654d6e
7
- data.tar.gz: 3f4fd29351c28b694b07331f586d23ad0bee687ef0759454880e00e59a059bf2b230fea7986a8df08f36fe223b342d087df30c36ef6e2a82c5062aa2b0d00233
6
+ metadata.gz: 70d0d4b3ee0cbf6d07ca290afb51cb4ca5c7ba5ed97a168d5aba902cd9adb8706a1c858d75be752affee555c4cc749203c250d9453962bd6c4e8ceca603f0583
7
+ data.tar.gz: ff0a2476df783d8beb89797675a59b1a6f17661dfbf08c97e68a0a1e54e7e56c0658c3c05030a862186679c4bb574d15c734272966096653087d50b752928b20
data/Rakefile CHANGED
@@ -10,7 +10,8 @@ GemHadar do
10
10
  summary 'Some useful command line utilities'
11
11
  description 'This ruby gem provides some useful command line utilities'
12
12
  bindir 'bin'
13
- executables Dir['bin/*'].map(&File.method(:basename))
13
+ executables Dir['bin/*'].select { |e| File.new(e).readline =~ /ruby/ }.
14
+ map(&File.method(:basename))
14
15
  test_dir 'tests'
15
16
  ignore '.*.sw[pon]', 'pkg', 'Gemfile.lock', '.rvmrc', '.AppleDouble',
16
17
  'tags', '.bundle', '.DS_Store', '.byebug_history'
@@ -18,14 +19,15 @@ GemHadar do
18
19
  readme 'README.md'
19
20
  licenses << 'GPL-2.0'
20
21
 
21
- dependency 'tins', '~>1.14'
22
- dependency 'term-ansicolor', '~>1.3'
23
- dependency 'pstree', '~>0.3'
24
- dependency 'infobar'
25
- dependency 'mize'
26
- dependency 'search_ui'
27
22
  dependency 'drb'
28
- dependency 'all_images', '>=0.0.2'
23
+ dependency 'tins', '~> 1.14'
24
+ dependency 'term-ansicolor', '~> 1.3'
25
+ dependency 'pstree', '~> 0.3'
26
+ dependency 'infobar', '~> 0.8'
27
+ dependency 'mize', '~> 0.6'
28
+ dependency 'search_ui', '~> 0.0'
29
+ dependency 'all_images', '~> 0.5.0'
30
+ dependency 'ollama-ruby', '~> 0.3.0'
29
31
  development_dependency 'debug'
30
32
 
31
33
  install_library do
data/bin/changes ADDED
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'ollama'
4
+ include Ollama
5
+ require 'tins'
6
+
7
+ def x(cmd)
8
+ output=`#{cmd}`
9
+ $?.success? or fail "failed to execute #{cmd.inspect}"
10
+ output
11
+ end
12
+
13
+ def find_highest_version_tag(filename)
14
+ File.open(filename, ?r) do |input|
15
+ tags = []
16
+ input.each do |line|
17
+ line.scan(/^## \d{4}-\d{2}-\d{2} v(\d+\.\d+\.\d+)$/) do
18
+ tags << $1
19
+ end
20
+ end
21
+ tags.map {
22
+ Tins::StringVersion::Version.new(_1)
23
+ }.max
24
+ end
25
+ end
26
+
27
+ def compute_change(range_from, range_to)
28
+ range_from = range_from.to_s.sub(/\Av?/, ?v)
29
+ range_to = range_to.to_s.sub(/\Av?/, ?v)
30
+ range = "#{range_from}..#{range_to}"
31
+
32
+ log=x("git log #{range}")
33
+ $?.success? or exit 1
34
+
35
+ date=x("git log -n1 --pretty='format:%cd' --date=short #{range_to}")
36
+
37
+ if log.strip.empty?
38
+ return <<~EOT
39
+
40
+ ## #{date} #{range_to}
41
+ EOT
42
+ end
43
+
44
+ base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
45
+ model = ENV.fetch('OLLAMA_MODEL', 'llama3.1')
46
+
47
+ system = <<~EOT
48
+ You are a Ruby programmer generating a change log entry in markdown syntax,
49
+ summarizing the code changes for a new version in a professional way.
50
+ EOT
51
+
52
+ prompt = <<~EOT
53
+ - Summarize the changes in the following git log messages as bullet points.
54
+ - List significant changes as bullet points using markdown when applicable.
55
+ - Don't refer to single commits by sha1 hash.
56
+ - Don't add information about changes you are not sure about.
57
+ - Don't output any additional chatty remarks, notes, introductions,
58
+ communications.
59
+
60
+ #{log}
61
+ EOT
62
+
63
+ if ENV['DEBUG'].to_i == 1
64
+ STDERR.puts "system:\n#{system}"
65
+ STDERR.puts "prompt:\n#{prompt}"
66
+ end
67
+
68
+ options = Ollama::Options.new(
69
+ num_ctx: 8192,
70
+ num_predict: 1024,
71
+ temperature: 0,
72
+ #seed: 1337,
73
+ top_p: 1,
74
+ min_p: 0.1,
75
+ )
76
+
77
+ ollama = Client.new(base_url:, read_timeout: 120)
78
+ changes = ollama.generate(model:, system:, prompt:, options:, stream: false).response
79
+
80
+ return <<~EOT
81
+
82
+ ## #{date} #{range_to}
83
+
84
+ #{changes}
85
+ EOT
86
+ end
87
+
88
+ x("git fetch --tags")
89
+
90
+ case command = ARGV.shift
91
+ when 'range'
92
+ range = ARGV.shift
93
+ if range =~ /\A(.+)\.\.(.+)\z/
94
+ range_from, range_to = $1, $2
95
+ puts compute_change(range_from, range_to)
96
+ else
97
+ fail "need range of the form v1.2.3..v1.2.4"
98
+ end
99
+ when 'full', 'add'
100
+ ary = []
101
+ tags=x("git tag").lines.grep(/^v?\d+\.\d+\.\d+$/).map(&:chomp).map {
102
+ Tins::StringVersion::Version.new(_1.sub(/\Av/, ''))
103
+ }.sort
104
+ if command == 'full'
105
+ date=x("git log -n1 --pretty='format:%cd' --date=short v#{tags.first}").chomp
106
+ ary << <<~EOT
107
+
108
+ ## #{date} v#{tags.first}
109
+
110
+ * Start
111
+ EOT
112
+ tags.each_cons(2) do |range_from, range_to|
113
+ ary << compute_change(range_from, range_to)
114
+ end
115
+ ary.reverse!
116
+ ary.unshift <<~EOT
117
+ # Changes
118
+ EOT
119
+ puts ary
120
+ else
121
+ filename = ARGV.shift or fail 'need file to add to'
122
+ start_tag = find_highest_version_tag(filename)
123
+ tags = tags.drop_while { |t| t < start_tag }
124
+ ary = []
125
+ tags.each_cons(2) do |range_from, range_to|
126
+ ary << compute_change(range_from, range_to)
127
+ end
128
+ ary.empty? and exit
129
+ ary.reverse!
130
+ File.open(filename) do |input|
131
+ File.secure_write(filename) do |output|
132
+ start_add = nil
133
+ input.each do |line|
134
+ if start_add.nil? && line =~ /^# Changes$/
135
+ start_add = true
136
+ output.puts line
137
+ next
138
+ end
139
+ if start_add && line =~ /^$/
140
+ ary.each do |change|
141
+ STDERR.puts change
142
+ output.puts change
143
+ end
144
+ output.puts line
145
+ start_add = false
146
+ next
147
+ end
148
+ output.puts line
149
+ end
150
+ end
151
+ end
152
+ end
153
+ else
154
+ puts <<~end
155
+ Usage: #{File.basename($0)} help|range|full|add
156
+ end
157
+ end
data/bin/code_comment ADDED
@@ -0,0 +1,178 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'utils'
4
+ require 'ollama'
5
+ include Ollama
6
+
7
+ def fetch_method(filename_linenumber)
8
+ result = ''
9
+ source_location = filename_linenumber.source_location
10
+ lf = Tins::LinesFile.for_filename(source_location.filename, source_location.linenumber)
11
+ if spaces = lf.match_backward(/^(\s*)def\s+(?:\S+?)(?:\(|\s*$)/)&.first
12
+ line_number_begin = lf.line_number
13
+ lf.match_forward(/^#{spaces}end/)
14
+ line_number_end = lf.line_number
15
+ line_number_begin.upto(line_number_end) do |line_number|
16
+ lf.line_number = line_number
17
+ result << lf.line
18
+ end
19
+ end
20
+ result
21
+ end
22
+
23
+ def fetch_file(filename_linenumber)
24
+ source_location = filename_linenumber.source_location
25
+ File.read(source_location.filename)
26
+ end
27
+
28
+ filename_linenumber = ARGV.shift or fail "require file_name as second argument"
29
+ method = fetch_method(filename_linenumber)
30
+ #file = fetch_file(filename_linenumber)
31
+ files = Dir['{lib,spec,test}/**/*.rb']
32
+ base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
33
+ model = ENV.fetch('OLLAMA_MODEL', 'llama3.1')
34
+ #file = File.read(file_name)
35
+ #call_sites = %x(cscope -L -3 "#{method_name}" $(find . -name '*.rb') | awk '{ print $1 ":" $3 }').lines.map(&:chomp).uniq
36
+ #methods = call_sites.map { fetch_method(_1) } * ?\n
37
+
38
+ cheatsheet = <<EOT
39
+ # YARD CHEATSHEET http://yardoc.org
40
+
41
+ ## May 2020 - updated fork: https://gist.github.com/phansch/db18a595d2f5f1ef16646af72fe1fb0e
42
+
43
+ cribbed from http://pastebin.com/xgzeAmBn
44
+
45
+ Templates to remind you of the options and formatting for the different types of objects you might
46
+ want to document using YARD.
47
+
48
+ ## Modules
49
+
50
+ # Namespace for classes and modules that handle serving documentation over HTTP
51
+
52
+ ## Classes
53
+
54
+ # Abstract base class for CLI utilities. Provides some helper methods for
55
+ # the option parser
56
+ #
57
+ # @author Full Name
58
+ # @abstract
59
+ # @attr [Types] attribute_name a full description of the attribute
60
+ # @attr_reader [Types] name description of a readonly attribute
61
+ # @attr_writer [Types] name description of writeonly attribute
62
+ # @deprecated Describe the reason or provide alt. references here
63
+
64
+ ## Methods
65
+
66
+ # An alias to {Parser::SourceParser}'s parsing method
67
+ #
68
+ # @author Donovan Bray
69
+ #
70
+ # @see http://example.com Description of URL
71
+ # @see SomeOtherClass#method
72
+ #
73
+ # @deprecated Use {#my_new_method} instead of this method because
74
+ # it uses a library that is no longer supported in Ruby 1.9.
75
+ # The new method accepts the same parameters.
76
+ #
77
+ # @abstract
78
+ # @private
79
+ #
80
+ # @param subject [String] The subject
81
+ # @param from [String] ('nobody') From address
82
+ # @param to [String] Recipient email
83
+ # @param body [String] ('') The email's body
84
+ #
85
+ # @param (see User#initialize)
86
+ # @param [OptionParser] opts the option parser object
87
+ # @param [Array<String>] args the arguments passed from input. This
88
+ # array will be modified.
89
+ # @param [Array<String, Symbol>] list the list of strings and symbols.
90
+ #
91
+ # The options parsed out of the commandline.
92
+ # Default options are:
93
+ # :format => :dot
94
+ #
95
+ # @example Reverse a string
96
+ # "mystring.reverse" #=> "gnirtsym"
97
+ #
98
+ # @example Parse a glob of files
99
+ # YARD.parse('lib/**/*.rb')
100
+ #
101
+ # @raise [ExceptionClass] description
102
+ #
103
+ # @return [optional, types, ...] description
104
+ # @return [true] always returns true
105
+ # @return [void]
106
+ # @return [String, nil] the contents of our object or nil
107
+ # if the object has not been filled with data.
108
+ #
109
+ # We don't care about the "type" here:
110
+ # @return the object
111
+ #
112
+ # @return [String, #read] a string or object that responds to #read
113
+ # @return description here with no types
114
+
115
+ ## Anywhere
116
+
117
+ # @todo Add support for Jabberwocky service
118
+ # There is an open source Jabberwocky library available
119
+ # at http://somesite.com that can be integrated easily
120
+ # into the project.
121
+
122
+ ## Blocks
123
+
124
+ # for block {|a, b, c| ... }
125
+ # @yield [a, b, c] Description of block
126
+ #
127
+ # @yieldparam [optional, types, ...] argname description
128
+ # @yieldreturn [optional, types, ...] description
129
+ EOT
130
+
131
+ system = <<EOT
132
+ You are a Ruby code commenter that writes succinct, simple ruby YARD comments.
133
+ EOT
134
+ system = nil
135
+
136
+ prompt = <<EOT
137
+ Analyze this code:
138
+
139
+ #{files.map { File.read(_1) } * ?\n}
140
+
141
+ Then output a succinct YARD comment for the method below.
142
+
143
+ Follow the following guidelines:
144
+ - Do not repeat the ruby method code.
145
+ - Do not use `, `ruby, ```, ```ruby in your response.
146
+ - Start each line of your comment with a single # character.
147
+
148
+ Here's a cheatsheet for YARD you can peek into:
149
+
150
+ #{cheatsheet}
151
+
152
+ And this is the method you should document:
153
+
154
+ #{method}
155
+ EOT
156
+
157
+ options = Ollama::Options.new(
158
+ #repeat_penalty: 1.8,
159
+ num_ctx: 8192,
160
+ num_predict: 512,
161
+ temperature: 0,
162
+ #repeat_last_n: -1,
163
+ ##seed: 1337,
164
+ top_p: 1,
165
+ min_p: 0.1,
166
+ )
167
+
168
+ if ENV['DEBUG'].to_i == 1
169
+ File.open('debug.log', ?w) do |log|
170
+ log.puts "system:\n#{system}"
171
+ log.puts "prompt:\n#{prompt}"
172
+ log.puts "filename_linenumber: #{filename_linenumber}"
173
+ log.puts JSON.pretty_generate(options)
174
+ end
175
+ end
176
+
177
+ ollama = Client.new(base_url:, read_timeout: 120)
178
+ ollama.generate(model:, system:, prompt:, options:, stream: false, &Print)
@@ -0,0 +1,11 @@
1
+ #!/usr/bin/env ruby
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
9
+
10
+ exec 'ollama_cli', '-M', "#{config}/options.json",
11
+ '-s', "#{config}/system.txt", '-p', "#{config}/prompt.txt"
data/bin/probe CHANGED
@@ -5,10 +5,6 @@ require 'tins/xt'
5
5
  require 'tins/lines_file'
6
6
  include Tins::GO
7
7
  require 'utils'
8
- begin
9
- require 'utils/line_formatter'
10
- rescue LoadError
11
- end
12
8
  include Utils
13
9
  require 'drb'
14
10
 
@@ -45,19 +41,8 @@ def find_cmd(*cmds, on_fail: -> *cmds { raise fail "no #{cmds * '|'} command fou
45
41
  cmds.map { |c| `which #{c}`.full?(:chomp) }.compact.first or on_fail.(*cmds)
46
42
  end
47
43
 
48
- def spring?
49
- `bin/spring status`.lines.first =~ /^Spring is running:/
50
- rescue Errno::ENOENT
51
- false
52
- end
53
- singleton_class.class_eval do
54
- memoize_function :spring?
55
- end
56
-
57
44
  def start_server
58
45
  Thread.abort_on_exception = $DEBUG
59
- spring? and
60
- puts "Found spring running, I'll try to use it for running tests."
61
46
 
62
47
  begin
63
48
  DRb.start_service
@@ -82,7 +67,7 @@ def connect_server
82
67
  end
83
68
  end
84
69
  if $opts[?c]
85
- opts = $opts.subhash(*%w[n t f]).each_with_object([]) { |(k, v), a|
70
+ opts = $opts.subhash(*%w[n t]).each_with_object([]) { |(k, v), a|
86
71
  v.full? and a.concat [ "-#{k}", v ]
87
72
  }
88
73
  probe_server.enqueue opts + $args
@@ -99,7 +84,7 @@ if i = ARGV.index('--')
99
84
  else
100
85
  $args = ARGV.dup
101
86
  end
102
- $opts = go 'lct:n:u:C:f:h', $args
87
+ $opts = go 'lct:n:u:C:h', $args
103
88
  $opts[?h] and usage
104
89
 
105
90
  $uri = $opts[?u] || 'drbunix:probe.socket'
@@ -117,16 +102,7 @@ puts "Running tests in #{$args.inspect}"
117
102
 
118
103
  case ($opts[?t] || $config.probe.test_framework).to_sym
119
104
  when :rspec
120
- case
121
- when spring?
122
- rspec = %w[ bin/spring rspec ]
123
- else
124
- rspec = [ find_cmd('rspec', 'spec') ]
125
- end
126
- rspec << '-rutils'
127
- unless $args.any? { |a| a.start_with?('-f') }
128
- rspec << '-f' << ($opts[?f] || 'Utils::LineFormatter')
129
- end
105
+ rspec = [ find_cmd('rspec', 'spec') ]
130
106
  $args = $args.map do |a|
131
107
  if Utils::Editor::FILE_LINENUMBER_REGEXP =~ a
132
108
  $~.captures.compact * ':'
data/bin/sync_dir CHANGED
@@ -81,7 +81,7 @@ diff_dir.each_line do |line|
81
81
  system "vimdiff #{s.inspect} #{d.inspect}"
82
82
  when /\Aq/i
83
83
  exit
84
- else
84
+ else
85
85
  next
86
86
  end
87
87
  redo
data/lib/utils/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Utils
2
2
  # Utils version
3
- VERSION = '0.46.0'
3
+ VERSION = '0.48.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:
data/utils.gemspec CHANGED
@@ -1,35 +1,36 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: utils 0.46.0 ruby lib
2
+ # stub: utils 0.48.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "utils".freeze
6
- s.version = "0.46.0".freeze
6
+ s.version = "0.48.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 = "2024-08-20"
11
+ s.date = "2024-09-09"
12
12
  s.description = "This ruby gem provides some useful command line utilities".freeze
13
13
  s.email = "flori@ping.de".freeze
14
- s.executables = ["ascii7".freeze, "blameline".freeze, "check-yaml".freeze, "classify".freeze, "create_cstags".freeze, "create_tags".freeze, "discover".freeze, "edit".freeze, "edit_wait".freeze, "enum".freeze, "fix-brew".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]
14
+ s.executables = ["ascii7".freeze, "blameline".freeze, "changes".freeze, "check-yaml".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]
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/file_xt.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/check-yaml".freeze, "bin/classify".freeze, "bin/create_cstags".freeze, "bin/create_tags".freeze, "bin/discover".freeze, "bin/edit".freeze, "bin/edit_wait".freeze, "bin/enum".freeze, "bin/fix-brew".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, "lib/utils.rb".freeze, "lib/utils/config_file.rb".freeze, "lib/utils/editor.rb".freeze, "lib/utils/file_xt.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, "COPYING".freeze, "Gemfile".freeze, "README.md".freeze, "Rakefile".freeze, "bin/ascii7".freeze, "bin/blameline".freeze, "bin/changes".freeze, "bin/check-yaml".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, "lib/utils.rb".freeze, "lib/utils/config_file.rb".freeze, "lib/utils/editor.rb".freeze, "lib/utils/file_xt.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]
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.5.16".freeze
20
+ s.rubygems_version = "3.5.18".freeze
21
21
  s.summary = "Some useful command line utilities".freeze
22
22
 
23
23
  s.specification_version = 4
24
24
 
25
- s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.16.1".freeze])
25
+ s.add_development_dependency(%q<gem_hadar>.freeze, ["~> 1.17.1".freeze])
26
26
  s.add_development_dependency(%q<debug>.freeze, [">= 0".freeze])
27
+ s.add_runtime_dependency(%q<drb>.freeze, [">= 0".freeze])
27
28
  s.add_runtime_dependency(%q<tins>.freeze, ["~> 1.14".freeze])
28
29
  s.add_runtime_dependency(%q<term-ansicolor>.freeze, ["~> 1.3".freeze])
29
30
  s.add_runtime_dependency(%q<pstree>.freeze, ["~> 0.3".freeze])
30
- s.add_runtime_dependency(%q<infobar>.freeze, [">= 0".freeze])
31
- s.add_runtime_dependency(%q<mize>.freeze, [">= 0".freeze])
32
- s.add_runtime_dependency(%q<search_ui>.freeze, [">= 0".freeze])
33
- s.add_runtime_dependency(%q<drb>.freeze, [">= 0".freeze])
34
- s.add_runtime_dependency(%q<all_images>.freeze, [">= 0.0.2".freeze])
31
+ s.add_runtime_dependency(%q<infobar>.freeze, ["~> 0.8".freeze])
32
+ s.add_runtime_dependency(%q<mize>.freeze, ["~> 0.6".freeze])
33
+ s.add_runtime_dependency(%q<search_ui>.freeze, ["~> 0.0".freeze])
34
+ s.add_runtime_dependency(%q<all_images>.freeze, ["~> 0.5.0".freeze])
35
+ s.add_runtime_dependency(%q<ollama-ruby>.freeze, ["~> 0.3.0".freeze])
35
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.46.0
4
+ version: 0.48.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Florian Frank
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-08-20 00:00:00.000000000 Z
11
+ date: 2024-09-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 1.16.1
19
+ version: 1.17.1
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 1.16.1
26
+ version: 1.17.1
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: debug
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: drb
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: tins
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -84,86 +98,88 @@ dependencies:
84
98
  name: infobar
85
99
  requirement: !ruby/object:Gem::Requirement
86
100
  requirements:
87
- - - ">="
101
+ - - "~>"
88
102
  - !ruby/object:Gem::Version
89
- version: '0'
103
+ version: '0.8'
90
104
  type: :runtime
91
105
  prerelease: false
92
106
  version_requirements: !ruby/object:Gem::Requirement
93
107
  requirements:
94
- - - ">="
108
+ - - "~>"
95
109
  - !ruby/object:Gem::Version
96
- version: '0'
110
+ version: '0.8'
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: mize
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - ">="
115
+ - - "~>"
102
116
  - !ruby/object:Gem::Version
103
- version: '0'
117
+ version: '0.6'
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - ">="
122
+ - - "~>"
109
123
  - !ruby/object:Gem::Version
110
- version: '0'
124
+ version: '0.6'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: search_ui
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - ">="
129
+ - - "~>"
116
130
  - !ruby/object:Gem::Version
117
- version: '0'
131
+ version: '0.0'
118
132
  type: :runtime
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - ">="
136
+ - - "~>"
123
137
  - !ruby/object:Gem::Version
124
- version: '0'
138
+ version: '0.0'
125
139
  - !ruby/object:Gem::Dependency
126
- name: drb
140
+ name: all_images
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - ">="
143
+ - - "~>"
130
144
  - !ruby/object:Gem::Version
131
- version: '0'
145
+ version: 0.5.0
132
146
  type: :runtime
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - ">="
150
+ - - "~>"
137
151
  - !ruby/object:Gem::Version
138
- version: '0'
152
+ version: 0.5.0
139
153
  - !ruby/object:Gem::Dependency
140
- name: all_images
154
+ name: ollama-ruby
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - ">="
157
+ - - "~>"
144
158
  - !ruby/object:Gem::Version
145
- version: 0.0.2
159
+ version: 0.3.0
146
160
  type: :runtime
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - ">="
164
+ - - "~>"
151
165
  - !ruby/object:Gem::Version
152
- version: 0.0.2
166
+ version: 0.3.0
153
167
  description: This ruby gem provides some useful command line utilities
154
168
  email: flori@ping.de
155
169
  executables:
156
170
  - ascii7
157
171
  - blameline
172
+ - changes
158
173
  - check-yaml
159
174
  - classify
175
+ - code_comment
176
+ - commit_message
160
177
  - create_cstags
161
178
  - create_tags
162
179
  - discover
163
180
  - edit
164
181
  - edit_wait
165
182
  - enum
166
- - fix-brew
167
183
  - git-empty
168
184
  - git-versions
169
185
  - json_check
@@ -211,15 +227,17 @@ files:
211
227
  - Rakefile
212
228
  - bin/ascii7
213
229
  - bin/blameline
230
+ - bin/changes
214
231
  - bin/check-yaml
215
232
  - bin/classify
233
+ - bin/code_comment
234
+ - bin/commit_message
216
235
  - bin/create_cstags
217
236
  - bin/create_tags
218
237
  - bin/discover
219
238
  - bin/edit
220
239
  - bin/edit_wait
221
240
  - bin/enum
222
- - bin/fix-brew
223
241
  - bin/git-empty
224
242
  - bin/git-versions
225
243
  - bin/json_check
@@ -279,7 +297,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
279
297
  - !ruby/object:Gem::Version
280
298
  version: '0'
281
299
  requirements: []
282
- rubygems_version: 3.5.16
300
+ rubygems_version: 3.5.18
283
301
  signing_key:
284
302
  specification_version: 4
285
303
  summary: Some useful command line utilities
data/bin/fix-brew DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- PREFIX=$(brew --prefix)
4
- sudo chgrp -R brew $PREFIX
5
- sudo chmod -R g+w $PREFIX