utils 0.60.1 → 0.61.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: 88ba0780f681bd2eda0c0540db25a4aa5ca26a01f2147ded80e70f4536106438
4
- data.tar.gz: 054cec3fd556ab33f2c5458f0e7ce43e78cd1b86aac31ac031ce52452b320ea5
3
+ metadata.gz: c49b13b25be28b485a47834d29a84674332532062a752b3cae2da1877fca4b38
4
+ data.tar.gz: a2a8292a3b73c5527915f81218be45a9f48af681827aa342c0d79bfc2172ce9d
5
5
  SHA512:
6
- metadata.gz: 3421e11798a097f7d8342919e1e8dfe66d83d17981d1fe23257bbaa9f8ae1c1ac8feeccc9623577b73c6d1f106d794d397e5cd99ad254dcef4bc2dafefdd575c
7
- data.tar.gz: 14008c6d12939b0247679e285e45638bbc6abff83d14071babf9d3fb624284d7737eabd4311bf3e889f6655c2bd68cf84b08da41158a71d589b9fbe4bb19d990
6
+ metadata.gz: 9233604e38ee99da756da940174ccaadf801fef1be301e4cd58bdbfd076fc448a412e48d436ccb8f607729c521bb32096e459282607815888c582be72cded64a
7
+ data.tar.gz: 60f5a01d279a88784aa6c717b2baf11396d0fc5703f30b1353144e650bfba49c9b473114f8817fbfd70326358e99cf6952d18c8a301d233035ef1d095e37d18f
data/bin/code_comment CHANGED
@@ -8,7 +8,7 @@ def fetch_method(filename_linenumber)
8
8
  result = ''
9
9
  source_location = filename_linenumber.source_location
10
10
  lf = Tins::LinesFile.for_filename(source_location.filename, source_location.linenumber)
11
- if spaces = lf.match_backward(/^(\s*)def\s+(?:\S+?)(?:\(|\s*$)/)&.first
11
+ if spaces = lf.match_backward(/^(\s*|.*?(private|protected)\s+)def\s+(?:\S+?)(?:\(|\s*$)/)&.first
12
12
  line_number_begin = lf.line_number
13
13
  lf.match_forward(/^#{spaces}end/)
14
14
  line_number_end = lf.line_number
@@ -26,11 +26,12 @@ def fetch_file(filename_linenumber)
26
26
  end
27
27
 
28
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')
29
+ method = fetch_method(filename_linenumber)
30
+ method_indent = method[/\A( *)/, 1].size
31
+ #file = fetch_file(filename_linenumber)
32
+ files = Dir['{lib,spec,test}/**/*.rb']
33
+ base_url = ENV['OLLAMA_URL'] || 'http://%s' % ENV.fetch('OLLAMA_HOST')
34
+ model = ENV.fetch('OLLAMA_MODEL', 'llama3.2')
34
35
  #file = File.read(file_name)
35
36
  #call_sites = %x(cscope -L -3 "#{method_name}" $(find . -name '*.rb') | awk '{ print $1 ":" $3 }').lines.map(&:chomp).uniq
36
37
  #methods = call_sites.map { fetch_method(_1) } * ?\n
@@ -86,7 +87,10 @@ documentation later.
86
87
  EOT
87
88
 
88
89
  system = <<EOT
89
- You are a Ruby code commenter that writes succinct, simple ruby YARD comments.
90
+ Provide high-quality YARD comments for the given Ruby method, including a brief
91
+ description of its purpose, parameters, raised exceptions (and why), and
92
+ return values, assuming an expert-level understanding of the programming
93
+ concepts involved.
90
94
  EOT
91
95
  system = nil
92
96
 
@@ -95,20 +99,52 @@ Analyze this code:
95
99
 
96
100
  #{files.map { File.read(_1) } * ?\n}
97
101
 
98
- Then output a succinct YARD comment for the method below.
102
+ Here's an example for how you should document a method.
103
+
104
+ # The foo method computes the bar result by processing…
105
+ # then it returns the result.
106
+ #
107
+ # @param first [ String ] the foo string
108
+ # @param second [ Integer ] the number of bars lengthy detailed mutltiline
109
+ # detailed explanation including a newline.
110
+ # @param third [ TrueClass, FalseClass ]
111
+ #
112
+ # @yield [ a, b ]
113
+ #
114
+ # @raise [ ArgumentError ] if block argument wasn't provided
115
+ # @raise [ ArgumentError ] if second parameter was too small.
116
+ #
117
+ # @example
118
+ # bar.foo("blub", 4) { |a, b| … } #=> …
119
+ #
120
+ # @return [ ProcessResult ]
121
+ def foo(first, second, third: false, &block)
122
+ block or raise ArgumentError, 'no &block'
123
+ a = first * 2
124
+ if second < 0
125
+ raise ArgumentError, 'too small'
126
+ end
127
+ b = "foo" * second
128
+ if third
129
+ a = a * b
130
+ end
131
+ block_result = block.(a, b)
132
+ result = process block_result
133
+ return result
134
+ end
99
135
 
100
- Follow the following guidelines:
101
- - Do not repeat the ruby method code.
102
- - Do not use `, `ruby, ```, ```ruby in your response.
103
- - Start each line of your comment with a single # character.
136
+ And this is the method you should document:
104
137
 
105
- Here's a cheatsheet for YARD you can peek into:
138
+ #{method}
106
139
 
107
- #{cheatsheet}
140
+ Output a YARD comment for this method:
108
141
 
109
- And this is the method you should document:
142
+ Format requirements:
110
143
 
111
- #{method}
144
+ 1. Focus on providing a description of the method's purpose, without including any code snippets.
145
+ 2. Never use `, `ruby, ```, ```ruby in your response.
146
+ 3. Never add any other remarks or explanation to your response.
147
+ 4. Start each line of your comment with a single # character.
112
148
  EOT
113
149
 
114
150
  options = Ollama::Options.new(
@@ -131,5 +167,6 @@ if ENV['DEBUG'].to_i == 1
131
167
  end
132
168
  end
133
169
 
134
- ollama = Client.new(base_url:, read_timeout: 120)
135
- ollama.generate(model:, system:, prompt:, options:, stream: false, &Print)
170
+ ollama = Client.new(base_url:, read_timeout: 120)
171
+ response = ollama.generate(model:, system:, prompt:, options:, stream: false).response
172
+ puts response.gsub(/^/) { ' ' * method_indent }
data/bin/git-versions CHANGED
@@ -1,25 +1,25 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'tins/xt'
3
+ require 'tins'
4
4
  require 'term/ansicolor'
5
- include Tins::GO
6
-
7
- $opts = go 'r:v'
8
-
9
5
  class String
10
6
  include Term::ANSIColor
7
+ include Tins::StringVersion
11
8
  end
9
+ require 'shellwords'
12
10
 
13
- regexp = $opts[?r] && Regexp.new($opts[?r]) || /^v((?:\d+\.)*\d+)/
11
+ args = ARGV.dup
12
+ args.empty? and args.concat %w[ --color --stat ]
13
+
14
+ regexp = ENV['GIT_VERSIONS_REGEXP']
15
+ regexp = regexp ? Regexp.new(regexp) : /^v((?:\d+\.)*\d+)/
14
16
 
15
17
  versions = `git tag`.lines.map(&:chomp).grep(regexp).sort_by { |x|
16
18
  x[regexp, 1].version
17
19
  }.reverse
20
+
21
+ git_options = args.empty? ? ' ' : " #{Shellwords.join(args)} "
18
22
  versions.each_cons(2) do |new, old|
19
23
  puts "Version #{new}".red.bold
20
- if $opts[?v]
21
- puts `git log --color --stat -u #{old}..#{new}`
22
- else
23
- puts `git log --color --stat #{old}..#{new}`
24
- end
24
+ puts `git log #{git_options}#{old}..#{new}`
25
25
  end
data/bin/strip_spaces CHANGED
@@ -6,12 +6,9 @@ require 'tins/secure_write'
6
6
  include Tins::SecureWrite
7
7
  require 'tins/find'
8
8
  include Tins::Find
9
+ require 'tins/xt/file_binary'
9
10
  require 'utils'
10
11
 
11
- class ::File
12
- include Utils::FileXt
13
- end
14
-
15
12
  def usage
16
13
  puts <<-EOT
17
14
  Usage: #{File.basename($0)} [OPTS] [PATHS]
data/lib/utils/finder.rb CHANGED
@@ -5,10 +5,6 @@ require 'digest/md5'
5
5
  require 'fileutils'
6
6
  require 'mize'
7
7
 
8
- class ::File
9
- include Utils::FileXt
10
- end
11
-
12
8
  class Utils::Finder
13
9
  include Tins::Find
14
10
  include Utils::Patterns
data/lib/utils/grepper.rb CHANGED
@@ -1,10 +1,6 @@
1
1
  require 'term/ansicolor'
2
2
  require 'tins/xt'
3
3
 
4
- class ::File
5
- include Utils::FileXt
6
- end
7
-
8
4
  class Utils::Grepper
9
5
  include Tins::Find
10
6
  include Utils::Patterns
data/lib/utils/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Utils
2
2
  # Utils version
3
- VERSION = '0.60.1'
3
+ VERSION = '0.61.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/lib/utils.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  module Utils
2
2
  require 'utils/version'
3
- require 'utils/file_xt'
4
3
  require 'utils/md5'
5
4
  require 'utils/patterns'
6
5
  require 'utils/config_file'
data/utils.gemspec CHANGED
@@ -1,23 +1,23 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: utils 0.60.1 ruby lib
2
+ # stub: utils 0.61.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "utils".freeze
6
- s.version = "0.60.1".freeze
6
+ s.version = "0.61.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-10-31"
11
+ s.date = "2024-12-14"
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/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/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/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]
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]
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.22".freeze
20
+ s.rubygems_version = "3.5.23".freeze
21
21
  s.summary = "Some useful command line utilities".freeze
22
22
 
23
23
  s.specification_version = 4
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.60.1
4
+ version: 0.61.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-10-31 00:00:00.000000000 Z
11
+ date: 2024-12-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -248,7 +248,6 @@ extra_rdoc_files:
248
248
  - lib/utils.rb
249
249
  - lib/utils/config_file.rb
250
250
  - lib/utils/editor.rb
251
- - lib/utils/file_xt.rb
252
251
  - lib/utils/finder.rb
253
252
  - lib/utils/grepper.rb
254
253
  - lib/utils/irb.rb
@@ -303,7 +302,6 @@ files:
303
302
  - lib/utils.rb
304
303
  - lib/utils/config_file.rb
305
304
  - lib/utils/editor.rb
306
- - lib/utils/file_xt.rb
307
305
  - lib/utils/finder.rb
308
306
  - lib/utils/grepper.rb
309
307
  - lib/utils/irb.rb
@@ -339,7 +337,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
339
337
  - !ruby/object:Gem::Version
340
338
  version: '0'
341
339
  requirements: []
342
- rubygems_version: 3.5.22
340
+ rubygems_version: 3.5.23
343
341
  signing_key:
344
342
  specification_version: 4
345
343
  summary: Some useful command line utilities
data/lib/utils/file_xt.rb DELETED
@@ -1,46 +0,0 @@
1
- require 'tins'
2
-
3
- module Utils
4
- module FileXt
5
- extend DSLKit::Concern
6
- include File::Constants
7
-
8
- SEEK_SET = File::SEEK_SET
9
-
10
- ZERO = "\x00"
11
- BINARY = "\x01-\x1f\x7f-\xff"
12
-
13
- if defined?(::Encoding)
14
- ZERO.force_encoding(Encoding::ASCII_8BIT)
15
- BINARY.force_encoding(Encoding::ASCII_8BIT)
16
- end
17
-
18
- def binary?
19
- old_pos = tell
20
- seek 0, SEEK_SET
21
- data = read 2 ** 13
22
- !data or data.empty? and return nil
23
- data.count(ZERO) > 0 and return true
24
- data.count(BINARY).to_f / data.size > 0.3
25
- ensure
26
- seek old_pos, SEEK_SET
27
- end
28
-
29
- def ascii?
30
- case binary?
31
- when true then false
32
- when false then true
33
- end
34
- end
35
-
36
- module ClassMethods
37
- def binary?(name)
38
- File.open(name, 'rb') { |f| f.binary? }
39
- end
40
-
41
- def ascii?(name)
42
- File.open(name, 'rb') { |f| f.ascii? }
43
- end
44
- end
45
- end
46
- end