80 lines
2.1 KiB
JavaScript
80 lines
2.1 KiB
JavaScript
var async = require('async');
|
|
var _ = require('lodash');
|
|
var fs = require('fs');
|
|
|
|
var fetchUrl = require('../util/fetch-url')
|
|
var help = require('./help')
|
|
var blockCommand = require('./blocks');
|
|
var assertInstallableRepo = require('../util/assert-installable-repo');
|
|
|
|
var subcommands = {
|
|
list: listKits,
|
|
install: installKit
|
|
};
|
|
|
|
module.exports = function(args, options, callback) {
|
|
var fn = subcommands[args[0]]
|
|
if(fn) {
|
|
fn(args.slice(1), options, callback);
|
|
} else {
|
|
help(['kits']);
|
|
}
|
|
}
|
|
|
|
function listKits(args, options, callback) {
|
|
getKitList(function(kits) {
|
|
_.each(kits, function(value, key) {
|
|
// TODO: handle version info, etc
|
|
console.log(key + ': ' + value.total + ' blocks');
|
|
});
|
|
});
|
|
}
|
|
|
|
function getKitList(callback) {
|
|
// For now until kits are implemented, use categories to test out build
|
|
fetchUrl('foundation.zurb.com', '/building-blocks/data/kits.json', function(kitJson) {
|
|
var kits = JSON.parse(kitJson);
|
|
callback(kits);
|
|
});
|
|
}
|
|
|
|
function installKit(args, options, callback) {
|
|
var name = args[0];
|
|
assertInstallableRepo(function(type) {
|
|
if(type === 'zip') {
|
|
downloadZipFile(name, function() {
|
|
console.log('downloaded ' + name + '.zip');
|
|
});
|
|
} else {
|
|
getKitList(function(kits) {
|
|
if (!kits[name]) {
|
|
console.log('Could not find kit: ', name);
|
|
if(callback) {callback();}
|
|
return;
|
|
}
|
|
var blocks = kits[name].blocks;
|
|
async.eachSeries(blocks, function(block, cb) {
|
|
blockCommand(['install', block.datakey], {}, cb);
|
|
}, function() {
|
|
console.log("done installing kit: ", name);
|
|
if(callback) {callback();}
|
|
})
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
function downloadZipFile(name, callback) {
|
|
var filename = name + '.zip';
|
|
var path = '/building-blocks/files/kits/' + filename;
|
|
fetchUrl('foundation.zurb.com', path, function(file) {
|
|
if(file.length > 0) {
|
|
fs.writeFile(filename, file, callback);
|
|
} else {
|
|
console.log("could not find kit: " + name);
|
|
process.exit(1);
|
|
}
|
|
});
|
|
|
|
}
|