- @override
Handles the command input.
Override this method to perform actions for this command.
Return value is the value returned to the command line operation. Return 0 for success.
Source
@override Future<int> handle() async { if (projectName == null) { printHelp(parentCommandName: "aqueduct"); return 1; } if (!isSnakeCase(projectName)) { displayError("Invalid project name ($projectName is not snake_case)."); return 1; } var destDirectory = destinationDirectoryFromPath(projectName); if (destDirectory.existsSync()) { displayError("${destDirectory.path} already exists, stopping."); return 1; } destDirectory.createSync(); var aqueductDirectory = aqueductPackageRef.resolve().location; displayProgress("Aqueduct directory is: ${aqueductDirectory.path}"); var templateURI = aqueductDirectory.uri .resolve("example/").resolve("templates/").resolve(templateName + "/"); var templateSourceDirectory = new Directory.fromUri(templateURI); if (!templateSourceDirectory.existsSync()) { displayError("No template at ${templateSourceDirectory.path}."); return 1; } displayProgress("Template source is: ${templateSourceDirectory.path}"); displayProgress("See more templates with 'aqueduct create list-templates'"); copyProjectFiles(destDirectory, templateSourceDirectory, projectName); createProjectSpecificFiles(destDirectory.path); replaceAqueductDependencyString( destDirectory.path, getAqueductDependencyStringFromPackage(aqueductPackageRef)); displayInfo( "Fetching project dependencies (pub get --no-packages-dir ${offline ? "--offline" : ""})..."); await runPubGet(destDirectory, offline: offline); displayProgress("Success."); displayInfo("New project '$projectName' successfully created."); displayProgress("Project is located at ${destDirectory.path}"); displayProgress("Open this directory in IntelliJ IDEA, Atom or VS Code."); displayProgress( "See ${destDirectory.path}${path_lib.separator}README.md for more information."); return 0; }