获取主工作空间

This commit is contained in:
Liang Ding 2014-10-21 10:25:45 +08:00
parent 068a069503
commit 14eaf70dfb
3 changed files with 14 additions and 6 deletions

View File

@ -31,7 +31,7 @@ type LatestSessionContent struct {
type User struct { type User struct {
Name string Name string
Password string Password string
Workspace string // 指定了该用户的 GOPATH 路径 Workspace string // 该用户的工作空间 GOPATH 路径
LatestSessionContent *LatestSessionContent LatestSessionContent *LatestSessionContent
} }
@ -48,6 +48,7 @@ type conf struct {
MaxProcs int // 并发执行数 MaxProcs int // 并发执行数
RuntimeMode string // 运行模式 RuntimeMode string // 运行模式
Pwd string // 工作目录 Pwd string // 工作目录
Workspace string // 主工作空间 GOPATH 路径
Users []*User // 用户集 Users []*User // 用户集
} }
@ -109,10 +110,10 @@ func FixedTimeSave() {
} }
// 获取 username 指定的用户的工作空间路径,查找不到时返回空字符串. // 获取 username 指定的用户的工作空间路径,查找不到时返回空字符串.
func (*conf) GetUserWorkspace(username string) string { func (c *conf) GetUserWorkspace(username string) string {
for _, user := range Wide.Users { for _, user := range c.Users {
if user.Name == username { if user.Name == username {
ret := strings.Replace(user.Workspace, "{pwd}", Wide.Pwd, 1) ret := strings.Replace(user.Workspace, "{pwd}", c.Pwd, 1)
return filepath.FromSlash(ret) return filepath.FromSlash(ret)
} }
} }
@ -120,7 +121,12 @@ func (*conf) GetUserWorkspace(username string) string {
return "" return ""
} }
// 获取工作空间路径. // 获取主工作空间路径.
func (c *conf) GetWorkspace() string {
return filepath.FromSlash(strings.Replace(c.Workspace, "{pwd}", c.Pwd, 1))
}
// 获取 user 的工作空间路径.
func (user *User) getWorkspace() string { func (user *User) getWorkspace() string {
ret := strings.Replace(user.Workspace, "{pwd}", Wide.Pwd, 1) ret := strings.Replace(user.Workspace, "{pwd}", Wide.Pwd, 1)

View File

@ -10,6 +10,7 @@
"MaxProcs": 4, "MaxProcs": 4,
"RuntimeMode": "dev", "RuntimeMode": "dev",
"Pwd": "{pwd}", "Pwd": "{pwd}",
"Workspace": "{pwd}/data/workspace",
"Users": [ "Users": [
{ {
"Name": "admin", "Name": "admin",

View File

@ -627,9 +627,10 @@ func StopHandler(w http.ResponseWriter, r *http.Request) {
func setCmdEnv(cmd *exec.Cmd, username string) { func setCmdEnv(cmd *exec.Cmd, username string) {
userWorkspace := conf.Wide.GetUserWorkspace(username) userWorkspace := conf.Wide.GetUserWorkspace(username)
masterWorkspace := conf.Wide.GetWorkspace()
cmd.Env = append(cmd.Env, cmd.Env = append(cmd.Env,
"GOPATH="+userWorkspace, "GOPATH="+userWorkspace+string(os.PathListSeparator)+masterWorkspace,
"GOOS="+runtime.GOOS, "GOOS="+runtime.GOOS,
"GOARCH="+runtime.GOARCH, "GOARCH="+runtime.GOARCH,
"GOROOT="+runtime.GOROOT(), "GOROOT="+runtime.GOROOT(),