-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcd.go
More file actions
41 lines (34 loc) · 784 Bytes
/
cd.go
File metadata and controls
41 lines (34 loc) · 784 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import "os"
type changeDirectory struct {
builtin
}
func (cd *changeDirectory) setCommand(cmd string) {
cd.cmd = cmd
}
func (cd *changeDirectory) setCommandArgs(args []string) {
cd.args = args
}
func (cd *changeDirectory) runCommand() {
Logger.Debug().Msgf("cd: %s\n", cd.args)
if len(cd.args) == 0 {
return
}
for _, dir := range cd.args {
if _, err := os.Stat(dir); err != nil {
Logger.Error().Err(err).Msg("")
return
}
directoryStack = append(directoryStack, dir)
}
topElem := len(directoryStack) - 1
err := cd.changeDirectory(directoryStack[topElem])
if err != nil {
Logger.Error().Err(err).Msg("")
}
pos = len(directoryStack) - 1
}
func (cd *changeDirectory) changeDirectory(dir string) error {
err := os.Chdir(dir)
return err
}