addEnvFileToAssets function
Write env file to pubspec assets
Implementation
Future<bool> addEnvFileToAssets(
String envPath, {
String pubspecPath = 'pubspec.yaml',
}) async {
final pubSpecContents = read(pubspecPath).toParagraph();
final pubspec = loadYaml(pubSpecContents) as YamlMap;
final pubSpecFile = File(pubspecPath);
final assetsEntry = '''
assets:
- $envPath
''';
/// Write full flutter entry if no flutter
final flutter = pubspec['flutter'] as YamlMap?;
if (!pubspec.containsKey('flutter')) {
pubSpecFile.writeAsStringSync(
'''
$pubSpecContents
flutter:
$assetsEntry
''',
);
return true;
}
final assets = flutter?['assets'] as YamlList?;
/// Write assets directly under flutter
if (assets == null) {
final newPubSpec = pubSpecContents.replaceFirst(
RegExp(r'^flutter:.*$', multiLine: true),
'flutter:\n$assetsEntry',
);
pubSpecFile.writeAsStringSync(newPubSpec);
return true;
}
/// Stop if present in assets
if (assets.contains(envPath)) return false;
/// Add env path directly under assets
pubSpecFile.writeAsStringSync(
pubSpecContents.replaceFirst('assets:', assetsEntry.trim()),
);
return true;
}