private static string GetTimeRemainingMessage(ISingleProjectDetail projectStatus) { if (projectStatus.Activity.IsSleeping()) { if (projectStatus.NextBuildTime == DateTime.MaxValue) return "Project is not automatically triggered"; if (projectStatus.NextBuildTime.Date != DateTime.Now.Date) { return string.Format("Next build check: {0:G}", projectStatus.NextBuildTime); } else { return string.Format("Next build check: {0:T}", projectStatus.NextBuildTime); } } if (!projectStatus.Activity.IsPending()) { TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild; if (durationRemaining != TimeSpan.MaxValue) { if (durationRemaining <= TimeSpan.Zero) { return string.Format("Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate())); } return string.Format("{0} estimated remaining", new CCTimeFormatter(durationRemaining)); } } return string.Empty; }
public string FormatDetailString(ISingleProjectDetail projectStatus) { if (projectStatus.ProjectState == ProjectState.NotConnected) { if (projectStatus.ConnectException == null) return "Connecting..."; return string.Format("Error: {0}", projectStatus.ConnectException.Message); } if (projectStatus.Activity == ProjectActivity.Sleeping) { if (projectStatus.NextBuildTime == DateTime.MaxValue) return "Project is not automatically triggered"; return string.Format("Next build check: {0:T}", projectStatus.NextBuildTime); } TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild; if (durationRemaining != TimeSpan.MaxValue) { if (durationRemaining <= TimeSpan.Zero) { return string.Format("Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate())); } return string.Format("{0} estimated remaining", new CCTimeFormatter(durationRemaining)); } return string.Empty; }
private static void DisplayWebPageForProject(ISingleProjectDetail project) { if (project.IsConnected) { string url = project.WebURL; Process.Start(url); } }
public string FormatDetailString(ISingleProjectDetail projectStatus) { if (projectStatus.ProjectState == ProjectState.NotConnected) { if (projectStatus.ConnectException == null) return "Connecting..."; return string.Format("Error: {0}", projectStatus.ConnectException.Message); } string message = GetTimeRemainingMessage(projectStatus); // show first breaking task and the breaking users // search from the end, to get the most recent messages of the specified kind. bool breakerFound = false; bool breakingTaskFound = false; for (int i = projectStatus.Messages.Length - 1; i >= 0; i--) { if (projectStatus.Messages[i].Kind == Message.MessageKind.Breakers) { if (!breakerFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) message += " - "; message += projectStatus.Messages[i].Text; } breakerFound = true; } } if (projectStatus.Messages[i].Kind == Message.MessageKind.FailingTasks) { if (!breakingTaskFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) message += " - "; message += projectStatus.Messages[i].Text; } breakingTaskFound = true; } } } if (projectStatus.CurrentMessage.Length > 0) message += " - " + projectStatus.CurrentMessage; return message; }
private static void DisplayWebPageForProject(ISingleProjectDetail project) { if (project.IsConnected) { // replace plain http by https in case the buildserver is using https string url = project.WebURL; if (url != null && project.Configuration?.BuildServer?.Url != null && project.Configuration.BuildServer.Url.StartsWith("https:") && url.StartsWith("http:")) { url = url.Replace("http:", "https:"); } Process.Start(url); } }
private static string GetProjectAttribute(ISingleProjectDetail project, string attribute) { var attrId = attribute.Trim('%').ToLowerInvariant(); switch (attrId) { case "name": return project.ProjectName; case "state": return project.ProjectState.Name; case "server": return project.ServerName; case "url": return project.WebURL; case "category": return project.Category; case "buildlabel": return project.LastBuildLabel; case "remainingtime": return ((int)Math.Round(project.EstimatedTimeRemainingOnCurrentBuild.TotalSeconds)).ToString("D0", CultureInfo.InvariantCulture); case "queue": return project.QueueName; case "queuepriority": return project.QueuePriority.ToString(CultureInfo.InvariantCulture); case "percentsign": return "%"; default: return attribute; } }
private static string GetTimeRemainingMessage(ISingleProjectDetail projectStatus) { if (projectStatus.Activity.IsSleeping()) { if (projectStatus.NextBuildTime == DateTime.MaxValue) { return("Project is not automatically triggered"); } if (projectStatus.NextBuildTime.Date != DateTime.Now.Date) { return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Next build check: {0:G}", projectStatus.NextBuildTime)); } else { return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Next build check: {0:T}", projectStatus.NextBuildTime)); } } if (!projectStatus.Activity.IsPending()) { TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild; if (durationRemaining != TimeSpan.MaxValue) { if (durationRemaining <= TimeSpan.Zero) { return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate()))); } return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "{0} estimated remaining", new CCTimeFormatter(durationRemaining))); } } return(string.Empty); }
public string FormatDetailString(ISingleProjectDetail projectStatus) { if (projectStatus.ProjectState == ProjectState.NotConnected) { if (projectStatus.ConnectException == null) { return("Connecting..."); } return(string.Format("Error: {0}", projectStatus.ConnectException.Message)); } if (projectStatus.Activity == ProjectActivity.Sleeping) { if (projectStatus.NextBuildTime == DateTime.MaxValue) { return("Project is not automatically triggered"); } return(string.Format("Next build check: {0:T}", projectStatus.NextBuildTime)); } TimeSpan durationRemaining = projectStatus.EstimatedTimeRemainingOnCurrentBuild; if (durationRemaining != TimeSpan.MaxValue) { if (durationRemaining <= TimeSpan.Zero) { return(string.Format("Taking {0} longer than last build", new CCTimeFormatter(durationRemaining.Negate()))); } return(string.Format("{0} estimated remaining", new CCTimeFormatter(durationRemaining))); } return(string.Empty); }
public string FormatDetailString(ISingleProjectDetail projectStatus) { if (projectStatus.ProjectState == ProjectState.NotConnected) { if (projectStatus.ConnectException == null) return "Connecting..."; return string.Format(System.Globalization.CultureInfo.CurrentCulture,"Error: {0}", projectStatus.ConnectException.Message); } string message = GetTimeRemainingMessage(projectStatus); // show first breaking task and the breaking users // search from the end, to get the most recent messages of the specified kind. bool breakerFound = false; bool breakingTaskFound = false; bool aborterFound = false; bool fixerFound = false; for (int i = projectStatus.Messages.Length - 1; i >= 0; i--) { if (projectStatus.Messages[i].Kind == Message.MessageKind.Fixer) { if (!fixerFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) message += " - "; message += projectStatus.Messages[i].Text; } fixerFound = true; } } if (projectStatus.Messages[i].Kind == Message.MessageKind.Breakers) { if (!breakerFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) message += " - Breaker(s) "; message += projectStatus.Messages[i].Text; } breakerFound = true; } } if (projectStatus.Messages[i].Kind == Message.MessageKind.FailingTasks) { if (!breakingTaskFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) message += " - "; message += projectStatus.Messages[i].Text; } breakingTaskFound = true; } } if (projectStatus.Messages[i].Kind == Message.MessageKind.BuildAbortedBy) { if (!aborterFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) message += " - Aborted By :"; message += projectStatus.Messages[i].Text; } aborterFound = true; } } } if (!string.IsNullOrEmpty(projectStatus.CurrentMessage)) { message += " - " + projectStatus.CurrentMessage; } return message; }
public string FormatDetailString(ISingleProjectDetail projectStatus) { if (projectStatus.ProjectState == ProjectState.NotConnected) { if (projectStatus.ConnectException == null) { return("Connecting..."); } return(string.Format(System.Globalization.CultureInfo.CurrentCulture, "Error: {0}", projectStatus.ConnectException.Message)); } string message = GetTimeRemainingMessage(projectStatus); // show first breaking task and the breaking users // search from the end, to get the most recent messages of the specified kind. bool breakerFound = false; bool breakingTaskFound = false; bool aborterFound = false; for (int i = projectStatus.Messages.Length - 1; i >= 0; i--) { if (projectStatus.Messages[i].Kind == Message.MessageKind.Breakers) { if (!breakerFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) { message += " - Breaker(s) "; } message += projectStatus.Messages[i].Text; } breakerFound = true; } } if (projectStatus.Messages[i].Kind == Message.MessageKind.FailingTasks) { if (!breakingTaskFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) { message += " - "; } message += projectStatus.Messages[i].Text; } breakingTaskFound = true; } } if (projectStatus.Messages[i].Kind == Message.MessageKind.BuildAbortedBy) { if (!aborterFound) { if (projectStatus.CurrentMessage != projectStatus.Messages[i].Text) { if (message.Length > 0) { message += " - Aborted By :"; } message += projectStatus.Messages[i].Text; } aborterFound = true; } } } if (projectStatus.CurrentMessage.Length > 0) { message += " - " + projectStatus.CurrentMessage; } return(message); }
public void ThrowsWhenAttemptingToRetrieveSingleProjectDetail() { Assert.That(delegate { ISingleProjectDetail detail = aggregator.Detail; }, Throws.TypeOf <InvalidOperationException>()); }
public static string Format(string format, ISingleProjectDetail project) { if (project == null) throw new ArgumentNullException("project"); return reFormatter.Replace(format, match => GetProjectAttribute(project, match.Value)); }