addOrReplaceFile method
Adds or replaces file in this terminal's working directory
path
is relative path to file e.g. "lib/src/file.dart"
contents
is the string contents of the file
imports
are import uri strings, e.g. 'package:aqueduct/aqueduct.dart' (don't use quotes)
Implementation
void addOrReplaceFile(String path, String contents, {List<String> imports = const []}) {
final pathComponents = path.split('/');
final relativeDirectoryComponents = pathComponents.sublist(0, pathComponents.length - 1);
final uri = relativeDirectoryComponents.fold(
workingDirectory.uri, (Uri prev, elem) => prev.resolve('$elem/'));
final directory = Directory.fromUri(uri);
if (!directory.existsSync()) {
directory.createSync(recursive: true);
}
final file = File.fromUri(directory.uri.resolve(pathComponents.last));
final directives = imports.map((i) => "import '$i';").join('\n');
file.writeAsStringSync('$directives\n$contents');
}