This commit is contained in:
Liang Ding 2014-10-28 10:57:16 +08:00
parent 70e4b4efca
commit 1aaa3ba719
1 changed files with 64 additions and 0 deletions

View File

@ -128,6 +128,10 @@ func (c *conf) GetUserWorkspace(username string) string {
}
// 获取主工作空间路径.
//
// 相比起使用 Wide.Workspace该函数会做如下处理
// 1. 替换里面的 {pwd} 变量为实际的目录路径
// 2. 把 / 替换为 \\ Windows
func (c *conf) GetWorkspace() string {
return filepath.FromSlash(strings.Replace(c.Workspace, "{pwd}", c.Pwd, 1))
}
@ -151,6 +155,15 @@ func (c *conf) GetGoFmt(username string) string {
return "gofmt"
}
// 获取用户的工作空间路径.
//
// 相比起使用 User.Workspace该函数会做如下处理
// 1. 替换里面的 {pwd} 变量为实际的目录路径
// 2. 把 / 替换为 \\ Windows
func (u *User) GetWorkspace() string {
return filepath.FromSlash(strings.Replace(u.Workspace, "{pwd}", Wide.Pwd, 1))
}
// 获取 username 指定的用户配置.
func (*conf) GetUser(username string) *User {
for _, user := range Wide.Users {
@ -259,6 +272,57 @@ func Load() {
glog.V(3).Infof("pwd [%s]", pwd)
glog.V(3).Info("Conf: \n" + string(bytes))
initWorkspaceDirs()
}
// 初始化主工作空间、各个用户的工作空间目录.
//
// 如果不存在 Workspace 配置所指定的目录路径则创建该目录.
func initWorkspaceDirs() {
paths := strings.Split(Wide.GetWorkspace(), PathListSeparator)
for _, user := range Wide.Users {
paths = append(paths, strings.Split(user.GetWorkspace(), PathListSeparator)...)
}
for _, path := range paths {
createWorkspaceDir(path)
}
}
// 在 path 指定的路径下创建工作空间目录.
//
// 1. 根目录:{path}
// 2. 源码目录:{path}/src
// 3. 包目录:{path}/pkg
// 4. 可执行文件目录:{path}/bin
func createWorkspaceDir(path string) {
// {path}, workspace root
createDir(path)
// {path}/src
createDir(path + PathSeparator + "src")
// {path}/pkg
createDir(path + PathSeparator + "pkg")
// {path}/bin
createDir(path + PathSeparator + "bin")
}
// 在 path 指定的路径下不存在目录或文件则创建目录.
func createDir(path string) {
if !isExist(path) {
if err := os.MkdirAll(path, 0775); nil != err {
glog.Error(err)
os.Exit(-1)
}
glog.V(7).Infof("Created a directory [%s]", path)
}
}
// 检查文件或目录是否存在.