summaryrefslogtreecommitdiff
path: root/Data/Libraries/Penlight/examples/testclone.lua
diff options
context:
space:
mode:
Diffstat (limited to 'Data/Libraries/Penlight/examples/testclone.lua')
-rw-r--r--Data/Libraries/Penlight/examples/testclone.lua40
1 files changed, 40 insertions, 0 deletions
diff --git a/Data/Libraries/Penlight/examples/testclone.lua b/Data/Libraries/Penlight/examples/testclone.lua
new file mode 100644
index 0000000..b0d948f
--- /dev/null
+++ b/Data/Libraries/Penlight/examples/testclone.lua
@@ -0,0 +1,40 @@
+--cloning a directory tree.
+local lfs = require 'lfs'
+local path = require 'pl.path'
+local dir = require 'pl.dir'
+
+local p1 = [[examples]]
+local p2 = [[copy/of/examples]]
+
+if not path.isfile 'examples/testclone.lua' then
+ return print 'please run this in the penlight folder (below examples)'
+end
+
+-- make a copy of the examples folder
+dir.clonetree(p1,p2,dir.copyfile)
+
+assert(path.isdir 'copy')
+
+print '---'
+local t = os.time()
+print(lfs.touch('examples/testclone.lua',t,t+10))
+
+-- this should only update this file
+dir.clonetree(p1,p2,
+function(f1,f2)
+ local t1 = path.getmtime(f1)
+ local t2 = path.getmtime(f2)
+ --print(f1,t1,f2,t2)
+ if t1 > t2 then
+ dir.copyfile(f1,f2)
+ print(f1,f2,t1,t2)
+ end
+ return true
+end)
+
+-- and get rid of the whole copy directory, with subdirs
+dir.rmtree 'copy'
+
+assert(not path.exists 'copy')
+
+