added scripts/path.awk

This commit is contained in:
Abdullah Islam 2023-06-20 15:41:21 +06:00
parent 080f608c95
commit a8f50d42cc
1 changed files with 51 additions and 0 deletions

51
scripts/path.awk Normal file
View File

@ -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
}