Sha256: 355a984777e38644c91568a92d3a1788f3b54e073373ad0f297892aef0a76bb3

Contents?: true

Size: 1.66 KB

Versions: 2

Compression:

Stored size: 1.66 KB

Contents

module CodeigniterScaffold
  module Command
    class Scaffold

      attr_accessor :model, :attributes

      def run(args)
        return Kernel.puts("Some arguments are needed, please, try again.") if not valid?(args)
        parse(args)

        create("controller.php","application/controllers/#{@model.downcase}.php")
        create("model.php","application/models/#{@model.downcase}_model.php")
        create("migration.sql","application/migrations/create_#{@model.downcase}.sql")
        mkdir ("application/views/#{@model.downcase}")
        create("view_create.php","application/views/#{@model.downcase}/create.php")
        create("view_index.php","application/views/#{@model.downcase}/index.php")
      end

      protected
      def valid?(args)
        return false if not args or args.empty?
        return false if args.size <= 1
        true
      end

      def parse(args)
        @model = args.shift.capitalize
        @attributes = Array.new
        args.each {|a| @attributes << Attribute.new(a) }
      end

      private
      def create(template, output)
        parse_to(template, output)
        puts "File #{output} was successfully created."
      end

      def parse_to(path_to_template, path_to_output)
        resource_dir = File.dirname(__FILE__) + "/../../resources/"
        @template = File.read(File.join(resource_dir, path_to_template))
        template = ERB.new(@template)
        file = File.new(path_to_output,"w")
        file.write(template.result(binding))
        file.close
      end

      def mkdir(directory_name)
        begin
          Dir::mkdir(directory_name)
        rescue
          # directory exists
        end
      end

    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
codeigniter-scaffold-0.0.2 lib/codeigniter_scaffold/command/scaffold.rb
codeigniter-scaffold-0.0.1 lib/codeigniter_scaffold/command/scaffold.rb