Move unmaintained stuff (cis, os2, rosky, vms, and msvc6) to a respective branch...
[reactos.git] / cis / ReactOS.CustomRevisionAction / Main.cs
diff --git a/cis/ReactOS.CustomRevisionAction/Main.cs b/cis/ReactOS.CustomRevisionAction/Main.cs
deleted file mode 100644 (file)
index e13ad14..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-using System;\r
-using System.IO;\r
-using System.Diagnostics;\r
-using System.Configuration;\r
-using System.Web.Mail;\r
-\r
-namespace ReactOS.CustomRevisionAction\r
-{\r
-       public class MainClass\r
-       {\r
-               /// <summary>\r
-               /// Path to store published binaries at.\r
-               /// </summary>\r
-               private static string publishPath;\r
-\r
-               /// <summary>\r
-               /// Whether or not to publish ISOs to a remote destination via FTP.\r
-               /// </summary>\r
-               private static bool PublishToRemoteFtpLocation\r
-               {\r
-                       get\r
-                       {\r
-                               return publishPath.StartsWith("ftp://");\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Run the application.\r
-               /// </summary>\r
-               /// <param name="script">Script to run.</param>\r
-               /// <param name="args">Arguments to pass to script.</param>\r
-               /// <param name="workingDirectory">Working directory.</param>\r
-               /// <param name="standardOutput">Receives standard output.</param>\r
-               /// <param name="standardError">Receives standard error.</param>\r
-               /// <returns>\r
-               /// Exit code.\r
-               /// </returns>\r
-               private static int RunScript(string script,\r
-                                            string args,\r
-                                            string workingDirectory,\r
-                                            out string standardOutput,\r
-                                            out string standardError)\r
-               {\r
-                       ProcessStartInfo scriptProcessStartInfo = new ProcessStartInfo(script,\r
-                                                                                      args);\r
-                       scriptProcessStartInfo.CreateNoWindow = true;\r
-                       /*\r
-                        * All standard streams must be redirected.\r
-                        * Otherwise DuplicateHandle() will fail.\r
-                        */\r
-                       scriptProcessStartInfo.RedirectStandardInput = true;\r
-                       scriptProcessStartInfo.RedirectStandardError = true;\r
-                       scriptProcessStartInfo.RedirectStandardOutput = true;\r
-                       scriptProcessStartInfo.UseShellExecute = false;\r
-                       scriptProcessStartInfo.WorkingDirectory = workingDirectory;\r
-                       RedirectableProcess redirectableProcess = new RedirectableProcess(scriptProcessStartInfo);\r
-                       standardOutput = redirectableProcess.ProcessOutput;\r
-                       standardError = redirectableProcess.ProcessError;\r
-                       return redirectableProcess.ExitCode;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Retrieve value of configuration from configuration file.\r
-               /// </summary>\r
-               /// <param name="name">Name of configuration option.</param>\r
-               /// <param name="defaultValue">\r
-               /// Default value to be returned if the option does not exist.\r
-               /// </param>\r
-               /// <returns>\r
-               /// Value of configuration option or null if the option does not\r
-               /// exist and no default value is provided.\r
-               /// </returns>\r
-               private static string GetConfigurationOption(string name,\r
-                                                            string defaultValue)\r
-               {\r
-                       if (ConfigurationSettings.AppSettings[name] != null)\r
-                               return ConfigurationSettings.AppSettings[name];\r
-                       else\r
-                               return defaultValue;\r
-               }\r
-               \r
-               /// <summary>\r
-               /// Send an email.\r
-               /// </summary>\r
-               /// <param name="subject">Subject of the email.</param>\r
-               /// <param name="body">Content of the email.</param>\r
-               private static void SendErrorMail(string subject, string body)\r
-               {\r
-                       try\r
-                       {\r
-                               string smtpServer = GetConfigurationOption("smtpServer", "localhost");\r
-                               string toEmail = GetConfigurationOption("errorEmail", null);\r
-                               if (toEmail == null)\r
-                                       return;\r
-                               string fromEmail = GetConfigurationOption("fromEmail", null);\r
-                               if (fromEmail == null)\r
-                                       fromEmail = toEmail;\r
-                               MailMessage mm = new MailMessage();\r
-                               mm.Priority = MailPriority.Normal;\r
-                               mm.From = toEmail;\r
-                               mm.To = toEmail;\r
-                               mm.Subject = subject;\r
-                               mm.Body += body;\r
-                               mm.Body += "<br>";\r
-                               mm.BodyFormat = MailFormat.Html;\r
-                               SmtpMail.SmtpServer = smtpServer;\r
-                               SmtpMail.Send(mm);\r
-                       }\r
-                       catch (Exception ex)\r
-                       {\r
-                               Console.Error.WriteLine(ex.Message);\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Fail with an error message.\r
-               /// </summary>\r
-               /// <param name="revision">Repository revision.</param>\r
-               /// <param name="text">Error message.</param>\r
-               private static void Fail(int revision,\r
-                                        string text)\r
-               {\r
-                       Console.WriteLine(text);\r
-                       Console.Error.WriteLine(text);\r
-                       SendErrorMail(String.Format("[{0}] ReactOS Publish Error", revision), text);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Fail with an error message.\r
-               /// </summary>\r
-               /// <param name="text">Error message.</param>\r
-               private static void Fail(string text)\r
-               {\r
-                       Console.WriteLine(text);\r
-                       Console.Error.WriteLine(text);\r
-                       SendErrorMail("ReactOS Publish Error", text);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Generate filename of distribution.\r
-               /// </summary>\r
-               /// <param name="branch">Branch.</param>\r
-               /// <param name="revision">Revision.</param>\r
-               private static string GetDistributionFilename(string branch,\r
-                                                             int revision)\r
-               {\r
-                       return String.Format("ReactOS-{0}-r{1}.iso",\r
-                                            branch,\r
-                                            revision);\r
-               }\r
-\r
-               private static void SplitRemotePublishPath(string publishPath,\r
-                                                          out string server,\r
-                                                          out string directory)\r
-               {\r
-                       string searchString = "://";\r
-                       int index = publishPath.IndexOf(searchString);\r
-                       if (index == -1)\r
-                               throw new InvalidOperationException();\r
-                       int endOfProtocolIndex = index + searchString.Length;\r
-                       string withoutProtocol = publishPath.Remove(0, endOfProtocolIndex);\r
-                       index = withoutProtocol.IndexOf("/");\r
-                       if (index == -1)\r
-                       {\r
-                               server = withoutProtocol;\r
-                               directory = "";\r
-                       }\r
-                       else\r
-                       {\r
-                               server = withoutProtocol.Substring(0, index);\r
-                               directory = withoutProtocol.Remove(0, index + 1);\r
-                       }\r
-               }\r
-\r
-               /// <summary>\r
-               /// Copy ISO to the (remote) destination.\r
-               /// </summary>\r
-               /// <param name="sourceFilename">Name of source ISO file to copy.</param>\r
-               /// <param name="branch">Branch.</param>\r
-               /// <param name="revision">Revision.</param>\r
-               /// <remarks>\r
-               /// Structure is ftp://ftp.server.com/whereever/<branch>/ReactOS-<branch>-r<revision>.iso.\r
-               /// </remarks>\r
-               private static void CopyISOToRemoteFtpDestination(string sourceFilename,\r
-                                                                 string branch,\r
-                                                                 int revision)\r
-               {\r
-                       string distributionFilename = GetDistributionFilename(branch,\r
-                                                                             revision);\r
-                       string destinationFilename = Path.Combine(Path.GetDirectoryName(sourceFilename),\r
-                                                                 distributionFilename);\r
-                       File.Move(sourceFilename, destinationFilename);\r
-                       string server;\r
-                       string directory;\r
-                       SplitRemotePublishPath(publishPath, out server, out directory);\r
-                       FtpClient ftpClient = new FtpClient(server, "anonymous", "sin@svn.reactos.com");\r
-                       ftpClient.Login();\r
-                       if (directory != "")\r
-                               ftpClient.ChangeDir(directory);\r
-                       /* Create destination directory if it does not already exist */\r
-                       if (!ftpClient.DirectoryExists(branch))\r
-                               ftpClient.MakeDir(branch);\r
-                       ftpClient.ChangeDir(branch);\r
-                       ftpClient.Upload(destinationFilename);\r
-                       ftpClient.Close();\r
-               }\r
-\r
-               /// <summary>\r
-               /// Copy ISO to the (local) destination.\r
-               /// </summary>\r
-               /// <param name="sourceFilename">Name of source ISO file to copy.</param>\r
-               /// <param name="branch">Branch.</param>\r
-               /// <param name="revision">Revision.</param>\r
-               /// <remarks>\r
-               /// Structure is <branch>\ReactOS-<branch>-r<revision>.iso.\r
-               /// </remarks>\r
-               private static void CopyISOToLocalDestination(string sourceFilename,\r
-                                                             string branch,\r
-                                                             int revision)\r
-               {\r
-                       string distributionFilename = GetDistributionFilename(branch,\r
-                                                                             revision);\r
-                       string destinationDirectory = Path.Combine(publishPath,\r
-                                                                  branch);\r
-                       string destinationFilename = Path.Combine(destinationDirectory,\r
-                                                                 distributionFilename);\r
-                       if (!Directory.Exists(destinationDirectory))\r
-                               Directory.CreateDirectory(destinationDirectory);\r
-                       File.Copy(sourceFilename,\r
-                                 destinationFilename);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Copy ISO to the destination.\r
-               /// </summary>\r
-               /// <param name="sourceFilename">Name of source ISO file to copy.</param>\r
-               /// <param name="branch">Branch.</param>\r
-               /// <param name="revision">Revision.</param>\r
-               /// <remarks>\r
-               /// Structure is <branch>\ReactOS-<branch>-r<revision>.iso.\r
-               /// </remarks>\r
-               private static void CopyISOToDestination(string sourceFilename,\r
-                                                        string branch,\r
-                                                        int revision)\r
-               {\r
-                       if (PublishToRemoteFtpLocation)\r
-                               CopyISOToRemoteFtpDestination(sourceFilename, branch, revision);\r
-                       else\r
-                               CopyISOToLocalDestination(sourceFilename, branch, revision);\r
-               }\r
-\r
-               /// <summary>\r
-               /// Publish a revision of ReactOS.\r
-               /// </summary>\r
-               /// <param name="text">Error message.</param>\r
-               private static int Publish(string branch,\r
-                                          int revision,\r
-                                          string workingDirectory)\r
-               {\r
-                       string make = "mingw32-make";\r
-                       string makeParameters = GetConfigurationOption("makeParameters", "");\r
-                       string reactosDirectory = Path.Combine(workingDirectory,\r
-                                                              "reactos");\r
-                       Console.WriteLine(String.Format("ReactOS directory is {0}",\r
-                                                       reactosDirectory));\r
-                       string standardOutput;\r
-                       string standardError;\r
-                       int exitCode = RunScript(make,\r
-                                                makeParameters + " bootcd",\r
-                                                reactosDirectory,\r
-                                                out standardOutput,\r
-                                                out standardError);\r
-                       if (exitCode != 0)\r
-                       {\r
-                               Fail(revision,\r
-                                    String.Format("make bootcd failed: (error: {0}) {1}",\r
-                                                  standardError,\r
-                                                  standardOutput));\r
-                               return exitCode;\r
-                       }\r
-\r
-                       string sourceFilename = Path.Combine(reactosDirectory,\r
-                                                            "ReactOS.iso");\r
-                       if (File.Exists(sourceFilename))\r
-                               CopyISOToDestination(sourceFilename,\r
-                                                    branch,\r
-                                                    revision);\r
-                       else\r
-                       {\r
-                               Fail(revision,\r
-                                    "make bootcd produced no ReactOS.iso");\r
-                               return exitCode;\r
-                       }\r
-\r
-                       return exitCode;\r
-               }\r
-\r
-               /// <summary>\r
-               /// Program entry point.\r
-               /// </summary>\r
-               /// <param name="args">Arguments from command line.</param>\r
-               /// <remarks>\r
-               /// If exit code is 0, then the commit was processed successfully.\r
-               /// If exit code is 1, then the commit was not processed successfully.\r
-               /// </remarks>\r
-               public static void Main(string[] args)\r
-               {\r
-                       try\r
-                       {\r
-                               System.Environment.ExitCode = 1;\r
-\r
-                               publishPath = ConfigurationSettings.AppSettings["publishPath"];\r
-                               if (publishPath == null)\r
-                               {\r
-                                       Fail("PublishPath option not set.");\r
-                                       return;\r
-                               }\r
-\r
-                               if (args.Length < 3)\r
-                               {\r
-                                       Fail("Usage: ReactOS.CustomRevisionAction action branch revision");\r
-                                       return;\r
-                               }\r
-\r
-                               string action = args[0]; /* bootcd */\r
-                               string branch = args[1];\r
-                               int revision = Int32.Parse(args[2]);\r
-                               \r
-                               System.Environment.ExitCode = Publish(branch,\r
-                                                                     revision,\r
-                                                                     System.Environment.CurrentDirectory);\r
-                       }\r
-                       catch (Exception ex)\r
-                       {\r
-                               Fail(String.Format("Exception: {0}", ex));\r
-                               System.Environment.ExitCode = 1;\r
-                       }\r
-               }\r
-       }\r
-}\r