summaryrefslogtreecommitdiff
path: root/app.js
diff options
context:
space:
mode:
authorDave Cole <dave@developmentseed.org>2013-04-09 18:26:13 -0400
committerDave Cole <dave@developmentseed.org>2013-04-09 18:26:13 -0400
commit809a9b5204804ef36bae56f04eb640ab342fd381 (patch)
treea9a20765f2c84a1027a01a6713395bfb54ed6a8e /app.js
parente28985afe274e46086f73d20ac6cebc7710204d4 (diff)
Reorganize app to use external scripts. Make main file executable. Move sample code to readme. Refs #40.
Diffstat (limited to 'app.js')
-rw-r--r--app.js114
1 files changed, 0 insertions, 114 deletions
diff --git a/app.js b/app.js
deleted file mode 100644
index fdfcd09..0000000
--- a/app.js
+++ /dev/null
@@ -1,114 +0,0 @@
-var fs = require('fs');
-var express = require('express');
-var app = express();
-var queue = require('queue-async');
-var exec = require('child_process').exec;
-var email = require('emailjs/email');
-var config = require('./config.json');
-var mailer = email.server.connect(config.email);
-
-app.use(express.bodyParser());
-
-// Receive webhook post
-app.post('/hooks/jekyll', function(req, res){
- var data = JSON.parse(req.body.payload);
- var q = queue(1);
- var cmd = '';
-
- // Close connection
- res.send(202);
-
- // Process webhook data
- data.repo = data.repository.name;
- data.branch = data.ref.split('/')[2];
- data.owner = data.repository.owner.name;
- data.url = 'git@' + config.gh_server + ':' + data.owner + '/' + data.repo + '.git';
- data.base = config.temp_directory + '/' + data.owner + '/' + data.repo + '/' + data.branch;
- data.source = data.base + '/' + 'code';
- data.dest = data.base + '/' + 'site';
- data.baseurl = '/' + data.repo;
- data.site = config.site_directory + '/' + data.repo;
-
- // End early if not master branch
- if (data.branch !== config.branch) {
- console.log('Not ' + config.branch + ' branch.');
- return;
- }
-
- // If repo doesn't exist locally, clone it
- if (!fs.existsSync(data.source)) {
- // Git clone repo from GitHub
- cmd = 'git clone ' + data.url + ' ' + data.source;
- q.defer(run, data, cmd);
- }
-
- // Git checkout appropriate branch, pull latest code
- cmd = 'cd ' + data.source +
- ' && git checkout ' + data.branch +
- ' && git pull origin ' + data.branch +
- ' && cd -';
- q.defer(run, data, cmd);
-
- // Run jekyll
- cmd = 'cd ' + data.source +
- ' && jekyll ' + data.source + ' ' + data.dest +
- ' --no-server --no-auto --base-url="' + data.baseurl + '"' +
- ' && cd -';
- q.defer(run, data, cmd);
-
- // Sync files (remove old files, copy new ones)
- cmd = 'rm -rf ' + data.site + ' && mv ' + data.dest + ' ' + data.site;
- q.defer(run, data, cmd);
-
- // Done processing
- q.await(function() {
- // Log success message
- console.log(
- 'Successfully rendered: ' + data.owner + '/' + data.repo +
- '@' + data.after + ' to ' + data.site
- );
-
- // Send success email
- if (config.email && data.pusher.email) {
- var message = {
- text: 'Successfully rendered: ' + data.owner + '/' + data.repo +
- '@' + data.after + ' to ' + data.site,
- from: config.email.user,
- to: data.pusher.email,
- subject: 'Successfully built ' + data.repo + ' site'
- };
- mailer.send(message, function(err, message) { console.log(err || message); });
- }
- });
-});
-
-// Start server
-app.listen(8080);
-console.log('Listening on port 8080');
-
-function run(data, cmd, cb) {
-
- console.log('Running: ' + cmd);
- exec(cmd, function (error, stdout, stderr) {
- console.log('stdout: ' + stdout);
- console.log('stderr: ' + stderr);
-
- if (error !== null) {
- console.log('exec error: ' + error);
-
- // Send error email
- if (config.email && data.pusher.email) {
- var message = {
- text: 'exec error: ' + error,
- from: config.email.user,
- to: data.pusher.email,
- subject: '!! Failed to build ' + data.repo + ' site'
- };
- mailer.send(message, function(err, message) { console.log(err || message); });
- }
-
- } else {
- if (typeof cb === 'function') cb();
- }
- });
-}