github.com/AlekSi/nut@v0.3.1-0.20130607203728-cce108d4135e/nut/unpack.go (about) 1 package main 2 3 import ( 4 "log" 5 "os" 6 ) 7 8 var ( 9 cmdUnpack = &Command{ 10 Run: runUnpack, 11 UsageLine: "unpack [-nc] [-v] [filename]", 12 Short: "unpack nut into current directory", 13 } 14 15 unpackNC bool 16 unpackV bool 17 ) 18 19 func init() { 20 cmdUnpack.Long = ` 21 Unpacks nut into current directory. 22 23 Examples: 24 nut unpack test_nut1-0.0.1.nut 25 ` 26 27 cmdUnpack.Flag.BoolVar(&unpackNC, "nc", false, "no check (not recommended)") 28 cmdUnpack.Flag.BoolVar(&unpackV, "v", false, vHelp) 29 } 30 31 func runUnpack(cmd *Command) { 32 if !unpackV { 33 unpackV = Config.V 34 } 35 36 if len(cmd.Flag.Args()) != 1 { 37 log.Fatalf("Expected exactly one filename, got %s", cmd.Flag.Args()) 38 } 39 fileName := cmd.Flag.Args()[0] 40 41 // check nut 42 if !unpackNC { 43 _, nf := ReadNut(fileName) 44 errors := nf.Check() 45 if len(errors) != 0 { 46 log.Print("Found errors:") 47 for _, e := range errors { 48 log.Printf(" %s", e) 49 } 50 log.Fatal("Please contact nut author.") 51 } 52 } 53 54 // unpack nut 55 dir, err := os.Getwd() 56 FatalIfErr(err) 57 UnpackNut(fileName, dir, false, unpackV) 58 if unpackV { 59 log.Printf("%s unpacked.", fileName) 60 } 61 }