work function
Implementation
work(
final String input,
final String output,
final String suffix,
final bool isDryRun,
) {
int allFileCount = 0;
int includeFileCount = 0;
int includeStatementCount = 0;
int includeStatementFailedCount = 0;
final RegExp rex =
RegExp(r'\<include\s+file="(.*?)"\s*\>[\S\s]*?\<\/include\>');
String ignoreSelf =
r'<include file="$includeFilePath">$prefix$includeContent$postfix</include>';
getFiles(input, suffix).forEach((File fileSource) {
allFileCount++;
String fileSourceContent = fileSource.readAsStringSync();
_log(fileSource.path);
if (rex.hasMatch(fileSourceContent)) {
bool isFileChanged = false;
includeFileCount++;
rex.allMatches(fileSourceContent).forEach((match) {
final includeStatement = match[0]!;
final includeFilePath = match[1]!.trim();
if (ignoreSelf == includeStatement) {
_log(' ignoring own basic pattern');
} else {
final File? includeFile =
findFile(includeFilePath, fileSource.parent);
if (includeFile != null) {
includeStatementCount++;
final includeContent = includeFile.readAsStringSync();
String prefix = '';
String postfix = '';
String ext = includeFile.uri.pathSegments.last.split('.').last;
switch (ext) {
case 'dart':
prefix = '\n\n```dart\n';
postfix = '```\n';
case 'js':
prefix = '\n\n```javascript\n';
postfix = '```\n';
default:
}
fileSourceContent = fileSourceContent.replaceAll(includeStatement,
'<include file="$includeFilePath">$prefix$includeContent$postfix</include>');
isFileChanged = true;
_log(' including $includeFilePath');
} else {
includeStatementFailedCount++;
_log(' included not found: $includeFilePath FAILED');
}
}
});
if (isFileChanged) {
writeProtected(fileSource, fileSourceContent, isDryRun, suffix, output);
}
} else {
_log(' no include found');
}
});
_log('\nStart dir $input');
_log('Checked $suffix files: $allFileCount');
_log('Modified $suffix files: $includeFileCount');
_log('Included files: $includeStatementCount');
_log('Included files failures: $includeStatementFailedCount\n');
if (isDryRun) {
_log('Dry run, merge files with flag --no-dry-run\n');
}
}