class MissingText::Runner
Public Class Methods
run()
click to toggle source
# File lib/missing_text/runner.rb, line 4 def self.run # create a Batch entry that the record can reference in order to group this session MissingText::Batch.create # start at the root folder and begin performing the diff operation on all inner locale directories Dir.glob("#{MissingText.app_root}/#{MissingText.locale_root}*").select{ |file| File.directory?(file)}.each do |directory| unless self.skip_directories.include?(File.basename(directory)) # Get a set of locale files and begin performing the diff operation on them locale_files = self.get_locale_files(directory) # set up the file arguments to be passed into the diff engine if locale_files.present? diff_files = self.get_file_info(locale_files) MissingText::Diff.new(diff_files).begin! end end end # Also perform this operation for any locale files directly inside of the locale directory if MissingText.search_direct_locale direct_locale_files = self.skip_files(Dir.glob("#{MissingText.app_root}/#{MissingText.locale_root}*.yml") + Dir.glob("#{MissingText.app_root}/#{MissingText.locale_root}*.rb"), "#{MissingText.app_root}/#{MissingText.locale_root}") if direct_locale_files.present? direct_locale_files = get_file_info(direct_locale_files) MissingText::Diff.new(direct_locale_files).begin! end end end
Private Class Methods
get_file_info(locale_files)
click to toggle source
# File lib/missing_text/runner.rb, line 47 def self.get_file_info(locale_files) # Then get the language it represents # Then get store it all in a hash accepted_formats = [".yml", ".rb"] diff_files = [] locale_files.each do |file| # ensure a good filetype before we go reading this in if accepted_formats.include?(File.extname(file)) # otherwise get all of the information diff_files << { lang: File.basename(file, File.extname(file)), type: File.extname(file), path: file } else MissingText::Warning.create( filename: file, warning_type: MissingText::Warning::FILE_TYPE_ERROR, missing_text_batch_id: MissingText::Batch.last.id ) end end diff_files end
get_locale_files(directory)
click to toggle source
Gets all the locale files in a directory
# File lib/missing_text/runner.rb, line 75 def self.get_locale_files(directory) locale_files = Dir.glob("#{directory}/*") locale_files = self.skip_files(locale_files, directory) locale_files end
skip_directories()
click to toggle source
# File lib/missing_text/runner.rb, line 43 def self.skip_directories [".", ".."] + MissingText.skip_directories end
skip_files(files, directory)
click to toggle source
Skips any files that match ANY of the regexes in the initializer
# File lib/missing_text/runner.rb, line 82 def self.skip_files(files, directory) files = files.select{ |file| MissingText.skip_patterns.inject(true) { |result, pattern| result && (pattern !~ File.basename(file)) } } if files.blank? MissingText::Warning.create( filename: directory, warning_type: MissingText::Warning::STRICT_REGEX, missing_text_batch_id: MissingText::Batch.last.id ) end return files end