module Apiway::Generator

Constants

DESC
HANDLERS

Public Class Methods

run( command = nil, *args ) click to toggle source
# File lib/apiway/generator.rb, line 24
def run( command = nil, *args )
  return help unless command
  HANDLERS.each { |handler, commands| return send( handler, *args ) if commands.include? command }
  puts "Apiway: Unknown generate command `#{ args.unshift( command ).join " " }`"
end

Private Class Methods

check_name( type, name ) { || ... } click to toggle source
# File lib/apiway/generator.rb, line 85
def check_name( type, name )
  if name then yield
  else puts "Apiway: Enter a name of #{ type }" end
end
create_application( name = nil ) click to toggle source
# File lib/apiway/generator.rb, line 33
def create_application( name = nil )
  check_name( 'application', name ) do
    source = File.join Apiway.path, 'generator/application'
    target = File.join Dir.pwd, name
    FileUtils.cp_r source, target
    puts "Apiway: Application `#{ name }` created"
    puts "Installing gems"
    exec "cd #{ name } && bundle install"
  end
end
create_controller( name = nil ) click to toggle source
# File lib/apiway/generator.rb, line 44
def create_controller( name = nil )
  check_name( 'controller', name ) do
    in_root_folder do
      filename  = name.underscore
      classname = filename.camelize
      write "app/controllers/#{ filename }.rb", render( 'controller', classname )
    end
  end
end
create_model( name = nil ) click to toggle source
# File lib/apiway/generator.rb, line 64
def create_model( name = nil )
  check_name( 'model', name ) do
    in_root_folder do
      if name.scan( '_' ).size > 0
        puts 'Apiway: Please do not use an underscore'
      else
        filename  = name.downcase
        classname = name.camelize
        write "app/models/#{ filename }.rb", render( 'model', classname )
      end
    end
  end
end
create_resource( name = nil ) click to toggle source
# File lib/apiway/generator.rb, line 54
def create_resource( name = nil )
  check_name( 'resource', name ) do
    in_root_folder do
      filename  = name.underscore
      classname = filename.camelize
      write "app/resources/#{ filename }.rb", render( 'resource', classname )
    end
  end
end
help( *args ) click to toggle source
# File lib/apiway/generator.rb, line 78
def help( *args )
  puts "\n Apiway generator commands: \n\n"
  HANDLERS.each do |handler, commands|
    puts "  [#{ commands.join( "], [" ) }]".ljust(30) << "# #{ DESC[ handler ] } "
  end
end
in_root_folder() { || ... } click to toggle source
# File lib/apiway/generator.rb, line 90
def in_root_folder
  if Dir.exists?( File.join( Dir.pwd, 'app' ) ) then yield
  else puts 'Apiway: Please go to application root folder' end
end
render( name, classname ) click to toggle source
# File lib/apiway/generator.rb, line 95
def render( name, classname )
  modelname = classname.chomp 's'
  varname   = modelname.downcase
  ERB.new( File.read( File.join( Apiway.path, 'generator/templates', "#{ name }.tpl" )  ) ).result binding
end
write( path, content ) click to toggle source
# File lib/apiway/generator.rb, line 101
def write( path, content )
  File.open( File.join( Dir.pwd, path ), 'w' ) { |file| file.write( content ) }
  puts "Apiway: Created: #{ path }"
end