-
Notifications
You must be signed in to change notification settings - Fork 0
/
executor.go
90 lines (82 loc) · 1.8 KB
/
executor.go
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
package pkg
import (
"fmt"
"os"
"strings"
)
// 实时左标显示
var LivePrefixState struct {
LivePrefix string
IsEnable bool
}
func changeLivePrefix() (string, bool) {
return LivePrefixState.LivePrefix, LivePrefixState.IsEnable
}
// 执行器入口
func executor(in string) {
if in == "" {
LivePrefixState.IsEnable = false
LivePrefixState.LivePrefix = in
return
} else {
// 判断输入in是否只含有一个字符
// 判断Config中是否有alias
// 没有则正常执行
cmdline := in
tmp := strings.Split(in, " ")
if len(tmp) == 1 && Config.GetString(fmt.Sprintf("%s.alias", in)) != "" {
cmdline = Config.GetString(fmt.Sprintf("%s.alias", in))
}
thisisit, status := ParseExecutors(cmdline)
if status {
thisisit()
}
}
LivePrefixState.LivePrefix = "➜ " + GetCurrPath(in) + "> "
LivePrefixState.IsEnable = true
}
func GetCurrPath(in string) string {
var rs string
t := strings.Split(in, " ")
if t[0] == "cd" || t[0] == "ls" || t[0] == "vi" {
if len(t) == 1 {
err := Chdir("~")
if err != nil {
return err.Error()
}
} else if len(t) > 1 {
err := Chdir(t[1])
if err != nil {
return err.Error()
}
}
if len(t) == 0 {
rs = ""
} else if len(t) == 1 {
rs = t[0]
} else if len(t) > 1 {
rs = strings.Join(t[1:], " ")
}
} else {
rs = in
}
return rs
// dir, _ := os.Executable()
// exPath := filepath.Dir(dir)
// if exPath == string(os.PathSeparator) {
// return string(os.PathSeparator)
// }
// tmp := strings.Split(exPath, string(os.PathSeparator))
// return tmp[len(tmp)-1]
}
// Chdir 将程序工作路径修改成程序所在位置
func Chdir(in string) error {
// fmt.Println(in)
// dir, err := filepath.Abs(filepath.Dir(in))
// if err != nil {
// return err
// }
// fmt.Println(dir)
err := os.Chdir(in)
return err
}