summaryrefslogtreecommitdiff
path: root/lib/gitano/util.lua
diff options
context:
space:
mode:
authorDaniel Silverstone <dsilvers@digital-scurf.org>2012-05-03 09:34:21 +0100
committerDaniel Silverstone <dsilvers@digital-scurf.org>2012-05-03 09:34:21 +0100
commit69b8ffad453acf7257845251416b9ffbb9050798 (patch)
tree3dfac56599dd3d10133163ca527ee7f7495a3c95 /lib/gitano/util.lua
parent092afd53e35e9fb9077a6d7e377515fd30069c7f (diff)
downloadgitano-69b8ffad453acf7257845251416b9ffbb9050798.tar.gz
UTIL: Add a bunch of useful util functions for path manipulation
Diffstat (limited to 'lib/gitano/util.lua')
-rw-r--r--lib/gitano/util.lua44
1 files changed, 44 insertions, 0 deletions
diff --git a/lib/gitano/util.lua b/lib/gitano/util.lua
index b87e6ab..ac54e1c 100644
--- a/lib/gitano/util.lua
+++ b/lib/gitano/util.lua
@@ -89,7 +89,51 @@ local function _parse_cmdline(cmdline)
return r, warnings
end
+local function patesc(s)
+ return ((s:gsub("[%%%*%-%?%.%+%[%]%(%)]", "%%%0"):gsub("%z", "%%z")))
+end
+
+local function mkdir_p(dirname)
+ -- TODO: Implement mkdir_p
+end
+
+local function path_components(path)
+ local ret = {}
+ for elem in path:gmatch("([^/]*)/*") do
+ ret[#ret+1] = elem
+ end
+ ret[#ret] = nil
+ return ret
+end
+
+local function dirname(path)
+ local t = path_components(path)
+ t[#t] = nil
+ return table.concat(t, "/")
+end
+
+local function basename(path, ext)
+ local t = path_components(path)
+ local ret = t[#t]
+ if ext then
+ local pat = patesc(ext) .. "$"
+ if ret:find(pat) then
+ ret = ret:sub(1, -(#ext+1))
+ end
+ end
+ return ret
+end
+
return {
parse_cmdline = _parse_cmdline,
+
+ patesc = patesc,
+
+ path_components = path_components,
+ dirname = dirname,
+ basename = basename,
+
+ mkdir_p = mkdir_p,
+
deep_copy = _deep_copy
}