added scripts/path.awk
This commit is contained in:
parent
080f608c95
commit
a8f50d42cc
|
@ -0,0 +1,51 @@
|
||||||
|
function getDirname(path, pathComponents, dirname) {
|
||||||
|
dirname = ""
|
||||||
|
pathComponents[1] = ""
|
||||||
|
|
||||||
|
sub(/\/+$/, "", path)
|
||||||
|
split(path, pathComponents, "/")
|
||||||
|
|
||||||
|
if (length(pathComponents) < 2) return "."
|
||||||
|
|
||||||
|
for (i in pathComponents)
|
||||||
|
dirname = dirname pathComponents[i] "/"
|
||||||
|
|
||||||
|
return dirname
|
||||||
|
}
|
||||||
|
|
||||||
|
function resolvePath(path, resolvedPath, pathComponents) {
|
||||||
|
pathComponents[1] = ""
|
||||||
|
resolvedPath = ""
|
||||||
|
|
||||||
|
sub(/\/+$/, "", path)
|
||||||
|
split(path, pathComponents, "/")
|
||||||
|
|
||||||
|
for (i in pathComponents)
|
||||||
|
if (pathComponents[i] == "." || pathComponents[i+1] == ".." || pathComponents[i] == ""))
|
||||||
|
continue
|
||||||
|
else
|
||||||
|
resolvedPath = resolvedPath pathComponents[i] "/"
|
||||||
|
|
||||||
|
return resolvedPath
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRelativePath(base, path, resolvedPath, baseComponents, pathComponents, commonPrefix) {
|
||||||
|
path = resolvePath(path)
|
||||||
|
base = resolvePath(base)
|
||||||
|
pathComponents[1] = ""
|
||||||
|
baseComponents[1] = ""
|
||||||
|
isCommonPrefixUnfinished = 1
|
||||||
|
|
||||||
|
sub(/\/+$/, "", base)
|
||||||
|
sub(/\/+$/, "", path)
|
||||||
|
|
||||||
|
for (i in pathComponents)
|
||||||
|
if (baseComponents[i] == pathComponents[i] && isCommonPrefixUnfinished)
|
||||||
|
resolvedPath = resolvedPath "../"
|
||||||
|
else {
|
||||||
|
isCommonPrefixUnfinished = 0
|
||||||
|
resolvedPath = resolvedPath pathComponents[i] "/"
|
||||||
|
}
|
||||||
|
|
||||||
|
return resolvedPath
|
||||||
|
}
|
Loading…
Reference in New Issue