github.com/grzegorz-zur/bm@v0.0.0-20240312214136-6fc133e3e2c0/main.go (about) 1 // Bare Minimum. 2 // 3 // Minimalistic text editor. 4 package main 5 6 import ( 7 "flag" 8 "fmt" 9 "github.com/gdamore/tcell" 10 "io/ioutil" 11 "log" 12 "os" 13 "os/user" 14 "time" 15 ) 16 17 func main() { 18 19 user, err := user.Current() 20 if err != nil { 21 fmt.Fprintf(os.Stderr, "error getting current user %v", err) 22 os.Exit(-1) 23 } 24 username := user.Username 25 date := time.Now().Format("2006-01-02_15-04-05") 26 prefix := fmt.Sprintf("bm_%s_%s_", username, date) 27 28 logfile, err := ioutil.TempFile("", prefix) 29 if err != nil { 30 fmt.Fprintf(os.Stderr, "error opening log file %v", err) 31 os.Exit(-1) 32 } 33 defer func() { 34 err = logfile.Close() 35 if err != nil { 36 fmt.Fprintf(os.Stderr, "error closing log file %v", err) 37 } 38 }() 39 log.SetOutput(logfile) 40 defer log.SetOutput(os.Stderr) 41 42 flag.Parse() 43 paths := []string{} 44 for _, path := range flag.Args() { 45 paths = append(paths, path) 46 } 47 48 screenCreate := func() (tcell.Screen, error) { return tcell.NewScreen() } 49 editor := New(screenCreate, paths) 50 editor.Start() 51 editor.Wait() 52 53 }