code: function compileThemeEntity(entity, i, arr) {
        var view
          ;
  
        console.info("[themes] compiling " + (i + 1) + "/" + arr.length + " " + entity.path);
        // TODO generate per-page for a more full 'view' object?
        view = {  entity: { collectionType: 'themes' }, url: path.join(env.base_path, entity.path) };
        // TODO this is more 'preprocessing' than 'rendering', perse
        return Desi.render(entity.ext, entity.body || entity.contents, view).then(function (css) {
          compiled.push({ contents: css, path: entity.path });
          // TODO read theme config
          if (/stylesheets.*\.css/.test(entity.path) && (!/google/.test(entity.path) || /obsid/.test(entity.path))) {
            desi.styles.push(Mustache.render(desi.partials.stylesheet_link, view));
          }
        });
      }
docs: /*
  function compileScriptEntity(entity, i, arr) {
  }