execute method
execute command
Implementation
@override
Future<void> execute() async {
var isProject = false;
if (VortexCli.arguments[0] == 'create' || VortexCli.arguments[0] == '-c') {
isProject = VortexCli.arguments[1].split(':').first == 'project';
}
var pageName = this.name;
if (pageName.isEmpty || isProject) {
pageName = 'index';
}
final pageType = flags.contains('--stateful') ? 'stateful' : 'stateless';
final pageDir =
flags.contains('--dir') ? _getArgValue('--dir') : 'lib/pages';
final routePath =
flags.contains('--route')
? _getArgValue('--route')
: '/${pageName.toLowerCase()}';
final customFileName =
flags.contains('--file') ? _getArgValue('--file') : null;
LogService.info("Generating $pageType page: $pageName");
LogService.info("Route path: $routePath");
try {
// Create the directory if it doesn't exist
final projectDir = Directory.current.path;
final fullPageDir = path.join(projectDir, pageDir);
if (!Directory(fullPageDir).existsSync()) {
Directory(fullPageDir).createSync(recursive: true);
LogService.info("Created directory: $pageDir");
}
// Determine the file path
final fileName =
customFileName != null
? customFileName.endsWith('.dart')
? customFileName
: '$customFileName.dart'
: '${_getFileNameFromPageName(pageName)}.dart';
final filePath = path.join(fullPageDir, fileName);
// Check if the file already exists
if (File(filePath).existsSync()) {
throw CliException("File already exists: $filePath");
}
// Generate the page content
final pageContent = _generatePageContent(pageName, pageType, routePath);
// Write the file
File(filePath).writeAsStringSync(pageContent);
LogService.success("Generated page at: $filePath");
LogService.info("Running router scanner to update routes...");
} catch (e) {
LogService.error("Error generating page: $e");
}
}