makeScloudRootPubspecContent static method
Creates the scloud root pubspec content based on the source root pubspec content.
Implementation
static String makeScloudRootPubspecContent(
final String rootPubspecContent,
final Iterable<String> includedPackagePaths,
) {
final rootPubspecYaml = yamlDecode(rootPubspecContent);
if (rootPubspecYaml is! Map) {
WorkspaceProject._throwWorkspaceException(
message: 'Invalid workspace root pubspec.yaml, '
'type: ${rootPubspecYaml.runtimeType}',
);
}
final originalWorkspacePaths = rootPubspecYaml['workspace'];
if (originalWorkspacePaths is! List) {
WorkspaceProject._throwWorkspaceException(
message: 'Invalid `workspace` element in workspace root pubspec.yaml, '
'type: ${originalWorkspacePaths.runtimeType}',
);
}
final scloudRootPubspec = Map.from(rootPubspecYaml);
scloudRootPubspec['workspace'] = includedPackagePaths;
scloudRootPubspec.remove('dependencies');
scloudRootPubspec.remove('dev_dependencies');
final environment = scloudRootPubspec['environment'];
if (environment is Map) {
final newEnvironment = Map.from(environment);
newEnvironment.remove('flutter');
scloudRootPubspec['environment'] = newEnvironment;
}
return yamlEncode(scloudRootPubspec);
}