summaryrefslogtreecommitdiffstats
path: root/pkg/app
diff options
context:
space:
mode:
authorDavyd McColl <davydm@gmail.com>2021-06-14 10:43:35 +0200
committerJesse Duffield <jessedduffield@gmail.com>2021-07-01 17:13:14 +1000
commit2ac33bb83d661a53a10816e9ba4714e2aa747fe9 (patch)
tree1620af446dfcc17a2dffbf9089ae2d8be8a61816 /pkg/app
parent2b4048ebff05ec0bfd1a1164ce4589909c831015 (diff)
:art: split out platform-dependent logging for compile-time selection
Diffstat (limited to 'pkg/app')
-rw-r--r--pkg/app/app.go105
-rw-r--r--pkg/app/logging.go49
-rw-r--r--pkg/app/logging_windows.go95
3 files changed, 144 insertions, 105 deletions
diff --git a/pkg/app/app.go b/pkg/app/app.go
index 491112a3f..fd4df9d75 100644
--- a/pkg/app/app.go
+++ b/pkg/app/app.go
@@ -4,14 +4,12 @@ import (
"bufio"
"errors"
"fmt"
- "github.com/aybabtme/humanlog"
"github.com/jesseduffield/lazygit/pkg/commands"
"github.com/jesseduffield/lazygit/pkg/commands/oscommands"
"github.com/jesseduffield/lazygit/pkg/config"
"github.com/jesseduffield/lazygit/pkg/env"
"github.com/jesseduffield/lazygit/pkg/gui"
"github.com/jesseduffield/lazygit/pkg/i18n"
- "github.com/jesseduffield/lazygit/pkg/secureexec"
"github.com/jesseduffield/lazygit/pkg/updates"
"github.com/sirupsen/logrus"
"io"
@@ -20,10 +18,8 @@ import (
"os"
"path/filepath"
"regexp"
- "runtime"
"strconv"
"strings"
- "time"
)
// App struct
@@ -310,104 +306,3 @@ func (app *App) KnownError(err error) (string, bool) {
}
return "", false
}
-
-func TailLogs() {
- logFilePath, err := config.LogPath()
- if err != nil {
- log.Fatal(err)
- }
-
- fmt.Printf("Tailing log file %s\n\n", logFilePath)
-
- opts := humanlog.DefaultOptions
- opts.Truncates = false
-
- _, err = os.Stat(logFilePath)
- if err != nil {
- if os.IsNotExist(err) {
- log.Fatal("Log file does not exist. Run `lazygit --debug` first to create the log file")
- }
- log.Fatal(err)
- }
-
- if runtime.GOOS == "windows" {
- TailLogsNative(logFilePath, opts)
- return
- }
-
- cmd := secureexec.Command("tail", "-f", logFilePath)
-
- stdout, _ := cmd.StdoutPipe()
- if err := cmd.Start(); err != nil {
- log.Fatal(err)
- }
-
- if err := humanlog.Scanner(stdout, os.Stdout, opts); err != nil {
- log.Fatal(err)
- }
-
- if err := cmd.Wait(); err != nil {
- log.Fatal(err)
- }
-
- os.Exit(0)
-}
-
-func TailLogsNative(logFilePath string, opts *humanlog.HandlerOptions) {
- var lastModified int64 = 0
- var lastOffset int64 = 0
- for {
- stat, err := os.Stat(logFilePath)
- if err != nil {
- log.Fatal(err)
- }
- if stat.ModTime().Unix() > lastModified {
- err = TailFrom(lastOffset, logFilePath, opts)
- if err != nil {
- log.Fatal(err)
- }
- }
- lastOffset = stat.Size()
- time.Sleep(1 * time.Second)
- }
-}
-
-func OpenAndSeek(filepath string, offset int64) (*os.File, error) {
- file, err := os.Open(filepath)
- if err != nil {
- return nil, err
- }
-
- _, err = file.Seek(offset, 0)
- if err != nil {
- _ = file.Close()
- return nil, err
- }
- return file, nil
-}
-
-func TailFrom(lastOffset int64, logFilePath string, opts *humanlog.HandlerOptions) error {
- file, err := OpenAndSeek(logFilePath, lastOffset)
- if err != nil {
- return err
- }
-
- fileScanner := bufio.NewScanner(file)
- var lines []string
- for fileScanner.Scan() {
- lines = append(lines, fileScanner.Text())
- }
- file.Close()
- lineCount := len(lines)
- lastTen := lines
- if lineCount > 10 {
- lastTen = lines[lineCount-10:]
- }
- for _, line := range lastTen {
- reader := strings.NewReader(line)
- if err := humanlog.Scanner(reader, os.Stdout, opts); err != nil {
- log.Fatal(err)
- }
- }
- return nil
-}
diff --git a/pkg/app/logging.go b/pkg/app/logging.go
new file mode 100644
index 000000000..4484f0bc3
--- /dev/null
+++ b/pkg/app/logging.go
@@ -0,0 +1,49 @@
+// +build !windows
+
+package app
+
+import (
+ "fmt"
+ "github.com/aybabtme/humanlog"
+ "github.com/jesseduffield/lazygit/pkg/config"
+ "github.com/jesseduffield/lazygit/pkg/secureexec"
+ "log"
+ "os"
+)
+
+func TailLogs1() {
+ logFilePath, err := config.LogPath()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ fmt.Printf("Tailing log file %s\n\n", logFilePath)
+
+ opts := humanlog.DefaultOptions
+ opts.Truncates = false
+
+ _, err = os.Stat(logFilePath)
+ if err != nil {
+ if os.IsNotExist(err) {
+ log.Fatal("Log file does not exist. Run `lazygit --debug` first to create the log file")
+ }
+ log.Fatal(err)
+ }
+
+ cmd := secureexec.Command("tail", "-f", logFilePath)
+
+ stdout, _ := cmd.StdoutPipe()
+ if err := cmd.Start(); err != nil {
+ log.Fatal(err)
+ }
+
+ if err := humanlog.Scanner(stdout, os.Stdout, opts); err != nil {
+ log.Fatal(err)
+ }
+
+ if err := cmd.Wait(); err != nil {
+ log.Fatal(err)
+ }
+
+ os.Exit(0)
+}
diff --git a/pkg/app/logging_windows.go b/pkg/app/logging_windows.go
new file mode 100644
index 000000000..8c3e937a1
--- /dev/null
+++ b/pkg/app/logging_windows.go
@@ -0,0 +1,95 @@
+// +build windows
+
+package app
+
+import (
+ "bufio"
+ "fmt"
+ "github.com/aybabtme/humanlog"
+ "github.com/jesseduffield/lazygit/pkg/config"
+ "log"
+ "os"
+ "strings"
+ "time"
+)
+
+func TailLogs() {
+ logFilePath, err := config.LogPath()
+ if err != nil {
+ log.Fatal(err)
+ }
+
+ fmt.Printf("Tailing log file %s\n\n", logFilePath)
+
+ opts := humanlog.DefaultOptions
+ opts.Truncates = false
+
+ _, err = os.Stat(logFilePath)
+ if err != nil {
+ if os.IsNotExist(err) {
+ log.Fatal("Log file does not exist. Run `lazygit --debug` first to create the log file")
+ }
+ log.Fatal(err)
+ }
+
+ TailLogsNative(logFilePath, opts)
+}
+
+func TailLogsNative(logFilePath string, opts *humanlog.HandlerOptions) {
+ var lastModified int64 = 0
+ var lastOffset int64 = 0
+ for {
+ stat, err := os.Stat(logFilePath)
+ if err != nil {
+ log.Fatal(err)
+ }
+ if stat.ModTime().Unix() > lastModified {
+ err = TailFrom(lastOffset, logFilePath, opts)
+ if err != nil {
+ log.Fatal(err)
+ }
+ }
+ lastOffset = stat.Size()
+ time.Sleep(1 * time.Second)
+ }
+}
+
+func OpenAndSeek(filepath string, offset int64) (*os.File, error) {
+ file, err := os.Open(filepath)
+ if err != nil {
+ return nil, err
+ }
+
+ _, err = file.Seek(offset, 0)
+ if err != nil {
+ _ = file.Close()
+ return nil, err
+ }
+ return file, nil
+}
+
+func TailFrom(lastOffset int64, logFilePath string, opts *humanlog.HandlerOptions) error {
+ file, err := OpenAndSeek(logFilePath, lastOffset)
+ if err != nil {
+ return err
+ }
+
+ fileScanner := bufio.NewScanner(file)
+ var lines []string
+ for fileScanner.Scan() {
+ lines = append(lines, fileScanner.Text())
+ }
+ file.Close()
+ lineCount := len(lines)
+ lastTen := lines
+ if lineCount > 10 {
+ lastTen = lines[lineCount-10:]
+ }
+ for _, line := range lastTen {
+ reader := strings.NewReader(line)
+ if err := humanlog.Scanner(reader, os.Stdout, opts); err != nil {
+ log.Fatal(err)
+ }
+ }
+ return nil
+}