private async Task Handle()

in tools/nuget2bazel/rules/RuntimeCoreGenerator.cs [32:91]


        private async Task Handle(StreamWriter f, Sdk sdk)
        {
            var sdkDirWin = await ZipDownloader.DownloadIfNeeded(_configDir, sdk.WindowsUrl);
            var sdkDirLinux = await ZipDownloader.DownloadIfNeeded(_configDir, sdk.LinuxUrl);
            var sdkDirOsx = await ZipDownloader.DownloadIfNeeded(_configDir, sdk.DarwinUrl);

            await f.WriteLineAsync("\"\"");
            await f.WriteLineAsync();
            await f.WriteLineAsync("load(\"@io_bazel_rules_dotnet//dotnet/private:rules/stdlib.bzl\", \"core_stdlib_internal\")");
            await f.WriteLineAsync("load(\"@io_bazel_rules_dotnet//dotnet/private:rules/libraryset.bzl\", \"core_libraryset\")");
            await f.WriteLineAsync();
            await f.WriteLineAsync("# buildifier: disable=unnamed-macro");
            await f.WriteLineAsync("def define_runtime():");
            await f.WriteLineAsync("    \"Declares runtime\"");

            if (sdk.Packs != null && !sdk.Version.StartsWith("6"))
            {
                await f.WriteLineAsync("    native.alias(name = \"system.security.accesscontrol.dll\", actual = \":p1_system.security.accesscontrol.dll\")");
                await f.WriteLineAsync("    native.alias(name = \"system.security.principal.windows.dll\", actual = \":p1_system.security.principal.windows.dll\")");
                await f.WriteLineAsync("    native.alias(name = \"microsoft.win32.registry.dll\", actual = \":p1_microsoft.win32.registry.dll\")");
                await f.WriteLineAsync("    native.alias(name = \"system.security.cryptography.cng.dll\", actual = \":p1_system.security.cryptography.cng.dll\")");
            }

            var infosWindows = await ProcessDirectory(f, $"windows_runtime_deps", sdkDirWin, sdk);
            var infosLinux = await ProcessDirectory(f, $"linux_runtime_deps", sdkDirLinux, sdk);
            var infosDarwin = await ProcessDirectory(f, $"darwin_runtime_deps", sdkDirOsx, sdk);

            await f.WriteLineAsync();
            await f.WriteLineAsync($"    core_libraryset(");
            await f.WriteLineAsync($"        name = \"runtime\",");
            await f.WriteLineAsync($"        deps = select({{");
            await f.WriteLineAsync($"            \"@bazel_tools//src/conditions:windows\": [");
            foreach (var i in infosWindows.Item1)
                await f.WriteLineAsync($"                \":{i.Name}\",");
            await f.WriteLineAsync($"            ],");
            await f.WriteLineAsync($"            \"@bazel_tools//src/conditions:darwin\": [");
            foreach (var i in infosDarwin.Item1)
                await f.WriteLineAsync($"                \":{i.Name}\",");
            await f.WriteLineAsync($"            ],");
            await f.WriteLineAsync($"            \"//conditions:default\": [");
            foreach (var i in infosLinux.Item1)
                await f.WriteLineAsync($"                \":{i.Name}\",");
            await f.WriteLineAsync($"            ],");
            await f.WriteLineAsync($"        }}),");
            await f.WriteLineAsync($"        data = select({{");
            await f.WriteLineAsync($"            \"@bazel_tools//src/conditions:windows\": [");
            foreach (var i in infosWindows.Item2)
                await f.WriteLineAsync($"                \"{i}\",");
            await f.WriteLineAsync($"            ],");
            await f.WriteLineAsync($"            \"@bazel_tools//src/conditions:darwin\": [");
            foreach (var i in infosDarwin.Item2)
                await f.WriteLineAsync($"                \"{i}\",");
            await f.WriteLineAsync($"            ],");
            await f.WriteLineAsync($"            \"//conditions:default\": [");
            foreach (var i in infosLinux.Item2)
                await f.WriteLineAsync($"                \"{i}\",");
            await f.WriteLineAsync($"            ],");
            await f.WriteLineAsync($"        }}),");
            await f.WriteLineAsync($"    )");
        }