Skip to content

Commit

Permalink
feat: create dart package new usage
Browse files Browse the repository at this point in the history
  • Loading branch information
renancaraujo committed Jan 6, 2023
1 parent 887d111 commit c13faa9
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/src/commands/create/commands/commands.dart
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
export 'dart_package.dart';
export 'flutter_app.dart';
export 'legacy.dart';
35 changes: 35 additions & 0 deletions lib/src/commands/create/commands/dart_package.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import 'package:mason_logger/mason_logger.dart';
import 'package:usage/usage.dart';
import 'package:very_good_cli/src/commands/create/create_subcommand.dart';
import 'package:very_good_cli/src/commands/create/templates/templates.dart';

/// {@template very_good_create_dart_package_command}
/// A [CreateSubCommand] for creating Dart packages.
/// {@endtemplate}
class CreateDartPackage extends CreateSubCommand with Publishable {
/// {@macro very_good_create_dart_package_command}
CreateDartPackage({
required Analytics analytics,
required Logger logger,
required MasonGeneratorFromBundle? generatorFromBundle,
required MasonGeneratorFromBrick? generatorFromBrick,
}) : super(
analytics: analytics,
logger: logger,
generatorFromBundle: generatorFromBundle,
generatorFromBrick: generatorFromBrick,
);

@override
String get name => 'dart_package';

@override
List<String> get aliases => ['dart_pkg'];

@override
String get description =>
'Creates a new very good Dart package in the specified directory.';

@override
Template get template => DartPkgTemplate();
}
10 changes: 10 additions & 0 deletions lib/src/commands/create/create.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,16 @@ class CreateCommand extends Command<int> {
generatorFromBrick: generatorFromBrick,
),
);

// very_good create dart_pkg <args>
addSubcommand(
CreateDartPackage(
analytics: analytics,
logger: logger,
generatorFromBundle: generatorFromBundle,
generatorFromBrick: generatorFromBrick,
),
);
}

@override
Expand Down
19 changes: 19 additions & 0 deletions lib/src/commands/create/create_subcommand.dart
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,14 @@ abstract class CreateSubCommand extends Command<int> {
aliases: ['org'],
);
}

if (this is Publishable) {
argParser.addFlag(
'publishable',
negatable: false,
help: 'Whether the generated project is intended to be published.',
);
}
}

final Analytics _analytics;
Expand Down Expand Up @@ -236,6 +244,7 @@ abstract class CreateSubCommand extends Command<int> {
'project_name': projectName,
'description': projectDescription,
if (this is OrgName) 'org_name': (this as OrgName).orgName,
if (this is Publishable) 'publishable': (this as Publishable).publishable,
};
}
}
Expand Down Expand Up @@ -298,3 +307,13 @@ mixin MultiTemplates on CreateSubCommand {
);
}
}

/// Mixin for [CreateSubCommand] subclasses that receives the publishable
/// flag.
///
/// Takes care of parsing it from [argResults] and pass it
/// to the brick generator.
mixin Publishable on CreateSubCommand {
/// Gets the publishable flag.
bool get publishable => argResults['publishable'] as bool? ?? false;
}

0 comments on commit c13faa9

Please sign in to comment.