2020#include " commands/model_import_cmd.h"
2121#include " commands/model_list_cmd.h"
2222#include " commands/model_pull_cmd.h"
23+ #include " commands/model_source_add_cmd.h"
24+ #include " commands/model_source_del_cmd.h"
25+ #include " commands/model_source_list_cmd.h"
2326#include " commands/model_start_cmd.h"
2427#include " commands/model_stop_cmd.h"
2528#include " commands/model_upd_cmd.h"
@@ -253,6 +256,8 @@ void CommandLineParser::SetupModelCommands() {
253256 " Display cpu mode" );
254257 list_models_cmd->add_flag (" --gpu_mode" , cml_data_.display_gpu_mode ,
255258 " Display gpu mode" );
259+ list_models_cmd->add_flag (" --available" , cml_data_.display_available_model ,
260+ " Display available models to download" );
256261 list_models_cmd->group (kSubcommands );
257262 list_models_cmd->callback ([this ]() {
258263 if (std::exchange (executed_, true ))
@@ -261,7 +266,8 @@ void CommandLineParser::SetupModelCommands() {
261266 cml_data_.config .apiServerHost ,
262267 std::stoi (cml_data_.config .apiServerPort ), cml_data_.filter ,
263268 cml_data_.display_engine , cml_data_.display_version ,
264- cml_data_.display_cpu_mode , cml_data_.display_gpu_mode );
269+ cml_data_.display_cpu_mode , cml_data_.display_gpu_mode ,
270+ cml_data_.display_available_model );
265271 });
266272
267273 auto get_models_cmd =
@@ -329,6 +335,74 @@ void CommandLineParser::SetupModelCommands() {
329335 std::stoi (cml_data_.config .apiServerPort ),
330336 cml_data_.model_id , cml_data_.model_path );
331337 });
338+
339+ auto model_source_cmd = models_cmd->add_subcommand (
340+ " sources" , " Subcommands for managing model sources" );
341+ model_source_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
342+ " models sources [options] [subcommand]" );
343+ model_source_cmd->group (kSubcommands );
344+
345+ model_source_cmd->callback ([this , model_source_cmd] {
346+ if (std::exchange (executed_, true ))
347+ return ;
348+ if (model_source_cmd->get_subcommands ().empty ()) {
349+ CLI_LOG (model_source_cmd->help ());
350+ }
351+ });
352+
353+ auto model_src_add_cmd =
354+ model_source_cmd->add_subcommand (" add" , " Add a model source" );
355+ model_src_add_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
356+ " models sources add [model_source]" );
357+ model_src_add_cmd->group (kSubcommands );
358+ model_src_add_cmd->add_option (" source" , cml_data_.model_src , " " );
359+ model_src_add_cmd->callback ([&]() {
360+ if (std::exchange (executed_, true ))
361+ return ;
362+ if (cml_data_.model_src .empty ()) {
363+ CLI_LOG (" [model_source] is required\n " );
364+ CLI_LOG (model_src_add_cmd->help ());
365+ return ;
366+ };
367+
368+ commands::ModelSourceAddCmd ().Exec (
369+ cml_data_.config .apiServerHost ,
370+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.model_src );
371+ });
372+
373+ auto model_src_del_cmd =
374+ model_source_cmd->add_subcommand (" remove" , " Remove a model source" );
375+ model_src_del_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
376+ " models sources remove [model_source]" );
377+ model_src_del_cmd->group (kSubcommands );
378+ model_src_del_cmd->add_option (" source" , cml_data_.model_src , " " );
379+ model_src_del_cmd->callback ([&]() {
380+ if (std::exchange (executed_, true ))
381+ return ;
382+ if (cml_data_.model_src .empty ()) {
383+ CLI_LOG (" [model_source] is required\n " );
384+ CLI_LOG (model_src_del_cmd->help ());
385+ return ;
386+ };
387+
388+ commands::ModelSourceDelCmd ().Exec (
389+ cml_data_.config .apiServerHost ,
390+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.model_src );
391+ });
392+
393+ auto model_src_list_cmd =
394+ model_source_cmd->add_subcommand (" list" , " List all model sources" );
395+ model_src_list_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
396+ " models sources list" );
397+ model_src_list_cmd->group (kSubcommands );
398+ model_src_list_cmd->callback ([&]() {
399+ if (std::exchange (executed_, true ))
400+ return ;
401+
402+ commands::ModelSourceListCmd ().Exec (
403+ cml_data_.config .apiServerHost ,
404+ std::stoi (cml_data_.config .apiServerPort ));
405+ });
332406}
333407
334408void CommandLineParser::SetupConfigsCommands () {
0 commit comments