Module: RubyCms::CommandsRegistry

Included in:
RubyCms
Defined in:
lib/generators/ruby_cms/templates/lib/ruby_cms/commands_registry.rb

Overview

Host apps register runnable commands (usually Rake tasks) shown on Admin → Commands.

Constant Summary collapse

CATEGORIES =
%w[content maintenance email custom].freeze
PARAM_TYPES =
%w[toggle text select].freeze

Instance Method Summary collapse

Instance Method Details

#find_command(key) ⇒ Object



44
45
46
# File 'lib/generators/ruby_cms/templates/lib/ruby_cms/commands_registry.rb', line 44

def find_command(key)
  registered_commands.find { |e| e[:key] == key.to_s }
end

#register_command(key:, label:, rake_task:, description: nil, permission: :manage_admin, category: :custom, schedule: nil, params: []) ⇒ Object

Register a button-triggered command for the admin Commands screen.

Parameters:

  • key (String, Symbol)

    Unique id (e.g. :copy_en_to_nl)

  • label (String)

    Button label

  • rake_task (String)

    Full rake task name, including args in brackets if needed

  • description (String, nil) (defaults to: nil)

    Optional help text

  • permission (Symbol) (defaults to: :manage_admin)

    Required to run (+can?+); default :manage_admin

  • category (String, Symbol) (defaults to: :custom)

    One of CATEGORIES; default "custom"

  • schedule (String, nil) (defaults to: nil)

    Free-text human-readable schedule (e.g. "Iedere nacht 03:00")

  • params (Array<Hash>) (defaults to: [])

    Parameter descriptors. Each: { key:, label:, type: 'toggle'|'text'|'select', default:, options: [..], description: }



27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/generators/ruby_cms/templates/lib/ruby_cms/commands_registry.rb', line 27

def register_command(key:, label:, rake_task:, description: nil, permission: :manage_admin,
                     category: :custom, schedule: nil, params: [])
  k = key.to_s
  entry = {
    key: k,
    label: label.to_s,
    rake_task: rake_task.to_s,
    description: description.to_s.presence,
    permission: permission.to_sym,
    category: normalize_category(category),
    schedule: schedule.to_s.presence,
    params: Array(params).map { |p| normalize_param(p) }
  }
  self.registered_commands = registered_commands.reject { |e| e[:key] == k } + [ entry ]
  entry
end

#registered_commandsObject



6
7
8
# File 'lib/generators/ruby_cms/templates/lib/ruby_cms/commands_registry.rb', line 6

def registered_commands
  @registered_commands ||= []
end

#registered_commands=(list) ⇒ Object



10
11
12
# File 'lib/generators/ruby_cms/templates/lib/ruby_cms/commands_registry.rb', line 10

def registered_commands=(list)
  @registered_commands = list
end