tom_analyzer_shared 0.3.0
tom_analyzer_shared: ^0.3.0 copied to clipboard
Shared analyzer-summary caching infrastructure reused by Tom code generators (reflection, d4rt bridges, etc).
Changelog #
0.3.0 #
- Added
ToolCacheLocator— resolves a shared Tom tool-cache directory reused across projects and tools, so the same hosted-package summary is generated once and shared everywhere. Resolution order:- the
TOM_TOOL_CACHEenvironment variable (explicit override), - an existing
.tom/tom_tool_cachedirectory in any ancestor of the start directory (repo-local shared cache), - a
tom_tool_cachesub-directory of the platform's default Dart tool directory (%APPDATA%\dart,~/Library/Application Support/dart, or$XDG_CONFIG_HOME/~/.config/dart).resolve()only reads the filesystem; the directory is created lazily on first write.
- the
SummaryCacheManagernow stores summaries in the shared tool cache'sanalyzer-cache/sub-directory (resolved byToolCacheLocatorfrom the workspace root) instead of a fixed<workspace>/.tom/analyzer-cache. Consumers callingrunSummaryCacheStage()get the shared cache automatically. A newcacheDirectoryconstructor argument overrides the resolution (used by tests and callers that manage their own layout); a newenvironmentargument overrides the process environment consulted by the locator.
0.2.0 #
- Added
resolveDartSdkPath()andlooksLikeDartSdk()— a robust runtime Dart SDK locator (insrc/sdk/dart_sdk_locator.dart). The analyzer derives the SDK fromPlatform.resolvedExecutable, which is correct underdart runbut fails for AOT-compiled tools (dart compile exe) where the executable is the tool itself, not thedartbinary. The locator triesDART_SDK/DART_HOME, the resolved executable, and thedart/flutterexecutables onPATH(handling the Flutterbin/cache/dart-sdklayout), validating every candidate against the SDK marker file before returning it. The result is cached for the process lifetime. SummaryGeneratornow usesresolveDartSdkPath()to locate the SDK summary directory, fixing aPathNotFoundExceptionforlib/_internal/allowed_experiments.jsonwhen run from a compiled binary.
0.1.0 #
- Initial release. Extracted summary-caching infrastructure from
tom_reflection_generatorinto a reusable library so multiple code generators (reflection, d4rt bridges, ...) can share the same<workspace>/.tom/analyzer-cache/directory. - Public API:
PackageDependency,DependencySetDependencyResolver(parsespubspec.lock, locates hosted/SDK package sources)SummaryCacheManager(reads/writes{name}@{version}.sumfiles)SummaryGenerator(generates the SDK summary and per-package summaries in topological order)runSummaryCacheStage()andSummaryCacheResult— reusable orchestration helper that resolves dependencies, generates missing summaries, and returns the paths to pass toAnalysisContextCollectionImpl.