backend/analyzer/entities/indexing.go (68 lines of code) (raw):

package entities import ( "fmt" "log" "log_analyzer/backend/analyzer" "path/filepath" "strings" "time" ) func init() { CurrentAnalyzer.AddDynamicEntity(analyzer.DynamicEntity{ Name: "Indexing diagnostic", ConvertPathToLogs: parseIndexingDiagnosticFolder, CheckPath: isIndexingFile, CheckIgnoredPath: isIgnortedIndexingFile, GetDisplayName: getDisplayName, LineHighlightingColor: "#3abef5", }) } func isIndexingFolder(path string) bool { if strings.Contains(path, "indexing-diagnostic") { return true } return false } func parseIndexingDiagnosticFolder(path string) (l analyzer.Logs) { if isIndexingFile(path) { l = append(l, analyzer.LogEntry{ Severity: "INDEX", Time: getTimeStampFromIndexingFile(path), Text: "Indexing project: " + getIndexingProjectName(path) + " (show report.html). Report: " + filepath.Base(path), }) } return l } func isIgnortedIndexingFile(path string) bool { if isIndexingFolder(path) && (filepath.Ext(path) == ".json" || strings.Contains(filepath.Base(path), "changed-files-pushing-events.json") || strings.Contains(filepath.Base(path), "report.html") || strings.Contains(filepath.Base(path), "shared-index-events.json")) { return true } return false } func isIndexingFile(path string) bool { timeStamp := analyzer.GetRegexNamedCapturedGroups(`diagnostic-(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})-(?P<Hours>\d{2})-(?P<Minutes>\d{2})-(?P<Seconds>\d{2}).*.html`, path) if len(timeStamp) > 0 { return true } return false } func getTimeStampFromIndexingFile(path string) time.Time { timeStamp := analyzer.GetRegexNamedCapturedGroups(`diagnostic-(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})-(?P<Hours>\d{2})-(?P<Minutes>\d{2})-(?P<Seconds>\d{2}).*.html`, path) if len(timeStamp) == 0 { return time.Time{} } s := fmt.Sprintf("%s-%s-%sT%s:%s:%sZ", timeStamp["Year"], timeStamp["Month"], timeStamp["Day"], timeStamp["Hours"], timeStamp["Minutes"], timeStamp["Seconds"]) t, err := time.Parse(time.RFC3339, s) if err != nil { log.Printf("getTimeStampFromIndexingFile failed. path: %s, error: %s", path, err) } return t } func getIndexingProjectName(path string) string { projectFolder := analyzer.GetRegexNamedCapturedGroups(`indexing-diagnostic.{1}(?P<ProjectFolder>.*).{1}diagnostic-(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})-(?P<Hours>\d{2})-(?P<Minutes>\d{2})-(?P<Seconds>\d{2}).*.html`, path)["ProjectFolder"] projectName := projectFolder[:strings.LastIndex(projectFolder, ".")] return projectName }