write method
the path to the target file
Implementation
@override
FileWriteResult write({
required Brick brick,
required Set<Variable> outOfFileVariables,
}) {
final targetPathConfig = configurePath(
urls: brick.urls,
dirs: brick.directories,
);
final targetPath = p.join(targetDir, targetPathConfig.content);
if (targetPathConfig.data['url'] != null) {
di<FileSystem>().file(targetPath).createSync(recursive: true);
return FileWriteResult(
usedVariables: targetPathConfig.used,
usedPartials: const {},
);
}
try {
final configuredVariables = [
for (final MapEntry(key: placeholder, value: variable)
in (variableConfig ?? {}).entries)
VariableImpl(
name: variable ?? placeholder,
placeholder: placeholder,
),
];
final writeResult = writeFile(
targetPath: targetPath,
sourcePath: sourcePath,
variables: configuredVariables,
outOfFileVariables: outOfFileVariables,
partials: brick.partials,
);
return FileWriteResult(
usedPartials: writeResult.usedPartials,
usedVariables: {
...writeResult.usedVariables,
...targetPathConfig.used,
},
);
} catch (e) {
if (e is ConfigException) {
throw FileException(
file: sourcePath,
reason: e.message,
);
}
throw FileException(
file: sourcePath,
reason: e.toString(),
);
}
}