github.com/bingoohuang/pkger@v0.0.0-20210127185155-a71b9df4c4c7/cmd/pkger/main.go (about)

     1  package main
     2  
     3  import (
     4  	"log"
     5  	"os"
     6  	"os/exec"
     7  
     8  	"github.com/bingoohuang/pkger/cmd/pkger/cmds"
     9  )
    10  
    11  func main() {
    12  	clean := func() {
    13  		c := exec.Command("go", "mod", "tidy")
    14  		c.Stdout = os.Stdout
    15  		c.Stderr = os.Stderr
    16  		c.Stdin = os.Stdin
    17  		c.Run()
    18  	}
    19  	defer clean()
    20  
    21  	defer func() {
    22  		if err := recover(); err != nil {
    23  			clean()
    24  			log.Fatal(err)
    25  		}
    26  	}()
    27  
    28  	if err := run(); err != nil {
    29  		clean()
    30  		log.Fatal(err)
    31  	}
    32  }
    33  
    34  func run() error {
    35  	root, err := cmds.New()
    36  	if err != nil {
    37  		return err
    38  	}
    39  
    40  	return root.Route(os.Args[1:])
    41  }
    42  
    43  // does not compute