twitter/twitter-cldr-rb

View on GitHub
Rakefile

Summary

Maintainability
Test Coverage
# encoding: UTF-8

# Copyright 2012 Twitter, Inc
# http://www.apache.org/licenses/LICENSE-2.0

require 'rubygems' unless ENV['NO_RUBYGEMS']

require 'bundler'
require 'digest'

require 'rspec/core/rake_task'
require 'rubygems/package_task'

require './lib/twitter_cldr'

require 'pry-byebug' unless RUBY_PLATFORM == 'java'

Bundler::GemHelper.install_tasks

task default: :spec

desc 'Run specs'
RSpec::Core::RakeTask.new do |t|
  t.pattern = './spec/**/*_spec.rb'
end

namespace :spec do
  desc 'Run full specs suit'
  task full: [:full_spec_env, :spec]

  task :full_spec_env do
    ENV['FULL_SPEC'] = 'true'
  end
end

namespace :spec do
  desc 'Run specs with SimpleCov'
  task cov: ['spec:simplecov_env', :spec] do
    require 'launchy'
    Launchy.open 'coverage/index.html'
  end

  desc 'Run full specs suit with SimpleCov'
  task 'cov:full' => %w[spec:full_spec_env spec:cov]

  task :simplecov_env do
    puts 'Cleaning up coverage reports'
    rm_rf 'coverage'

    ENV['SCOV'] = 'true'
  end
end

task :update do
  klasses = TwitterCldr::Resources.importer_classes_for_ruby_engine
  TwitterCldr::Resources::ImportResolver.new(klasses, allow_missing_dependencies: true).import
end

task :add_locale, :locale do |_, args|
  locales = [args[:locale]] + args.extras

  File.write(
    TwitterCldr::SUPPORTED_LOCALES_FILE,
    YAML.dump(
      (TwitterCldr::SUPPORTED_LOCALES + locales).map(&:to_sym).uniq.sort
    )
  )

  klasses = TwitterCldr::Resources.locale_based_importer_classes_for_ruby_engine
  instances = klasses.map { |klass| klass.new(locales: locales) }
  resolver = TwitterCldr::Resources::ImportResolver.new(
    instances, allow_missing_dependencies: true
  )

  resolver.import
end

# add_locale and update_locale do the same thing
task :update_locale, [:locale] => :add_locale

namespace :update do
  desc 'Import locales resources'
  task :locales_resources do
    TwitterCldr::Resources::LocalesResourcesImporter.new.import
  end

  desc 'Import number formats'
  task :number_formats do
    TwitterCldr::Resources::NumberFormatsImporter.new.import
  end

  desc 'Import list formats'
  task :list_formats do
    TwitterCldr::Resources::ListFormatsImporter.new.import
  end

  desc 'Import currency symbols'
  task :currency_symbols do
    TwitterCldr::Resources::CurrencySymbolsImporter.new.import
  end

  desc 'Import day period rules'
  task :day_period_rules do
    TwitterCldr::Resources::DayPeriodRulesImporter.new.import
  end

  desc 'Import validity data'
  task :validity_data do
    TwitterCldr::Resources::ValidityDataImporter.new.import
  end

  desc 'Import aliases'
  task :aliases do
    TwitterCldr::Resources::AliasesImporter.new.import
  end

  desc 'Import tailoring resources from CLDR data (should be executed using JRuby 1.7 in 1.9 mode)'
  task :tailoring_data do
    TwitterCldr::Resources::TailoringImporter.new.import
  end

  desc 'Import territory data'
  task :territories do
    TwitterCldr::Resources::TerritoriesImporter.new.import
  end

  desc 'Import Unicode data resources'
  task :unicode_data do
    TwitterCldr::Resources::UnicodeDataImporter.new.import
  end

  desc 'Import Unicode property resources'
  task :unicode_properties do
    TwitterCldr::Resources::property_importer_classes.each do |klass|
      klass.new.import
    end
  end

  desc 'Import unicode property value aliases'
  task :unicode_property_aliases do
    TwitterCldr::Resources::UnicodePropertyAliasesImporter.new.import
  end

  desc 'Import unit data'
  task :units do
    TwitterCldr::Resources::UnitsImporter.new.import
  end

  desc 'Import calendar data'
  task :calendars do
    TwitterCldr::Resources::CalendarsImporter.new.import
  end

  desc 'Generate the casefolder class. Depends on unicode data'
  task :casefolder do
    TwitterCldr::Resources::CasefolderClassGenerator.new.import
  end

  desc 'Import parent locale data'
  task :parent_locales do
    TwitterCldr::Resources::ParentLocalesImporter.new.import
  end

  desc 'Import postal codes resource'
  task :postal_codes do
    TwitterCldr::Resources::PostalCodesImporter.new.import
  end

  desc 'Import language codes'
  task :language_codes do
    TwitterCldr::Resources::LanguageCodesImporter.new.import
  end

  desc 'Update default and tailoring tries dumps (should be executed using JRuby 1.7 in 1.9 mode)'
  task :collation_tries do
    TwitterCldr::Resources::CollationTriesImporter.new.import
  end

  desc 'Import collation tests'
  task :collation_tests do
    TwitterCldr::Resources::CollationTestsImporter.new.import
  end

  desc 'Import text segmentation rules'
  task :segment_rules do
    TwitterCldr::Resources::SegmentRulesImporter.new.import
  end

  desc 'Import segmentation dictionaries'
  task :segment_dictionaries do
    TwitterCldr::Resources::SegmentDictionariesImporter.new.import
  end

  desc 'Import segment tests'
  task :segment_tests do
    TwitterCldr::Resources::SegmentTestsImporter.new.import
  end

  desc 'Import (generate) bidi tests (should be executed using JRuby 1.7 in 1.9 mode)'
  task :bidi_tests do
    TwitterCldr::Resources::BidiTestImporter.new.import
  end

  desc 'Import (generate) rule-based number format tests (should be executed using JRuby 1.7 in 1.9 mode)'
  task :rbnf_tests do
    TwitterCldr::Resources::RbnfTestImporter.new.import
  end

  desc 'Import timezone data'
  task :timezones do
    TwitterCldr::Resources::TimezonesImporter.new.import
  end

  desc 'Import timezone region data'
  task :timezone_regions do
    TwitterCldr::Resources::TimezoneRegionsImporter.new.import
  end

  desc 'Import timezone data'
  task :bcp47_timezone_metadata do
    TwitterCldr::Resources::Bcp47TimezoneMetadataImporter.new.import
  end

  desc 'Import (generate) timezone tests (should be executed using JRuby 1.7 in 1.9 mode)'
  task :timezone_tests do
    TwitterCldr::Resources::TimezoneTestsImporter.new.import
  end

  desc 'Import transform rules'
  task :transforms do
    TwitterCldr::Resources::TransformsImporter.new.import
  end

  desc 'Import (generate) transformation tests (should be executed using JRuby 1.7 in 1.9 mode)'
  task :transform_tests do
    TwitterCldr::Resources::TransformTestsImporter.new.import
  end

  desc 'Import hyphenation dictionaries'
  task :hyphenation_dictionaries do
    TwitterCldr::Resources::HyphenationImporter.new.import
  end

  desc 'Update README'
  task :readme do |_, args|
    renderer = TwitterCldr::Resources::ReadmeRenderer.new(
      File.read("./README.md.erb")
    )

    File.open("./README.md", "w+") do |f|
      f.write(renderer.render)
    end

    if renderer.assertion_failures.size > 0
      puts "There were errors encountered while updating the README. Please run specs for details"
    end
  end
end