public static IDirectoryAccessor GetDirectoryAccessorFor(this IDirectoryAccessor directory, DirectoryInfo directoryInfo) { var relative = PathUtilities.GetRelativePath( directory.GetFullyQualifiedRoot().FullName, directoryInfo.FullName); return(directory.GetDirectoryAccessorForRelativePath(new RelativeDirectoryPath(relative))); }
public void Add(PackageAsset asset) { if (asset == null) { throw new ArgumentNullException(nameof(asset)); } var packageRoot = DirectoryAccessor.GetFullyQualifiedRoot().FullName; var assetRoot = asset.DirectoryAccessor.GetFullyQualifiedRoot().FullName; if (!assetRoot.Contains(packageRoot)) { throw new ArgumentException($"Asset must be located under package path: asset root ({assetRoot}) is not under package root ({packageRoot})."); } _assets.Add(asset.GetType(), asset); }
public void Configure( IApplicationBuilder app, IHostApplicationLifetime lifetime, IBrowserLauncher browserLauncher, IDirectoryAccessor directoryAccessor, PackageRegistry packageRegistry) { using (var operation = Log.OnEnterAndConfirmOnExit()) { lifetime.ApplicationStopping.Register(() => _disposables.Dispose()); ConfigureForOrchestratorProxy(app); // Serve Blazor on the /LocalCodeRunner/blazor-console prefix app.Map("/LocalCodeRunner/blazor-console", blazor => { blazor.UseClientSideBlazorFiles <MLS.Blazor.Startup>(); blazor.UseRouting(); blazor.UseEndpoints(endpoints => { endpoints.MapFallbackToClientSideBlazor <MLS.Blazor.Startup>("index.html"); }); }); var budget = new Budget(); _disposables.Add(() => budget.Cancel()); BlazorPackageConfiguration.Configure(app, app.ApplicationServices, packageRegistry, budget, !StartupOptions.IsLanguageService); app.UseMvc() .UseDefaultFiles() .UseStaticFilesFromToolLocationAndRootDirectory(directoryAccessor.GetFullyQualifiedRoot()); operation.Succeed(); if (StartupOptions.Mode == StartupMode.Try && !StartupOptions.IsJupyter) { var uri = new Uri(app.ServerFeatures.Get <IServerAddressesFeature>().Addresses.First()); Clock.Current .Schedule(_ => LaunchBrowser(browserLauncher, directoryAccessor, uri), TimeSpan.FromSeconds(1)); } } }
public void Configure( IApplicationBuilder app, IApplicationLifetime lifetime, IBrowserLauncher browserLauncher, IDirectoryAccessor directoryAccessor, PackageRegistry packageRegistry) { using (var operation = Log.OnEnterAndConfirmOnExit()) { lifetime.ApplicationStopping.Register(() => _disposables.Dispose()); ConfigureForOrchestratorProxy(app); app.Map("/LocalCodeRunner/blazor-console", builder => { builder.UsePathBase("/LocalCodeRunner/blazor-console/"); builder.EnableCachingBlazorContent(); builder.UseBlazor <MLS.Blazor.Program>(); }); var budget = new Budget(); _disposables.Add(() => budget.Cancel()); BlazorPackageConfiguration.Configure(app, app.ApplicationServices, packageRegistry, budget, !StartupOptions.IsLanguageService); app.UseMvc() .UseDefaultFiles() .UseStaticFilesFromToolLocationAndRootDirectory(directoryAccessor.GetFullyQualifiedRoot()); operation.Succeed(); if (StartupOptions.Mode == StartupMode.Try) { var uri = new Uri(app.ServerFeatures.Get <IServerAddressesFeature>().Addresses.First()); Clock.Current .Schedule(_ => LaunchBrowser(browserLauncher, directoryAccessor, uri), TimeSpan.FromSeconds(1)); } } }
public static async Task LoadFromAssembliesInDirectory(this KernelExtensionLoader loader, IDirectoryAccessor directory, IKernel kernel, KernelInvocationContext context, IEnumerable <string> additionalDependencies = null) { if (directory.RootDirectoryExists()) { context.Publish(new DisplayedValueProduced($"Loading kernel extensions in directory {directory.GetFullyQualifiedRoot().FullName}", context.Command)); var extensionDlls = directory.GetAllFiles().Where(file => file.Extension == ".dll").Select(file => directory.GetFullyQualifiedFilePath(file)); foreach (var extensionDll in extensionDlls) { await loader.LoadFromAssembly(extensionDll, kernel, context, additionalDependencies); } context.Publish(new DisplayedValueProduced($"Loaded kernel extensions in directory {directory.GetFullyQualifiedRoot().FullName}", context.Command)); } }