lib/generators/language_extension/language_extension_generator.rb



class LanguageExtensionGenerator < Rails::Generator::NamedBase
  default_options :with_test_unit => false

  attr_reader :extension_path, :extension_file_name, :localization_name

  def initialize(runtime_args, runtime_options = {})
    super
    @extension_file_name = "#{file_name}_language_pack_extension"
    @extension_path = "vendor/extensions/#{file_name}_language_pack"
    @localization_name = localization_name
  end

  def manifest
    record do |m|
      m.directory "#{extension_path}/config/locales"
      m.directory "#{extension_path}/lib/tasks"

      m.template 'README',                "#{extension_path}/README"
      m.template 'extension.rb',          "#{extension_path}/#{extension_file_name}.rb"
      # m.template 'tasks.rake',            "#{extension_path}/lib/tasks/#{extension_file_name}_tasks.rake"
      m.template 'lang.yml',              "#{extension_path}/config/locales/#{localization_name}.yml"
      m.template 'available_tags.yml',    "#{extension_path}/config/locales/#{localization_name}_available_tags.yml"
      m.template 'lib.rb',                "#{extension_path}/lib/radiant-#{file_name}_language_pack-extension.rb"
      m.template 'gemspec.rb',            "#{extension_path}/radiant-#{file_name}_language_pack-extension.gemspec"
    end

  end

  def class_name
    super.to_name.gsub(' ', '') + 'LanguagePackExtension'
  end

  def extension_name
    class_name.to_name('Extension')
  end

  def author_info
    @author_info ||= begin
      Git.global_config
    rescue NameError
      {}
    end
  end

  def homepage
    author_info['github.user'] ? "http://github.com/#{author_info['github.user']}/radiant-#{file_name}-extension" : "http://example.com/#{file_name}"
  end

  def author_email
    author_info['user.email'] || 'your email'
  end

  def author_name
    author_info['user.name'] || 'Your Name'
  end

  def add_options!(opt)
    # opt.separator ''
    # opt.separator 'Options:'
    # opt.on("--with-test-unit",
    #        "Use Test::Unit for this extension instead of RSpec") { |v| options[:with_test_unit] = v }
  end

  def localization_name
    file_name.split('_')[1] ? "#{file_name.split('_')[0]}-#{file_name.split('_')[1].upcase}" : file_name
  end

  def copy_files
    FileUtils.cp("#{TRUSTY_CMS_ROOT}/config/locales/en_available_tags.yml","#{TRUSTY_CMS_ROOT}/#{extension_path}/config/locales/#{localization_name}_available_tags.yml")
  end
end