コード例 #1
0
ファイル: Program.cs プロジェクト: samhowes/my_rules_dotnet
        static async Task <int> Main(string[] argsArray)
        {
            var args = argsArray.Select(a => a.TrimStart('-').Split('='))
                       .ToDictionary(p => p[0], p => p[1]);

            var root = BazelEnvironment.TryGetWorkspaceRoot();

            if (root != null)
            {
                Directory.SetCurrentDirectory(root);
            }
            else
            {
                root = Directory.GetCurrentDirectory();
            }

            if (args.TryGetValue("tar", out var outputName))
            {
                outputName = outputName.Split(" ")[0];
            }
            else
            {
                outputName = "test.tar.gz";
            }

            var packages = Array.Empty <string>();

            if (args.TryGetValue("packages", out var packagesString))
            {
                packages = packagesString.Split(",");
            }
            using var tarMaker = new TarMaker(outputName, root, packages);
            return(await tarMaker.MakeTar());
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: samhowes/my_rules_dotnet
        private static int Restore(RestoreOptions restore)
        {
            var workspace = BazelEnvironment.TryGetWorkspaceRoot();
            var cwd       = Directory.GetCurrentDirectory();

            if (workspace != null && !cwd.StartsWith(workspace))
            {
                Directory.SetCurrentDirectory(workspace);
            }

            var query = $"kind(msbuild_restore,{restore.Package})";

            Console.WriteLine($"bazel query {query} | xargs bazel build");
            var info = new ProcessStartInfo("bazel")
            {
                RedirectStandardOutput = true
            };

            info.ArgumentList.Add("query");
            info.ArgumentList.Add(query);

            var queryProcess = Process.Start(info) !;
            var output       = queryProcess.StandardOutput.ReadToEnd();

            queryProcess.WaitForExit();
            Console.WriteLine(output);
            if (queryProcess.ExitCode != 0)
            {
                return(queryProcess.ExitCode);
            }
            var targets = output.Split(Environment.NewLine);
            var build   = Process.Start("bazel", "build " + string.Join(' ', targets)) !;

            build.WaitForExit();

            return(build.ExitCode);
        }