Workaroud delete folder on Windows. Fix #1738

This commit is contained in:
Andrey Nering 2016-02-06 17:25:16 -02:00
parent 10fbb1aa2f
commit d37cf09ccd

View File

@ -7,6 +7,7 @@ package models
import ( import (
"fmt" "fmt"
"os" "os"
"os/exec"
"strings" "strings"
"time" "time"
@ -14,6 +15,7 @@ import (
"github.com/gogits/gogs/modules/base" "github.com/gogits/gogs/modules/base"
"github.com/gogits/gogs/modules/log" "github.com/gogits/gogs/modules/log"
"github.com/gogits/gogs/modules/setting"
) )
type NoticeType int type NoticeType int
@ -53,7 +55,14 @@ func CreateRepositoryNotice(desc string) error {
// RemoveAllWithNotice removes all directories in given path and // RemoveAllWithNotice removes all directories in given path and
// creates a system notice when error occurs. // creates a system notice when error occurs.
func RemoveAllWithNotice(title, path string) { func RemoveAllWithNotice(title, path string) {
if err := os.RemoveAll(path); err != nil { var err error
if setting.IsWindows {
err = exec.Command("cmd", "/C", "rmdir", "/S", "/Q", path).Run()
} else {
err = os.RemoveAll(path)
}
if err != nil {
desc := fmt.Sprintf("%s [%s]: %v", title, path, err) desc := fmt.Sprintf("%s [%s]: %v", title, path, err)
log.Warn(desc) log.Warn(desc)
if err = CreateRepositoryNotice(desc); err != nil { if err = CreateRepositoryNotice(desc); err != nil {