https://github.com/medismailben updated https://github.com/llvm/llvm-project/pull/97263
>From 1f3d0498ccedc4c8adef01d44c29be8b1a78b133 Mon Sep 17 00:00:00 2001 From: Med Ismail Bennani <ism...@bennani.ma> Date: Mon, 1 Jul 2024 11:53:49 -0700 Subject: [PATCH] [lldb/Commands] Alias `script` command to `scripting execute` This patch introduces a new top-level `scripting` command with an `execute` sub-command, that basically replaces the `script` raw command. To avoid breaking the `script` command usages, this patch also adds an `script` alias to the `scripting execute` sub-command. The reason behind this change is to have a top-level command that will cover scripting related subcommands. Signed-off-by: Med Ismail Bennani <ism...@bennani.ma> --- lldb/source/Commands/CMakeLists.txt | 2 +- ...tScript.cpp => CommandObjectScripting.cpp} | 44 +++++++++++++------ ...bjectScript.h => CommandObjectScripting.h} | 17 ++++--- lldb/source/Commands/Options.td | 2 +- .../source/Interpreter/CommandInterpreter.cpp | 13 +++++- .../abbreviation/TestAbbreviations.py | 2 +- 6 files changed, 57 insertions(+), 23 deletions(-) rename lldb/source/Commands/{CommandObjectScript.cpp => CommandObjectScripting.cpp} (68%) rename lldb/source/Commands/{CommandObjectScript.h => CommandObjectScripting.h} (71%) diff --git a/lldb/source/Commands/CMakeLists.txt b/lldb/source/Commands/CMakeLists.txt index 6a36c5376d5c5..76397227d535d 100644 --- a/lldb/source/Commands/CMakeLists.txt +++ b/lldb/source/Commands/CMakeLists.txt @@ -26,7 +26,7 @@ add_lldb_library(lldbCommands NO_PLUGIN_DEPENDENCIES CommandObjectQuit.cpp CommandObjectRegexCommand.cpp CommandObjectRegister.cpp - CommandObjectScript.cpp + CommandObjectScripting.cpp CommandObjectSession.cpp CommandObjectSettings.cpp CommandObjectSource.cpp diff --git a/lldb/source/Commands/CommandObjectScript.cpp b/lldb/source/Commands/CommandObjectScripting.cpp similarity index 68% rename from lldb/source/Commands/CommandObjectScript.cpp rename to lldb/source/Commands/CommandObjectScripting.cpp index 25f25b8e65947..72f653690e532 100644 --- a/lldb/source/Commands/CommandObjectScript.cpp +++ b/lldb/source/Commands/CommandObjectScripting.cpp @@ -1,4 +1,4 @@ -//===-- CommandObjectScript.cpp -------------------------------------------===// +//===-- CommandObjectScripting.cpp ----------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -6,7 +6,7 @@ // //===----------------------------------------------------------------------===// -#include "CommandObjectScript.h" +#include "CommandObjectScripting.h" #include "lldb/Core/Debugger.h" #include "lldb/DataFormatters/DataVisualization.h" #include "lldb/Host/Config.h" @@ -21,10 +21,10 @@ using namespace lldb; using namespace lldb_private; -#define LLDB_OPTIONS_script +#define LLDB_OPTIONS_scripting_execute #include "CommandOptions.inc" -Status CommandObjectScript::CommandOptions::SetOptionValue( +Status CommandObjectScriptingExecute::CommandOptions::SetOptionValue( uint32_t option_idx, llvm::StringRef option_arg, ExecutionContext *execution_context) { Status error; @@ -46,27 +46,29 @@ Status CommandObjectScript::CommandOptions::SetOptionValue( return error; } -void CommandObjectScript::CommandOptions::OptionParsingStarting( +void CommandObjectScriptingExecute::CommandOptions::OptionParsingStarting( ExecutionContext *execution_context) { language = lldb::eScriptLanguageNone; } llvm::ArrayRef<OptionDefinition> -CommandObjectScript::CommandOptions::GetDefinitions() { - return llvm::ArrayRef(g_script_options); +CommandObjectScriptingExecute::CommandOptions::GetDefinitions() { + return llvm::ArrayRef(g_scripting_execute_options); } -CommandObjectScript::CommandObjectScript(CommandInterpreter &interpreter) +CommandObjectScriptingExecute::CommandObjectScriptingExecute( + CommandInterpreter &interpreter) : CommandObjectRaw( - interpreter, "script", + interpreter, "scripting execute", "Invoke the script interpreter with provided code and display any " "results. Start the interactive interpreter if no code is supplied.", - "script [--language <scripting-language> --] [<script-code>]") {} + "scripting execute [--language <scripting-language> --] " + "[<script-code>]") {} -CommandObjectScript::~CommandObjectScript() = default; +CommandObjectScriptingExecute::~CommandObjectScriptingExecute() = default; -void CommandObjectScript::DoExecute(llvm::StringRef command, - CommandReturnObject &result) { +void CommandObjectScriptingExecute::DoExecute(llvm::StringRef command, + CommandReturnObject &result) { // Try parsing the language option but when the command contains a raw part // separated by the -- delimiter. OptionsWithRaw raw_args(command); @@ -111,3 +113,19 @@ void CommandObjectScript::DoExecute(llvm::StringRef command, else result.SetStatus(eReturnStatusFailed); } + +#pragma mark CommandObjectMultiwordScripting + +// CommandObjectMultiwordScripting + +CommandObjectMultiwordScripting::CommandObjectMultiwordScripting( + CommandInterpreter &interpreter) + : CommandObjectMultiword( + interpreter, "scripting", + "Commands for operating on the scripting functionnalities.", + "scripting <subcommand> [<subcommand-options>]") { + LoadSubCommand("execute", CommandObjectSP(new CommandObjectScriptingExecute( + interpreter))); +} + +CommandObjectMultiwordScripting::~CommandObjectMultiwordScripting() = default; diff --git a/lldb/source/Commands/CommandObjectScript.h b/lldb/source/Commands/CommandObjectScripting.h similarity index 71% rename from lldb/source/Commands/CommandObjectScript.h rename to lldb/source/Commands/CommandObjectScripting.h index 3a8c4a890404a..b4a8a32cb644a 100644 --- a/lldb/source/Commands/CommandObjectScript.h +++ b/lldb/source/Commands/CommandObjectScripting.h @@ -1,4 +1,4 @@ -//===-- CommandObjectScript.h -----------------------------------*- C++ -*-===// +//===-- CommandObjectScripting.h --------------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -9,14 +9,21 @@ #ifndef LLDB_SOURCE_INTERPRETER_COMMANDOBJECTSCRIPT_H #define LLDB_SOURCE_INTERPRETER_COMMANDOBJECTSCRIPT_H -#include "lldb/Interpreter/CommandObject.h" +#include "lldb/Interpreter/CommandObjectMultiword.h" namespace lldb_private { -class CommandObjectScript : public CommandObjectRaw { +class CommandObjectMultiwordScripting : public CommandObjectMultiword { public: - CommandObjectScript(CommandInterpreter &interpreter); - ~CommandObjectScript() override; + CommandObjectMultiwordScripting(CommandInterpreter &interpreter); + + ~CommandObjectMultiwordScripting() override; +}; + +class CommandObjectScriptingExecute : public CommandObjectRaw { +public: + CommandObjectScriptingExecute(CommandInterpreter &interpreter); + ~CommandObjectScriptingExecute() override; Options *GetOptions() override { return &m_options; } class CommandOptions : public Options { diff --git a/lldb/source/Commands/Options.td b/lldb/source/Commands/Options.td index fa8af7cb3d762..752121ee6edb2 100644 --- a/lldb/source/Commands/Options.td +++ b/lldb/source/Commands/Options.td @@ -835,7 +835,7 @@ let Command = "container add" in { Desc<"Overwrite an existing command at this node.">; } -let Command = "script" in { +let Command = "scripting execute" in { def script_language : Option<"language", "l">, EnumArg<"ScriptLang">, Desc<"Specify the scripting " " language. If none is specific the default scripting language is used.">; diff --git a/lldb/source/Interpreter/CommandInterpreter.cpp b/lldb/source/Interpreter/CommandInterpreter.cpp index 40c915b2c94fc..6b701591d0326 100644 --- a/lldb/source/Interpreter/CommandInterpreter.cpp +++ b/lldb/source/Interpreter/CommandInterpreter.cpp @@ -33,7 +33,7 @@ #include "Commands/CommandObjectQuit.h" #include "Commands/CommandObjectRegexCommand.h" #include "Commands/CommandObjectRegister.h" -#include "Commands/CommandObjectScript.h" +#include "Commands/CommandObjectScripting.h" #include "Commands/CommandObjectSession.h" #include "Commands/CommandObjectSettings.h" #include "Commands/CommandObjectSource.h" @@ -518,6 +518,15 @@ void CommandInterpreter::Initialize() { AddAlias("re", cmd_obj_sp); } + cmd_obj_sp = GetCommandSPExact("scripting execute"); + if (cmd_obj_sp) { + AddAlias("sc", cmd_obj_sp); + AddAlias("scr", cmd_obj_sp); + AddAlias("scri", cmd_obj_sp); + AddAlias("scrip", cmd_obj_sp); + AddAlias("script", cmd_obj_sp); + } + cmd_obj_sp = GetCommandSPExact("session history"); if (cmd_obj_sp) { AddAlias("history", cmd_obj_sp); @@ -569,7 +578,7 @@ void CommandInterpreter::LoadCommandDictionary() { REGISTER_COMMAND_OBJECT("process", CommandObjectMultiwordProcess); REGISTER_COMMAND_OBJECT("quit", CommandObjectQuit); REGISTER_COMMAND_OBJECT("register", CommandObjectRegister); - REGISTER_COMMAND_OBJECT("script", CommandObjectScript); + REGISTER_COMMAND_OBJECT("scripting", CommandObjectMultiwordScripting); REGISTER_COMMAND_OBJECT("settings", CommandObjectMultiwordSettings); REGISTER_COMMAND_OBJECT("session", CommandObjectSession); REGISTER_COMMAND_OBJECT("source", CommandObjectMultiwordSource); diff --git a/lldb/test/API/functionalities/abbreviation/TestAbbreviations.py b/lldb/test/API/functionalities/abbreviation/TestAbbreviations.py index 10431e41dc81a..d5b534a2ff416 100644 --- a/lldb/test/API/functionalities/abbreviation/TestAbbreviations.py +++ b/lldb/test/API/functionalities/abbreviation/TestAbbreviations.py @@ -80,7 +80,7 @@ def test_command_abbreviations_and_aliases(self): # Check a command that wants the raw input. command_interpreter.ResolveCommand(r"""sc print("\n\n\tHello!\n")""", result) self.assertTrue(result.Succeeded()) - self.assertEqual(r"""script print("\n\n\tHello!\n")""", result.GetOutput()) + self.assertEqual(r"""scripting execute print("\n\n\tHello!\n")""", result.GetOutput()) # Prompt changing stuff should be tested, but this doesn't seem like the # right test to do it in. It has nothing to do with aliases or abbreviations. _______________________________________________ lldb-commits mailing list lldb-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits