blob: 0f23be577e76e7b69792c49ab04c1dbc8f3bdb3d [file] [log] [blame]
// 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');
}
}