Line data Source code
1 : import 'package:args/command_runner.dart';
2 : import 'package:mason/mason.dart';
3 : import 'package:meta/meta.dart';
4 : import 'package:very_good_cli/src/commands/create/commands/commands.dart';
5 :
6 : /// {@template create_command}
7 : /// `very_good create` command creates code from various built-in templates.
8 : /// {@endtemplate}
9 : ///
10 : /// See also:
11 : /// - [CreateSubCommand] for the base class for all create subcommands.
12 : class CreateCommand extends Command<int> {
13 : /// {@macro create_command}
14 1 : CreateCommand({
15 : required Logger logger,
16 : @visibleForTesting MasonGeneratorFromBundle? generatorFromBundle,
17 : @visibleForTesting MasonGeneratorFromBrick? generatorFromBrick,
18 : }) {
19 : // very_good create flutter_app <args>
20 1 : addSubcommand(
21 1 : CreateFlutterApp(
22 : logger: logger,
23 : generatorFromBundle: generatorFromBundle,
24 : generatorFromBrick: generatorFromBrick,
25 : ),
26 : );
27 :
28 : // very_good create dart_package <args>
29 1 : addSubcommand(
30 1 : CreateDartPackage(
31 : logger: logger,
32 : generatorFromBundle: generatorFromBundle,
33 : generatorFromBrick: generatorFromBrick,
34 : ),
35 : );
36 :
37 : // very_good create dart_cli <args>
38 1 : addSubcommand(
39 1 : CreateDartCLI(
40 : logger: logger,
41 : generatorFromBundle: generatorFromBundle,
42 : generatorFromBrick: generatorFromBrick,
43 : ),
44 : );
45 :
46 : // very_good create docs_site <args>
47 1 : addSubcommand(
48 1 : CreateDocsSite(
49 : logger: logger,
50 : generatorFromBundle: generatorFromBundle,
51 : generatorFromBrick: generatorFromBrick,
52 : ),
53 : );
54 :
55 : // very_good create flutter_package <args>
56 1 : addSubcommand(
57 1 : CreateFlutterPackage(
58 : logger: logger,
59 : generatorFromBundle: generatorFromBundle,
60 : generatorFromBrick: generatorFromBrick,
61 : ),
62 : );
63 :
64 : // very_good create flutter_plugin <args>
65 1 : addSubcommand(
66 1 : CreateFlutterPlugin(
67 : logger: logger,
68 : generatorFromBundle: generatorFromBundle,
69 : generatorFromBrick: generatorFromBrick,
70 : ),
71 : );
72 :
73 : // very_good create flame_game <args>
74 1 : addSubcommand(
75 1 : CreateFlameGame(
76 : logger: logger,
77 : generatorFromBundle: generatorFromBundle,
78 : generatorFromBrick: generatorFromBrick,
79 : ),
80 : );
81 : }
82 :
83 1 : @override
84 3 : String get summary => '$invocation\n$description';
85 :
86 1 : @override
87 : String get description =>
88 : 'Creates a new very good project in the specified directory.';
89 :
90 1 : @override
91 : String get name => 'create';
92 :
93 1 : @override
94 : String get invocation =>
95 : 'very_good create <subcommand> <project-name> [arguments]';
96 : }
|