/// </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
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 destination.\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 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.GetFileList(branch).Length < 1)\r
+ ftpClient.MakeDir(branch);\r
+ ftpClient.ChangeDir(branch);\r
+ ftpClient.Upload(sourceFilename);\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
/// <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
+ private static void CopyISOToLocalDestination(string sourceFilename,\r
+ string branch,\r
+ int revision)\r
{\r
string distributionFilename = GetDistributionFilename(branch,\r
revision);\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