File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 729729 self .default_action
730730 }
731731 end
732+ local ok , result = parser :pparse (args )
733+ if ok then
734+ return result
735+ end
736+ local cmd_name = result :match (" unknown command '(.-)'" )
737+ if cmd_name then
738+ local mod_name = " lapis.cmd.actions." .. tostring (cmd_name )
739+ if pcall (require , mod_name ) then
740+ local spec = custom_action ({
741+ name = cmd_name
742+ })
743+ table.insert (COMMANDS , spec )
744+ local command = parser :command (cmd_name )
745+ command :handle_options (false )
746+ command :argument (" sub_command_args" , " Arguments to command" ):argname (" <args>" ):args (" *" )
747+ return parser :parse (args )
748+ else
749+ io.stderr :write (" Note: tried to load command from module '" .. tostring (mod_name ) .. " '\n " )
750+ end
751+ end
732752 return parser :parse (args )
733753 end ,
734754 execute = function (self , args )
Original file line number Diff line number Diff line change @@ -615,6 +615,27 @@ class CommandRunner
615615 if next ( args) == nil
616616 args = { @default_action }
617617
618+ ok, result = parser\ pparse args
619+
620+ if ok
621+ return result
622+
623+ -- try to load unknown command as a third-party action module
624+ cmd_name = result\ match " unknown command '(.-)'"
625+ if cmd_name
626+ mod_name = " lapis.cmd.actions.#{cmd_name}"
627+ if pcall require , mod_name
628+ spec = custom_action { name : cmd_name}
629+ table.insert COMMANDS , spec
630+
631+ command = parser\ command cmd_name
632+ command\ handle_options false
633+ command\ argument( " sub_command_args" , " Arguments to command" ) \ argname( " <args>" ) \ args( " *" )
634+ return parser\ parse args
635+ else
636+ io. stderr\ write " Note: tried to load command from module '#{mod_name}'\n "
637+
638+ -- re-run parse to trigger the original error message
618639 parser\ parse args
619640
620641 execute : ( args) =>
You can’t perform that action at this time.
0 commit comments