class Yard2steep::CLI

Public Class Methods

new(argv) click to toggle source

@param [Array<String>] argv

# File lib/yard2steep/cli.rb, line 12
def initialize(argv)
  @option = Option.new
  @option.parse!(argv)
end
run!(argv) click to toggle source

@param [Array<String>] argv @return [void]

# File lib/yard2steep/cli.rb, line 7
def self.run!(argv)
  CLI.new(argv).run!
end

Public Instance Methods

run!() click to toggle source

@return [void]

# File lib/yard2steep/cli.rb, line 18
def run!
  traverse_dir!(src_dir)
end

Private Instance Methods

dst_dir() click to toggle source

@return [String]

# File lib/yard2steep/cli.rb, line 30
def dst_dir
  @dst_dir ||= File.expand_path(@option.dst)
end
src_dir() click to toggle source

@return [String]

# File lib/yard2steep/cli.rb, line 25
def src_dir
  @src_dir ||= File.expand_path(@option.src)
end
translate!(f) click to toggle source

@param [String] f @return [void]

# File lib/yard2steep/cli.rb, line 52
def translate!(f)
  text = File.read(f)

  dst_file = File.join(
    dst_dir,
    f.gsub(/^#{Regexp.escape(src_dir)}/, '').gsub(/\.rb$/, '.rbi')
  )
  dst_dir  = File.dirname(dst_file)
  FileUtils.mkdir_p(dst_dir)
  result = Engine.execute(
    f,
    text,
    debug:     @option.debug,
    debug_ast: @option.debug_ast,
  )
  File.write(dst_file, result)
end
traverse_dir!(dir) click to toggle source

@param [String] dir @return [void]

# File lib/yard2steep/cli.rb, line 36
def traverse_dir!(dir)
  Dir.glob(File.join(dir, '*')).each do |f|
    if File.file?(f)
      if File.extname(f) == '.rb'
        translate!(f)
      end
    elsif File.directory?(f)
      traverse_dir!(f)
    else
      # Do nothing
    end
  end
end