validateAppName static method

ValidationResult<String> validateAppName(
  1. String? name
)

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());
}