|
|
|
@ -7,6 +7,7 @@ package models
|
|
|
|
|
import ( |
|
|
|
|
"fmt" |
|
|
|
|
"os" |
|
|
|
|
"os/exec" |
|
|
|
|
"strings" |
|
|
|
|
"time" |
|
|
|
|
|
|
|
|
@ -14,6 +15,7 @@ import (
|
|
|
|
|
|
|
|
|
|
"github.com/gogits/gogs/modules/base" |
|
|
|
|
"github.com/gogits/gogs/modules/log" |
|
|
|
|
"github.com/gogits/gogs/modules/setting" |
|
|
|
|
) |
|
|
|
|
|
|
|
|
|
type NoticeType int |
|
|
|
@ -53,7 +55,14 @@ func CreateRepositoryNotice(desc string) error {
|
|
|
|
|
// RemoveAllWithNotice removes all directories in given path and
|
|
|
|
|
// creates a system notice when error occurs.
|
|
|
|
|
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) |
|
|
|
|
log.Warn(desc) |
|
|
|
|
if err = CreateRepositoryNotice(desc); err != nil { |
|
|
|
|