public async Task <BlazorPackage> Locate(string name)
        {
            using (var operation = Log.OnEnterAndExit())
            {
                var dotnet    = new Dotnet(_packagesDirectory);
                var toolNames = await dotnet.ToolList(_packagesDirectory);

                if (toolNames.Contains(name))
                {
                    operation.Info($"Checking tool {name}");
                    var result = await CommandLine.Execute(Path.Combine(_packagesDirectory.FullName, name), "locate-projects");

                    var directory = new DirectoryInfo(result.Output.First());
                    if (directory.Exists)
                    {
                        var runnerSubDirectory = directory.GetDirectories("runner-*").FirstOrDefault();
                        if (runnerSubDirectory?.Exists ?? false)
                        {
                            var path    = Path.Combine(runnerSubDirectory.FullName, "MLS.Blazor");
                            var package = new BlazorPackage(runnerSubDirectory.Name, null, new DirectoryInfo(path));
                            if (package.BlazorEntryPointAssemblyPath.Exists)
                            {
                                return(package);
                            }
                        }
                    }
                }
            }

            return(null);
        }
 private static void SetupMappingsForBlazorContentsOfPackage(BlazorPackage package, IApplicationBuilder builder)
 {
     builder.Map(package.CodeRunnerPath, appBuilder =>
     {
         var blazorEntryPoint = package.BlazorEntryPointAssemblyPath;
         appBuilder.UsePathBase(package.CodeRunnerPathBase);
         appBuilder.UseClientSideBlazorFiles(blazorEntryPoint.FullName);
     });
 }
 private static bool PackageHasBeenBuiltAndHasBlazorStuff(BlazorPackage package)
 {
     return(package.BlazorEntryPointAssemblyPath.Exists);
 }