class Locca::AuditAction

Public Class Methods

new(project, collection_builder, collections_generator) click to toggle source
# File lib/locca/actions/audit_action.rb, line 29
def initialize(project, collection_builder, collections_generator)
    @project = project
    @collections_generator = collections_generator
    @collection_builder = collection_builder
end

Public Instance Methods

execute() click to toggle source
# File lib/locca/actions/audit_action.rb, line 35
def execute()
    generated_collections = @collections_generator.generate()

    audit_ignore = @project.config_value_for_key('audit_ignore')
    failed_audit_results = []

    @project.collection_names().each do |collection_name|
        keys_to_ignore = []
        if audit_ignore != nil && audit_ignore.key?(collection_name)
            keys_to_ignore = audit_ignore[collection_name]
        end

        @project.langs().each do |lang|
            collection_path = @project.path_for_collection(collection_name, lang)
            collection = @collection_builder.collection_at_path(collection_path)
            
            audit_result = AuditResult.new(collection_name, lang)

            generated_collections.each do |generated_collection|
                if generated_collection.name == collection.name
                    generated_collection_keys = generated_collection.all_keys().to_set
                    collection_keys = collection.all_keys().to_set

                    audit_result.missing_keys = (generated_collection_keys - collection_keys).to_a
                    audit_result.extra_keys = (collection_keys - generated_collection_keys).to_a
                end
            end

            collection.sorted_each do |item|
                if item.translated? || keys_to_ignore.include?(item.key) || audit_result.extra_keys.include?(item.key)
                    next
                end

                audit_result.add_untranslated_key(item.key)
            end

            unless audit_result.passed?
                failed_audit_results.push(audit_result)
            end
        end
    end

    return failed_audit_results
end