77#include " commands/engine_install_cmd.h"
88#include " commands/engine_list_cmd.h"
99#include " commands/engine_uninstall_cmd.h"
10+ #include " commands/engine_update_cmd.h"
11+ #include " commands/engine_use_cmd.h"
1012#include " commands/model_del_cmd.h"
1113#include " commands/model_get_cmd.h"
1214#include " commands/model_import_cmd.h"
@@ -340,7 +342,7 @@ void CommandLineParser::SetupEngineCommands() {
340342 for (auto & engine : engine_service_.kSupportEngines ) {
341343 std::string engine_name{engine};
342344 EngineInstall (install_cmd, engine_name, cml_data_.engine_version ,
343- cml_data_.engine_src );
345+ cml_data_.engine_src , cml_data_. show_menu );
344346 }
345347
346348 auto uninstall_cmd =
@@ -361,6 +363,41 @@ void CommandLineParser::SetupEngineCommands() {
361363 EngineUninstall (uninstall_cmd, engine_name);
362364 }
363365
366+ auto engine_upd_cmd = engines_cmd->add_subcommand (" update" , " Update engine" );
367+ engine_upd_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
368+ " engines update [engine_name]" );
369+ engine_upd_cmd->callback ([this , engine_upd_cmd] {
370+ if (std::exchange (executed_, true ))
371+ return ;
372+ if (engine_upd_cmd->get_subcommands ().empty ()) {
373+ CLI_LOG (" [engine_name] is required\n " );
374+ CLI_LOG (engine_upd_cmd->help ());
375+ }
376+ });
377+ engine_upd_cmd->group (kSubcommands );
378+ for (auto & engine : engine_service_.kSupportEngines ) {
379+ std::string engine_name{engine};
380+ EngineUpdate (engine_upd_cmd, engine_name);
381+ }
382+
383+ auto engine_use_cmd =
384+ engines_cmd->add_subcommand (" use" , " Set engine as default" );
385+ engine_use_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
386+ " engines use [engine_name]" );
387+ engine_use_cmd->callback ([this , engine_use_cmd] {
388+ if (std::exchange (executed_, true ))
389+ return ;
390+ if (engine_use_cmd->get_subcommands ().empty ()) {
391+ CLI_LOG (" [engine_name] is required\n " );
392+ CLI_LOG (engine_use_cmd->help ());
393+ }
394+ });
395+ engine_use_cmd->group (kSubcommands );
396+ for (auto & engine : engine_service_.kSupportEngines ) {
397+ std::string engine_name{engine};
398+ EngineUse (engine_use_cmd, engine_name);
399+ }
400+
364401 EngineGet (engines_cmd);
365402}
366403
@@ -428,7 +465,8 @@ void CommandLineParser::SetupSystemCommands() {
428465
429466void CommandLineParser::EngineInstall (CLI::App* parent,
430467 const std::string& engine_name,
431- std::string& version, std::string& src) {
468+ std::string& version, std::string& src,
469+ bool show_menu) {
432470 auto install_engine_cmd = parent->add_subcommand (engine_name, " " );
433471 install_engine_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
434472 " engines install " + engine_name + " [options]" );
@@ -440,13 +478,16 @@ void CommandLineParser::EngineInstall(CLI::App* parent,
440478 install_engine_cmd->add_option (" -s, --source" , src,
441479 " Install engine by local path" );
442480
443- install_engine_cmd->callback ([this , engine_name, &version, &src] {
481+ install_engine_cmd->add_option (" -m, --menu" , show_menu,
482+ " Display menu for engine variant selection" );
483+
484+ install_engine_cmd->callback ([this , engine_name, &version, &src, show_menu] {
444485 if (std::exchange (executed_, true ))
445486 return ;
446487 try {
447- commands::EngineInstallCmd (download_service_,
448- cml_data_.config .apiServerHost ,
449- std::stoi (cml_data_.config .apiServerPort ))
488+ commands::EngineInstallCmd (
489+ download_service_, cml_data_.config .apiServerHost ,
490+ std::stoi (cml_data_.config .apiServerPort ), show_menu )
450491 .Exec (engine_name, version, src);
451492 } catch (const std::exception& e) {
452493 CTL_ERR (e.what ());
@@ -474,6 +515,47 @@ void CommandLineParser::EngineUninstall(CLI::App* parent,
474515 });
475516}
476517
518+ void CommandLineParser::EngineUpdate (CLI::App* parent,
519+ const std::string& engine_name) {
520+ auto engine_update_cmd = parent->add_subcommand (engine_name, " " );
521+ engine_update_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
522+ " engines update " + engine_name);
523+ engine_update_cmd->group (kEngineGroup );
524+
525+ engine_update_cmd->callback ([this , engine_name] {
526+ if (std::exchange (executed_, true ))
527+ return ;
528+ try {
529+ commands::EngineUpdateCmd ().Exec (
530+ cml_data_.config .apiServerHost ,
531+ std::stoi (cml_data_.config .apiServerPort ), engine_name);
532+ } catch (const std::exception& e) {
533+ CTL_ERR (e.what ());
534+ }
535+ });
536+ }
537+
538+ void CommandLineParser::EngineUse (CLI::App* parent,
539+ const std::string& engine_name) {
540+ auto engine_use_cmd = parent->add_subcommand (engine_name, " " );
541+ engine_use_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
542+ " engines use " + engine_name);
543+ engine_use_cmd->group (kEngineGroup );
544+
545+ engine_use_cmd->callback ([this , engine_name] {
546+ if (std::exchange (executed_, true ))
547+ return ;
548+ auto result = commands::EngineUseCmd ().Exec (
549+ cml_data_.config .apiServerHost ,
550+ std::stoi (cml_data_.config .apiServerPort ), engine_name);
551+ if (result.has_error ()) {
552+ CTL_ERR (result.error ());
553+ } else {
554+ CTL_INF (" Engine " << engine_name << " is set as default" );
555+ }
556+ });
557+ }
558+
477559void CommandLineParser::EngineGet (CLI::App* parent) {
478560 auto get_cmd = parent->add_subcommand (" get" , " Get engine info" );
479561 get_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
0 commit comments