From 08f7fded3c097685af9370283fc8565b80fb0615 Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Wed, 29 Mar 2017 10:05:23 +0800 Subject: [PATCH] refactor: remove workaround after the golang 1.7 release. (#1349) * refactor: remove workaround after the golang 1.7 release. * remove unused import. Signed-off-by: Bo-Yi Wu * refactor: Add remove function. * refactor: rename * refactor: update build flag --- models/admin.go | 23 ++++------------------- modules/util/remove.go | 14 ++++++++++++++ modules/util/remove_windows.go | 16 ++++++++++++++++ 3 files changed, 34 insertions(+), 19 deletions(-) create mode 100644 modules/util/remove.go create mode 100644 modules/util/remove_windows.go diff --git a/models/admin.go b/models/admin.go index e573c9ba7..f8645202d 100644 --- a/models/admin.go +++ b/models/admin.go @@ -6,16 +6,13 @@ package models import ( "fmt" - "os" - "os/exec" - "strings" "time" + "code.gitea.io/gitea/modules/log" + "code.gitea.io/gitea/modules/util" + "github.com/Unknwon/com" "github.com/go-xorm/xorm" - - "code.gitea.io/gitea/modules/log" - "code.gitea.io/gitea/modules/setting" ) //NoticeType describes the notice type @@ -79,19 +76,7 @@ func RemoveAllWithNotice(title, path string) { } func removeAllWithNotice(e Engine, title, path string) { - var err error - // workaround for Go not being able to remove read-only files/folders: https://github.com/golang/go/issues/9606 - // this bug should be fixed on Go 1.7, so the workaround should be removed when Gogs don't support Go 1.6 anymore: - // https://github.com/golang/go/commit/2ffb3e5d905b5622204d199128dec06cefd57790 - if setting.IsWindows { - // converting "/" to "\" in path on Windows - path = strings.Replace(path, "/", "\\", -1) - err = exec.Command("cmd", "/C", "rmdir", "/S", "/Q", path).Run() - } else { - err = os.RemoveAll(path) - } - - if err != nil { + if err := util.RemoveAll(path); err != nil { desc := fmt.Sprintf("%s [%s]: %v", title, path, err) log.Warn(desc) if err = createNotice(e, NoticeRepository, desc); err != nil { diff --git a/modules/util/remove.go b/modules/util/remove.go new file mode 100644 index 000000000..8bca14991 --- /dev/null +++ b/modules/util/remove.go @@ -0,0 +1,14 @@ +// +build !windows,!go1.7 go1.7 + +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package util + +import "os" + +// RemoveAll files from Go version 1.7 onward +func RemoveAll(path string) error { + return os.RemoveAll(path) +} diff --git a/modules/util/remove_windows.go b/modules/util/remove_windows.go new file mode 100644 index 000000000..f5891a589 --- /dev/null +++ b/modules/util/remove_windows.go @@ -0,0 +1,16 @@ +// +build windows,!go1.7 + +// Copyright 2017 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package util + +// RemoveAll files from path on windows +// workaround for Go not being able to remove read-only files/folders: https://github.com/golang/go/issues/9606 +// this bug should be fixed on Go 1.7, so the workaround should be removed when Gitea don't support Go 1.6 anymore: +// https://github.com/golang/go/commit/2ffb3e5d905b5622204d199128dec06cefd57790 +func RemoveAll(path string) error { + path = strings.Replace(path, "/", "\\", -1) + return exec.Command("cmd", "/C", "rmdir", "/S", "/Q", path).Run() +}