Class: Rubycli::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/rubycli/environment.rb

Overview

Environment captures runtime flags and configuration derived from ENV / argv.

Instance Method Summary collapse

Constructor Details

#initialize(env: ENV, argv: nil) ⇒ Environment

Returns a new instance of Environment.



6
7
8
9
10
11
12
13
14
15
# File 'lib/rubycli/environment.rb', line 6

def initialize(env: ENV, argv: nil)
  @env = env
  @argv = argv
  @debug = env['RUBYCLI_DEBUG'] == 'true'
  @print_result = env['RUBYCLI_PRINT_RESULT'] == 'true'
  @doc_check_mode = false
  @strict_input = false
  @documentation_issues = []
  scrub_argv_flags!
end

Instance Method Details

#allow_param_comments?Boolean

Returns:

  • (Boolean)


25
26
27
28
# File 'lib/rubycli/environment.rb', line 25

def allow_param_comments?
  value = fetch_env_value('RUBYCLI_ALLOW_PARAM_COMMENT', 'ON')
  %w[on 1 true].include?(value)
end

#clear_documentation_issues!Object



58
59
60
# File 'lib/rubycli/environment.rb', line 58

def clear_documentation_issues!
  @documentation_issues.clear
end

#constant_resolution_modeObject



62
63
64
65
66
67
# File 'lib/rubycli/environment.rb', line 62

def constant_resolution_mode
  value = fetch_env_value('RUBYCLI_AUTO_TARGET', 'strict')
  return :auto if %w[auto on true yes 1].include?(value)

  :strict
end

#debug?Boolean

Returns:

  • (Boolean)


17
18
19
# File 'lib/rubycli/environment.rb', line 17

def debug?
  @debug
end

#disable_doc_check!Object



38
39
40
# File 'lib/rubycli/environment.rb', line 38

def disable_doc_check!
  @doc_check_mode = false
end

#disable_print_result!Object



99
100
101
# File 'lib/rubycli/environment.rb', line 99

def disable_print_result!
  @print_result = false
end

#disable_strict_input!Object



50
51
52
# File 'lib/rubycli/environment.rb', line 50

def disable_strict_input!
  @strict_input = false
end

#doc_check_mode?Boolean

Returns:

  • (Boolean)


34
35
36
# File 'lib/rubycli/environment.rb', line 34

def doc_check_mode?
  @doc_check_mode
end

#documentation_issuesObject



54
55
56
# File 'lib/rubycli/environment.rb', line 54

def documentation_issues
  @documentation_issues.dup
end

#enable_doc_check!Object



30
31
32
# File 'lib/rubycli/environment.rb', line 30

def enable_doc_check!
  @doc_check_mode = true
end

#enable_print_result!Object



95
96
97
# File 'lib/rubycli/environment.rb', line 95

def enable_print_result!
  @print_result = true
end

#enable_strict_input!Object



42
43
44
# File 'lib/rubycli/environment.rb', line 42

def enable_strict_input!
  @strict_input = true
end

#handle_documentation_issue(message, file: nil, line: nil) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
# File 'lib/rubycli/environment.rb', line 69

def handle_documentation_issue(message, file: nil, line: nil)
  location = nil
  if file
    expanded = File.expand_path(file)
    relative_prefix = File.expand_path(Dir.pwd) + '/'
    display_path = expanded.start_with?(relative_prefix) ? expanded.delete_prefix(relative_prefix) : expanded
    location = line ? "#{display_path}:#{line}" : display_path
  end

  formatted_message = if location
                        "#{location} #{message}"
                      else
                        message
                      end

  entry = { message: formatted_message, location: location }
  @documentation_issues << entry
  warn "[WARN] Rubycli documentation mismatch: #{formatted_message}" if doc_check_mode?
end

#handle_input_violation(message) ⇒ Object



89
90
91
92
93
# File 'lib/rubycli/environment.rb', line 89

def handle_input_violation(message)
  raise Rubycli::ArgumentError, message if strict_input?

  warn "[WARN] #{message} (use --strict to abort on invalid input)"
end

Returns:

  • (Boolean)


21
22
23
# File 'lib/rubycli/environment.rb', line 21

def print_result?
  @print_result
end

#strict_input?Boolean

Returns:

  • (Boolean)


46
47
48
# File 'lib/rubycli/environment.rb', line 46

def strict_input?
  @strict_input
end