rexe 1.6.0 → 1.7.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.
Files changed (6) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +7 -0
  3. data/README.md +7 -7
  4. data/exe/rexe +30 -34
  5. data/rexe.gemspec +10 -2
  6. metadata +10 -9
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab6cd585e21edba16a3a5c8a8891e476ec637439d7ad138f4bd3100eb7612dd9
4
- data.tar.gz: a5726d9c8796bbe3cba5ce72d29fc47baf1a424a88ee9ee85ddc437e07a659ec
3
+ metadata.gz: 7d4ad1a24022659314b09d706db797d17702d6b879b4b52d0d4068b7fef4ef9c
4
+ data.tar.gz: 04b6759f33142d6e738bd12ce0bad997385f77c02c7e0537ea5f3c609df8ef7b
5
5
  SHA512:
6
- metadata.gz: 4ed213f525f937ed0c5a34d0731e4e4373a47d1aa185fa98a6478f73946009afbd91fc50241b6e2ca2aadd377ee1b6d1d812cf3c0f79a7e19d6219d5856aa6ce
7
- data.tar.gz: 33772f5dbe83863c18405950cfd84b128a36a8733f7a459221f74cfce1ed7d076bd8b3f815f221b05efc0386ad2b59c4a65e8e3842f412cebfeb91516fa876b9
6
+ metadata.gz: 7a51a900c81e65878e13a795708c35e57d41f7226300932bea17105707aa03f9b5246e386ecdb7e3d437361614ccbdbaab63b7fb1b4c6bc59ee28bbd33dcd18a
7
+ data.tar.gz: cc4acaa0817872e3e9ec7960246c721152c7311708abd8bed7bf9e206332c8c6bf579d876c0240d2a98a1780eaade154fd7412b3c3e5fa28d5f8383308ea0323
data/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  ## rexe -- Ruby Command Line Executor/Filter
2
2
 
3
+ ### 1.7.0
4
+
5
+ * Replace amazing_print dependency with awesome_print.
6
+ * Effectively disable `try` method, i.e. print stack trace on errors.
7
+ * In `try` method, rescue StandardError instead of Exception.
8
+
9
+
3
10
  ### 1.6.0
4
11
 
5
12
  * Replace calls to `exists?`, which has been removed, with `exist?`.
data/README.md CHANGED
@@ -73,7 +73,7 @@ Rexe is at https://github.com/keithrbennett/rexe and can be installed with `gem
73
73
  Here is rexe's help text as of the time of this writing:
74
74
 
75
75
  ```
76
- rexe -- Ruby Command Line Executor/Filter -- v1.6.0 -- https://github.com/keithrbennett/rexe
76
+ rexe -- Ruby Command Line Executor/Filter -- v1.7.0 -- https://github.com/keithrbennett/rexe
77
77
 
78
78
  Executes Ruby code on the command line,
79
79
  optionally automating management of standard input and standard output,
@@ -135,7 +135,7 @@ before processing the input.
135
135
 
136
136
  If there is a REXE_OPTIONS environment variable, its content will be prepended
137
137
  to the command line so that you can specify options implicitly
138
- (e.g. `export REXE_OPTIONS="-r amazing_print,yaml"`)
138
+ (e.g. `export REXE_OPTIONS="-r awesome_print,yaml"`)
139
139
  ```
140
140
 
141
141
  ### Simplifying the Rexe Invocation
@@ -239,11 +239,11 @@ $ echo $EUR_RATES_JSON | rexe -gy -ij -mb -oa -n self
239
239
  :input_format: :json
240
240
  :input_mode: :one_big_string
241
241
  :loads: []
242
- :output_format: :amazing_print
243
- :output_format_tty: :amazing_print
244
- :output_format_block: :amazing_print
242
+ :output_format: :awesome_print
243
+ :output_format_tty: :awesome_print
244
+ :output_format_block: :awesome_print
245
245
  :requires:
246
- - amazing_print
246
+ - awesome_print
247
247
  - json
248
248
  - yaml
249
249
  :log_format: :yaml
@@ -741,7 +741,7 @@ For consistency with the `ruby` interpreter, rexe supports requires with the `-r
741
741
 
742
742
  ```bash
743
743
  vvvvvvvvvvvvvvvvvv
744
- $ echo $EUR_RATES_JSON | rexe -r json,amazing_print 'ap JSON.parse(STDIN.read)'
744
+ $ echo $EUR_RATES_JSON | rexe -r json,awesome_print 'ap JSON.parse(STDIN.read)'
745
745
  ^^^^^^^^^^^^^^^^^^
746
746
  ```
747
747
 
data/exe/rexe CHANGED
@@ -15,24 +15,26 @@ require 'shellwords'
15
15
 
16
16
  class Rexe
17
17
 
18
- VERSION = '1.6.0'
18
+ VERSION = '1.7.0'
19
19
 
20
20
  PROJECT_URL = 'https://github.com/keithrbennett/rexe'
21
21
 
22
22
 
23
23
  module Helpers
24
24
 
25
- # Try executing code. If error raised, print message (but not stack trace) & exit -1.
25
+ # Originally the entire run was wrapped in this rescue to make error output more concise.
26
+ # However, I am concerned that hiding the stack trace will make it harder to debug,
27
+ # and be worse than the ugliness of showing it when it is not needed. So, I am commenting
28
+ # out the rescue for now, and will see how it goes. If you have any opinions on this,
29
+ # please let me know at https://github.com/keithrbennett/rexe/issues/5 .
30
+ #
31
+ # (disabled) Try executing code. If error raised, print message (but not stack trace) & exit -1.
26
32
  def try
27
- begin
28
- yield
29
- rescue Exception => e
30
- unless e.class == SystemExit
31
- $stderr.puts("rexe: #{e}")
32
- $stderr.puts("Use the -h option to get help.")
33
- exit(-1)
34
- end
35
- end
33
+ yield
34
+ # rescue StandardError => e
35
+ # $stderr.puts("rexe ERROR: #{e}")
36
+ # $stderr.puts('Use the -h option to get help.')
37
+ # exit(-1)
36
38
  end
37
39
  end
38
40
 
@@ -71,9 +73,6 @@ class Rexe
71
73
  end
72
74
 
73
75
 
74
-
75
-
76
-
77
76
  class Lookups
78
77
  def input_modes
79
78
  @input_modes ||= {
@@ -107,7 +106,7 @@ class Rexe
107
106
 
108
107
  def output_formats
109
108
  @output_formats ||= {
110
- 'a' => :amazing_print,
109
+ 'a' => :awesome_print,
111
110
  'i' => :inspect,
112
111
  'j' => :json,
113
112
  'J' => :pretty_json,
@@ -123,7 +122,7 @@ class Rexe
123
122
 
124
123
  def formatters
125
124
  @formatters ||= {
126
- amazing_print: ->(obj) { obj.ai + "\n" },
125
+ awesome_print: ->(obj) { obj.ai + "\n" },
127
126
  inspect: ->(obj) { obj.inspect + "\n" },
128
127
  json: ->(obj) { obj.to_json },
129
128
  marshal: ->(obj) { Marshal.dump(obj) },
@@ -141,7 +140,7 @@ class Rexe
141
140
  @format_requires ||= {
142
141
  json: 'json',
143
142
  pretty_json: 'json',
144
- amazing_print: 'amazing_print',
143
+ awesome_print: 'awesome_print',
145
144
  pretty_print: 'pp',
146
145
  yaml: 'yaml'
147
146
  }
@@ -149,7 +148,6 @@ class Rexe
149
148
  end
150
149
 
151
150
 
152
-
153
151
  class CommandLineParser
154
152
 
155
153
  include Helpers
@@ -245,7 +243,7 @@ class Rexe
245
243
 
246
244
  If there is a REXE_OPTIONS environment variable, its content will be prepended
247
245
  to the command line so that you can specify options implicitly
248
- (e.g. `export REXE_OPTIONS="-r amazing_print,yaml"`)
246
+ (e.g. `export REXE_OPTIONS="-r awesome_print,yaml"`)
249
247
 
250
248
  HEREDOC
251
249
 
@@ -261,7 +259,7 @@ class Rexe
261
259
  extension = File.extname(filespec).downcase
262
260
  if extension == '.json'
263
261
  :json
264
- elsif extension == '.yml' || extension == '.yaml'
262
+ elsif %w{.yml .yaml}.include?(extension)
265
263
  :yaml
266
264
  else
267
265
  :none
@@ -293,7 +291,7 @@ class Rexe
293
291
  input_format_specified = false
294
292
  output_format_specified = false
295
293
 
296
- report_unspecified_options = ->() do
294
+ report_unspecified_options = -> do
297
295
  messages = []
298
296
 
299
297
  unless input_mode_specified
@@ -307,14 +305,14 @@ class Rexe
307
305
  end
308
306
 
309
307
  if messages.any?
310
- $stderr.puts("#{messages.join("\n")}")
308
+ $stderr.puts(messages.join("\n"))
311
309
  $stderr.puts("See help (run with -h) for more information.\n\n")
312
310
  end
313
311
  end
314
312
 
315
313
  OptionParser.new do |parser|
316
314
 
317
- parser.on('-c', '--clear_options', "Clear all previous command line options") do |v|
315
+ parser.on('-c', '--clear_options', 'Clear all previous command line options') do |v|
318
316
  options.clear
319
317
  end
320
318
 
@@ -339,7 +337,7 @@ class Rexe
339
337
  end
340
338
  end
341
339
 
342
- parser.on("-h", "--help", "Show help") do |_help_requested|
340
+ parser.on("-h", "--help", 'Show help') do |_help_requested|
343
341
  puts help_text
344
342
  exit
345
343
  end
@@ -537,17 +535,15 @@ class Rexe
537
535
  # Bypasses Bundler's restriction on loading gems
538
536
  # (see https://stackoverflow.com/questions/55144094/bundler-doesnt-permit-using-gems-in-project-home-directory)
539
537
  private def require!(the_require)
540
- begin
538
+ require the_require
539
+ rescue LoadError => error
540
+ gem_path = `gem which #{the_require}`
541
+ if gem_path.chomp.strip.empty?
542
+ raise error # re-raise the error, can't fix it
543
+ else
544
+ load_dir = File.dirname(gem_path)
545
+ $LOAD_PATH += load_dir
541
546
  require the_require
542
- rescue LoadError => error
543
- gem_path = `gem which #{the_require}`
544
- if gem_path.chomp.strip.empty?
545
- raise error # re-raise the error, can't fix it
546
- else
547
- load_dir = File.dirname(gem_path)
548
- $LOAD_PATH += load_dir
549
- require the_require
550
- end
551
547
  end
552
548
  end
553
549
 
data/rexe.gemspec CHANGED
@@ -3,6 +3,9 @@ Gem::Specification.new do |spec|
3
3
  spec.name = "rexe"
4
4
 
5
5
  spec.version = -> do
6
+ # This is a bit of a kludge. If there is a commented out VERSION line preceding the active line,
7
+ # this will read the commented line.
8
+ # TODO: Ignore comment lines.
6
9
  rexe_file = File.join(File.dirname(__FILE__), 'exe', 'rexe')
7
10
  version_line = File.readlines(rexe_file).grep(/\s*VERSION\s*=\s*'/).first.chomp
8
11
  version_line.match(/'(.+)'/)[0].gsub("'", '')
@@ -38,11 +41,16 @@ Gem::Specification.new do |spec|
38
41
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
39
42
  spec.require_paths = ["lib"]
40
43
 
41
- spec.add_dependency "amazing_print"
44
+ spec.add_dependency "awesome_print"
42
45
 
43
46
  spec.add_development_dependency "bundler", "~> 2.0"
44
47
  spec.add_development_dependency "os"
45
48
  spec.add_development_dependency "rake", "~> 12.3"
46
- spec.add_development_dependency "rspec", "~> 3.0"
49
+ spec.add_development_dependency "rspec", "~> 3.12"
47
50
 
51
+ # Remove this message (added November 2023) later (maybe July 2024).
52
+ spec.post_install_message = <<~MESSAGE
53
+ Starting with v1.7.0, awesome_print is now used instead of amazing_print
54
+ for fancy human readable output.
55
+ MESSAGE
48
56
  end
metadata CHANGED
@@ -1,17 +1,17 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rexe
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.0
4
+ version: 1.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Bennett
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-02-11 00:00:00.000000000 Z
11
+ date: 2023-11-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: amazing_print
14
+ name: awesome_print
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '3.0'
75
+ version: '3.12'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '3.0'
82
+ version: '3.12'
83
83
  description: Ruby Command Line Executor
84
84
  email:
85
85
  - keithrbennett@gmail.com
@@ -110,7 +110,8 @@ metadata:
110
110
  homepage_uri: https://github.com/keithrbennett/rexe
111
111
  source_code_uri: https://github.com/keithrbennett/rexe
112
112
  changelog_uri: https://github.com/keithrbennett/rexe/blob/master/README.md
113
- post_install_message:
113
+ post_install_message: "Starting with v1.7.0, awesome_print is now used instead of
114
+ amazing_print \nfor fancy human readable output.\n"
114
115
  rdoc_options: []
115
116
  require_paths:
116
117
  - lib
@@ -125,8 +126,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
126
  - !ruby/object:Gem::Version
126
127
  version: '0'
127
128
  requirements: []
128
- rubygems_version: 3.4.1
129
- signing_key:
129
+ rubygems_version: 3.4.22
130
+ signing_key:
130
131
  specification_version: 4
131
132
  summary: Ruby Command Line Executor
132
133
  test_files: []