Commit ebf1ecc5 authored by Devon Carew's avatar Devon Carew

valdate project names in create

parent 9ce6bff5
...@@ -76,7 +76,15 @@ class CreateCommand extends Command { ...@@ -76,7 +76,15 @@ class CreateCommand extends Command {
projectDir = new Directory(argResults.rest.first); projectDir = new Directory(argResults.rest.first);
} }
_renderTemplates(projectDir, flutterPackagesDirectory, String dirPath = path.normalize(projectDir.absolute.path);
String projectName = _normalizeProjectName(path.basename(dirPath));
if (_validateProjectName(projectName) != null) {
printError(_validateProjectName(projectName));
return 1;
}
_renderTemplates(projectName, dirPath, flutterPackagesDirectory,
renderDriverTest: argResults['with-driver-test']); renderDriverTest: argResults['with-driver-test']);
if (argResults['pub']) { if (argResults['pub']) {
...@@ -115,16 +123,14 @@ All done! In order to run your application, type: ...@@ -115,16 +123,14 @@ All done! In order to run your application, type:
return 0; return 0;
} }
void _renderTemplates(Directory projectDir, String flutterPackagesDirectory, void _renderTemplates(String projectName, String dirPath,
{ bool renderDriverTest: false }) { String flutterPackagesDirectory, { bool renderDriverTest: false }) {
String dirPath = path.normalize(projectDir.absolute.path);
String projectName = _normalizeProjectName(path.basename(dirPath));
String projectIdentifier = _createProjectIdentifier(path.basename(dirPath)); String projectIdentifier = _createProjectIdentifier(path.basename(dirPath));
String relativeFlutterPackagesDirectory = path.relative(flutterPackagesDirectory, from: dirPath); String relativeFlutterPackagesDirectory = path.relative(flutterPackagesDirectory, from: dirPath);
printStatus('Creating project ${path.basename(projectName)}:'); printStatus('Creating project ${path.basename(projectName)}:');
projectDir.createSync(recursive: true); new Directory(dirPath).createSync(recursive: true);
Map templateContext = <String, dynamic>{ Map templateContext = <String, dynamic>{
'projectName': projectName, 'projectName': projectName,
...@@ -164,3 +170,34 @@ String _createProjectIdentifier(String name) { ...@@ -164,3 +170,34 @@ String _createProjectIdentifier(String name) {
name = name.length == 0 ? 'untitled' : name; name = name.length == 0 ? 'untitled' : name;
return 'com.yourcompany.$name'; return 'com.yourcompany.$name';
} }
final Set<String> _packageDependencies = new Set<String>.from(<String>[
'args',
'async',
'collection',
'convert',
'flutter',
'html',
'intl',
'logging',
'matcher',
'mime',
'path',
'plugin',
'pool',
'test',
'utf',
'watcher',
'yaml'
]);
/// Return `null` if the project name is legal. Return a validation message if
/// we should disallow the project name.
String _validateProjectName(String projectName) {
if (_packageDependencies.contains(projectName)) {
return "Invalid project name: '$projectName' - this will conflict with Flutter "
"package dependencies.";
}
return null;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment