rexe 0.2.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -0
  3. data/exe/rexe +15 -14
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: facbd7a97a0fba70fb40170f61f53a127b6cb1ec05d44aed85a653a97b711d88
4
- data.tar.gz: f742717a826d26f719485bf7cb562e598d1c3130ca3abe4065c2bd1bc90c34c0
3
+ metadata.gz: cfda8c2ee84b6747e85e1ba54954fefab0da7e246916808994c67976b291e714
4
+ data.tar.gz: c2221ed77248835efaf56f0f10ffe31803eca929760f67b0c274ac2ed4c1d423
5
5
  SHA512:
6
- metadata.gz: 819cf812598dfb9612310a71c4b9bb5c8fa00442e16650b9cb8441b2e21a36e39a9e1ead336ca4be9451edf26edf9599f14b1c75ac5935fd069535118f5d78c2
7
- data.tar.gz: fe8998aab47ae22b8082439305b28f719296117f183cf49e632ecfe6192cb02bcc99a2536ba9b7b37361642c27619c0cff7d92bae14cd5a8f2a0017369aaab6d
6
+ metadata.gz: 4b6809b8e4dc6b66cca019993eed4cfcddb65a80c75abcfccb9986206f8f59c1e2d3f4c128bff587899a24c32aeb13a082b5b597ada934b785390f9322ae46c7
7
+ data.tar.gz: 5127aa52ded297c3a53529b23174f6ec1fa397c59033fd4da5bca0adc700eccd12327c84abab9e644171384a1cabf653a523bbcee8dd96b8ea4abdf17a049243
data/CHANGELOG.md CHANGED
@@ -1,6 +1,17 @@
1
1
  ## rexe -- Ruby Command Line Executor
2
2
 
3
3
 
4
+ ### v0.3.1
5
+
6
+ * Help text fixes.
7
+
8
+
9
+ ### v0.3.0
10
+
11
+ * For consistency with requires, specifying multiple load files on the command line can be done
12
+ with comma separated filespecs.
13
+
14
+
4
15
  ### v0.2.0
5
16
 
6
17
  * Improve README and verbose logging.
data/exe/rexe CHANGED
@@ -11,7 +11,7 @@ require 'shellwords'
11
11
  # Rexe - Ruby Executor
12
12
  class Rexe < Struct.new(:input_mode, :loads, :requires, :verbose)
13
13
 
14
- VERSION = '0.2.0'
14
+ VERSION = '0.3.1'
15
15
 
16
16
  def initialize
17
17
  self.input_mode = :string
@@ -31,14 +31,14 @@ class Rexe < Struct.new(:input_mode, :loads, :requires, :verbose)
31
31
  Options:
32
32
 
33
33
  -h, --help Print help and exit
34
- -l, --load A_RUBY_FILE Load this Ruby source code file
34
+ -l, --load RUBY_FILE(S) Ruby file(s) to load, comma separated
35
35
  -m, --mode MODE Mode with which to handle input (i.e. what `self` will be in the code):
36
36
  -ms for each line to be handled separately as a string (default)
37
37
  -me for an enumerator of lines (least memory consumption for big data)
38
38
  -mb for 1 big string (all lines combined into single multiline string)
39
39
  -mn to execute the specified Ruby code on no input at all
40
40
  -r, --require REQUIRES Gems and built-in libraries (e.g. shellwords, yaml) to require, comma separated
41
- -v, --[no-]verbose Verbose mode, writes to stderr
41
+ -v, --[no-]verbose Verbose mode (logs to stderr)
42
42
 
43
43
  If there is an .rexerc file in your home directory, it will be run as Ruby code
44
44
  before processing the input.
@@ -62,6 +62,10 @@ class Rexe < Struct.new(:input_mode, :loads, :requires, :verbose)
62
62
  def parse_command_line
63
63
  prepend_environment_options
64
64
 
65
+ add_comma_sep_tokens_to_array = ->(string, array) do
66
+ string.split(',').map(&:strip).each { |r| array << r }
67
+ end
68
+
65
69
  OptionParser.new do |parser|
66
70
 
67
71
  parser.on("-h", "--help", "Show help") do |_help_requested|
@@ -69,12 +73,12 @@ class Rexe < Struct.new(:input_mode, :loads, :requires, :verbose)
69
73
  exit
70
74
  end
71
75
 
72
- parser.on('-l', '--load RUBY_FILE', 'Loads and runs this Ruby file') do |v|
73
- self.loads << v
76
+ parser.on('-l', '--load RUBY_FILE(S)', 'Ruby file(s) to load, comma separated') do |v|
77
+ add_comma_sep_tokens_to_array.(v, self.loads)
74
78
  end
75
79
 
76
80
  parser.on('-m', '--mode MODE',
77
- 'Mode with which to handle input (-ms for string (default), -me for enumerator)') do |v|
81
+ 'Mode with which to handle input (-ms (default), -me, -mb, mn)') do |v|
78
82
 
79
83
  modes = {
80
84
  's' => :string,
@@ -90,11 +94,12 @@ class Rexe < Struct.new(:input_mode, :loads, :requires, :verbose)
90
94
  end
91
95
  end
92
96
 
93
- parser.on('-r', '--require REQUIRES', 'Gems and modules to require, comma separated') do |v|
94
- v.split(',').map(&:strip).each { |r| self.requires << r }
97
+ parser.on('-r', '--require REQUIRE(S)',
98
+ 'Gems and built-in libraries (e.g. shellwords, yaml) to require, comma separated') do |v|
99
+ add_comma_sep_tokens_to_array.(v, self.requires)
95
100
  end
96
101
 
97
- parser.on('-v', '--[no-]verbose', 'Verbose mode') do |v|
102
+ parser.on('-v', '--[no-]verbose', 'Verbose mode (logs to stderr)') do |v|
98
103
  self.verbose = v
99
104
  end
100
105
  end.parse!
@@ -135,23 +140,21 @@ class Rexe < Struct.new(:input_mode, :loads, :requires, :verbose)
135
140
 
136
141
  log_if_verbose("rexe version #{VERSION} -- #{Time.now}")
137
142
  log_if_verbose('Source Code: ' + ARGV.join(' '))
143
+ log_if_verbose('Options: ' + self.to_h.to_s)
138
144
 
139
145
  requires.each do |r|
140
- log_if_verbose("Requiring #{r}")
141
146
  require(r)
142
147
  end
143
148
 
144
149
  load_global_config_if_exists
145
150
 
146
151
  loads.each do |file|
147
- log_if_verbose("Loading #{file}")
148
152
  load(file)
149
153
  end
150
154
 
151
155
  source_code = "Proc.new { #{ARGV.join(' ')} }"
152
156
  code = eval(source_code)
153
157
 
154
-
155
158
  actions = {
156
159
  string: -> { STDIN.each { |l| execute(l.chomp, code) } },
157
160
  enumerator: -> { execute(STDIN.each_line, code) },
@@ -170,5 +173,3 @@ end
170
173
  # and must not have it run at that time:
171
174
  called_as_script = (File.basename($0) == File.basename(__FILE__))
172
175
  Rexe.new.call if called_as_script
173
-
174
-
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.2.0
4
+ version: 0.3.1
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-02-04 00:00:00.000000000 Z
11
+ date: 2019-02-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler