src.elv.sh@v0.21.0-dev.0.20240515223629-06979efb9a2a/pkg/eval/builtin_fn_fs.go (about) 1 package eval 2 3 import ( 4 "src.elv.sh/pkg/eval/errs" 5 "src.elv.sh/pkg/fsutil" 6 ) 7 8 // Filesystem commands. 9 10 func init() { 11 addBuiltinFns(map[string]any{ 12 // Directory 13 "cd": cd, 14 15 // Path 16 "tilde-abbr": tildeAbbr, 17 }) 18 } 19 20 func cd(fm *Frame, args ...string) error { 21 var dir string 22 switch len(args) { 23 case 0: 24 var err error 25 dir, err = getHome("") 26 if err != nil { 27 return err 28 } 29 case 1: 30 dir = args[0] 31 default: 32 return errs.ArityMismatch{What: "arguments", ValidLow: 0, ValidHigh: 1, Actual: len(args)} 33 } 34 35 return fm.Evaler.Chdir(dir) 36 } 37 38 func tildeAbbr(path string) string { 39 return fsutil.TildeAbbr(path) 40 }