markdown_exec 1.3.2 → 1.3.3.1

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -30,7 +30,6 @@ require_relative 'lib/tap'
30
30
  include CLI
31
31
 
32
32
  include Tap
33
- tap_config envvar: MarkdownExec::TAP_DEBUG
34
33
 
35
34
  RuboCop::RakeTask.new do |task|
36
35
  task.requires << 'rubocop-minitest'
@@ -42,12 +41,6 @@ task :rubocopminitest do
42
41
  `rubocop --require rubocop-minitest`
43
42
  end
44
43
 
45
- # desc 'rspec'
46
- # task :rspec do
47
- # puts "in rspec"
48
- # `pwd && rspec`
49
- # end
50
-
51
44
  task default: %i[test reek rubocop rubocopminitest]
52
45
  # task default: %i[rspec test reek rubocop rubocopminitest]
53
46
 
@@ -80,6 +73,12 @@ task :clean do
80
73
  system 'rm *.gem'
81
74
  end
82
75
 
76
+ desc 'minitest'
77
+ task :minitest do
78
+ puts `bundle exec ruby ./lib/object_present.rb`
79
+ puts `bundle exec ruby ./lib/cached_nested_file_reader.rb`
80
+ end
81
+
83
82
  desc 'reek'
84
83
  task :reek do
85
84
  `reek --config .reek .`
@@ -244,15 +243,58 @@ task :update_menu_yml do
244
243
 
245
244
  ## secondary options
246
245
  #
246
+ {
247
+ arg_name: 'BOOL',
248
+ default: false,
249
+ description: 'Display only blocks of type "bash"',
250
+ env_var: 'MDE_BASH_ONLY',
251
+ opt_name: 'bash_only',
252
+ procname: 'val_as_bool'
253
+ },
247
254
  {
248
255
  arg_name: "INT.#{DISPLAY_LEVEL_BASE}-#{DISPLAY_LEVEL_MAX}",
249
256
  default: DISPLAY_LEVEL_DEFAULT,
250
- description: "Output display level (#{DISPLAY_LEVEL_BASE} to #{DISPLAY_LEVEL_MAX} [data, +context, +info])",
257
+ description: 'Output display level ' \
258
+ "(#{DISPLAY_LEVEL_BASE} to #{DISPLAY_LEVEL_MAX} " \
259
+ '[data, +context, +info])',
251
260
  env_var: 'MDE_DISPLAY_LEVEL',
252
261
  long_name: 'display-level',
253
262
  opt_name: 'display_level',
254
263
  procname: 'val_as_int'
255
264
  },
265
+ {
266
+ arg_name: 'REGEX',
267
+ default: nil,
268
+ description: 'Exclude blocks with name matching',
269
+ env_var: 'MDE_EXCLUDE_BY_NAME_REGEX',
270
+ opt_name: 'exclude_by_name_regex',
271
+ procname: 'val_as_str'
272
+ },
273
+ {
274
+ arg_name: 'REGEX',
275
+ default: nil,
276
+ description: 'Exclude blocks with shell matching',
277
+ env_var: 'MDE_EXCLUDE_BY_SHELL_REGEX',
278
+ opt_name: 'exclude_by_shell_regex',
279
+ procname: 'val_as_str'
280
+ },
281
+ {
282
+ arg_name: 'BOOL',
283
+ default: true,
284
+ description: 'Hide all blocks of type "expect"',
285
+ env_var: 'MDE_EXCLUDE_EXPECT_BLOCKS',
286
+ opt_name: 'exclude_expect_blocks',
287
+ procname: 'val_as_bool'
288
+ },
289
+ {
290
+ arg_name: 'BOOL',
291
+ default: true,
292
+ description: 'Exclude blocks with name matching expression " \
293
+ "`block_name_hidden_match`',
294
+ env_var: 'MDE_HIDE_BLOCKS_BY_NAME',
295
+ opt_name: 'hide_blocks_by_name',
296
+ procname: 'val_as_bool'
297
+ },
256
298
  {
257
299
  arg_name: 'INT.1-',
258
300
  default: 32,
@@ -267,7 +309,6 @@ task :update_menu_yml do
267
309
  default: MarkdownExec::BIN_NAME,
268
310
  description: 'Name prefix for stdout files',
269
311
  env_var: 'MDE_LOGGED_STDOUT_FILENAME_PREFIX',
270
- # long_name: 'logged-stdout-filename-prefix',
271
312
  opt_name: 'logged_stdout_filename_prefix',
272
313
  procname: 'val_as_str'
273
314
  },
@@ -276,7 +317,6 @@ task :update_menu_yml do
276
317
  default: false,
277
318
  description: 'Display document name in block selection menu',
278
319
  env_var: 'MDE_MENU_BLOCKS_WITH_DOCNAME',
279
- # long_name: 'menu-blocks-with-docname',
280
320
  opt_name: 'menu_blocks_with_docname',
281
321
  procname: 'val_as_bool'
282
322
  },
@@ -285,10 +325,25 @@ task :update_menu_yml do
285
325
  default: false,
286
326
  description: 'Display headings (levels 1,2,3) in block selection menu',
287
327
  env_var: 'MDE_MENU_BLOCKS_WITH_HEADINGS',
288
- # long_name: 'menu-blocks-with-headings',
289
328
  opt_name: 'menu_blocks_with_headings',
290
329
  procname: 'val_as_bool'
291
330
  },
331
+ {
332
+ arg_name: 'BOOL',
333
+ default: true,
334
+ description: 'Display Exit option at top of menu',
335
+ env_var: 'MDE_MENU_EXIT_AT_TOP',
336
+ opt_name: 'menu_exit_at_top',
337
+ procname: 'val_as_bool'
338
+ },
339
+ {
340
+ arg_name: 'BOOL',
341
+ default: true,
342
+ description: 'Display Exit option in menu',
343
+ env_var: 'MDE_MENU_WITH_EXIT',
344
+ opt_name: 'menu_with_exit',
345
+ procname: 'val_as_bool'
346
+ },
292
347
  {
293
348
  arg_name: 'BOOL',
294
349
  default: false,
@@ -298,6 +353,14 @@ task :update_menu_yml do
298
353
  opt_name: 'output_execution_summary',
299
354
  procname: 'val_as_bool'
300
355
  },
356
+ {
357
+ arg_name: 'BOOL',
358
+ default: false,
359
+ description: 'Output saved script filename at end of execution',
360
+ env_var: 'MDE_OUTPUT_SAVED_SCRIPT_FILENAME',
361
+ opt_name: 'output_saved_script_filename',
362
+ procname: 'val_as_bool'
363
+ },
301
364
  {
302
365
  arg_name: 'BOOL',
303
366
  default: false,
@@ -339,7 +402,6 @@ task :update_menu_yml do
339
402
  default: 0o755,
340
403
  description: 'chmod for saved scripts',
341
404
  env_var: 'MDE_SAVED_SCRIPT_CHMOD',
342
- # long_name: 'saved-script-chmod',
343
405
  opt_name: 'saved_script_chmod',
344
406
  procname: 'val_as_int'
345
407
  },
@@ -348,7 +410,6 @@ task :update_menu_yml do
348
410
  default: MarkdownExec::BIN_NAME,
349
411
  description: 'Name prefix for saved scripts',
350
412
  env_var: 'MDE_SAVED_SCRIPT_FILENAME_PREFIX',
351
- # long_name: 'saved-script-filename-prefix',
352
413
  opt_name: 'saved_script_filename_prefix',
353
414
  procname: 'val_as_str'
354
415
  },
@@ -366,7 +427,6 @@ task :update_menu_yml do
366
427
  default: 'mde_*.sh',
367
428
  description: 'Glob matching saved scripts',
368
429
  env_var: 'MDE_SAVED_SCRIPT_GLOB',
369
- # long_name: 'saved-script-glob',
370
430
  opt_name: 'saved_script_glob',
371
431
  procname: 'val_as_str'
372
432
  },
@@ -384,11 +444,25 @@ task :update_menu_yml do
384
444
  default: 'mde_*.out.txt',
385
445
  description: 'Glob matching saved outputs',
386
446
  env_var: 'MDE_SAVED_STDOUT_GLOB',
387
- # long_name: 'saved-stdout-glob',
388
447
  opt_name: 'saved_stdout_glob',
389
448
  procname: 'val_as_str'
390
449
  },
391
-
450
+ {
451
+ arg_name: 'REGEX',
452
+ default: nil,
453
+ description: 'Select blocks with name matching',
454
+ env_var: 'MDE_SELECT_BY_NAME_REGEX',
455
+ opt_name: 'select_by_name_regex',
456
+ procname: 'val_as_str'
457
+ },
458
+ {
459
+ arg_name: 'REGEX',
460
+ default: nil,
461
+ description: 'Select blocks with shell matching',
462
+ env_var: 'MDE_SELECT_BY_SHELL_REGEX',
463
+ opt_name: 'select_by_shell_regex',
464
+ procname: 'val_as_str'
465
+ },
392
466
  {
393
467
  default: '^[\(\[].*[\)\]]$',
394
468
  description: 'Pattern for blocks to hide from user-selection',
@@ -415,13 +489,13 @@ task :update_menu_yml do
415
489
  procname: 'val_as_str'
416
490
  },
417
491
  {
418
- default: '<(?<full>(?<type>\$)?(?<name>[A-Za-z]\S*))',
492
+ default: '<(?<full>(?<type>\$)?(?<name>[A-Za-z_\-\.\w]+))',
419
493
  env_var: 'MDE_BLOCK_STDIN_SCAN',
420
494
  opt_name: 'block_stdin_scan',
421
495
  procname: 'val_as_str'
422
496
  },
423
497
  {
424
- default: '>(?<full>(?<type>\$)?(?<name>[A-Za-z]\S*))',
498
+ default: '>(?<full>(?<type>\$)?(?<name>[A-Za-z_\-\.\w]+))',
425
499
  env_var: 'MDE_BLOCK_STDOUT_SCAN',
426
500
  opt_name: 'block_stdout_scan',
427
501
  procname: 'val_as_str'
@@ -439,7 +513,7 @@ task :update_menu_yml do
439
513
  procname: 'val_as_str'
440
514
  },
441
515
  {
442
- default: '^`{3,}(?<shell>[^`\s]*) *(?<name>.*)$',
516
+ default: '^`{3,}(?<shell>[^`\s]*) *:?(?<name>[^\s]*) *(?<rest>.*) *$',
443
517
  env_var: 'MDE_FENCED_START_EX_MATCH',
444
518
  opt_name: 'fenced_start_ex_match',
445
519
  procname: 'val_as_str'
@@ -462,6 +536,12 @@ task :update_menu_yml do
462
536
  opt_name: 'heading3_match',
463
537
  procname: 'val_as_str'
464
538
  },
539
+ {
540
+ default: '^ *@import (.+)$',
541
+ env_var: 'MDE_IMPORT_PATTERN',
542
+ opt_name: 'import_pattern',
543
+ procname: 'val_as_str'
544
+ },
465
545
  {
466
546
  default: '*.[Mm][Dd]',
467
547
  env_var: 'MDE_MD_FILENAME_GLOB',
@@ -612,18 +692,12 @@ task :update_menu_yml do
612
692
  env_var: 'MDE_OUTPUT_DIVIDER_COLOR',
613
693
  opt_name: 'output_divider_color',
614
694
  procname: 'val_as_str'
615
- # },
616
- # {
617
- # default: '',
618
- # description: '',
619
- # env_var: 'MDE_PROMPT_',
620
- # opt_name: 'prompt_',
621
- # procname: 'val_as_str'
622
695
  }
623
696
  ]
624
697
 
625
698
  File.write(MENU_YML,
626
- "# #{MarkdownExec::APP_NAME} - #{MarkdownExec::APP_DESC} (#{MarkdownExec::VERSION})\n" +
699
+ "# #{MarkdownExec::APP_NAME} - #{MarkdownExec::APP_DESC} " \
700
+ "(#{MarkdownExec::VERSION})\n" +
627
701
  menu_options.to_yaml)
628
702
  puts `stat #{MENU_YML}`
629
703
  end
@@ -640,7 +714,10 @@ def update_tab_completion(target)
640
714
  svh[:compreply] = CLI.value_for_cli(svh[:default]) if svh[:compreply].nil?
641
715
  end.tap_inspect name: :svhs, type: :yaml
642
716
 
643
- File.write target, ERB.new(File.read(filespec = File.join(BF, 'tab_completion.sh.erb'))).result(binding)
717
+ File.write target,
718
+ ERB.new(File.read(filespec = File.join(BF,
719
+ 'tab_completion.sh.erb')))
720
+ .result(binding)
644
721
  puts `stat #{filespec}`
645
722
  end
646
723
 
@@ -13,7 +13,7 @@ __filedirs_all()
13
13
  }
14
14
 
15
15
  _mde_echo_version() {
16
- echo "1.3.2"
16
+ echo "1.3.3.1"
17
17
  }
18
18
 
19
19
  _mde() {
@@ -138,4 +138,4 @@ _mde() {
138
138
 
139
139
  complete -o filenames -o nospace -F _mde mde
140
140
  # _mde_echo_version
141
- # echo "Updated: 2022-11-13 18:09:17 UTC"
141
+ # echo "Updated: 2023-10-04 01:23:26 UTC"
@@ -0,0 +1,115 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ # encoding=utf-8
5
+
6
+ # version 2023-10-03
7
+
8
+ require 'bundler/setup'
9
+ Bundler.require(:default)
10
+
11
+ ##
12
+ # The CachedNestedFileReader class provides functionality to read file lines with the ability
13
+ # to process '#import filename' directives. When such a directive is encountered in a file,
14
+ # the corresponding 'filename' is read and its contents are inserted at that location.
15
+ # This class caches read files to avoid re-reading the same file multiple times.
16
+ # It allows clients to read lines with or without providing a block.
17
+ #
18
+ class CachedNestedFileReader
19
+ def initialize(import_pattern: /^ *#import (.+)$/)
20
+ @file_cache = {}
21
+ @import_pattern = import_pattern
22
+ end
23
+
24
+ def readlines(filename, &block)
25
+ if @file_cache.key?(filename)
26
+ @file_cache[filename].each(&block) if block_given?
27
+ return @file_cache[filename]
28
+ end
29
+
30
+ directory_path = File.dirname(filename)
31
+ lines = File.readlines(filename, chomp: true)
32
+ processed_lines = []
33
+
34
+ lines.each do |line|
35
+ if (match = line.match(@import_pattern))
36
+ included_file_path = if match[1].strip.match %r{^/}
37
+ match[1].strip
38
+ else
39
+ File.join(directory_path, match[1].strip)
40
+ end
41
+ processed_lines += readlines(included_file_path, &block)
42
+ else
43
+ processed_lines.push(line)
44
+ yield line if block_given?
45
+ end
46
+ end
47
+
48
+ @file_cache[filename] = processed_lines
49
+ end
50
+
51
+ private
52
+
53
+ def fetch_lines(filename)
54
+ @fetch_lines_cache[filename] ||= File.readlines(filename, chomp: true)
55
+ end
56
+ end
57
+
58
+ if $PROGRAM_NAME == __FILE__
59
+ require 'minitest/autorun'
60
+ require 'tempfile'
61
+
62
+ ##
63
+ # The CachedNestedFileReaderTest class provides testing for
64
+ # the CachedNestedFileReader class.
65
+ #
66
+ class CachedNestedFileReaderTest < Minitest::Test
67
+ def setup
68
+ @file2 = Tempfile.new('test2.txt')
69
+ @file2.write("ImportedLine1\nImportedLine2")
70
+ @file2.rewind
71
+
72
+ @file1 = Tempfile.new('test1.txt')
73
+ @file1.write("Line1\nLine2\n #insert #{@file2.path}\nLine3")
74
+ @file1.rewind
75
+ # binding.pry
76
+ @reader = CachedNestedFileReader.new(import_pattern: /^ *#insert (.+)$/)
77
+ end
78
+
79
+ def teardown
80
+ @file1.close
81
+ @file1.unlink
82
+
83
+ @file2.close
84
+ @file2.unlink
85
+ end
86
+
87
+ def test_readlines_without_imports
88
+ result = []
89
+ @reader.readlines(@file2.path) { |line| result << line }
90
+ assert_equal %w[ImportedLine1 ImportedLine2], result
91
+ end
92
+
93
+ def test_readlines_with_imports
94
+ result = []
95
+ @reader.readlines(@file1.path) { |line| result << line }
96
+ assert_equal %w[Line1 Line2 ImportedLine1 ImportedLine2 Line3], result
97
+ end
98
+
99
+ def test_caching_functionality
100
+ # First read
101
+ result1 = []
102
+ @reader.readlines(@file2.path) { |line| result1 << line }
103
+
104
+ # Simulate file content change
105
+ @file2.reopen(@file2.path, 'w') { |f| f.write('ChangedLine') }
106
+
107
+ # Second read (should read from cache, not the changed file)
108
+ result2 = []
109
+ @reader.readlines(@file2.path) { |line| result2 << line }
110
+
111
+ assert_equal result1, result2
112
+ assert_equal %w[ImportedLine1 ImportedLine2], result2
113
+ end
114
+ end
115
+ end
data/lib/colorize.rb CHANGED
@@ -14,6 +14,10 @@
14
14
  # │ │ │
15
15
  # │5 │ for flashing text
16
16
  class String
17
+ def plain
18
+ self
19
+ end
20
+
17
21
  def black
18
22
  "\033[30m#{self}\033[0m"
19
23
  end
data/lib/env.rb CHANGED
@@ -16,6 +16,7 @@ module Env
16
16
  true
17
17
  end
18
18
 
19
+ # :reek:UtilityFunction
19
20
  def env_bool_false(name)
20
21
  !(val = (name && ENV.fetch(name, nil))).nil? && !(val.empty? || val == '0')
21
22
  end
data/lib/env_opts.rb CHANGED
@@ -11,6 +11,7 @@ include Tap #; tap_config
11
11
  # option to cast input values
12
12
  # value priority: default < environment < argument
13
13
  #
14
+ # :reek:TooManyMethods
14
15
  class EnvOpts
15
16
  attr_reader :opts, :values
16
17
 
@@ -27,50 +28,47 @@ class EnvOpts
27
28
  # add options to menu
28
29
  # calculate help text
29
30
  #
31
+ # :reek:NestedIterators
30
32
  def add_options(opts_raw)
31
33
  return self if opts_raw.nil?
32
34
 
33
- rows = opts_raw.map do |key, opt_raw|
34
- key2 = key_name_to_option_name(key)
35
+ help_rows = opts_raw.map do |key, opt_raw|
36
+ opt_name = key_name_to_option_name(key)
35
37
 
36
- # set_per_options(key2, opt_raw)
37
- @opts[key2] = (opt_raw ||= {})
38
- set_key_value_as_cast key2, EnvOpts.optdefault(opt_raw)
39
-
40
- set_key_value_per_environment_as_cast(key2, opt_raw)
38
+ # set_per_options(opt_name, opt_raw)
39
+ @opts[opt_name] = (opt_raw ||= {})
40
+ set_key_value_as_cast(opt_name, EnvOpts.optdefault(opt_raw))
41
+ set_key_value_per_environment_as_cast(opt_name, opt_raw)
41
42
 
42
43
  [
43
- [20, '-', "--#{key}"],
44
- [16, '-', @opts[key2][:env].present? ? option_name_to_environment_name(key2, @opts[key2]) : ''],
45
- # [24, '-', get_environment_value_from_option(key2, @opts[key2])],
46
- [24, '-', @opts[key2][:default]],
44
+ [20, '-', "--#{opt_name}"],
45
+ [16, '-',
46
+ if @opts[opt_name][:env].present?
47
+ option_name_to_environment_name(opt_name, @opts[opt_name])
48
+ else
49
+ ''
50
+ end],
51
+ # [24, '-', get_environment_value_from_option(opt_name, @opts[opt_name])],
52
+ [24, '-', @opts[opt_name][:default]],
47
53
  [6, '-', if (fixed = opt_raw.fetch(:fixed, nil)).nil?
48
- ":#{option_cast(@opts[key2])}"
54
+ ":#{option_cast(@opts[opt_name])}"
49
55
  else
50
56
  fixed.to_s
51
57
  end]
52
58
  ]
53
- end.tap_yaml 'rows'
59
+ end
54
60
 
55
- max_widths = rows.reduce([0, 0, 0, 0]) do |memo, (c0, c1, c2, c3)|
56
- [
57
- [memo[0], c0[2].to_s.length].max,
58
- [memo[1], c1[2].to_s.length].max,
59
- [memo[2], c2[2].to_s.length].max,
60
- [memo[3], c3[2].to_s.length].max
61
- ]
62
- end.tap_inspect 'max_widths'
63
-
64
- @values['help'] = rows.map do |(c0, c1, c2, c3)|
65
- [format("%#{c0[1]}#{max_widths[0]}s", c0[2]),
66
- format("%#{c1[1]}#{max_widths[1]}s", c1[2]),
67
- format("%#{c2[1]}#{max_widths[2]}s", c2[2]),
68
- format("%#{c3[1]}#{max_widths[3]}s", c3[2])]
69
- end.map do |row|
70
- row.join(' ')
61
+ max_widths = help_rows.reduce([0, 0, 0, 0]) do |memo, vals|
62
+ vals.map.with_index do |val, ind|
63
+ [memo[ind], val[2].to_s.length].max
64
+ end
65
+ end
66
+
67
+ @values['help'] = help_rows.map do |row|
68
+ row.map.with_index do |cell, ind|
69
+ format("%#{cell[1]}#{max_widths[ind]}s", cell[2])
70
+ end.join(' ')
71
71
  end.join("\n")
72
- @opts.tap_inspect '@opts'
73
- @values.tap_inspect '@values'
74
72
 
75
73
  self
76
74
  end
@@ -98,7 +96,8 @@ class EnvOpts
98
96
  arg = argv.fetch(args_ind, '') #.tap_inspect 'argument', source: 'EnvOpts'
99
97
  if arg.start_with? '--'
100
98
  opt_name = arg[2..-1] #.tap_inspect 'opt_name', source: 'EnvOpts'
101
- args_consumed = consume_arguments(opt_name, argv.fetch(args_ind + 1, nil))
99
+ args_consumed = consume_arguments(opt_name,
100
+ argv.fetch(args_ind + 1, nil))
102
101
  end
103
102
 
104
103
  if args_consumed.zero?
@@ -116,37 +115,42 @@ class EnvOpts
116
115
 
117
116
  args_ind += args_consumed
118
117
  end
119
- @opts.tap_inspect '@opts'
120
- @values.tap_inspect '@values'
121
118
 
122
119
  self
123
120
  end
124
121
 
125
122
  # set option current values per environment values
126
123
  #
127
- def set_keys_value_per_environment_as_cast(opts_raw)
124
+ def options_per_environment_as_cast(opts_raw)
128
125
  return self if opts_raw.nil?
129
126
 
130
127
  opts_raw.each do |key, opt_raw|
131
- set_key_value_per_environment_as_cast(key_name_to_option_name(key), opt_raw)
128
+ set_key_value_per_environment_as_cast(key_name_to_option_name(key),
129
+ opt_raw)
132
130
  end
133
- @opts.tap_inspect '@opts'
134
131
 
135
132
  self
136
133
  end
137
134
 
135
+ # symbol name to option name
136
+ # option names use hyphens
137
+ #
138
+ def self.symbol_name_to_option_name(name)
139
+ name.to_s.gsub('_', '-') #.tap_inspect
140
+ end
141
+
138
142
  private
139
143
 
140
144
  # convert key name or symbol to an option name
141
145
  #
142
146
  def key_name_to_option_name(key)
143
- (key.is_a?(Symbol) ? symbol_name_to_option_name(key) : key) #.tap_inspect
147
+ (key.is_a?(Symbol) ? EnvOpts.symbol_name_to_option_name(key) : key) #.tap_inspect
144
148
  end
145
149
 
146
150
  # get cast of environment variable
147
151
  #
148
152
  def option_cast(opt_raw)
149
- (opt_raw[:cast].present? ? opt_raw[:cast].to_s : 'to_s').tap_inspect
153
+ (opt_raw[:cast].present? ? opt_raw[:cast].to_s : 'to_s')
150
154
  end
151
155
 
152
156
  # update value for named option
@@ -177,14 +181,13 @@ class EnvOpts
177
181
  # read and write options using the option name as a method
178
182
  #
179
183
  def method_missing(method_name, *args)
180
- method_name.tap_inspect 'method_name'
181
184
  if method_name.to_s.end_with?('=')
182
185
  value = args.first
183
186
  name = method_name_to_option_name(method_name.to_s[0..-2])
184
187
  set_key_value_as_cast(name, value)
185
188
  else
186
189
  @values[method_name_to_option_name(method_name)]
187
- end.tap_inspect "ref #{method_name}", source: 'EnvOpts'
190
+ end #.tap_inspect "ref #{method_name}", source: 'EnvOpts'
188
191
  end
189
192
 
190
193
  # option name to environment name
@@ -196,23 +199,24 @@ class EnvOpts
196
199
  "#{@values['env-prefix']}#{opt_name.upcase.gsub('-', '_')}"
197
200
  else
198
201
  env_name
199
- end.tap_inspect
202
+ end
200
203
  end
201
204
 
202
205
  # get environment value from option
203
206
  #
204
207
  def get_environment_value_from_option(opt_name, opt_raw)
205
- ENV.fetch(option_name_to_environment_name(opt_name, opt_raw), nil).tap_inspect
208
+ ENV.fetch(option_name_to_environment_name(opt_name, opt_raw),
209
+ nil)
206
210
  end
207
211
 
208
212
  # option names are available as methods
209
213
  #
214
+ # :reek:BooleanParameter
210
215
  def respond_to_missing?(method_name, include_private = false)
211
216
  (@opts.keys.include?(method_name_to_option_name(method_name)) || super)
212
217
  end
213
218
 
214
219
  def set_key_value_as_cast(key, value)
215
- [key, value].tap_inspect 'key, value'
216
220
  opt = @opts[key]
217
221
  set_key_value_raw(key, (opt[:cast] ? value.send(opt[:cast]) : value))
218
222
  end
@@ -220,25 +224,19 @@ class EnvOpts
220
224
  # set key value_per environment as cast
221
225
  #
222
226
  def set_key_value_per_environment_as_cast(key, opt_raw)
223
- key.tap_inspect 'key'
224
- opt_raw.tap_inspect 'opt_raw'
225
227
  return if opt_raw[:env].nil?
226
228
 
227
- value = get_environment_value_from_option(key, opt_raw).tap_inspect 'value'
228
- set_key_value_as_cast(key, opt_raw[:cast] ? value.send(opt_raw[:cast]) : value) unless value.nil?
229
+ value = get_environment_value_from_option(key, opt_raw)
230
+
231
+ return unless value
232
+
233
+ set_key_value_as_cast(key,
234
+ opt_raw[:cast] ? value.send(opt_raw[:cast]) : value)
229
235
  end
230
236
 
231
237
  # set key value (raw)
232
238
  #
233
239
  def set_key_value_raw(key, value)
234
- [key, value].tap_inspect 'key, value'
235
240
  @values[key] = value
236
241
  end
237
-
238
- # symbol name to option name
239
- # option names use hyphens
240
- #
241
- def symbol_name_to_option_name(name)
242
- name.to_s.gsub('_', '-') #.tap_inspect
243
- end
244
242
  end