Class: RailsERD::CLI

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_erd/cli.rb

Constant Summary collapse

SYMBOL_OPTIONS =

Options that should be converted to symbols

%i[generator mermaid_style filetype notation orientation].freeze

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(path, options) ⇒ CLI

Returns a new instance of CLI.



188
189
190
191
192
193
194
195
196
# File 'lib/rails_erd/cli.rb', line 188

def initialize(path, options)
  @path, @options = path, options
  generator = options[:generator] || RailsERD.options[:generator]
  if generator == :mermaid
    require "rails_erd/diagram/mermaid"
  else
    require "rails_erd/diagram/graphviz"
  end
end

Instance Attribute Details

#optionsObject (readonly)

Returns the value of attribute options.



161
162
163
# File 'lib/rails_erd/cli.rb', line 161

def options
  @options
end

#pathObject (readonly)

Returns the value of attribute path.



161
162
163
# File 'lib/rails_erd/cli.rb', line 161

def path
  @path
end

Class Method Details

.startObject



167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
# File 'lib/rails_erd/cli.rb', line 167

def start
  path = Choice.rest.first || Dir.pwd
  options = Choice.choices.each_with_object({}) do |(key, value), opts|
    key_sym = key.to_sym
    if key.start_with? "no_"
      opts[key.gsub("no_", "").to_sym] = !value
    elsif value.to_s.include? ","
      opts[key_sym] = value.split(",").map(&:to_s)
    elsif SYMBOL_OPTIONS.include?(key_sym) && value.is_a?(String)
      opts[key_sym] = value.to_sym
    else
      opts[key_sym] = value
    end
  end
  if options[:config_file] && options[:config_file] != ''
    RailsERD.options = RailsERD.default_options.merge(Config.load(options[:config_file]))
  end
  new(path, options).start
end

Instance Method Details

#startObject



198
199
200
201
202
203
204
# File 'lib/rails_erd/cli.rb', line 198

def start
  load_application
  create_diagram
rescue Exception => e
  $stderr.puts "Failed: #{e.class}: #{e.message}"
  $stderr.puts e.backtrace.map { |t| "    from #{t}" } if options[:debug]
end