func getRunningStepFooterSubSection(stepRunResult models.StepRunResultsModel) string { stepInfo := stepRunResult.StepInfo removalDate := stepInfo.GlobalInfo.RemovalDate deprecateNotes := stepInfo.GlobalInfo.DeprecateNotes removalDateRow := "" deprecateNotesRow := "" if removalDate != "" { removalDateValue := removalDate removalDateKey := colorstring.Red("Removal date:") removalDateRow = fmt.Sprintf("| Removal date: %s |", removalDateValue) charDiff := len(removalDateRow) - stepRunSummaryBoxWidthInChars removalDateRow = fmt.Sprintf("| %s %s%s |", removalDateKey, removalDateValue, strings.Repeat(" ", -charDiff)) if deprecateNotes != "" { deprecateNotesStr := fmt.Sprintf("Removal notes: %s", deprecateNotes) deprecateNotesRow = getDeprecateNotesRows(deprecateNotesStr) } } isUpdateAvailable := isUpdateAvailable(stepRunResult.StepInfo) updateRow := "" if isUpdateAvailable { updateRow = fmt.Sprintf("| Update available: %s -> %s |", stepInfo.Version, stepInfo.Latest) charDiff := len(updateRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space updateRow = fmt.Sprintf("| Update available: %s -> %s%s |", stepInfo.Version, stepInfo.Latest, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title if charDiff > 6 { updateRow = fmt.Sprintf("| Update available!%s |", strings.Repeat(" ", -len("| Update available! |")-stepRunSummaryBoxWidthInChars)) } else { updateRow = fmt.Sprintf("| Update available: -> %s%s |", stepInfo.Latest, strings.Repeat(" ", -len("| Update available: -> %s |")-stepRunSummaryBoxWidthInChars)) } } } issueRow := "" sourceRow := "" if stepRunResult.Error != nil { // Support URL var coloringFunc func(...interface{}) string supportURL := stepInfo.SupportURL if supportURL == "" { coloringFunc = colorstring.Yellow supportURL = "Not provided" } issueRow = fmt.Sprintf("| Issue tracker: %s |", supportURL) charDiff := len(issueRow) - stepRunSummaryBoxWidthInChars if charDiff <= 0 { // shorter than desired - fill with space if coloringFunc != nil { // We need to do this after charDiff calculation, // because of coloring characters increase the text length, but they do not printed supportURL = coloringFunc("Not provided") } issueRow = fmt.Sprintf("| Issue tracker: %s%s |", supportURL, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(supportURL) - charDiff if trimmedWidth < 4 { log.Errorf("Support url too long, can't present support url at all! : %s", supportURL) } else { issueRow = fmt.Sprintf("| Issue tracker: %s |", stringutil.MaxLastCharsWithDots(supportURL, trimmedWidth)) } } // Source Code URL coloringFunc = nil sourceCodeURL := stepInfo.SourceCodeURL if sourceCodeURL == "" { coloringFunc = colorstring.Yellow sourceCodeURL = "Not provided" } sourceRow = fmt.Sprintf("| Source: %s |", sourceCodeURL) charDiff = len(sourceRow) - stepRunSummaryBoxWidthInChars if charDiff <= 0 { // shorter than desired - fill with space if coloringFunc != nil { // We need to do this after charDiff calculation, // because of coloring characters increase the text length, but they do not printed sourceCodeURL = coloringFunc("Not provided") } sourceRow = fmt.Sprintf("| Source: %s%s |", sourceCodeURL, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(sourceCodeURL) - charDiff if trimmedWidth < 4 { log.Errorf("Source url too long, can't present source url at all! : %s", sourceCodeURL) } else { sourceRow = fmt.Sprintf("| Source: %s |", stringutil.MaxLastCharsWithDots(sourceCodeURL, trimmedWidth)) } } } // Update available content := "" if isUpdateAvailable { content = fmt.Sprintf("%s", updateRow) } // Support URL if content != "" { content = fmt.Sprintf("%s\n%s", content, issueRow) } else { content = fmt.Sprintf("%s", issueRow) } // Source Code URL if content != "" { content = fmt.Sprintf("%s\n%s", content, sourceRow) } else { content = fmt.Sprintf("%s", sourceRow) } // Deprecation if removalDate != "" { if content != "" { content = fmt.Sprintf("%s\n%s", content, removalDateRow) } else { content = fmt.Sprintf("%s", removalDateRow) } if deprecateNotes != "" { if content != "" { content = fmt.Sprintf("%s\n%s", content, deprecateNotesRow) } else { content = fmt.Sprintf("%s", deprecateNotesRow) } } } return content }
func getRunningStepHeaderSubSection(stepInfo stepmanModels.StepInfoModel) string { id := stepInfo.ID version := stepInfo.Version collection := stepInfo.StepLib logTime := time.Now().Format(time.RFC3339) idRow := fmt.Sprintf("| id: %s |", id) charDiff := len(idRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space idRow = fmt.Sprintf("| id: %s%s |", id, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(id) - charDiff if trimmedWidth < 4 { log.Errorf("Step id too long, can't present id at all! : %s", id) } else { idRow = fmt.Sprintf("| id: %s |", stringutil.MaxFirstCharsWithDots(id, trimmedWidth)) } } versionRow := fmt.Sprintf("| version: %s |", version) charDiff = len(versionRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space versionRow = fmt.Sprintf("| version: %s%s |", version, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(version) - charDiff if trimmedWidth < 4 { log.Errorf("Step version too long, can't present version at all! : %s", version) } else { versionRow = fmt.Sprintf("| id: %s |", stringutil.MaxFirstCharsWithDots(version, trimmedWidth)) } } collectionRow := fmt.Sprintf("| collection: %s |", collection) charDiff = len(collectionRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space collectionRow = fmt.Sprintf("| collection: %s%s |", collection, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(collection) - charDiff if trimmedWidth < 4 { log.Errorf("Step collection too long, can't present collection at all! : %s", version) } else { collectionRow = fmt.Sprintf("| collection: %s |", stringutil.MaxLastCharsWithDots(collection, trimmedWidth)) } } timeRow := fmt.Sprintf("| time: %s |", logTime) charDiff = len(timeRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space timeRow = fmt.Sprintf("| time: %s%s |", logTime, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(logTime) - charDiff if trimmedWidth < 4 { log.Errorf("Time too long, can't present time at all! : %s", version) } else { timeRow = fmt.Sprintf("| time: %s |", stringutil.MaxFirstCharsWithDots(logTime, trimmedWidth)) } } return fmt.Sprintf("%s\n%s\n%s\n%s", idRow, versionRow, collectionRow, timeRow) }
func getRunningStepFooterSubSection(stepRunResult models.StepRunResultsModel, isUpdateAvailable bool) string { stepInfo := stepRunResult.StepInfo updateRow := "" if isUpdateAvailable { updateRow = fmt.Sprintf("| Update available: %s -> %s |", stepInfo.Version, stepInfo.Latest) charDiff := len(updateRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space updateRow = fmt.Sprintf("| Update available: %s -> %s%s |", stepInfo.Version, stepInfo.Latest, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title if charDiff > 6 { updateRow = fmt.Sprintf("| Update available!%s |", strings.Repeat(" ", -len("| Update available! |")-stepRunSummaryBoxWidthInChars)) } else { updateRow = fmt.Sprintf("| Update available: -> %s%s |", stepInfo.Latest, strings.Repeat(" ", -len("| Update available: -> %s |")-stepRunSummaryBoxWidthInChars)) } } } issueRow := fmt.Sprintf("| Issue tracker: %s |", stepInfo.SupportURL) if stepInfo.SupportURL != "" { charDiff := len(issueRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space issueRow = fmt.Sprintf("| Issue tracker: %s%s |", stepInfo.SupportURL, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(stepInfo.SupportURL) - charDiff if trimmedWidth < 4 { log.Errorf("Support url too long, can't present support url at all! : %s", stepInfo.SupportURL) } else { issueRow = fmt.Sprintf("| Issue tracker: %s |", stringutil.MaxLastCharsWithDots(stepInfo.SupportURL, len(stepInfo.SupportURL)-trimmedWidth)) } } } sourceRow := fmt.Sprintf("| Source: %s |", stepInfo.SourceCodeURL) if stepInfo.SourceCodeURL != "" { charDiff := len(sourceRow) - stepRunSummaryBoxWidthInChars if charDiff < 0 { // shorter than desired - fill with space sourceRow = fmt.Sprintf("| Source: %s%s |", stepInfo.SourceCodeURL, strings.Repeat(" ", -charDiff)) } else if charDiff > 0 { // longer than desired - trim title trimmedWidth := len(stepInfo.SourceCodeURL) - charDiff if trimmedWidth < 4 { log.Errorf("Source url too long, can't present source url at all! : %s", stepInfo.SourceCodeURL) } else { sourceRow = fmt.Sprintf("| Source: ...%s |", stringutil.MaxLastCharsWithDots(stepInfo.SourceCodeURL, len(stepInfo.SourceCodeURL)-trimmedWidth)) } } } content := "" if isUpdateAvailable { content = fmt.Sprintf("%s", updateRow) } if stepInfo.SupportURL != "" { if content != "" { content = fmt.Sprintf("%s\n%s", content, issueRow) } else { content = fmt.Sprintf("%s", issueRow) } } if stepInfo.SourceCodeURL != "" { if content != "" { content = fmt.Sprintf("%s\n%s", content, sourceRow) } else { content = fmt.Sprintf("%s", sourceRow) } } return content }