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