@nx-dart/nx-dart
Version:
A Nx plugin, that adds support for developing Dart and Flutter packages in a Nx workspace
63 lines • 2.52 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.inferPackageProjectType = exports.readAnalysisOptions = exports.readFlutterMetadata = exports.readPubspec = void 0;
const YAML = require("yaml");
const package_1 = require("../../utils/package");
function readPubspec(tree, packageRoot) {
if (tree.exists(`${packageRoot}/pubspec.yaml`)) {
return YAML.parse(tree.read(`${packageRoot}/pubspec.yaml`, 'utf-8'));
}
}
exports.readPubspec = readPubspec;
function readFlutterMetadata(tree, packageRoot) {
if (tree.exists(`${packageRoot}/.metadata`)) {
return YAML.parse(tree.read(`${packageRoot}/.metadata`, 'utf-8'));
}
}
exports.readFlutterMetadata = readFlutterMetadata;
function readAnalysisOptions(tree, directory = '.') {
var _a;
if (tree.exists(`${directory}/analysis_options.yaml`)) {
return ((_a = YAML.parse(tree.read(`${directory}/analysis_options.yaml`, 'utf-8'))) !== null && _a !== void 0 ? _a : {});
}
}
exports.readAnalysisOptions = readAnalysisOptions;
function inferPackageProjectType(tree, packageRoot) {
const pubspec = readPubspec(tree, packageRoot);
if (!pubspec) {
// This is not a Dart package.
return;
}
if ((0, package_1.isFlutterPackage)(pubspec)) {
// This is a Flutter package.
const metadata = readFlutterMetadata(tree, packageRoot);
if (metadata) {
// If we have a .metadata file we use that because it is the most accurate way to determine
// the project type.
switch (metadata.project_type) {
case 'app':
return 'application';
case 'package':
case 'plugin':
case 'plugin_ffi':
return 'library';
}
}
const platformDirs = ['android', 'ios', 'macos', 'linux', 'windows', 'web'];
const hasPlatformDir = platformDirs.some((dir) => tree.exists(`${packageRoot}/${dir}`));
const hasMain = tree.exists(`${packageRoot}/lib/main.dart`);
if (!(0, package_1.isFlutterPlugin)(pubspec) && (hasPlatformDir || hasMain)) {
return 'application';
}
return 'library';
}
else {
// This is a Dart package.
if (tree.children(`${packageRoot}/example`).length > 0) {
return 'library';
}
return 'application';
}
}
exports.inferPackageProjectType = inferPackageProjectType;
//# sourceMappingURL=package.js.map