validateConfigurationPaths method
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,
);
}