If the LZMA archive is missing, the first-run message is printed every time.
This commit fixes that.
Split the first-run message into two pieces:
- The first-run (welcome and telemetry) message is printed only once, no matter
whether the cache was primed or not.
- The cache-priming message is printed only if the cache is avaialble.
Otherwise skip the cache introduction and the ccache priming operation.
- Created a Configurer class that is responsible for deciding when to run the dotnet first time use
experience and invoke the NuGetCachePrimer.
- Added the NuGetCachePrimer which extract the archive and primes the cache.
-- This is just missing creating the sentinel once restore succeeds.
- Added a shell for the NugetPackagesArchiver, which will be responsible for expanding the archive (likely
replaced in the future by an abstraction from Eric's code or its implementation will simply call Eric's code).
- Added a TemporaryFolder abstration to Internal Abstractions that handles deleting the temporary folder once
we are done with it.