summaryrefslogtreecommitdiffhomepage
path: root/util/pathutil/pathutil.go
diff options
context:
space:
mode:
Diffstat (limited to 'util/pathutil/pathutil.go')
-rw-r--r--util/pathutil/pathutil.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/util/pathutil/pathutil.go b/util/pathutil/pathutil.go
new file mode 100644
index 000000000..6b3728d9f
--- /dev/null
+++ b/util/pathutil/pathutil.go
@@ -0,0 +1,28 @@
+// Copyright (c) Tailscale Inc & AUTHORS
+// SPDX-License-Identifier: BSD-3-Clause
+
+// package pathutil provides utility functions for working with URL paths.
+package pathutil
+
+import (
+ "path"
+ "strings"
+)
+
+const (
+ sepString = "/"
+ sepStringAndDot = "/."
+ sep = '/'
+)
+
+func Split(p string) []string {
+ return strings.Split(strings.Trim(path.Clean(p), sepStringAndDot), sepString)
+}
+
+func Join(parts ...string) string {
+ return sepString + strings.Join(parts, sepString)
+}
+
+func IsRoot(path string) bool {
+ return len(path) == 0 || len(path) == 1 && path[0] == sep
+}