Можно ли получить LibraryElement библиотеки из анализа другой библиотеки в том же пакете?

Используя пакет, я пытаюсь создать один файл, содержимое которого зависит от двух отдельных библиотек из одного пакета. Чтобы добиться этого, я решил установить одну библиотеку в качестве источника для пакет для анализа, а затем внутри метод, я бы каким-то образом получил из второй библиотеки, но я не могу понять, как.

Например, скажем, у меня есть следующий пакет:

      / some_package:

   / lib:
      - some_builder.dart
      - some_file_1.dart
      - some_file_2.dart

   - build.yaml
   - pubspec.yaml

      *** some_file_1.dart ***
class SomeClass1 {...}

      *** some_file_2.dart ***
class SomeClass2 {...}

      *** some_builder.dart ***
import 'package:build/build.dart';

SomeBuilder someBuilder(BuilderOptions options) => SomeBuilder();

class SomeBuilder implements Builder {
   @override
   Map<String, List<String> get buildExtensions => {...}

   @override
   Future<void> build(BuildStep buildStep) async {
      // LibraryElement of some_file_1.dart
      LibraryElement libraryElement1 = await buildStep.inputLibrary; 

      // LibraryElement of some_file_2.dart
      LibraryElement libraryElement2 = ...? // <--- How do I access some_file_2.dart?
   }
}

      *** build.yaml ***
targets:
   $default:
      sources:
         - lib/some_file_1.dart
      builders:
          some_package|some_builder:
             - enabled: True
      
builders:
   some_builder:
      import: 'package:some_package/some_builder.dart'
      builder_factories: ['someBuilder']

Как мне получить доступ к some_file_2.dart, используя some_file_1.dart?

Подход, о котором я подумал, заключался в создании новой для второй библиотеки. Проблема в том, что создание требуется абсолютный нормализованный путь ко второй библиотеке, который я не могу понять, как получить. Очевидно, я могу просто вручную вставить строку полного пути, но это явно не идеально, если бы этот пакет перемещался.

Если бы я мог каким-то образом программно получить абсолютный нормализованный путь к some_file_1.dart, я мог бы просто вырезать его относительную часть из корня пакета и добавить относительный путь к some_file_2.dart. Но я не могу понять, как это сделать.

Итак, мой вопрос: можно ли получить библиотеки, из анализа другой библиотеки в том же пакете?

Также, если у кого-то есть совершенно другой подход, я был бы рад услышать.

Изменить: простое объединение обоих файлов в одну библиотеку не вариант.

0 ответов

Другие вопросы по тегам