public static void ShowBuildEnvironment(bool ShowBuildInfo) { Program.PrintColorMessage("Setting up build environment...", ConsoleColor.Cyan); string currentGitTag = Win32.ExecCommand(GitExePath, "describe --abbrev=0 --tags --always"); string latestGitRevision = Win32.ExecCommand(GitExePath, "rev-list --count \"" + currentGitTag + ".." + BuildBranch + "\""); if (string.IsNullOrEmpty(latestGitRevision)) { BuildRevision = "0"; } else { BuildRevision = latestGitRevision.Trim(); } BuildVersion = "3.0." + BuildRevision; // TODO: Remove hard-coded major/minor version. BuildMessage = Win32.ExecCommand(GitExePath, "log -n 5 --date=format:%Y-%m-%d --pretty=format:\"[%cd] %an %s\" --abbrev-commit"); if (ShowBuildInfo) { string buildMessage = string.Empty; if (BuildNightly) { buildMessage = Win32.ExecCommand(GitExePath, "log -n 5 --date=format:%Y-%m-%d --pretty=format:\"[%cd] %an: %<(65,trunc)%s (%h)\" --abbrev-commit"); } else { Win32.GetConsoleMode(Win32.GetStdHandle(Win32.STD_OUTPUT_HANDLE), out ConsoleMode mode); Win32.SetConsoleMode(Win32.GetStdHandle(Win32.STD_OUTPUT_HANDLE), mode | ConsoleMode.ENABLE_VIRTUAL_TERMINAL_PROCESSING); buildMessage = Win32.ExecCommand(GitExePath, "log -n 5 --date=format:%Y-%m-%d --pretty=format:\"%C(green)[%cd]%Creset %C(bold blue)%an%Creset %<(65,trunc)%s%Creset (%C(yellow)%h%Creset)\" --abbrev-commit"); } string currentBranch = Win32.ExecCommand(GitExePath, "rev-parse --abbrev-ref HEAD"); string currentCommitTag = Win32.ExecCommand(GitExePath, "rev-parse --short HEAD"); // rev-parse HEAD //string latestGitCount = Win32.GitExecCommand("rev-list --count " + BuildBranch); if (!string.IsNullOrEmpty(currentBranch)) { Program.PrintColorMessage(Environment.NewLine + "Branch: ", ConsoleColor.Cyan, false); Program.PrintColorMessage(currentBranch, ConsoleColor.White); } if (!string.IsNullOrEmpty(BuildVersion)) { Program.PrintColorMessage("Version: ", ConsoleColor.Cyan, false); Program.PrintColorMessage(BuildVersion, ConsoleColor.White); } Program.PrintColorMessage("Commit: ", ConsoleColor.Cyan, false); Program.PrintColorMessage(currentCommitTag + Environment.NewLine, ConsoleColor.White); if (!BuildNightly && !string.IsNullOrEmpty(buildMessage)) { Console.WriteLine(buildMessage + Environment.NewLine); } } }
public static void Main(string[] args) { ProgramArgs = ParseArgs(args); if (ProgramArgs.ContainsKey("-cleanup")) { if (Restart("-cleanup")) { return; } if (!Build.InitializeBuildEnvironment(true)) { return; } Build.CleanupAppxSignature(); Build.CleanupBuildEnvironment(); Build.ShowBuildStats(); } else if (ProgramArgs.ContainsKey("-phapppub_gen")) { if (!Build.InitializeBuildEnvironment(false)) { return; } Build.BuildPublicHeaderFiles(); } else if (ProgramArgs.ContainsKey("-graph")) { if (!Build.InitializeBuildEnvironment(true)) { return; } Build.ShowBuildEnvironment("changelog", true, false); if (Win32.GetConsoleMode(Win32.GetStdHandle(Win32.STD_OUTPUT_HANDLE), out ConsoleMode mode)) { Win32.SetConsoleMode(Win32.GetStdHandle(Win32.STD_OUTPUT_HANDLE), mode | ConsoleMode.ENABLE_VIRTUAL_TERMINAL_PROCESSING); } Console.WriteLine(Build.GetBuildLogString()); Build.ShowBuildStats(); } else if (ProgramArgs.ContainsKey("-sdk")) { if (!Build.InitializeBuildEnvironment(false)) { return; } Build.CopyKProcessHacker( BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildDebug ); BuildSdk( BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildDebug | BuildFlags.BuildVerbose ); } else if (ProgramArgs.ContainsKey("-cleansdk")) { if (!Build.InitializeBuildEnvironment(false)) { return; } if (!Build.BuildSolution("ProcessHacker.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose )) { return; } BuildSdk(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose); Build.ShowBuildStats(); } else if (ProgramArgs.ContainsKey("-bin")) { if (!Build.InitializeBuildEnvironment(false)) { return; } Build.ShowBuildEnvironment("bin", false, true); Build.CopyKeyFiles(); if (!Build.BuildSolution("ProcessHacker.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyKProcessHacker( BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!BuildSdk(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.BuildSolution("plugins\\Plugins.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyWow64Files(BuildFlags.None)) { return; } if (!Build.BuildBinZip()) { return; } Build.ShowBuildStats(); } else if (ProgramArgs.ContainsKey("-debug")) { if (!Build.InitializeBuildEnvironment(true)) { return; } Build.ShowBuildEnvironment("debug", true, true); Build.CopyKeyFiles(); if (!Build.BuildSolution("ProcessHacker.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildDebug | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyKProcessHacker( BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildDebug | BuildFlags.BuildVerbose)) { return; } if (!BuildSdk( BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildDebug | BuildFlags.BuildVerbose )) { return; } if (!Build.BuildSolution("plugins\\Plugins.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildDebug | BuildFlags.BuildVerbose )) { return; } if (!Build.CopyWow64Files(BuildFlags.BuildDebug)) { return; } Build.ShowBuildStats(); } else if (ProgramArgs.ContainsKey("-appveyor")) { if (!Build.InitializeBuildEnvironment(true)) { return; } Build.ShowBuildEnvironment("nightly", true, true); Build.CopyKeyFiles(); if (!Build.BuildSolution("ProcessHacker.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyKProcessHacker(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!BuildSdk(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.BuildSolution("plugins\\Plugins.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyWow64Files(BuildFlags.None)) { return; } if (!Build.BuildBinZip()) { return; } if (!Build.BuildSetupExe()) { return; } if (!Build.BuildChecksumsFile()) { return; } if (!Build.BuildUpdateSignature()) { return; } if (Build.AppveyorUploadBuildFiles()) { Build.WebServiceUpdateConfig(); } } else if (ProgramArgs.ContainsKey("-appxbuild")) { if (!Build.InitializeBuildEnvironment(true)) { return; } Build.ShowBuildEnvironment("appx", true, true); Build.CopyKeyFiles(); if (!Build.BuildSolution("ProcessHacker.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!BuildSdk(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.BuildSolution("plugins\\Plugins.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyWow64Files(BuildFlags.None)) { return; } Build.BuildAppxPackage(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose); Build.ShowBuildStats(); } else if (ProgramArgs.ContainsKey("-appxmakecert")) { if (Restart("-appxmakecert")) { return; } if (!Build.InitializeBuildEnvironment(false)) { return; } Build.ShowBuildEnvironment("appxcert", true, true); Build.BuildAppxSignature(); Build.ShowBuildStats(); } else { if (!Build.InitializeBuildEnvironment(true)) { return; } Build.ShowBuildEnvironment("release", true, true); Build.CopyKeyFiles(); if (!Build.BuildSolution("ProcessHacker.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyKProcessHacker(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!BuildSdk(BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.BuildSolution("plugins\\Plugins.sln", BuildFlags.Build32bit | BuildFlags.Build64bit | BuildFlags.BuildVerbose)) { return; } if (!Build.CopyWow64Files(BuildFlags.None)) { return; } if (!Build.BuildBinZip()) { return; } if (!Build.BuildSetupExe()) { return; } Build.BuildPdbZip(); Build.BuildSdkZip(); Build.BuildSrcZip(); Build.ShowBuildStats(); } }
public static void Main(string[] args) { if (Win32.GetConsoleMode(Win32.GetStdHandle(Win32.STD_OUTPUT_HANDLE), out ConsoleMode mode)) { Win32.SetConsoleMode(Win32.GetStdHandle(Win32.STD_OUTPUT_HANDLE), mode | ConsoleMode.ENABLE_VIRTUAL_TERMINAL_PROCESSING); } ProgramArgs = ParseArgs(args); if (!Build.InitializeBuildEnvironment()) { Build.CleanupBuildEnvironment(); return; } if (ProgramArgs.ContainsKey("-updaterev")) { PrintColorMessage("Updating header version...", ConsoleColor.Cyan); Build.ShowBuildEnvironment(); Build.UpdateHeaderFileVersion(); return; } if (ProgramArgs.ContainsKey("-phapppub_gen")) { PrintColorMessage("Building public headers...", ConsoleColor.Cyan); Build.BuildPublicHeaderFiles(); return; } if (ProgramArgs.ContainsKey("-sign")) { Build.BuildKphSignatureFile(); return; } if (ProgramArgs.ContainsKey("-sdk")) { PrintColorMessage("Copying SDK headers...", ConsoleColor.Cyan); if (!Build.CopyPluginSdkHeaders()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying version headers...", ConsoleColor.Cyan); if (!Build.CopyVersionHeader()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Building sdk resource header...", ConsoleColor.Cyan); if (!Build.FixupResourceHeader()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying plugin linker files...", ConsoleColor.Cyan); if (!Build.CopyLibFiles()) { Build.CleanupBuildEnvironment(); return; } Build.CleanupBuildEnvironment(); Build.ShowBuildStats(); return; } if (ProgramArgs.ContainsKey("-exe")) { if (!Build.BuildBinZip()) { Build.CleanupBuildEnvironment(); return; } if (!Build.BuildSetupExe()) { Build.CleanupBuildEnvironment(); return; } Build.BuildSrcZip(); Build.BuildSdkZip(); return; } PrintColorMessage("Setting up build environment...", ConsoleColor.Cyan); Build.ShowBuildEnvironment(); Build.BuildSecureFiles(); if (!Build.BuildSolution("ProcessHacker.sln")) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Building KPH signature...", ConsoleColor.Cyan); if (!Build.BuildKphSignatureFile()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying text files...", ConsoleColor.Cyan); if (!Build.CopyTextFiles()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying KPH driver...", ConsoleColor.Cyan); if (!Build.CopyKProcessHacker()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying SDK headers...", ConsoleColor.Cyan); if (!Build.CopyPluginSdkHeaders()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying version headers...", ConsoleColor.Cyan); if (!Build.CopyVersionHeader()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Building sdk resource header...", ConsoleColor.Cyan); if (!Build.FixupResourceHeader()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying plugin linker files...", ConsoleColor.Cyan); if (!Build.CopyLibFiles()) { Build.CleanupBuildEnvironment(); return; } if (!Build.BuildSolution("plugins\\Plugins.sln")) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Copying Wow64 support files...", ConsoleColor.Cyan); if (!Build.CopyWow64Files()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Building build-setup.exe...", ConsoleColor.Cyan); if (!Build.BuildSetupExe()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Building build-bin.zip...", ConsoleColor.Cyan); if (!Build.BuildBinZip()) { Build.CleanupBuildEnvironment(); return; } //Build.BuildSrcZip(); //Build.BuildSdkZip(); //Build.BuildPdbZip(); PrintColorMessage("Building build-checksums.txt...", ConsoleColor.Cyan); if (!Build.BuildChecksumsFile()) { Build.CleanupBuildEnvironment(); return; } PrintColorMessage("Building release signature...", ConsoleColor.Cyan); Build.BuildUpdateSignature(); PrintColorMessage("Moving build-setup.exe...", ConsoleColor.Cyan); if (!Build.MoveBuildFiles()) { Build.CleanupBuildEnvironment(); return; } Build.UpdateBuildWebService(); Build.CleanupBuildEnvironment(); Build.ShowBuildStats(); Console.ReadKey(); }