Fix #96
This commit is contained in:
parent
ad75e1088b
commit
a377ff5ae0
21
conf/wide.go
21
conf/wide.go
|
@ -36,6 +36,7 @@ type User struct {
|
||||||
Password string
|
Password string
|
||||||
Workspace string // 该用户的工作空间 GOPATH 路径
|
Workspace string // 该用户的工作空间 GOPATH 路径
|
||||||
Locale string
|
Locale string
|
||||||
|
GoFormat string
|
||||||
LatestSessionContent *LatestSessionContent
|
LatestSessionContent *LatestSessionContent
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -131,11 +132,23 @@ func (c *conf) GetWorkspace() string {
|
||||||
return filepath.FromSlash(strings.Replace(c.Workspace, "{pwd}", c.Pwd, 1))
|
return filepath.FromSlash(strings.Replace(c.Workspace, "{pwd}", c.Pwd, 1))
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取 user 的工作空间路径.
|
// 获取 username 指定的用户的 Go 源码格式化工具路径,查找不到时返回 "gofmt".
|
||||||
func (user *User) getWorkspace() string {
|
func (c *conf) GetGoFmt(username string) string {
|
||||||
ret := strings.Replace(user.Workspace, "{pwd}", Wide.Pwd, 1)
|
for _, user := range c.Users {
|
||||||
|
if user.Name == username {
|
||||||
|
switch user.GoFormat {
|
||||||
|
case "gofmt":
|
||||||
|
return "gofmt"
|
||||||
|
case "goimports":
|
||||||
|
return c.GetExecutableInGOBIN("goimports")
|
||||||
|
default:
|
||||||
|
glog.Errorf("Unsupported Go Format tool [%s]", user.GoFormat)
|
||||||
|
return "gofmt"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return filepath.FromSlash(ret)
|
return "gofmt"
|
||||||
}
|
}
|
||||||
|
|
||||||
// 获取 username 指定的用户配置.
|
// 获取 username 指定的用户配置.
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
"Password": "admin",
|
"Password": "admin",
|
||||||
"Workspace": "{pwd}/data/user_workspaces/admin",
|
"Workspace": "{pwd}/data/user_workspaces/admin",
|
||||||
"Locale": "zh_CN",
|
"Locale": "zh_CN",
|
||||||
|
"GoFormat": "gofmt",
|
||||||
"LatestSessionContent": {
|
"LatestSessionContent": {
|
||||||
"FileTree": [],
|
"FileTree": [],
|
||||||
"Files": [],
|
"Files": [],
|
||||||
|
|
|
@ -10,22 +10,25 @@ import (
|
||||||
|
|
||||||
"github.com/88250/gohtml"
|
"github.com/88250/gohtml"
|
||||||
"github.com/b3log/wide/conf"
|
"github.com/b3log/wide/conf"
|
||||||
|
"github.com/b3log/wide/session"
|
||||||
"github.com/b3log/wide/util"
|
"github.com/b3log/wide/util"
|
||||||
"github.com/golang/glog"
|
"github.com/golang/glog"
|
||||||
)
|
)
|
||||||
|
|
||||||
// TODO: 加入 goimports 格式化 Go 源码文件
|
// 格式化 Go 源码文件.
|
||||||
|
// 根据用户的 GoFormat 配置选择格式化工具:
|
||||||
// gofmt 格式化 Go 源码文件.
|
// 1. gofmt
|
||||||
|
// 2. goimports
|
||||||
func GoFmtHandler(w http.ResponseWriter, r *http.Request) {
|
func GoFmtHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
data := map[string]interface{}{"succ": true}
|
data := map[string]interface{}{"succ": true}
|
||||||
defer util.RetJSON(w, r, data)
|
defer util.RetJSON(w, r, data)
|
||||||
|
|
||||||
decoder := json.NewDecoder(r.Body)
|
session, _ := session.HTTPSession.Get(r, "wide-session")
|
||||||
|
username := session.Values["username"].(string)
|
||||||
|
|
||||||
var args map[string]interface{}
|
var args map[string]interface{}
|
||||||
|
|
||||||
if err := decoder.Decode(&args); err != nil {
|
if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
|
||||||
glog.Error(err)
|
glog.Error(err)
|
||||||
data["succ"] = false
|
data["succ"] = false
|
||||||
|
|
||||||
|
@ -59,8 +62,10 @@ func GoFmtHandler(w http.ResponseWriter, r *http.Request) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fmt := conf.Wide.GetGoFmt(username)
|
||||||
|
|
||||||
argv := []string{filePath}
|
argv := []string{filePath}
|
||||||
cmd := exec.Command("gofmt", argv...)
|
cmd := exec.Command(fmt, argv...)
|
||||||
|
|
||||||
bytes, _ := cmd.Output()
|
bytes, _ := cmd.Output()
|
||||||
output := string(bytes)
|
output := string(bytes)
|
||||||
|
|
Loading…
Reference in New Issue