From e649453d5fceced7208ef36aab7fb06989c6be0b Mon Sep 17 00:00:00 2001 From: Alan Knowles Date: Sun, 9 May 2010 08:51:45 +0800 Subject: [PATCH] copy resources correctly Add support for recursive overwrite --- File.js | 55 +++++++++++++++++++++++++++++++++++++++++-------------- docs.js | 9 +++------ 2 files changed, 44 insertions(+), 20 deletions(-) diff --git a/File.js b/File.js index 29cff4a..a704c9e 100755 --- a/File.js +++ b/File.js @@ -88,6 +88,7 @@ var File = { var can = f.resolve_relative_path(''); return can.get_path(); }, + /** * write * @arg path {String} File to write to @@ -126,25 +127,51 @@ var File = { var f = Gio.file_new_for_path(String(path)); return f['delete'](); }, - // copy files recursively from fromDir, silently ignore them if they already exist in toDir - silentRecursiveCopy : function (fromDir, toDir) { + /** + * silentRecursiveCopy + * copy files recursively from fromDir, silently ignore them if they already exist in toDir + * unless you select overwrite.. + * @arg {String} src source path + * @arg {String} dest destination path + * @arg {Gio.FileCopyFlags} options (optional) - use Gio.FileCopyFlags.OVERWRITE to + * otherwise they will not be copied + * + */ + silentRecursiveCopy : function (fromDir, toDir, opts) { + var filesToCopy = File.recursiveListing(fromDir); var srcPath, destPath, src, dest; - + if (typeof(opts) =='undefined') { + opts = Gio.FileCopyFlags.NONE; + } + for (var index in filesToCopy) { - srcPath = File.join(String(fromDir), filesToCopy[index]); - destPath = File.join(String(toDir), filesToCopy[index]); - - if (File.isFile(srcPath) && !File.isFile(destPath)) { - File.copyFile(srcPath, destPath); - } - else if (File.isDirectory(srcPath) && !File.isDirectory(destPath)) { - File.mkdir(destPath); - } + srcPath = File.join(String(fromDir), filesToCopy[index]); + destPath = File.join(String(toDir), filesToCopy[index]); + if (File.isDirectory(srcPath) && !File.isDirectory(destPath)) { + File.mkdir(destPath); + continue; + } + // source is not file..?!?!? + if (!File.isFile(srcPath)) { + continue; + } + if (File.isFile(destPath) && opts == Gio.FileCopyFlags.NONE) { + // do not overwrite.. - if file exists and we are not flaged to overwrite. + continue; + } + + File.copyFile(srcPath, destPath, opts); + } }, - + + /** + * mkdir + * make a directory.. + * @arg {String} dstPath directory to make + */ mkdir : function (destPath) { var dest = Gio.file_new_for_path(String(destPath)); return dest.make_directory(null, null); @@ -158,7 +185,7 @@ var File = { */ copyFile : function (srcPath, destPath, opts) { if (typeof(opts) =='undefined') { - opts = Gio.FileCopyFlags.NONE + opts = Gio.FileCopyFlags.NONE; } var dest = Gio.file_new_for_path(String(destPath)); var src = Gio.file_new_for_path(String(srcPath)); diff --git a/docs.js b/docs.js index 1d57200..b23fc2c 100644 --- a/docs.js +++ b/docs.js @@ -57,7 +57,7 @@ ns_list.forEach(function(ns_name) var ns = Introspect.ns(ns_name); if (File.exists(ns.gir_file)) { - File.copyFile(ns.gir_file, outputdir + '/'+ ns.gir_filename,Gio.FileCopyFlags.OVERWRITE); + File.copyFile(ns.gir_file, outputdir + '/'+ ns.gir_filename, Gio.FileCopyFlags.OVERWRITE); } @@ -126,10 +126,7 @@ for (var i in Introspect.references) { Gio.simple_write(html_file_path, html); } -console.log("writing index"); + var ix_template = new Template(__script_path__ + '/docs/index.html'); Gio.simple_write(outputdir + '/index.html', ix_template.process(ns_idx)); -console.log("coping images/css"); -File.silentRecursiveCopy(__script_path__ + '/docs/resources/', outputdir); - -console.log("done"); +File.silentRecursiveCopy(__script_path__ + '/docs/resources/', outputdir, Gio.FileCopyFlags.OVERWRITE); -- 2.39.2