Skip to content

Commit

Permalink
fix(create): docs site template org validation (#624)
Browse files Browse the repository at this point in the history
* fix(create): docs site template org validation

* fix tests
  • Loading branch information
felangel committed Jan 19, 2023
1 parent 3aca174 commit c44f194
Show file tree
Hide file tree
Showing 2 changed files with 24 additions and 7 deletions.
21 changes: 19 additions & 2 deletions lib/src/commands/create/commands/docs_site.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import 'package:very_good_cli/src/commands/create/templates/templates.dart';
/// {@template very_good_create_docs_site}
/// A [CreateSubCommand] for creating Dart command line interfaces.
/// {@endtemplate}
class CreateDocsSite extends CreateSubCommand with OrgName {
class CreateDocsSite extends CreateSubCommand {
/// {@macro very_good_create_docs_site}
CreateDocsSite({
required Analytics analytics,
Expand All @@ -18,7 +18,16 @@ class CreateDocsSite extends CreateSubCommand with OrgName {
logger: logger,
generatorFromBundle: generatorFromBundle,
generatorFromBrick: generatorFromBrick,
);
) {
argParser.addOption(
'org-name',
help: 'The organization for this new project.',
defaultsTo: _defaultOrgName,
aliases: ['org'],
);
}

static const _defaultOrgName = 'my-org';

@override
String get name => 'docs_site';
Expand All @@ -27,6 +36,14 @@ class CreateDocsSite extends CreateSubCommand with OrgName {
String get description =>
'Creates a new very good docs site in the specified directory.';

@override
Map<String, dynamic> getTemplateVars() {
return <String, dynamic>{
...super.getTemplateVars(),
'org_name': argResults['org-name'],
};
}

@override
Template get template => VeryGoodDocsSiteTemplate();
}
10 changes: 5 additions & 5 deletions test/src/commands/create/commands/docs_site_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ Usage: very_good create docs_site <project-name> [arguments]
--description The description for this new project.
(defaults to "A Very Good Project created by Very Good CLI.")
--org-name The organization for this new project.
(defaults to "com.example.verygoodcore")
(defaults to "my-org")
Run "very_good help" to see global options.''',
];
Expand Down Expand Up @@ -88,7 +88,7 @@ void main() {
),
);
expect(command.logger, equals(logger));
expect(command, isA<OrgName>());
expect(command, isA<CreateSubCommand>());
});
});

Expand Down Expand Up @@ -179,7 +179,7 @@ void main() {
.thenReturn(tempDir.path);
when(() => argResults.rest).thenReturn(['my_docs_site']);
when(() => argResults['org-name'] as String?).thenReturn(
'xyz.app.my_app',
'VeryGoodOpenSource',
);

final result = await command.run();
Expand All @@ -193,7 +193,7 @@ void main() {
vars: <String, dynamic>{
'project_name': 'my_docs_site',
'description': '',
'org_name': 'xyz.app.my_app',
'org_name': 'VeryGoodOpenSource',
},
onVarsChanged: any(named: 'onVarsChanged'),
),
Expand All @@ -204,7 +204,7 @@ void main() {
vars: <String, dynamic>{
'project_name': 'my_docs_site',
'description': '',
'org_name': 'xyz.app.my_app',
'org_name': 'VeryGoodOpenSource',
},
logger: logger,
),
Expand Down

0 comments on commit c44f194

Please sign in to comment.