validateAppName static method
Validates application name format.
Checks that the app name follows snake_case convention and contains only valid characters.
Parameters:
name: Application name to validate
Returns: ValidationResult with the normalized name or error details
Example:
final result = ArgumentValidator.validateAppName('my_app');
if (result.isValid) {
print('Valid app name: ${result.value}');
} else {
print('Invalid app name: ${result.error}');
}
Implementation
static ValidationResult<String> validateAppName(String? name) {
if (name == null || name.isEmpty) {
return ValidationResult.error(
'App name is required',
suggestion: 'Provide an app name as the first argument',
examples: ['morpheme create my_app'],
);
}
if (!RegExp(r'^[a-z][a-z0-9_]*$').hasMatch(name)) {
return ValidationResult.error(
'App name must use snake_case format',
suggestion: 'Use lowercase letters, numbers, and underscores only',
examples: ['my_awesome_app', 'todo_app', 'weather_tracker'],
);
}
return ValidationResult.success(name.toLowerCase());
}