github.com/xyproto/u-root@v6.0.1-0.20200302025726-5528e0c77a3c+incompatible/cmds/core/elvish/eval/util.go (about) 1 package eval 2 3 import ( 4 "fmt" 5 "os" 6 7 "github.com/u-root/u-root/cmds/core/elvish/eval/vals" 8 "github.com/u-root/u-root/cmds/core/elvish/parse" 9 "github.com/u-root/u-root/cmds/core/elvish/util" 10 ) 11 12 func throw(e error) { 13 util.Throw(e) 14 } 15 16 func throwf(format string, args ...interface{}) { 17 util.Throw(fmt.Errorf(format, args...)) 18 } 19 20 func maybeThrow(err error) { 21 if err != nil { 22 util.Throw(err) 23 } 24 } 25 26 // mustScanToGo is like vals.ScanToGo, except that errors are turned into 27 // exceptions. 28 func mustScanToGo(src interface{}, ptr interface{}) { 29 maybeThrow(vals.ScanToGo(src, ptr)) 30 } 31 32 func mustGetHome(uname string) string { 33 dir, err := util.GetHome(uname) 34 if err != nil { 35 throw(err) 36 } 37 return dir 38 } 39 40 func makeFlag(m parse.RedirMode) int { 41 switch m { 42 case parse.Read: 43 return os.O_RDONLY 44 case parse.Write: 45 return os.O_WRONLY | os.O_CREATE | os.O_TRUNC 46 case parse.ReadWrite: 47 return os.O_RDWR | os.O_CREATE 48 case parse.Append: 49 return os.O_WRONLY | os.O_CREATE | os.O_APPEND 50 default: 51 return -1 52 } 53 }