File tree Expand file tree Collapse file tree 3 files changed +20
-0
lines changed Expand file tree Collapse file tree 3 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -27,6 +27,7 @@ export 'package:mineral/src/api/common/commands/command_helper.dart';
2727export 'package:mineral/src/api/common/commands/command_option.dart' ;
2828export 'package:mineral/src/api/common/commands/command_option_type.dart' ;
2929export 'package:mineral/src/api/common/commands/command_type.dart' ;
30+ export 'package:mineral/src/api/common/commands/sub_command_declaration.dart' ;
3031export 'package:mineral/src/api/common/components/action_row.dart' ;
3132export 'package:mineral/src/api/common/components/attached_file.dart' ;
3233// Commons
Original file line number Diff line number Diff line change @@ -5,6 +5,7 @@ import 'package:mineral/src/api/common/commands/command_context_type.dart';
55import 'package:mineral/src/api/common/commands/command_helper.dart' ;
66import 'package:mineral/src/api/common/commands/command_option.dart' ;
77import 'package:mineral/src/api/common/commands/command_type.dart' ;
8+ import 'package:mineral/src/api/common/commands/sub_command_declaration.dart' ;
89import 'package:mineral/src/domains/commands/command_builder.dart' ;
910import 'package:mineral/src/infrastructure/io/exceptions/missing_method_exception.dart' ;
1011import 'package:mineral/src/infrastructure/io/exceptions/missing_property_exception.dart' ;
@@ -71,6 +72,18 @@ final class CommandDeclarationBuilder implements CommandBuilder {
7172 return this ;
7273 }
7374
75+ CommandDeclarationBuilder registerSubCommand (Function subCommandFactory) {
76+ final instance = subCommandFactory ();
77+
78+ if (instance is ! SubCommandDeclaration ) {
79+ throw Exception ('Factory must return a SubCommandDeclaration instance' );
80+ }
81+
82+ final builder = instance.build ();
83+ subCommands.add (builder);
84+ return this ;
85+ }
86+
7487 CommandDeclarationBuilder createGroup (Function (CommandGroupBuilder ) group) {
7588 final builder = CommandGroupBuilder ();
7689 group (builder);
Original file line number Diff line number Diff line change 1+ import 'package:mineral/src/api/common/commands/builder/sub_command_builder.dart' ;
2+ import 'package:mineral/src/domains/common/utils/listenable.dart' ;
3+
4+ abstract interface class SubCommandDeclaration implements Listenable {
5+ SubCommandBuilder build ();
6+ }
You can’t perform that action at this time.
0 commit comments