module ActiveDesigner

Constants

APP_ROOT
TEMPLATE
TEMPLATE_PATH

Public Class Methods

call(argv,stdin,stdout,stderr) click to toggle source
# File lib/active_designer.rb, line 6
def self.call(argv,stdin,stdout,stderr)
  command = argv[0]

  if !command
    stderr.puts "No command was provided, use -h or --help for more information"
    return 1
  end

  if command == "--help" || command == "-h"
    stdout.puts "To create a schema run '$ active-designer --create filepath'"
    stdout.puts "If youre in the root of a Sinatra or Ruby on Rails project the filepath should be './db/schema.rb'"
    return 0
  end

  if command == "--create"
    input_path  = argv[1]
    output_path = "active_designer/index.html"
    output_dir  = File.dirname output_path

    if !input_path
      stderr.puts "No path was provided, use -h or --help for more information"

      return 1
    end

    if !File.exist?(input_path)
      stderr.puts "#{input_path.inspect} does not exist, use -h or --help for more information"

      return 1
    end

    Dir.mkdir output_dir unless Dir.exist?(output_dir)

    if File.exist?(output_path) && !overwrite?(stdin, stdout, output_path)
      stderr.puts "Aborted"

      return 1
    end

    return create(output_path,input_path,stdout)
  end

  if command
    stderr.puts "#{command.inspect} is not a known command, use -h or --help for more information"
    return 1
  end
end

Private Class Methods

create(output_path,input_path,stdout) click to toggle source
# File lib/active_designer.rb, line 64
def self.create(output_path,input_path,stdout)
  input_body = File.read(input_path)
  converter  = ActiveDesigner::FileConverter.new(input_body)
  File.write(output_path, converter.render)
  stdout.puts "\nCreated #{output_path}"
  return 0
end
overwrite?(stdin, stdout, path) click to toggle source
# File lib/active_designer.rb, line 56
def self.overwrite?(stdin, stdout, path)
  loop do
    stdout.print "Do you wish to overwrite #{path}?(y/n) "
    answer = stdin.gets.chomp.downcase
    return answer == "y" if answer == "y" || answer == "n"
  end
end