utils 0.56.1 → 0.57.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: c084e3a5580950140252810adfa52663324149594e25ce6e3ed6f94329bab624
4
- data.tar.gz: 0d3a709885df968bd9111f3b1c303cb23c5ff5f00519e2982a565f8d568403ac
3
+ metadata.gz: 4abd94fcd2224832c93dc8a3b96be8d4e453595a8dc3c9a49054f26410949e06
4
+ data.tar.gz: 181d44c9af9e8ca2c85522b8acea9e37e829ae99e14160037e32485a349de21c
5
5
  SHA512:
6
- metadata.gz: 0bc1513dc0ca75893424dc0ed6b85b6671cc32ee52bef80797f9915a092550cd3636fbf5fc4fa65576d0f2b066b728d6995f7ec4a5a669a9f9294a8a0df37d55
7
- data.tar.gz: 88fc874d4f5255029a586e8c9b05123f211cade072814405085e617492dddc0d0e363823fd4b1068fd95c8b138d1568d678e7f8532b111486642e7bd7e4075e6
6
+ metadata.gz: acf4408a0f237e3a48d652e4868e1491ed7b59c294c3e6da4dd70ba17669061865f3ddc9b04f7f7762d0d2e3df7201afc377e1ec450239a2f8edef15f8c2d0ed
7
+ data.tar.gz: 2ce6999f1c07e0524d7f0ec82fdd1a3340a7bae99fa340bdb6790be6382c87a3f86e99004e6989982d4db1fca924fd93e03a1cdc4f93ca3606d9d34c09534f25
data/bin/changes CHANGED
@@ -5,7 +5,7 @@ include Ollama
5
5
  require 'tins/xt'
6
6
 
7
7
  def x(cmd)
8
- output=`#{cmd}`
8
+ output = `#{cmd}`
9
9
  $?.success? or fail "failed to execute #{cmd.inspect}"
10
10
  output
11
11
  end
@@ -31,10 +31,10 @@ def compute_change(range_from, range_to)
31
31
  range = "#{range_from}..#{range_to}"
32
32
  end
33
33
 
34
- log=x("git log #{range}")
34
+ log = x("git log #{range}")
35
35
  $?.success? or exit 1
36
36
 
37
- date=x("git log -n1 --pretty='format:%cd' --date=short #{range_to}")
37
+ date = x("git log -n1 --pretty='format:%cd' --date=short #{range_to}")
38
38
 
39
39
  if log.strip.empty?
40
40
  return <<~EOT
@@ -125,7 +125,7 @@ when 'full', 'add'
125
125
  _1.sub(/\Av/, '').version
126
126
  }.sort
127
127
  if command == 'full'
128
- date=x("git log -n1 --pretty='format:%cd' --date=short v#{tags.first}").chomp
128
+ date = x("git log -n1 --pretty='format:%cd' --date=short v#{tags.first}").chomp
129
129
  ary << <<~EOT
130
130
 
131
131
  ## #{date} v#{tags.first}
data/bin/git-md CHANGED
@@ -1,29 +1,37 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'ollama'
3
+ require 'utils/markdown'
4
+ include Utils::Markdown
5
+ require 'utils/pager'
4
6
  require 'shellwords'
5
7
 
6
- def markdown(message)
7
- Ollama::Utils::ANSIMarkdown.parse(message)
8
- end
9
-
10
8
  cmd = %{git log --color=always --pretty=format:"commit %C(auto)%H%d%nDate: %Cgreen%cD (%cr)%Creset%nAuthor: %Cblue%an <%ae>%Creset%n%nMARKUP%n%s%n%n%b%nMARKDOWN%n"}
11
9
 
12
- IO.popen("#{cmd} #{Shellwords.join(ARGV)}") do |log|
13
- until log.eof?
14
- message = nil
15
- log.each do |line|
16
- case line
17
- when /^MARKUP$/
18
- message = ''
19
- when /^MARKDOWN$/
20
- puts markdown(message + "\n---\n")
21
- message = nil
22
- else
23
- if message
24
- message << line
10
+ core_pager = `git config get core.pager`.chomp.full?
11
+ git_pager = ENV['GIT_PAGER'].full?
12
+ default_pager = ENV['PAGER'].full?
13
+ if fallback_pager = `which less`.chomp.full? || `which more`.chomp.full?
14
+ fallback_pager << ' -r'
15
+ end
16
+ my_pager = git_pager || core_pager || default_pager || fallback_pager
17
+
18
+ Utils::Pager.pager(command: my_pager) do |output|
19
+ IO.popen("#{cmd} #{Shellwords.join(ARGV)}") do |log|
20
+ until log.eof?
21
+ message = nil
22
+ log.each do |line|
23
+ case line
24
+ when /^MARKUP$/
25
+ message = ''
26
+ when /^MARKDOWN$/
27
+ output.puts markdown(message + "\n---\n")
28
+ message = nil
25
29
  else
26
- puts line
30
+ if message
31
+ message << line
32
+ else
33
+ output.puts line
34
+ end
27
35
  end
28
36
  end
29
37
  end
data/bin/md ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'utils/markdown'
4
+ include Utils::Markdown
5
+ require 'utils/pager'
6
+
7
+ rendered = markdown(ARGF.read)
8
+ default_pager = ENV['PAGER'].full?
9
+ if fallback_pager = `which less`.chomp.full? || `which more`.chomp.full?
10
+ fallback_pager << ' -r'
11
+ end
12
+ my_pager = default_pager || fallback_pager
13
+
14
+ Utils::Pager.pager(lines: rendered.count(?\n), command: my_pager) do |output|
15
+ output.puts rendered
16
+ end
@@ -0,0 +1,11 @@
1
+ require 'ollama'
2
+
3
+ module Utils
4
+ module Markdown
5
+ module_function
6
+
7
+ def markdown(message)
8
+ Ollama::Utils::ANSIMarkdown.parse(message)
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,30 @@
1
+ require 'tins'
2
+
3
+ module Utils
4
+ module Pager
5
+ module_function
6
+
7
+ def pager(command: nil, lines: nil, &block)
8
+ if block
9
+ if my_pager = pager(command:, lines:)
10
+ IO.popen(my_pager, 'w') do |output|
11
+ output.sync = true
12
+ yield output
13
+ output.close
14
+ end
15
+ else
16
+ yield STDOUT
17
+ end
18
+ else
19
+ return unless STDOUT.tty?
20
+ if lines
21
+ if lines >= Tins::Terminal.lines
22
+ pager(command:)
23
+ end
24
+ else
25
+ command
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
data/lib/utils/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Utils
2
2
  # Utils version
3
- VERSION = '0.56.1'
3
+ VERSION = '0.57.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
@@ -10,6 +10,8 @@ module Utils
10
10
  require 'utils/probe_server'
11
11
  require 'utils/ssh_tunnel_specification'
12
12
  require 'utils/line_blamer'
13
+ require 'utils/markdown'
14
+ require 'utils/pager'
13
15
 
14
16
  require 'utils/xt/source_location_extension'
15
17
  class ::Object
data/utils.gemspec CHANGED
@@ -1,19 +1,19 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: utils 0.56.1 ruby lib
2
+ # stub: utils 0.57.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "utils".freeze
6
- s.version = "0.56.1".freeze
6
+ s.version = "0.57.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-09-30"
11
+ s.date = "2024-10-03"
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, "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-md".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-md".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]
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-md".freeze, "git-versions".freeze, "json_check".freeze, "long_lines".freeze, "md".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/markdown.rb".freeze, "lib/utils/md5.rb".freeze, "lib/utils/pager.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-md".freeze, "bin/git-versions".freeze, "bin/json_check".freeze, "bin/long_lines".freeze, "bin/md".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/markdown.rb".freeze, "lib/utils/md5.rb".freeze, "lib/utils/pager.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]
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.56.1
4
+ version: 0.57.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-09-30 00:00:00.000000000 Z
11
+ date: 2024-10-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: gem_hadar
@@ -212,6 +212,7 @@ executables:
212
212
  - git-versions
213
213
  - json_check
214
214
  - long_lines
215
+ - md
215
216
  - myex
216
217
  - number_files
217
218
  - on_change
@@ -241,7 +242,9 @@ extra_rdoc_files:
241
242
  - lib/utils/irb.rb
242
243
  - lib/utils/line_blamer.rb
243
244
  - lib/utils/line_formatter.rb
245
+ - lib/utils/markdown.rb
244
246
  - lib/utils/md5.rb
247
+ - lib/utils/pager.rb
245
248
  - lib/utils/patterns.rb
246
249
  - lib/utils/probe_server.rb
247
250
  - lib/utils/ssh_tunnel_specification.rb
@@ -271,6 +274,7 @@ files:
271
274
  - bin/git-versions
272
275
  - bin/json_check
273
276
  - bin/long_lines
277
+ - bin/md
274
278
  - bin/myex
275
279
  - bin/number_files
276
280
  - bin/on_change
@@ -297,7 +301,9 @@ files:
297
301
  - lib/utils/irb.rb
298
302
  - lib/utils/line_blamer.rb
299
303
  - lib/utils/line_formatter.rb
304
+ - lib/utils/markdown.rb
300
305
  - lib/utils/md5.rb
306
+ - lib/utils/pager.rb
301
307
  - lib/utils/patterns.rb
302
308
  - lib/utils/probe_server.rb
303
309
  - lib/utils/ssh_tunnel_specification.rb