| // Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| import 'package:analyzer/file_system/file_system.dart'; |
| import 'package:analyzer/file_system/memory_file_system.dart'; |
| import 'package:analyzer/file_system/physical_file_system.dart'; |
| import 'package:analyzer_utilities/package_root.dart' as package_root; |
| import 'package:path/path.dart' as package_path; |
| |
| /// Environment for compiling macros to kernels, expecting that we run |
| /// a test in the Dart SDK repository. |
| /// |
| /// This is a temporary implementation. |
| class MacrosEnvironment { |
| static final instance = MacrosEnvironment._(); |
| |
| final _resourceProvider = MemoryResourceProvider(context: package_path.posix); |
| late final Folder packageAnalyzerFolder; |
| |
| MacrosEnvironment._() { |
| var physical = PhysicalResourceProvider.INSTANCE; |
| |
| var packageRoot = physical.pathContext.normalize(package_root.packageRoot); |
| physical |
| .getFolder(packageRoot) |
| .getChildAssumingFolder('_fe_analyzer_shared/lib/src/macros') |
| .copyTo( |
| packageSharedFolder.getChildAssumingFolder('lib/src'), |
| ); |
| packageAnalyzerFolder = |
| physical.getFolder(packageRoot).getChildAssumingFolder('analyzer'); |
| } |
| |
| Folder get packageSharedFolder { |
| return _resourceProvider.getFolder('/packages/_fe_analyzer_shared'); |
| } |
| } |