You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

94 lines
3.5 KiB

// Generated by CoffeeScript 1.6.3
var balUtil, pathUtil,
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
balUtil = require('bal-util');
pathUtil = require('path');
module.exports = function(BasePlugin) {
var GhpagesPlugin, _ref;
return GhpagesPlugin = (function(_super) {
__extends(GhpagesPlugin, _super);
function GhpagesPlugin() {
_ref = GhpagesPlugin.__super__.constructor.apply(this, arguments);
return _ref;
}
GhpagesPlugin.prototype.name = 'ghpages';
GhpagesPlugin.prototype.config = {
deployBranch: 'gh-pages',
environment: 'static'
};
GhpagesPlugin.prototype.consoleSetup = function(opts) {
var commander, config, consoleInterface, docpad, me;
consoleInterface = opts.consoleInterface, commander = opts.commander;
me = this;
config = this.config;
docpad = this.docpad;
docpad.setInstanceConfig({
env: config.environment
});
commander.command('deploy-ghpages').description("deploys your " + config.environment + " website to the " + config.deployBranch + " branch").action(consoleInterface.wrapAction(function(next) {
var err, outGitPath, outPath;
docpad.log('info', 'Deployment to GitHub Pages starting...');
outPath = docpad.config.outPath;
if (outPath === docpad.config.rootPath) {
err = new Error("Your outPath configuration has been customised. Please remove the customisation in order to use the GitHub Pages plugin");
return next(err);
}
outGitPath = pathUtil.join(outPath, '.git');
return balUtil.rmdirDeep(outGitPath, function(err) {
if (err) {
return next(err);
}
return docpad.action('generate', {
env: config.environment
}, function(err) {
if (err) {
return next(err);
}
return balUtil.spawnCommand('git', ['config', 'remote.origin.url'], function(err, stdout, stderr) {
var remoteRepoUrl;
if (err) {
return next(err);
}
remoteRepoUrl = stdout.replace(/\n/, "");
return balUtil.spawnCommand('git', ['log', '--oneline'], function(err, stdout, stderr) {
var gitCommands, lastCommit;
if (err) {
return next(err);
}
lastCommit = stdout.split('\n')[0];
gitCommands = [['init'], ['add', '.'], ['commit', '-m', lastCommit], ['push', '--force', remoteRepoUrl, "master:" + config.deployBranch]];
return balUtil.spawnCommands('git', gitCommands, {
cwd: outPath,
output: true
}, function(err, stdout, stderr) {
if (err) {
return next(err);
}
return balUtil.rmdirDeep(outGitPath, function(err) {
if (err) {
return next(err);
}
docpad.log('info', 'Deployment to GitHub Pages completed successfully');
return next();
});
});
});
});
});
});
}));
return this;
};
return GhpagesPlugin;
})(BasePlugin);
};