validateDirectories method

ValidationResult validateDirectories(
  1. List<String> directoryPaths
)

Validates that all required directories exist and are accessible.

Checks directory existence and permissions before proceeding with file operations.

Parameters:

  • directoryPaths: List of directory paths to validate

Returns a ValidationResult with validation findings.

Implementation

ValidationResult validateDirectories(List<String> directoryPaths) {
  final errors = <ValidationError>[];
  final warnings = <ValidationWarning>[];
  final suggestions = <String>[];

  for (final dirPath in directoryPaths) {
    if (!exists(dirPath)) {
      warnings.add(ValidationWarning(
        message: 'Directory does not exist: $dirPath',
        type: ValidationWarningType.general,
      ));
      suggestions.add('Create the directory: $dirPath');
      continue;
    }

    if (!Directory(dirPath).existsSync()) {
      errors.add(ValidationError(
        message: 'Path is not a directory: $dirPath',
        type: ValidationErrorType.format,
      ));
      suggestions.add('Ensure the path points to a directory');
      continue;
    }

    // Test read permissions
    try {
      Directory(dirPath).listSync();
    } catch (e) {
      errors.add(ValidationError(
        message: 'Cannot read directory: $dirPath - $e',
        type: ValidationErrorType.permission,
      ));
      suggestions.add('Check read permissions for the directory');
    }
  }

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

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