@@ -51,9 +51,7 @@ CommandLineParser::CommandLineParser()
51
51
dylib_path_manager_{std::make_shared<cortex::DylibPathManager>()},
52
52
db_service_{std::make_shared<DatabaseService>()},
53
53
engine_service_{std::make_shared<EngineService>(
54
- download_service_, dylib_path_manager_, db_service_)} {
55
- supported_engines_ = engine_service_->GetSupportedEngineNames ().value ();
56
- }
54
+ download_service_, dylib_path_manager_, db_service_)} {}
57
55
58
56
bool CommandLineParser::SetupCommand (int argc, char ** argv) {
59
57
app_.usage (" Usage:\n " + commands::GetCortexBinary () +
@@ -482,104 +480,141 @@ void CommandLineParser::SetupEngineCommands() {
482
480
install_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
483
481
" engines install [engine_name] [options]" );
484
482
install_cmd->group (kSubcommands );
483
+ install_cmd
484
+ ->add_option (" name" , cml_data_.engine_name , " Engine name e.g. llama-cpp" )
485
+ ->required ();
486
+ install_cmd->add_option (" -v, --version" , cml_data_.engine_version ,
487
+ " Engine version to download" );
488
+ install_cmd->add_option (" -s, --source" , cml_data_.engine_src ,
489
+ " Install engine by local path" );
490
+ install_cmd->add_flag (" -m, --menu" , cml_data_.show_menu ,
491
+ " Display menu for engine variant selection" );
492
+
485
493
install_cmd->callback ([this , install_cmd] {
486
494
if (std::exchange (executed_, true ))
487
495
return ;
488
- if (install_cmd->get_subcommands ().empty ()) {
489
- CLI_LOG (" [engine_name] is required\n " );
490
- CLI_LOG (install_cmd->help ());
496
+ try {
497
+ commands::EngineInstallCmd (
498
+ engine_service_, cml_data_.config .apiServerHost ,
499
+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.show_menu )
500
+ .Exec (cml_data_.engine_name , cml_data_.engine_version ,
501
+ cml_data_.engine_src );
502
+ } catch (const std::exception& e) {
503
+ CTL_ERR (e.what ());
491
504
}
492
505
});
493
506
494
- for (const auto & engine : supported_engines_) {
495
- EngineInstall (install_cmd, engine, cml_data_.engine_version ,
496
- cml_data_.engine_src );
497
- }
498
-
499
507
auto uninstall_cmd =
500
508
engines_cmd->add_subcommand (" uninstall" , " Uninstall engine" );
501
509
uninstall_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
502
510
" engines uninstall [engine_name] [options]" );
511
+ uninstall_cmd->group (kSubcommands );
512
+ uninstall_cmd
513
+ ->add_option (" name" , cml_data_.engine_name , " Engine name e.g. llama-cpp" )
514
+ ->required ();
503
515
uninstall_cmd->callback ([this , uninstall_cmd] {
504
516
if (std::exchange (executed_, true ))
505
517
return ;
506
- if (uninstall_cmd->get_subcommands ().empty ()) {
507
- CLI_LOG (" [engine_name] is required\n " );
508
- CLI_LOG (uninstall_cmd->help ());
518
+ try {
519
+ commands::EngineUninstallCmd ().Exec (
520
+ cml_data_.config .apiServerHost ,
521
+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.engine_name );
522
+ } catch (const std::exception& e) {
523
+ CTL_ERR (e.what ());
509
524
}
510
525
});
511
- uninstall_cmd->group (kSubcommands );
512
- for (const auto & engine : supported_engines_) {
513
- EngineUninstall (uninstall_cmd, engine);
514
- }
515
526
516
527
auto engine_upd_cmd = engines_cmd->add_subcommand (" update" , " Update engine" );
517
528
engine_upd_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
518
529
" engines update [engine_name]" );
530
+ engine_upd_cmd->group (kSubcommands );
531
+ engine_upd_cmd
532
+ ->add_option (" name" , cml_data_.engine_name , " Engine name e.g. llama-cpp" )
533
+ ->required ();
519
534
engine_upd_cmd->callback ([this , engine_upd_cmd] {
520
535
if (std::exchange (executed_, true ))
521
536
return ;
522
- if (engine_upd_cmd->get_subcommands ().empty ()) {
523
- CLI_LOG (" [engine_name] is required\n " );
524
- CLI_LOG (engine_upd_cmd->help ());
537
+ try {
538
+ commands::EngineUpdateCmd ().Exec (
539
+ cml_data_.config .apiServerHost ,
540
+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.engine_name );
541
+ } catch (const std::exception& e) {
542
+ CTL_ERR (e.what ());
525
543
}
526
544
});
527
- engine_upd_cmd->group (kSubcommands );
528
- for (const auto & engine : supported_engines_) {
529
- EngineUpdate (engine_upd_cmd, engine);
530
- }
531
545
532
546
auto engine_use_cmd =
533
547
engines_cmd->add_subcommand (" use" , " Set engine as default" );
534
548
engine_use_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
535
549
" engines use [engine_name]" );
550
+ engine_use_cmd->group (kSubcommands );
551
+ engine_use_cmd
552
+ ->add_option (" name" , cml_data_.engine_name , " Engine name e.g. llama-cpp" )
553
+ ->required ();
536
554
engine_use_cmd->callback ([this , engine_use_cmd] {
537
555
if (std::exchange (executed_, true ))
538
556
return ;
539
- if (engine_use_cmd->get_subcommands ().empty ()) {
540
- CLI_LOG (" [engine_name] is required\n " );
541
- CLI_LOG (engine_use_cmd->help ());
557
+ auto result = commands::EngineUseCmd ().Exec (
558
+ cml_data_.config .apiServerHost ,
559
+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.engine_name );
560
+ if (result.has_error ()) {
561
+ CTL_ERR (result.error ());
562
+ } else {
563
+ CTL_INF (" Engine " << cml_data_.engine_name << " is set as default" );
542
564
}
543
565
});
544
- engine_use_cmd->group (kSubcommands );
545
- for (const auto & engine : supported_engines_) {
546
- EngineUse (engine_use_cmd, engine);
547
- }
548
566
549
567
auto engine_load_cmd = engines_cmd->add_subcommand (" load" , " Load engine" );
550
568
engine_load_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
551
569
" engines load [engine_name]" );
570
+ engine_load_cmd->group (kSubcommands );
571
+ engine_load_cmd
572
+ ->add_option (" name" , cml_data_.engine_name , " Engine name e.g. llama-cpp" )
573
+ ->required ();
552
574
engine_load_cmd->callback ([this , engine_load_cmd] {
553
575
if (std::exchange (executed_, true ))
554
576
return ;
555
- if (engine_load_cmd->get_subcommands ().empty ()) {
556
- CLI_LOG (" [engine_name] is required\n " );
557
- CLI_LOG (engine_load_cmd->help ());
577
+ auto result = commands::EngineLoadCmd ().Exec (
578
+ cml_data_.config .apiServerHost ,
579
+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.engine_name );
580
+ if (result.has_error ()) {
581
+ CTL_ERR (result.error ());
558
582
}
559
583
});
560
- engine_load_cmd->group (kSubcommands );
561
- for (const auto & engine : supported_engines_) {
562
- EngineLoad (engine_load_cmd, engine);
563
- }
564
584
565
585
auto engine_unload_cmd =
566
586
engines_cmd->add_subcommand (" unload" , " Unload engine" );
567
587
engine_unload_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
568
588
" engines unload [engine_name]" );
589
+ engine_unload_cmd->group (kSubcommands );
590
+ engine_unload_cmd
591
+ ->add_option (" name" , cml_data_.engine_name , " Engine name e.g. llama-cpp" )
592
+ ->required ();
569
593
engine_unload_cmd->callback ([this , engine_unload_cmd] {
570
594
if (std::exchange (executed_, true ))
571
595
return ;
572
- if (engine_unload_cmd->get_subcommands ().empty ()) {
573
- CLI_LOG (" [engine_name] is required\n " );
574
- CLI_LOG (engine_unload_cmd->help ());
596
+ auto result = commands::EngineUnloadCmd ().Exec (
597
+ cml_data_.config .apiServerHost ,
598
+ std::stoi (cml_data_.config .apiServerPort ), cml_data_.engine_name );
599
+ if (result.has_error ()) {
600
+ CTL_ERR (result.error ());
575
601
}
576
602
});
577
- engine_unload_cmd->group (kSubcommands );
578
- for (const auto & engine : supported_engines_) {
579
- EngineUnload (engine_unload_cmd, engine);
580
- }
581
603
582
- EngineGet (engines_cmd);
604
+ auto engine_get_cmd = engines_cmd->add_subcommand (" get" , " Get engine info" );
605
+ engine_get_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
606
+ " engines get [engine_name] [options]" );
607
+ engine_get_cmd->group (kSubcommands );
608
+ engine_get_cmd
609
+ ->add_option (" name" , cml_data_.engine_name , " Engine name e.g. llama-cpp" )
610
+ ->required ();
611
+ engine_get_cmd->callback ([this , engine_get_cmd] {
612
+ if (std::exchange (executed_, true ))
613
+ return ;
614
+ commands::EngineGetCmd ().Exec (cml_data_.config .apiServerHost ,
615
+ std::stoi (cml_data_.config .apiServerPort ),
616
+ cml_data_.engine_name );
617
+ });
583
618
}
584
619
585
620
void CommandLineParser::SetupHardwareCommands () {
@@ -737,167 +772,6 @@ void CommandLineParser::SetupSystemCommands() {
737
772
});
738
773
}
739
774
740
- void CommandLineParser::EngineInstall (CLI::App* parent,
741
- const std::string& engine_name,
742
- std::string& version, std::string& src) {
743
- auto install_engine_cmd = parent->add_subcommand (engine_name, " " );
744
- install_engine_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
745
- " engines install " + engine_name + " [options]" );
746
- install_engine_cmd->group (kEngineGroup );
747
-
748
- install_engine_cmd->add_option (" -v, --version" , version,
749
- " Engine version to download" );
750
-
751
- install_engine_cmd->add_option (" -s, --source" , src,
752
- " Install engine by local path" );
753
-
754
- install_engine_cmd->add_flag (" -m, --menu" , cml_data_.show_menu ,
755
- " Display menu for engine variant selection" );
756
-
757
- install_engine_cmd->callback ([this , engine_name, &version, &src] {
758
- if (std::exchange (executed_, true ))
759
- return ;
760
- try {
761
- commands::EngineInstallCmd (
762
- engine_service_, cml_data_.config .apiServerHost ,
763
- std::stoi (cml_data_.config .apiServerPort ), cml_data_.show_menu )
764
- .Exec (engine_name, version, src);
765
- } catch (const std::exception& e) {
766
- CTL_ERR (e.what ());
767
- }
768
- });
769
- }
770
-
771
- void CommandLineParser::EngineUninstall (CLI::App* parent,
772
- const std::string& engine_name) {
773
- auto uninstall_engine_cmd = parent->add_subcommand (engine_name, " " );
774
- uninstall_engine_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
775
- " engines install " + engine_name + " [options]" );
776
- uninstall_engine_cmd->group (kEngineGroup );
777
-
778
- uninstall_engine_cmd->callback ([this , engine_name] {
779
- if (std::exchange (executed_, true ))
780
- return ;
781
- try {
782
- commands::EngineUninstallCmd ().Exec (
783
- cml_data_.config .apiServerHost ,
784
- std::stoi (cml_data_.config .apiServerPort ), engine_name);
785
- } catch (const std::exception& e) {
786
- CTL_ERR (e.what ());
787
- }
788
- });
789
- }
790
-
791
- void CommandLineParser::EngineUpdate (CLI::App* parent,
792
- const std::string& engine_name) {
793
- auto engine_update_cmd = parent->add_subcommand (engine_name, " " );
794
- engine_update_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
795
- " engines update " + engine_name);
796
- engine_update_cmd->group (kEngineGroup );
797
-
798
- engine_update_cmd->callback ([this , engine_name] {
799
- if (std::exchange (executed_, true ))
800
- return ;
801
- try {
802
- commands::EngineUpdateCmd ().Exec (
803
- cml_data_.config .apiServerHost ,
804
- std::stoi (cml_data_.config .apiServerPort ), engine_name);
805
- } catch (const std::exception& e) {
806
- CTL_ERR (e.what ());
807
- }
808
- });
809
- }
810
-
811
- void CommandLineParser::EngineUnload (CLI::App* parent,
812
- const std::string& engine_name) {
813
- auto sub_cmd = parent->add_subcommand (engine_name, " " );
814
- sub_cmd->usage (" Usage:\n " + commands::GetCortexBinary () + " engines unload " +
815
- engine_name);
816
- sub_cmd->group (kEngineGroup );
817
-
818
- sub_cmd->callback ([this , engine_name] {
819
- if (std::exchange (executed_, true ))
820
- return ;
821
- auto result = commands::EngineUnloadCmd ().Exec (
822
- cml_data_.config .apiServerHost ,
823
- std::stoi (cml_data_.config .apiServerPort ), engine_name);
824
- if (result.has_error ()) {
825
- CTL_ERR (result.error ());
826
- }
827
- });
828
- }
829
-
830
- void CommandLineParser::EngineLoad (CLI::App* parent,
831
- const std::string& engine_name) {
832
- auto sub_cmd = parent->add_subcommand (engine_name, " " );
833
- sub_cmd->usage (" Usage:\n " + commands::GetCortexBinary () + " engines load " +
834
- engine_name);
835
- sub_cmd->group (kEngineGroup );
836
-
837
- sub_cmd->callback ([this , engine_name] {
838
- if (std::exchange (executed_, true ))
839
- return ;
840
- auto result = commands::EngineLoadCmd ().Exec (
841
- cml_data_.config .apiServerHost ,
842
- std::stoi (cml_data_.config .apiServerPort ), engine_name);
843
- if (result.has_error ()) {
844
- CTL_ERR (result.error ());
845
- }
846
- });
847
- }
848
-
849
- void CommandLineParser::EngineUse (CLI::App* parent,
850
- const std::string& engine_name) {
851
- auto engine_use_cmd = parent->add_subcommand (engine_name, " " );
852
- engine_use_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
853
- " engines use " + engine_name);
854
- engine_use_cmd->group (kEngineGroup );
855
-
856
- engine_use_cmd->callback ([this , engine_name] {
857
- if (std::exchange (executed_, true ))
858
- return ;
859
- auto result = commands::EngineUseCmd ().Exec (
860
- cml_data_.config .apiServerHost ,
861
- std::stoi (cml_data_.config .apiServerPort ), engine_name);
862
- if (result.has_error ()) {
863
- CTL_ERR (result.error ());
864
- } else {
865
- CTL_INF (" Engine " << engine_name << " is set as default" );
866
- }
867
- });
868
- }
869
-
870
- void CommandLineParser::EngineGet (CLI::App* parent) {
871
- auto get_cmd = parent->add_subcommand (" get" , " Get engine info" );
872
- get_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
873
- " engines get [engine_name] [options]" );
874
- get_cmd->group (kSubcommands );
875
- get_cmd->callback ([this , get_cmd] {
876
- if (std::exchange (executed_, true ))
877
- return ;
878
- if (get_cmd->get_subcommands ().empty ()) {
879
- CLI_LOG (" [engine_name] is required\n " );
880
- CLI_LOG (get_cmd->help ());
881
- }
882
- });
883
-
884
- for (const auto & engine : supported_engines_) {
885
- std::string desc = " Get " + engine + " status" ;
886
-
887
- auto engine_get_cmd = get_cmd->add_subcommand (engine, desc);
888
- engine_get_cmd->usage (" Usage:\n " + commands::GetCortexBinary () +
889
- " engines get " + engine + " [options]" );
890
- engine_get_cmd->group (kEngineGroup );
891
- engine_get_cmd->callback ([this , engine] {
892
- if (std::exchange (executed_, true ))
893
- return ;
894
- commands::EngineGetCmd ().Exec (cml_data_.config .apiServerHost ,
895
- std::stoi (cml_data_.config .apiServerPort ),
896
- engine);
897
- });
898
- }
899
- }
900
-
901
775
void CommandLineParser::ModelUpdate (CLI::App* parent) {
902
776
auto model_update_cmd =
903
777
parent->add_subcommand (" update" , " Update model configurations" );
0 commit comments