diff --git a/desirae.js b/desirae.js index a7f3a3a..38a6470 100644 --- a/desirae.js +++ b/desirae.js @@ -892,6 +892,8 @@ } else { view.entity.disqus_url = view.entity.production_url; } + console.log('entity', view.entity); + return view; }); @@ -919,10 +921,11 @@ , view ; - entity.url = env.base_url + path.join(env.base_path, entity.yml.permalink); - entity.canonical_url = env.base_url + path.join(env.base_path, entity.yml.permalink); - entity.production_url = desi.site.base_url + path.join(desi.site.base_path, entity.yml.permalink); - entity.relative_url = path.join(env.base_path, entity.yml.permalink); + // TODO still have some index.html mess to work out... + entity.url = env.base_url + path.join(env.base_path, entity.yml.permalink).replace(/\/index.html$/, '/'); + entity.canonical_url = env.base_url + path.join(env.base_path, entity.yml.permalink).replace(/\/index.html$/, '/'); + entity.production_url = desi.site.base_url + path.join(desi.site.base_path, entity.yml.permalink).replace(/\/index.html$/, '/'); + entity.relative_url = path.join(env.base_path, entity.yml.permalink).replace(/\/index.html$/, '/'); // TODO nested names? navigation.forEach(function (nav) { @@ -950,6 +953,7 @@ desi.transforms.forEach(function (fn) { view = fn(view); + console.log('view.entity', view.entity); }); return renderLayers(desi, env, view, entity).then(function (html) { diff --git a/lib/fsapi.js b/lib/fsapi.js index a3bd996..a08eba1 100644 --- a/lib/fsapi.js +++ b/lib/fsapi.js @@ -237,7 +237,11 @@ function copyfs(blogdir, files) { }).then(function () { // TODO allow delete? return forEachAsync(sources, function (source) { - return fsExtra.copyAsync(safeResolve(blogdir, source), safeResolve(blogdir, files[source])).catch(function (e) { + return fsExtra.copyAsync( + safeResolve(blogdir, source) + , safeResolve(blogdir, files[source]) + , { replace: true } + ).catch(function (e) { results.errors.push({ type: 'file' diff --git a/server.js b/server.js deleted file mode 100644 index 451a93f..0000000 --- a/server.js +++ /dev/null @@ -1,168 +0,0 @@ -'use strict'; - -require('require-yaml'); - -var connect = require('connect') - //, PromiseA = require('bluebird').Promise - , query = require('connect-query') - , bodyParser = require('body-parser') - , serveStatic = require('serve-static') - , send = require('connect-send-json') - - , app = connect() - , fsapi = require('./lib/fsapi') - , walk = require('./lib/fsapi').walk - , getfs = require('./lib/fsapi').getfs - , putfs = require('./lib/fsapi').putfs - - , blogdir = process.argv[2] || 'blog' - , port = process.argv[3] || '65080' - - , path = require('path') - //, config = require(path.join('./', blogdir, 'config.yml')) - ; - - -app - .use(send.json()) - .use(query()) - .use(bodyParser.json({ limit: 10 * 1024 * 1024 })) // 10mb - .use(require('compression')()) - .use('/api/fs/walk', function (req, res, next) { - if (!(/^GET$/i.test(req.method) || /^GET$/i.test(req.query._method))) { - next(); - return; - } - - var opts = {} - , dirnames = req.query.dir && [req.query.dir] || (req.query.dirs && req.query.dirs.split(/,/g)) || req.body.dirs - ; - - if (!dirnames || !dirnames.length) { - res.json({ error: "please specify GET w/ req.query.dir or POST w/ _method=GET&dirs=path/to/thing,..." }); - return; - } - - if (!dirnames.every(function (dirname) { - return 'string' === typeof dirname; - })) { - res.json({ error: "malformed request: " + JSON.stringify(dirnames) }); - return; - } - - /* - if (req.query.excludes) { - opts.excludes = req.query.excludes.split(','); - } - */ - - if (req.query.extensions) { - opts.extensions = req.query.extensions.split(/,/g); - } - - if ('true' === req.query.dotfiles) { - opts.dotfiles = true; - } - if ('false' === req.query.sha1sum) { - opts.sha1sum = false; - } - if ('true' === req.query.contents) { - opts.contents = true; - } - - // TODO opts.contents? - walk.walkDirs(blogdir, dirnames, opts).then(function (stats) { - if (!req.body.dirs && !req.query.dirs) { - res.json(stats[dirnames[0]]); - } else { - res.json(stats); - } - }); - }) - .use('/api/fs/files', function (req, res, next) { - if (!(/^GET$/i.test(req.method) || /^GET$/i.test(req.query._method))) { - next(); - return; - } - - var filepaths = req.query.path && [req.query.path] || (req.query.paths && req.query.paths.split(/,/g)) || req.body.paths - ; - - if (!filepaths || !filepaths.length) { - res.json({ error: "please specify GET w/ req.query.path or POST _method=GET&paths=path/to/thing,..." }); - return; - } - - return getfs(blogdir, filepaths).then(function (files) { - if (!req.body.paths && !req.query.paths) { - res.json(files[0]); - } else { - res.send(files); - } - }); - }) - .use('/api/fs/files', function (req, res, next) { - if (!(/^POST|PUT$/i.test(req.method) || /^POST|PUT$/i.test(req.query._method))) { - next(); - return; - } - - var opts = {} - , files = req.body.files - ; - - if (!files || !files.length) { - res.json({ error: "please specify POST w/ req.body.files" }); - return; - } - - return putfs(blogdir, files, opts).then(function (results) { - res.json(results); - }); - }) - .use('/api/fs/copy', function (req, res, next) { - if (!(/^POST|PUT$/i.test(req.method) || /^POST|PUT$/i.test(req.query._method))) { - next(); - return; - } - - var opts = {} - , files = req.body.files - ; - - if ('object' !== typeof files || !Object.keys(files).length) { - res.json({ error: "please specify POST w/ req.body.files" }); - return; - } - - return fsapi.copyfs(blogdir, files, opts).then(function (results) { - res.json(results); - }); - }) - - .use('/api/fs', function (req, res) { - var pathname = path.resolve(blogdir) - ; - - res.json({ - path: pathname - , name: path.basename(pathname) - , relativePath: path.dirname(pathname) - //, cwd: path.resolve() - //, patharg: blogdir - }); - return; - }) - .use('/api/fs/static', serveStatic(blogdir)) - - .use(serveStatic('./')) - .use('/compiled_dev', serveStatic(path.join(blogdir, '/compiled_dev'))) - // TODO - //.use(serveStatic(tmpdir)) - ; - -module.exports = app; - -require('http').createServer().on('request', app).listen(port, function () { - console.log('listening ' + port); -});