|
|
@ -10,7 +10,7 @@ var safeResolve = require("../utils").safeResolve; |
|
|
|
var sha1sum = function (str) { |
|
|
|
return require("secret-utils").hashsum("sha1", str); |
|
|
|
}; |
|
|
|
var fsExtra = PromiseA.promisifyAll(require("fs.extra")); |
|
|
|
var copyAll = require("util").promisify(require("fs.extra").copy); |
|
|
|
|
|
|
|
//, tmpdir = require('os').tmpdir()
|
|
|
|
function strip(prefix, pathname) { |
|
|
@ -48,7 +48,7 @@ function walkDir(parent, sub, opts) { |
|
|
|
return true; |
|
|
|
} |
|
|
|
|
|
|
|
return new PromiseA(function (resolve) { |
|
|
|
return new Promise(function (resolve) { |
|
|
|
var walker = walk.walk(trueRoot); |
|
|
|
walker.on("nodeError", function (filepath, stat, next) { |
|
|
|
//stats.forEach(function (stat) {
|
|
|
@ -76,7 +76,7 @@ function walkDir(parent, sub, opts) { |
|
|
|
var file; |
|
|
|
|
|
|
|
if (!filter(stat.name)) { |
|
|
|
return PromiseA.resolve(); |
|
|
|
return Promise.resolve(); |
|
|
|
} |
|
|
|
|
|
|
|
file = { |
|
|
@ -93,12 +93,12 @@ function walkDir(parent, sub, opts) { |
|
|
|
files.push(file); |
|
|
|
|
|
|
|
if (!(opts.sha1sum || opts.content)) { |
|
|
|
return PromiseA.resolve(); |
|
|
|
return Promise.resolve(); |
|
|
|
} |
|
|
|
|
|
|
|
// TODO stream sha1 (for assets)
|
|
|
|
return fs |
|
|
|
.readFileAsync(path.join(root, stat.name), null) |
|
|
|
.readFile(path.join(root, stat.name), null) |
|
|
|
.then(function (buffer) { |
|
|
|
var contents = buffer.toString("utf8"); |
|
|
|
file.sha1 = sha1sum(contents); |
|
|
@ -144,7 +144,7 @@ function getfs(blogdir, filepaths) { |
|
|
|
return forEachAsync(filepaths, function (filepath) { |
|
|
|
var pathname = safeResolve(blogdir, filepath); |
|
|
|
return fs |
|
|
|
.lstatAsync(pathname) |
|
|
|
.lstat(pathname) |
|
|
|
.then(function (stat) { |
|
|
|
return fs.readFile(pathname, null).then(function (buffer) { |
|
|
|
files.push({ |
|
|
@ -208,7 +208,7 @@ function copyfs(blogdir, files) { |
|
|
|
//, filename = path.basename(dest)
|
|
|
|
dirpaths[pathname] = true; |
|
|
|
|
|
|
|
return PromiseA.resolve(); |
|
|
|
return Promise.resolve(); |
|
|
|
}) |
|
|
|
.then(function () { |
|
|
|
// TODO is it better to do this lazy-like or as a batch?
|
|
|
@ -223,8 +223,7 @@ function copyfs(blogdir, files) { |
|
|
|
.then(function () { |
|
|
|
// TODO allow delete?
|
|
|
|
return forEachAsync(sources, function (source) { |
|
|
|
return fsExtra |
|
|
|
.copyAsync( |
|
|
|
return copyAll( |
|
|
|
safeResolve(blogdir, source), |
|
|
|
safeResolve(blogdir, files[source]), |
|
|
|
{ replace: true } |
|
|
@ -276,7 +275,7 @@ function putfs(blogdir, files, options) { |
|
|
|
|
|
|
|
dirpaths[pathname] = true; |
|
|
|
|
|
|
|
return PromiseA.resolve(); |
|
|
|
return Promise.resolve(); |
|
|
|
}) |
|
|
|
.then(function () { |
|
|
|
// TODO is it better to do this lazy-like or as a batch?
|
|
|
@ -304,13 +303,9 @@ function putfs(blogdir, files, options) { |
|
|
|
return forEachAsync(files, function (file) { |
|
|
|
// TODO use lastModifiedDate as per client request?
|
|
|
|
// TODO compare sha1 sums for integrity
|
|
|
|
// NOTE existsAsync is backwards
|
|
|
|
return fs |
|
|
|
.existsAsync(file.realPath) |
|
|
|
.access(file.realPath) |
|
|
|
.then(function () { |
|
|
|
return fs.writeFile(file.realPath, file.contents, "utf8"); |
|
|
|
}) |
|
|
|
.catch(function (/*exists*/) { |
|
|
|
if (file.delete || !file.contents) { |
|
|
|
return fs.unlink(file.realPath); |
|
|
|
} |
|
|
@ -321,6 +316,9 @@ function putfs(blogdir, files, options) { |
|
|
|
|
|
|
|
return fs.writeFile(file.realPath, file.contents, "utf8"); |
|
|
|
}) |
|
|
|
.catch(function () { |
|
|
|
return fs.writeFile(file.realPath, file.contents, "utf8"); |
|
|
|
}) |
|
|
|
.catch(function (e) { |
|
|
|
putfsResults.errors.push({ |
|
|
|
type: "file", |
|
|
|