diff --git a/main.go b/main.go
index 6b1c314..08ccc54 100644
--- a/main.go
+++ b/main.go
@@ -38,7 +38,6 @@ import (
"github.com/b3log/wide/notification"
"github.com/b3log/wide/output"
"github.com/b3log/wide/playground"
- "github.com/b3log/wide/scm/git"
"github.com/b3log/wide/session"
"github.com/b3log/wide/util"
)
@@ -179,9 +178,6 @@ func main() {
http.HandleFunc(conf.Wide.Context+"/playground/stop", handlerWrapper(playground.StopHandler))
http.HandleFunc(conf.Wide.Context+"/playground/autocomplete", handlerWrapper(playground.AutocompleteHandler))
- // git
- http.HandleFunc(conf.Wide.Context+"/git/clone", handlerWrapper(git.CloneHandler))
-
logger.Infof("Wide is running [%s]", conf.Wide.Server+conf.Wide.Context)
err := http.ListenAndServe(conf.Wide.Server, nil)
diff --git a/scm/git/clone.go b/scm/git/clone.go
deleted file mode 100644
index 6c58816..0000000
--- a/scm/git/clone.go
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright (c) 2014-2019, b3log.org & hacpai.com
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// https://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package git
-
-import (
- "bufio"
- "encoding/json"
- "io"
- "io/ioutil"
- "math/rand"
- "net/http"
- "os"
- "os/exec"
-
- "github.com/b3log/wide/conf"
- "github.com/b3log/wide/i18n"
- "github.com/b3log/wide/log"
- "github.com/b3log/wide/session"
- "github.com/b3log/wide/util"
-)
-
-// Logger.
-var logger = log.NewLogger(os.Stdout)
-
-// Clone handles request of git clone.
-func CloneHandler(w http.ResponseWriter, r *http.Request) {
- result := util.NewResult()
- defer util.RetResult(w, r, result)
-
- httpSession, _ := session.HTTPSession.Get(r, "wide-session")
- if httpSession.IsNew {
- http.Error(w, "Forbidden", http.StatusForbidden)
-
- return
- }
- username := httpSession.Values["username"].(string)
- locale := conf.GetUser(username).Locale
-
- var args map[string]interface{}
- if err := json.NewDecoder(r.Body).Decode(&args); err != nil {
- logger.Error(err)
- result.Succ = false
-
- return
- }
-
- sid := args["sid"].(string)
- path := args["path"].(string)
- repository := args["repository"].(string)
-
- cmd := exec.Command("git", "clone", repository)
- cmd.Dir = path
-
- stdout, err := cmd.StdoutPipe()
- if nil != err {
- logger.Error(err)
- result.Succ = false
-
- return
- }
-
- stderr, err := cmd.StderrPipe()
- if nil != err {
- logger.Error(err)
- result.Succ = false
-
- return
- }
-
- if !result.Succ {
- return
- }
-
- channelRet := map[string]interface{}{}
-
- if nil != session.OutputWS[sid] {
- // display "START [git clone]" in front-end browser
-
- channelRet["output"] = "" + i18n.Get(locale, "start-git_clone").(string) + "\n"
- channelRet["cmd"] = "start-git_clone"
-
- wsChannel := session.OutputWS[sid]
-
- err := wsChannel.WriteJSON(&channelRet)
- if nil != err {
- logger.Warn(err)
- return
- }
-
- wsChannel.Refresh()
- }
-
- reader := bufio.NewReader(io.MultiReader(stdout, stderr))
-
- if err := cmd.Start(); nil != err {
- logger.Error(err)
- result.Succ = false
-
- return
- }
-
- go func(runningId int) {
- defer util.Recover()
- defer cmd.Wait()
-
- logger.Debugf("User [%s, %s] is running [git clone] [runningId=%d]", username, sid, runningId)
-
- channelRet := map[string]interface{}{}
- channelRet["cmd"] = "git clone"
-
- // read all
- buf, err := ioutil.ReadAll(reader)
- if nil != err {
- logger.Warn(err)
-
- // TODO: handle clone error
- }
-
- logger.Debugf("User [%s, %s] 's running [git clone] [runningId=%d] has done: %s", username, sid, runningId, string(buf))
-
- channelRet["output"] = "" + i18n.Get(locale, "git_clone-done").(string) + "\n"
-
- if nil != session.OutputWS[sid] {
- wsChannel := session.OutputWS[sid]
-
- err := wsChannel.WriteJSON(&channelRet)
- if nil != err {
- logger.Warn(err)
- }
-
- wsChannel.Refresh()
- }
- }(rand.Int())
-}