blob: 50ee28f5b4b75c6119fe3836af86b1f4ccdb84af [file]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:convert';
import 'package:file/file.dart';
/// Writes a `.dart_tool/package_config.json` file at [directory].
///
/// If directory is not specified, it will be `globals.fs.currentDirectory`;
///
/// It will contain a package entry for [mainLibName] with `rootUri` at
/// [directory].
///
/// [otherLibs] maps other package names to their `rootUri` relative to `directory`.
///
/// Returns the `File` Object representing the package config.
File writePackageConfigFile({
required Directory directory,
required String mainLibName,
Map<String, String> packages = const <String, String>{},
Map<String, String> languageVersions = const <String, String>{},
}) {
return directory.childDirectory('.dart_tool').childFile('package_config.json')
..createSync(recursive: true)
..writeAsStringSync(
json.encode(<String, Object?>{
'packages': <Object>[
<String, Object?>{
'name': mainLibName,
'rootUri': '../',
'packageUri': 'lib/',
'languageVersion': languageVersions[mainLibName] ?? '3.7',
},
...packages.entries.map(
(MapEntry<String, String> entry) => <String, Object?>{
'name': entry.key,
'rootUri': Uri.parse('../').resolve(entry.value).toString(),
'packageUri': 'lib/',
'languageVersion': languageVersions[entry.key] ?? '3.7',
},
),
],
'configVersion': 2,
}),
);
}