fix disqus_url, remove server, fix fs.copy
This commit is contained in:
		
							parent
							
								
									cb8e7c09d7
								
							
						
					
					
						commit
						f023315cfc
					
				
							
								
								
									
										12
									
								
								desirae.js
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								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) {
 | 
			
		||||
 | 
			
		||||
@ -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'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										168
									
								
								server.js
									
									
									
									
									
								
							
							
						
						
									
										168
									
								
								server.js
									
									
									
									
									
								
							@ -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);
 | 
			
		||||
});
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user