mirror of https://github.com/databricks/cli.git
27 lines
498 B
Go
27 lines
498 B
Go
package filer
|
|
|
|
import (
|
|
"fmt"
|
|
"path/filepath"
|
|
"strings"
|
|
)
|
|
|
|
type localRootPath struct {
|
|
rootPath string
|
|
}
|
|
|
|
func NewLocalRootPath(root string) localRootPath {
|
|
if root == "" {
|
|
return localRootPath{""}
|
|
}
|
|
return localRootPath{filepath.Clean(root)}
|
|
}
|
|
|
|
func (rp *localRootPath) Join(name string) (string, error) {
|
|
absPath := filepath.Join(rp.rootPath, name)
|
|
if !strings.HasPrefix(absPath, rp.rootPath) {
|
|
return "", fmt.Errorf("relative path escapes root: %s", name)
|
|
}
|
|
return absPath, nil
|
|
}
|