rexe 1.5.0 → 1.6.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 +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +1 -1
- data/exe/rexe +37 -8
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab6cd585e21edba16a3a5c8a8891e476ec637439d7ad138f4bd3100eb7612dd9
|
4
|
+
data.tar.gz: a5726d9c8796bbe3cba5ce72d29fc47baf1a424a88ee9ee85ddc437e07a659ec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4ed213f525f937ed0c5a34d0731e4e4373a47d1aa185fa98a6478f73946009afbd91fc50241b6e2ca2aadd377ee1b6d1d812cf3c0f79a7e19d6219d5856aa6ce
|
7
|
+
data.tar.gz: 33772f5dbe83863c18405950cfd84b128a36a8733f7a459221f74cfce1ed7d076bd8b3f815f221b05efc0386ad2b59c4a65e8e3842f412cebfeb91516fa876b9
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,16 @@
|
|
1
1
|
## rexe -- Ruby Command Line Executor/Filter
|
2
2
|
|
3
|
+
### 1.6.0
|
4
|
+
|
5
|
+
* Replace calls to `exists?`, which has been removed, with `exist?`.
|
6
|
+
* Add warning messages to stderr for unspecified options (input/output format, input mode),
|
7
|
+
but only when logging is disabled.
|
8
|
+
|
9
|
+
### 1.5.1
|
10
|
+
|
11
|
+
* Change string concatenations using << to creation of new strings with += to accommodate default-frozen strings.
|
12
|
+
|
13
|
+
|
3
14
|
### 1.5.0
|
4
15
|
|
5
16
|
* Switch from AwesomePrint to AmazingPrint, and change all references in text, help, etc.
|
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.
|
76
|
+
rexe -- Ruby Command Line Executor/Filter -- v1.6.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,
|
data/exe/rexe
CHANGED
@@ -15,7 +15,7 @@ require 'shellwords'
|
|
15
15
|
|
16
16
|
class Rexe
|
17
17
|
|
18
|
-
VERSION = '1.
|
18
|
+
VERSION = '1.6.0'
|
19
19
|
|
20
20
|
PROJECT_URL = 'https://github.com/keithrbennett/rexe'
|
21
21
|
|
@@ -57,7 +57,7 @@ class Rexe
|
|
57
57
|
|
58
58
|
|
59
59
|
def clear
|
60
|
-
self.input_filespec
|
60
|
+
self.input_filespec = nil
|
61
61
|
self.input_format = :none
|
62
62
|
self.input_mode = :none
|
63
63
|
self.output_format = :none
|
@@ -123,7 +123,7 @@ class Rexe
|
|
123
123
|
|
124
124
|
def formatters
|
125
125
|
@formatters ||= {
|
126
|
-
amazing_print: ->(obj) { obj.ai
|
126
|
+
amazing_print: ->(obj) { obj.ai + "\n" },
|
127
127
|
inspect: ->(obj) { obj.inspect + "\n" },
|
128
128
|
json: ->(obj) { obj.to_json },
|
129
129
|
marshal: ->(obj) { Marshal.dump(obj) },
|
@@ -247,7 +247,7 @@ class Rexe
|
|
247
247
|
to the command line so that you can specify options implicitly
|
248
248
|
(e.g. `export REXE_OPTIONS="-r amazing_print,yaml"`)
|
249
249
|
|
250
|
-
|
250
|
+
HEREDOC
|
251
251
|
|
252
252
|
@help_text.freeze
|
253
253
|
end
|
@@ -289,6 +289,29 @@ class Rexe
|
|
289
289
|
|
290
290
|
prepend_environment_options
|
291
291
|
|
292
|
+
input_mode_specified = false
|
293
|
+
input_format_specified = false
|
294
|
+
output_format_specified = false
|
295
|
+
|
296
|
+
report_unspecified_options = ->() do
|
297
|
+
messages = []
|
298
|
+
|
299
|
+
unless input_mode_specified
|
300
|
+
messages << 'Input mode not specified. Defaulting to -mn (none).'
|
301
|
+
end
|
302
|
+
unless input_format_specified
|
303
|
+
messages << 'Input format not specified. Defaulting to -in (none).'
|
304
|
+
end
|
305
|
+
unless output_format_specified
|
306
|
+
messages << 'Output mode not specified. Defaulting to -on (none).'
|
307
|
+
end
|
308
|
+
|
309
|
+
if messages.any?
|
310
|
+
$stderr.puts("#{messages.join("\n")}")
|
311
|
+
$stderr.puts("See help (run with -h) for more information.\n\n")
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
292
315
|
OptionParser.new do |parser|
|
293
316
|
|
294
317
|
parser.on('-c', '--clear_options', "Clear all previous command line options") do |v|
|
@@ -302,8 +325,10 @@ class Rexe
|
|
302
325
|
end
|
303
326
|
options.input_filespec = v
|
304
327
|
options.input_format = autodetect_file_format(v)
|
328
|
+
input_format_specified = true
|
305
329
|
if [:json, :yaml].include?(options.input_format)
|
306
330
|
options.input_mode = :one_big_string
|
331
|
+
input_mode_specified = true
|
307
332
|
end
|
308
333
|
end
|
309
334
|
|
@@ -326,6 +351,7 @@ class Rexe
|
|
326
351
|
if options.input_format.nil?
|
327
352
|
raise("Input mode was '#{v}' but must be one of #{lookups.input_formats.keys}.")
|
328
353
|
end
|
354
|
+
input_format_specified = true
|
329
355
|
end
|
330
356
|
|
331
357
|
parser.on('-l', '--load RUBY_FILE(S)', 'Ruby file(s) to load, comma separated, or ! to clear') do |v|
|
@@ -335,7 +361,7 @@ class Rexe
|
|
335
361
|
loadfiles = v.split(',').map(&:strip).map { |s| File.expand_path(s) }
|
336
362
|
removes, adds = loadfiles.partition { |filespec| filespec[0] == '-' }
|
337
363
|
|
338
|
-
existent, nonexistent = adds.partition { |filespec| File.
|
364
|
+
existent, nonexistent = adds.partition { |filespec| File.exist?(filespec) }
|
339
365
|
if nonexistent.any?
|
340
366
|
raise("\nDid not find the following files to load: #{nonexistent}\n\n")
|
341
367
|
else
|
@@ -353,6 +379,7 @@ class Rexe
|
|
353
379
|
if options.input_mode.nil?
|
354
380
|
raise("Input mode was '#{v}' but must be one of #{lookups.input_modes.keys}.")
|
355
381
|
end
|
382
|
+
input_mode_specified = true
|
356
383
|
end
|
357
384
|
|
358
385
|
# See https://stackoverflow.com/questions/54576873/ruby-optionparser-short-code-for-boolean-option
|
@@ -371,6 +398,7 @@ class Rexe
|
|
371
398
|
if [options.output_format_tty, options.output_format_block].include?(nil)
|
372
399
|
raise("Bad output mode '#{v}'; each must be one of #{lookups.output_formats.keys}.")
|
373
400
|
end
|
401
|
+
output_format_specified = true
|
374
402
|
end
|
375
403
|
|
376
404
|
parser.on('-r', '--require REQUIRE(S)',
|
@@ -413,6 +441,7 @@ class Rexe
|
|
413
441
|
options.requires = options.requires.sort.uniq
|
414
442
|
options.loads.uniq!
|
415
443
|
|
444
|
+
report_unspecified_options.() if options.log_format == :none
|
416
445
|
options
|
417
446
|
|
418
447
|
end
|
@@ -436,7 +465,7 @@ class Rexe
|
|
436
465
|
|
437
466
|
private def load_global_config_if_exists
|
438
467
|
filespec = File.join(Dir.home, '.rexerc')
|
439
|
-
load(filespec) if File.
|
468
|
+
load(filespec) if File.exist?(filespec)
|
440
469
|
end
|
441
470
|
|
442
471
|
|
@@ -516,7 +545,7 @@ class Rexe
|
|
516
545
|
raise error # re-raise the error, can't fix it
|
517
546
|
else
|
518
547
|
load_dir = File.dirname(gem_path)
|
519
|
-
$LOAD_PATH
|
548
|
+
$LOAD_PATH += load_dir
|
520
549
|
require the_require
|
521
550
|
end
|
522
551
|
end
|
@@ -566,4 +595,4 @@ def bundler_run(&block)
|
|
566
595
|
end
|
567
596
|
|
568
597
|
|
569
|
-
bundler_run { Rexe::Main.new.call }
|
598
|
+
bundler_run { Rexe::Main.new.call }
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rexe
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keith Bennett
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-02-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: amazing_print
|
@@ -125,7 +125,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
125
125
|
- !ruby/object:Gem::Version
|
126
126
|
version: '0'
|
127
127
|
requirements: []
|
128
|
-
rubygems_version: 3.1
|
128
|
+
rubygems_version: 3.4.1
|
129
129
|
signing_key:
|
130
130
|
specification_version: 4
|
131
131
|
summary: Ruby Command Line Executor
|