rexe 0.10.2 → 0.10.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +36 -22
  4. data/exe/rexe +2 -2
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bdd31e24705dfe69cc4f83f5529d1fd528401cb1a675e4203c037c92c4d88eae
4
- data.tar.gz: '08e378d2729a9af62773deed3f4b653e702b97835e08ceb1b77622eda78d63be'
3
+ metadata.gz: 606431741970f4fde8a4d54e93c788af091f7422868b2f5975477a217767497c
4
+ data.tar.gz: 326d91170d3759fdb35f74eceb4bf308ff545ee8cebff1a8e22699de6e9f7a4b
5
5
  SHA512:
6
- metadata.gz: bb5f6e5d5a8a19b18fd6ebdd6e5a12bdd6defe25638a91a9602697ba36057bbc905f1c0fb64ba30f830651bb825566eec455d94570f21751458e8c29ad371a0a
7
- data.tar.gz: 676a94dfa2890c7711b6863dd9840c22cc402d09c940d4eace18832f78e254ff96fb1bf226e0f795c42da8c9f3c17f7630df68d54a7544bf54f8033a71cf2dfb
6
+ metadata.gz: 722be782787590850d8651fc2afb9040f617c26b376713e0aee52d73ddc5765c9d412cdb852542d5ef5705a8a0136738125a0d5ed4af2d3c080093345d82684f
7
+ data.tar.gz: e1a97fae20c9bdeb2db1db74e76c41342461689222225ee875fa02d6a4e2af0b78ab8208b3db4110f6ba68fc39e1e3b917fc62c9e41b46cc5ff24eee11792bae
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  ## rexe -- Ruby Command Line Executor
2
2
 
3
3
 
4
+ ### v0.10.3
5
+
6
+ * Fix: parsing should not be attempted if in no input mode.
7
+ * Improve README.
8
+
4
9
  ### v0.10.2
5
10
 
6
11
  * Fix problem in :none input format mode.
data/README.md CHANGED
@@ -3,8 +3,10 @@ title: The `rexe` Command Line Executor and Filter
3
3
  date: 2019-02-15
4
4
  ---
5
5
 
6
- [Caution: This is a long article! If you lose patience reading it, I suggest skimming the headings
7
- and the source code, and at minimum, reading the Conclusion.]
6
+ _[Caution: This is a long article! If you lose patience reading it, I suggest skimming the headings
7
+ and the source code, and at minimum, reading the Conclusion.]_
8
+
9
+ ----
8
10
 
9
11
  I love the power of the command line, but not the awkwardness of shell scripting
10
12
  languages. Sure, there's a lot that can be done with them, but it doesn't take
@@ -57,7 +59,7 @@ line, tipping the scale so that it is practical to do it more often.
57
59
  Here is `rexe`'s help text as of the time of this writing:
58
60
 
59
61
  ```
60
- rexe -- Ruby Command Line Executor/Filter -- v0.10.2 -- https://github.com/keithrbennett/rexe
62
+ rexe -- Ruby Command Line Executor/Filter -- v0.10.3 -- https://github.com/keithrbennett/rexe
61
63
 
62
64
  Executes Ruby code on the command line, optionally taking standard input and writing to standard output.
63
65
 
@@ -101,15 +103,13 @@ so that you can specify options implicitly (e.g. `export REXE_OPTIONS="-r awesom
101
103
  -v no, -v yes, -v false, -v true, -v n, -v y, -v +, but not -v -
102
104
  ```
103
105
 
104
- ### Simplifying the Rexe Invocation with Configuration
106
+ ### Simplifying the Rexe Invocation
105
107
 
106
- `rexe` provides two approaches to configuration:
108
+ There are two main ways we can simplify the `rexe` command line:
107
109
 
108
- * the `REXE_OPTIONS` environment variable
109
- * loading Ruby files before executing the code using `-l`, or implicitly with `~/.rexerc`
110
-
111
- These approaches enable removing configuration information from your `rexe` command,
112
- making it shorter and simpler to read.
110
+ * by extracting configuration into the `REXE_OPTIONS` environment variable
111
+ * by extracting low level and/or shared code into files that are loaded using `-l`,
112
+ or implicitly with `~/.rexerc`
113
113
 
114
114
 
115
115
  ### The REXE_OPTIONS Environment Variable
@@ -333,19 +333,35 @@ If you may have more input than would fit in memory, you can do the following:
333
333
  * use [lazy enumerators](https://www.honeybadger.io/blog/using-lazy-enumerators-to-work-with-large-files-in-ruby/)
334
334
 
335
335
 
336
+ ### Input Formats
337
+
338
+ `rexe` can parse your input in any of several formats if you like.
339
+ You would request this in the _input format_ (`-i`) option.
340
+ Legal values are:
341
+
342
+ * `-ij` - JSON
343
+ * `-im` - Marshal
344
+ * `-in` - [None] (default)
345
+ * `-iy` - YAML
346
+
347
+ Except for `-in`, which passes the text to your code untouched, your input will be parsed
348
+ in the specified format, and the resulting object passed into your code as `self`.
349
+
350
+ The input format option is ignored if the input _mode_ is `-mn` ("no input" executor mode, the default),
351
+ since there is no preprocessing of standard input in that mode.
336
352
 
337
353
  ### Output Formats
338
354
 
339
- Several output formats are provided for your convenience. Here they are in alphabetical order:
355
+ Several output formats are provided for your convenience. Here they are:
340
356
 
341
- * `-oa` (Awesome Print) - calls `.ai` on the object to get the string that `ap` would print
342
- * `-oi` (Inspect) - calls `inspect` on the object
343
- * `-oj` (JSON) - calls `to_json` on the object
344
- * `-oJ` (Pretty JSON) calls `JSON.pretty_generate` with the object
345
- * `-on` (No Output) - output is suppressed
346
- * `-op` (Puts) - produces what `puts` would output
347
- * `-os` (To String) - calls `to_s` on the object
348
- * `-oy` (YAML) - calls `to_yaml` on the object
357
+ * `-oa` - Awesome Print - calls `.ai` on the object to get the string that `ap` would print
358
+ * `-oi` - Inspect - calls `inspect` on the object
359
+ * `-oj` - JSON - calls `to_json` on the object
360
+ * `-oJ` - Pretty JSON calls `JSON.pretty_generate` with the object
361
+ * `-on` - No Output - output is suppressed
362
+ * `-op` - Puts - produces what `puts` would output
363
+ * `-os` - To String - calls `to_s` on the object
364
+ * `-oy` - YAML - calls `to_yaml` on the object
349
365
 
350
366
  All formats will implicitly `require` anything needed to accomplish their task (e.g. `require 'yaml'`).
351
367
 
@@ -496,8 +512,6 @@ interpreter sees your code, it's all in a single line. Adding the semicolon fixe
496
512
  ```
497
513
  ➜ ~  cowsay hello | rexe -me "print %Q{\u001b[33m}; \
498
514
  puts to_a"
499
-
500
- eval_context_object: #<Enumerator:0x00007f92b1972840>
501
515
  _______
502
516
  < hello >
503
517
  -------
@@ -723,7 +737,7 @@ A word of caution though --
723
737
  the complexity and difficulty of sharing your `rexe` scripts across systems
724
738
  will be proportional to the extent to which you use environment variables
725
739
  and loaded files for configuration and shared code.
726
- Be responsible and disciplined in making this configuration as organized as possible.
740
+ Be responsible and disciplined in making this configuration and code as organized as possible.
727
741
 
728
742
  #### Footnotes
729
743
 
data/exe/rexe CHANGED
@@ -10,7 +10,7 @@ require 'shellwords'
10
10
 
11
11
  class Rexe < Struct.new(:input_format, :input_mode, :loads, :output_format, :requires, :verbose, :noop)
12
12
 
13
- VERSION = '0.10.2'
13
+ VERSION = '0.10.3'
14
14
 
15
15
  def initialize
16
16
  clear_options
@@ -218,7 +218,7 @@ class Rexe < Struct.new(:input_format, :input_mode, :loads, :output_format, :req
218
218
 
219
219
 
220
220
  def execute(eval_context_object, code)
221
- unless input_format == :none
221
+ if input_format != :none && input_mode != :no_input
222
222
  eval_context_object = input_parser.(eval_context_object)
223
223
  end
224
224
 
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: 0.10.2
4
+ version: 0.10.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Keith Bennett
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-03-09 00:00:00.000000000 Z
11
+ date: 2019-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler