require 'generators/cantango/base'

module Cantango
  module Generators
    class PermissionGenerator < Cantango::Generators::Base
      desc "Creates a Permission for a model in 'app/models'"

      argument     :name,       :type => :string,
          :desc => "Model to create Permission model for"

      source_root File.dirname(__FILE__) + '/templates'

      def main_flow
        relational
      end

      def relational
        Rails::Generators.invoke "model", ['Permission', "#{name}_id:integer", "thing_id:integer", "thing_type:string", "action:string"

        puts "Manual Modifications to Permission model:"
        puts "-----------------------------------------"
        puts "belongs_to :#{name}"
        puts "belongs_to :thing, :polymorphic => true"

        puts "Manual Modifications to #{name.to_s.camelize} model:"
        puts "has_many :permissions"
        puts "-----------------------------------------"

        puts "and then run:"
        puts "rake db:migrate"
      end

      def document_store
        Rails::Generators.invoke "model", ['Permission']
        # use rails_artifactor to edit model?!
      end

      protected

    end
  end
end

