class AlexaPluginGenerator::HammerOfTheGods

Public Instance Methods

new( name ) click to toggle source
# File lib/alexa_plugin_generator/cli.rb, line 17
def new( name )
  name = name[6..-1] if name[0..5] == "alexa_"
  gemname = "alexa_#{name}"
  if system "bundler gem #{gemname}"
    files_to_modify = ["lib/#{gemname}.rb", "#{gemname}.gemspec"]

    files_to_modify.each do |filename|
      file = File.read("./#{gemname}/#{filename}")
      split_filename = filename.split('.')
      split_filename[0] = "#{split_filename[0]}_new"
      temp_filename = split_filename.join('.')

      File.open("./#{gemname}/#{temp_filename}", 'w') do |new_file|
        file.split("\n").each_with_index do |line, index|
          line_number = index+1
          if filename == "lib/#{gemname}.rb"
            if line_number == 1
              new_file << "require 'sinatra/extension'\n"
              new_file << "require 'alexa_objects'\n\n"
            elsif line_number == 3
              new_file << "module #{name.camelize}\n"
              new_file << "  extend Sinatra::Extension\n\n"
              new_file << "  helpers do\n"
              new_file << "    # TODO: Change to new intent name\n"
              new_file << "    def intent_name\n"
              new_file << "      # TODO: Implement intent\n"
              new_file << "    end\n"
              new_file << "  end\n"
              new_file << "end\n"
            elsif line_number == 4
            elsif line_number == 5
            else
              new_file << line
              new_file << "\n"
            end
          elsif filename == "#{gemname}.gemspec"
            if line_number == 24
              new_file << "  spec.add_runtime_dependency 'sinatra-contrib'\n"
              new_file << "  spec.add_runtime_dependency 'alexa_objects'\n\n"
            elsif line_number == 28
              new_file << "#{line[0...-1]}, \"skills_config\"]\n"
            elsif line_number.between?(17, 23)  
            else
              new_file << line
              new_file << "\n"
            end
          end
        end
      end

      puts "Updated #{filename}" if system("rm ./#{gemname}/#{filename}") && system("mv ./#{gemname}/#{temp_filename} ./#{gemname}/#{filename}")   
    end

    puts "Created ./#{gemname}/skills_config" if system "mkdir ./#{gemname}/skills_config"

    ["sample_utterances", "intent_schema", "custom_slots"].each do |skill_file|
      puts "Created ./#{gemname}/skills_config/#{skill_file}.txt" if system "touch ./#{gemname}/skills_config/#{skill_file}.txt"

      file = File.open("./#{gemname}/lib/#{gemname}/#{skill_file}.rb", 'w') do |file|
        file << "module #{name.camelize}\n"
        file << "  def self.#{skill_file}\n"
        file << "    File.read(File.expand_path('../../../skills_config/#{skill_file}.txt', __FILE__))\n"
        file << "  end\n"
        file << "end\n"
      end

      puts "Created ./#{gemname}/lib/#{gemname}/#{skill_file}.rb" if file
    end
  end
end