Sha256: 75b491e3347c10747af553eff1b7f22f057a8116a33f01c4a9c3dbfb9d82a91e

Contents?: true

Size: 1.87 KB

Versions: 8

Compression:

Stored size: 1.87 KB

Contents

require 'date'

module HammerCLIForemanTasks
  module CommandExtensions
    class RecurringLogic < HammerCLI::CommandExtensions
      before_print do |data|
        data['action'] = format_task_input(data['tasks'].last)
        data['last_occurrence'] = recurring_logic_last_occurrence(data)
        data['next_occurrence'] = recurring_logic_next_occurrence(data)
        data['iteration_limit'] = format_recurring_logic_limit(data['max_iteration'])
        data['repeat_until'] = format_recurring_logic_limit(data['end_time'])
      end

      output do |definition|
        definition.insert(:after, :cron_line) do
          field :action, _('Action')
          field :last_occurrence, _('Last occurrence')
          field :next_occurrence, _('Next occurrence')
        end
        definition.insert(:after, :iteration) do
          field :iteration_limit, _('Iteration limit')
        end
        definition.insert(:replace, :end_time) do
          field :repeat_until, _('Repeat until')
        end
      end

      def self.recurring_logic_last_occurrence(recurring_logic)
        last_task = recurring_logic['tasks'].select { |t| t['started_at'] }
                                            .max { |a, b| a['started_at'] <=> b['started_at'] }
        return '-' if last_task.nil? || last_task['started_at'].nil?

        last_task['started_at']
      end

      def self.recurring_logic_next_occurrence(recurring_logic)
        default = '-'
        return default if %w[cancelled finished disabled].include?(recurring_logic['state'])

        last_task = recurring_logic['tasks'].max { |a, b| a['start_at'] <=> b['start_at'] }
        last_task ? last_task['start_at'] : default
      end

      def self.format_task_input(task)
        return '-' unless task

        task['action']
      end

      def self.format_recurring_logic_limit(thing)
        thing || _('Unlimited')
      end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
hammer_cli_foreman_tasks-0.0.22 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb
hammer_cli_foreman_tasks-0.0.21 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb
hammer_cli_foreman_tasks-0.0.20 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb
hammer_cli_foreman_tasks-0.0.19 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb
hammer_cli_foreman_tasks-0.0.18 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb
hammer_cli_foreman_tasks-0.0.17 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb
hammer_cli_foreman_tasks-0.0.16 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb
hammer_cli_foreman_tasks-0.0.15 lib/hammer_cli_foreman_tasks/command_extensions/recurring_logic.rb