Skip to content

Instantly share code, notes, and snippets.

@zxqx
Created July 8, 2015 19:54
Show Gist options
  • Select an option

  • Save zxqx/0396a97ee87d4bae1b87 to your computer and use it in GitHub Desktop.

Select an option

Save zxqx/0396a97ee87d4bae1b87 to your computer and use it in GitHub Desktop.

Revisions

  1. zxqx created this gist Jul 8, 2015.
    35 changes: 35 additions & 0 deletions index.js
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,35 @@
    var path = require('path');
    var Promise = require('bluebird');
    var uniq = require('uniq');
    var fs = Promise.promisifyAll(require('fs'));

    var SERVER_APP_PATH = 'src/server/app/publish';
    var PREAMBLE_PATH = path.join(SERVER_APP_PATH, 'preamble.js');
    var CAPSULE_BUILD_PATH = path.join(SERVER_APP_PATH, 'capsule.build.js');
    var SAMPLE_CAPSULE_PATH = path.join(SERVER_APP_PATH, 'sample-capsule.json');

    fs.readFileAsync(PREAMBLE_PATH)
    .then(function(preamble) {
    return fs.writeFileAsync(CAPSULE_BUILD_PATH, preamble);
    })
    .then(function() {
    return fs.readFileAsync(SAMPLE_CAPSULE_PATH);
    })
    .then(JSON.parse)
    .then(function(capsule) {
    var widgets = uniq(capsule.widgets.map(function(w) {
    return w.referenceId;
    }));

    var importStatements = '';
    widgets.forEach(function(w) {
    importStatements += 'import \'' + w + '\'\n';
    });

    return importStatements;
    })
    .then(function(importStatements) {
    return fs.appendFileAsync(CAPSULE_BUILD_PATH, importStatements, function(err) {
    console.log('done!');
    });
    });