summaryrefslogtreecommitdiffstats
path: root/modules/util
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2020-11-28 02:42:08 +0000
committerGitHub <noreply@github.com>2020-11-27 21:42:08 -0500
commit742e21aeba5c02935269a2a3681f4486019ce542 (patch)
treee1572ab13c33dec1238321170a90d42851ae4ca2 /modules/util
parent5b75f17043bc2a6d0e753ae5c9c6759adad5aaac (diff)
downloadgitea-742e21aeba5c02935269a2a3681f4486019ce542.tar.gz
gitea-742e21aeba5c02935269a2a3681f4486019ce542.zip
Handle and propagate errors when checking if paths are Dirs, Files or Exist (#13186)
* Ensure errors from IsDir propagate * Handle errors when checking IsFile * Handle and propagate errors from IsExist * Update modules/templates/static.go * Update modules/templates/static.go * Return after ctx.ServerError * Apply suggestions from code review * Fix tests The previous merge managed to break repo_form.go Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io> Co-authored-by: Lauris BH <lauris@nix.lv>
Diffstat (limited to 'modules/util')
-rw-r--r--modules/util/path.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/modules/util/path.go b/modules/util/path.go
index 2b198eb6dc..fbcefb83b6 100644
--- a/modules/util/path.go
+++ b/modules/util/path.go
@@ -31,3 +31,42 @@ func GetDirectorySize(path string) (int64, error) {
})
return size, err
}
+
+// IsDir returns true if given path is a directory,
+// or returns false when it's a file or does not exist.
+func IsDir(dir string) (bool, error) {
+ f, err := os.Stat(dir)
+ if err == nil {
+ return f.IsDir(), nil
+ }
+ if os.IsNotExist(err) {
+ return false, nil
+ }
+ return false, err
+}
+
+// IsFile returns true if given path is a file,
+// or returns false when it's a directory or does not exist.
+func IsFile(filePath string) (bool, error) {
+ f, err := os.Stat(filePath)
+ if err == nil {
+ return !f.IsDir(), nil
+ }
+ if os.IsNotExist(err) {
+ return false, nil
+ }
+ return false, err
+}
+
+// IsExist checks whether a file or directory exists.
+// It returns false when the file or directory does not exist.
+func IsExist(path string) (bool, error) {
+ _, err := os.Stat(path)
+ if err == nil || os.IsExist(err) {
+ return true, nil
+ }
+ if os.IsNotExist(err) {
+ return false, nil
+ }
+ return false, err
+}