Skip to content

Commit d2a34dd

Browse files
committed
updated conditions for unpacking and remove fatalf errors
1 parent c70af11 commit d2a34dd

File tree

1 file changed

+44
-90
lines changed

1 file changed

+44
-90
lines changed

main.go

Lines changed: 44 additions & 90 deletions
Original file line numberDiff line numberDiff line change
@@ -1482,119 +1482,65 @@ func (app *App) loadFileLogs(logName string, newUpdate bool, g *gocui.Gui) {
14821482
} else {
14831483
// Читаем логи в системах UNIX (Linux/Darwin/*BSD)
14841484
switch {
1485-
// Читаем архивные логи (decompress + stdout) в формате gz
1486-
case strings.HasSuffix(logFullPath, ".gz"):
1487-
cmdGzip := exec.Command("gzip", "-dc", logFullPath)
1485+
// Читаем архивные логи (unpack + stdout) в формате: gz/xz/bz2
1486+
case strings.HasSuffix(logFullPath, ".gz") || strings.HasSuffix(logFullPath, ".xz") || strings.HasSuffix(logFullPath, ".bz2"):
1487+
var unpacker string
1488+
vError, _ := app.gui.View("logs")
1489+
switch {
1490+
case strings.HasSuffix(logFullPath, ".gz"):
1491+
unpacker = "gzip"
1492+
case strings.HasSuffix(logFullPath, ".xz"):
1493+
unpacker = "xz"
1494+
case strings.HasSuffix(logFullPath, ".bz2"):
1495+
unpacker = "bzip2"
1496+
}
1497+
cmdZip := exec.Command(unpacker, "-dc", logFullPath)
14881498
cmdTail := exec.Command("tail", "-n", app.logViewCount)
1489-
pipe, err := cmdGzip.StdoutPipe()
1499+
pipe, err := cmdZip.StdoutPipe()
14901500
if err != nil {
1491-
log.Fatalf("Error creating pipe: %v", err)
1501+
vError.Clear()
1502+
fmt.Fprintln(vError, " \033[31mError creating pipe for", unpacker, "tool.\n", err, "\033[0m")
1503+
return
14921504
}
1493-
// Стандартный вывод gzip передаем в stdin tail
1505+
// Стандартный вывод программы передаем в stdin tail
14941506
cmdTail.Stdin = pipe
14951507
out, err := cmdTail.StdoutPipe()
14961508
if err != nil {
1497-
log.Fatalf("Error creating stdout pipe for tail: %v", err)
1509+
vError.Clear()
1510+
fmt.Fprintln(vError, " \033[31mError creating stdout pipe for tail.\n", err, "\033[0m")
1511+
return
14981512
}
14991513
// Запуск команд
1500-
if err := cmdGzip.Start(); err != nil {
1501-
log.Fatalf("Error starting gzip: %v", err)
1514+
if err := cmdZip.Start(); err != nil {
1515+
vError.Clear()
1516+
fmt.Fprintln(vError, " \033[31mError starting", unpacker, "tool.\n", err, "\033[0m")
1517+
return
15021518
}
15031519
if err := cmdTail.Start(); err != nil {
1504-
log.Fatalf("Error starting tail: %v", err)
1520+
vError.Clear()
1521+
fmt.Fprintln(vError, " \033[31mError starting tail from", unpacker, "stdout.\n", err, "\033[0m")
1522+
return
15051523
}
15061524
// Чтение вывода
15071525
output, err := io.ReadAll(out)
15081526
if err != nil {
1509-
log.Fatalf("Error reading output from tail: %v", err)
1527+
vError.Clear()
1528+
fmt.Fprintln(vError, " \033[31mError reading output from tail.\n", err, "\033[0m")
1529+
return
15101530
}
15111531
// Ожидание завершения команд
1512-
if err := cmdGzip.Wait(); err != nil {
1513-
v, _ := app.gui.View("logs")
1514-
v.Clear()
1515-
fmt.Fprintln(v, " \033[31mError reading archive log using gzip tool.\n", err, "\033[0m")
1532+
if err := cmdZip.Wait(); err != nil {
1533+
vError.Clear()
1534+
fmt.Fprintln(vError, " \033[31mError reading archive log using", unpacker, "tool.\n", err, "\033[0m")
15161535
return
15171536
}
15181537
if err := cmdTail.Wait(); err != nil {
1519-
v, _ := app.gui.View("logs")
1520-
v.Clear()
1521-
fmt.Fprintln(v, " \033[31mError reading log using tail tool.\n", err, "\033[0m")
1538+
vError.Clear()
1539+
fmt.Fprintln(vError, " \033[31mError reading log using tail tool.\n", err, "\033[0m")
15221540
return
15231541
}
15241542
// Выводим содержимое
15251543
app.currentLogLines = strings.Split(string(output), "\n")
1526-
// Читаем архивные логи в формате xz
1527-
case strings.HasSuffix(logFullPath, ".xz"):
1528-
cmdXz := exec.Command("xz", "-dc", logFullPath)
1529-
cmdTail := exec.Command("tail", "-n", app.logViewCount)
1530-
pipe, err := cmdXz.StdoutPipe()
1531-
if err != nil {
1532-
log.Fatalf("Error creating pipe: %v", err)
1533-
}
1534-
cmdTail.Stdin = pipe
1535-
out, err := cmdTail.StdoutPipe()
1536-
if err != nil {
1537-
log.Fatalf("Error creating stdout pipe for tail: %v", err)
1538-
}
1539-
if err := cmdXz.Start(); err != nil {
1540-
log.Fatalf("Error starting xz: %v", err)
1541-
}
1542-
if err := cmdTail.Start(); err != nil {
1543-
log.Fatalf("Error starting tail: %v", err)
1544-
}
1545-
output, err := io.ReadAll(out)
1546-
if err != nil {
1547-
log.Fatalf("Error reading output from tail: %v", err)
1548-
}
1549-
if err := cmdXz.Wait(); err != nil {
1550-
v, _ := app.gui.View("logs")
1551-
v.Clear()
1552-
fmt.Fprintln(v, " \033[31mError reading archive log using xz tool.\n", err, "\033[0m")
1553-
return
1554-
}
1555-
if err := cmdTail.Wait(); err != nil {
1556-
v, _ := app.gui.View("logs")
1557-
v.Clear()
1558-
fmt.Fprintln(v, " \033[31mError reading log using tail tool.\n", err, "\033[0m")
1559-
return
1560-
}
1561-
app.currentLogLines = strings.Split(string(output), "\n")
1562-
// Читаем архивные логи в формате bz2 для FreeBSD
1563-
case strings.HasSuffix(logFullPath, ".bz2"):
1564-
cmdBzip2 := exec.Command("bzip2", "-dc", logFullPath)
1565-
cmdTail := exec.Command("tail", "-n", app.logViewCount)
1566-
pipe, err := cmdBzip2.StdoutPipe()
1567-
if err != nil {
1568-
log.Fatalf("Error creating pipe: %v", err)
1569-
}
1570-
cmdTail.Stdin = pipe
1571-
out, err := cmdTail.StdoutPipe()
1572-
if err != nil {
1573-
log.Fatalf("Error creating stdout pipe for tail: %v", err)
1574-
}
1575-
if err := cmdBzip2.Start(); err != nil {
1576-
log.Fatalf("Error starting bzip2: %v", err)
1577-
}
1578-
if err := cmdTail.Start(); err != nil {
1579-
log.Fatalf("Error starting tail: %v", err)
1580-
}
1581-
output, err := io.ReadAll(out)
1582-
if err != nil {
1583-
log.Fatalf("Error reading output from tail: %v", err)
1584-
}
1585-
if err := cmdBzip2.Wait(); err != nil {
1586-
v, _ := app.gui.View("logs")
1587-
v.Clear()
1588-
fmt.Fprintln(v, " \033[31mError reading archive log using bzip2 tool.\n", err, "\033[0m")
1589-
return
1590-
}
1591-
if err := cmdTail.Wait(); err != nil {
1592-
v, _ := app.gui.View("logs")
1593-
v.Clear()
1594-
fmt.Fprintln(v, " \033[31mError reading log using tail tool.\n", err, "\033[0m")
1595-
return
1596-
}
1597-
app.currentLogLines = strings.Split(string(output), "\n")
15981544
// Читаем бинарные файлы с помощью last/lastb для wtmp/btmp, а также utmp (OpenBSD) и utx.log (FreeBSD)
15991545
case strings.Contains(logFullPath, "wtmp") || strings.Contains(logFullPath, "utmp") || strings.Contains(logFullPath, "utx.log"):
16001546
cmd := exec.Command("last", "-f", logFullPath)
@@ -2490,6 +2436,14 @@ func (app *App) wordColor(inputWord string) string {
24902436
break
24912437
}
24922438
}
2439+
case strings.Contains(inputWordLower, "cancel"):
2440+
words := []string{"cancellation", "cancelation", "canceled", "cancelling", "canceling", "cancel"}
2441+
for _, word := range words {
2442+
if strings.Contains(inputWordLower, word) {
2443+
coloredWord = app.replaceWordLower(inputWord, word, "\033[31m")
2444+
break
2445+
}
2446+
}
24932447
case strings.Contains(inputWordLower, "unavailable"):
24942448
coloredWord = app.replaceWordLower(inputWord, "unavailable", "\033[31m")
24952449
case strings.Contains(inputWordLower, "unsuccessful"):

0 commit comments

Comments
 (0)