github.com/psexton/git-lfs@v2.1.1-0.20170517224304-289a18b2bc53+incompatible/git-lfs.go (about)

     1  //go:generate goversioninfo -icon=script/windows-installer/git-lfs-logo.ico
     2  
     3  package main
     4  
     5  import (
     6  	"fmt"
     7  	"os"
     8  	"os/signal"
     9  	"sync"
    10  	"syscall"
    11  
    12  	"github.com/git-lfs/git-lfs/commands"
    13  )
    14  
    15  func main() {
    16  	c := make(chan os.Signal)
    17  	signal.Notify(c, os.Interrupt, os.Kill)
    18  
    19  	var once sync.Once
    20  
    21  	go func() {
    22  		for {
    23  			sig := <-c
    24  			once.Do(commands.Cleanup)
    25  			fmt.Fprintf(os.Stderr, "\nExiting because of %q signal.\n", sig)
    26  
    27  			exitCode := 1
    28  			if sysSig, ok := sig.(syscall.Signal); ok {
    29  				exitCode = int(sysSig)
    30  			}
    31  			os.Exit(exitCode + 128)
    32  		}
    33  	}()
    34  
    35  	commands.Run()
    36  	once.Do(commands.Cleanup)
    37  }