refactor: derive canonical commands from core actions and centralize aliases

This commit is contained in:
2026-10-11 02:48:13 +02:00
parent 9a34669c08
commit 54bb196192
12 changed files with 352 additions and 88 deletions
+3 -2
View File
@@ -7,7 +7,7 @@ module Vamp
# @param startup [Object] action catalog and options
# @return [void]
def self.startup!(startup)
return if hash_shape?(startup, %w[core_actions options]) && startup["options"].is_a?(Hash)
return if hash_shape?(startup, %w[command_aliases core_actions options]) && startup["options"].is_a?(Hash)
raise TypeError, "invalid Ruby startup catalog/options"
end
@@ -100,7 +100,7 @@ module Vamp
# @return [Proc, Method] the installed sender
def self.setup(mode, startup, sender)
FrameValidation.startup!(startup)
install_actions(startup["core_actions"])
install_actions(startup["core_actions"], startup["command_aliases"])
@mode = mode
reset_registrations
@options = deep_freeze(json_value!(startup["options"]))
@@ -168,6 +168,7 @@ module Vamp
raise ArgumentError, "declare a plugin before its commands" unless @mode == "plugin" && @name
name = registration_name!(name, "command")
raise ArgumentError, "built-in command #{name} cannot be replaced" if Vamp.builtin_command?(name)
raise ArgumentError, "command requires a block" unless callback
raise ArgumentError, "duplicate command #{name}" if @commands.key?(name)