gettext_find_task = begin

  Rake::Task['gettext:find']
rescue
  nil
end

if gettext_find_task

namespace :gettext do
  task :store_action_names => :environment do
    storage_file = "#{locale_path}/action_names.rb"
    method_names = [:plan, :run, :finalize]
    instances = Actions::EntryAction
                .descendants
                .uniq
                .map(&:allocate)
                .select do |action|
      method_names.any? do |method_name|
        if action.respond_to?(method_name)
          src, = action.method(method_name).source_location
          src.start_with? @engine.root.to_s
        end
      end
    end

    if instances.any?
      puts "writing action translations to: #{storage_file}"

      File.write storage_file,
                 "# Autogenerated!\n" +
                 instances
                 .map { |instance| %[_("#{instance.humanized_name}")] }
                 .sort
                 .join("\n") + "\n"
    elsif File.exist? storage_file
      puts "Removing empty action translations file: #{storage_file}"
      File.delete storage_file
    end
  end
end

gettext_find_task.enhance ['gettext:store_action_names']

end