mirror of https://github.com/databricks/cli.git
28 lines
499 B
Go
28 lines
499 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
|
||
|
}
|