validateConfigurationPaths method

ValidationResult validateConfigurationPaths(
  1. AssetConfig config
)

Validates that all required configuration paths exist and are accessible.

Parameters:

  • config: The asset configuration to validate

Returns a validation result with any path-related issues.

Implementation

ValidationResult validateConfigurationPaths(AssetConfig config) {
  final errors = <ValidationError>[];
  final warnings = <ValidationWarning>[];
  final suggestions = <String>[];

  // Validate pubspec directory
  final pubspecDir = join(current, config.pubspecDir);
  if (!exists(pubspecDir)) {
    errors.add(ValidationError(
      message: 'Pubspec directory does not exist: ${config.pubspecDir}',
      field: 'pubspec_dir',
      type: ValidationErrorType.missing,
    ));
    suggestions.add('Create the pubspec directory: ${config.pubspecDir}');
  }

  // Validate assets directory
  final assetsDir = join(current, config.assetsDir);
  if (!exists(assetsDir)) {
    warnings.add(ValidationWarning(
      message: 'Assets directory does not exist: ${config.assetsDir}',
      field: 'assets_dir',
      type: ValidationWarningType.general,
    ));
    suggestions.add('Create the assets directory: ${config.assetsDir}');
  }

  // Validate flavor directory (if flavor is specified)
  if (config.flavor != null && config.flavor!.isNotEmpty) {
    final flavorPath = config.getFlavorPath();
    if (flavorPath != null && !exists(flavorPath)) {
      warnings.add(ValidationWarning(
        message: 'Flavor directory does not exist: $flavorPath',
        field: 'flavor_dir',
        type: ValidationWarningType.general,
      ));
      suggestions.add('Create the flavor directory: $flavorPath');
    }
  }

  // Check output directory write permissions
  final outputDir = config.getOutputPath();
  try {
    createDir(outputDir);
  } catch (e) {
    errors.add(ValidationError(
      message: 'Cannot create output directory: $outputDir - $e',
      field: 'output_dir',
      type: ValidationErrorType.permission,
    ));
    suggestions.add('Check write permissions for the output directory');
  }

  if (errors.isNotEmpty) {
    return ValidationResult.failure(
      errors: errors,
      warnings: warnings,
      suggestions: suggestions,
    );
  }

  return ValidationResult.success(
    warnings: warnings,
    suggestions: suggestions,
  );
}