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  }