From d91c9a55e5f50ebde6570fd9307ec158d0a4b978 Mon Sep 17 00:00:00 2001 From: skanehira Date: Wed, 30 Oct 2019 10:49:33 +0900 Subject: [PATCH] add log flag --- go.mod | 1 + go.sum | 2 ++ main.go | 29 +++++++++++++++++++++++++++++ 3 files changed, 32 insertions(+) diff --git a/go.mod b/go.mod index b9ae057..b532d8c 100644 --- a/go.mod +++ b/go.mod @@ -4,6 +4,7 @@ go 1.13 require ( github.com/gdamore/tcell v1.3.0 + github.com/mitchellh/go-homedir v1.1.0 github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2 golang.org/x/crypto v0.0.0-20191029031824-8986dd9e96cf ) diff --git a/go.sum b/go.sum index d0b7b8c..aa791d5 100644 --- a/go.sum +++ b/go.sum @@ -8,6 +8,8 @@ github.com/lucasb-eyer/go-colorful v1.0.2 h1:mCMFu6PgSozg9tDNMMK3g18oJBX7oYGrC09 github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s= github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2 h1:GVXSfgXOMAeLvFH7IrpY3yYM8H3YekZEFcZ14q9gQXM= github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2/go.mod h1:/rBeY22VG2QprWnEqG57IBC8biVu3i0DOIjRLc9I8H0= github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY= diff --git a/main.go b/main.go index 80c0ceb..7b2c6e8 100644 --- a/main.go +++ b/main.go @@ -2,15 +2,44 @@ package main import ( "encoding/json" + "flag" "fmt" "io/ioutil" "log" "os" + "path/filepath" + "github.com/mitchellh/go-homedir" "github.com/skanehira/tson/gui" "golang.org/x/crypto/ssh/terminal" ) +var ( + enableLog = flag.Bool("log", false, "enable log") +) + +func init() { + flag.Parse() + if *enableLog { + home, err := homedir.Dir() + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + + logWriter, err := os.OpenFile(filepath.Join(home, "tson.log"), os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) + if err != nil { + fmt.Fprintln(os.Stderr, err) + os.Exit(1) + } + + log.SetOutput(logWriter) + log.SetFlags(log.Lshortfile) + } else { + log.SetOutput(ioutil.Discard) + } +} + func run() int { if !terminal.IsTerminal(0) { b, err := ioutil.ReadAll(os.Stdin)