UNPKG

caslet

Version:

A simple content addressable system

107 lines (91 loc) 2.68 kB
// Generated by CoffeeScript 1.4.0 (function() { var FSCas, crypto, ensureMore, filelet, fs, funclet, loglet, path, run, runGet2, runStore2, runhashGet2, uuid; loglet = require('loglet'); fs = require('fs'); path = require('path'); crypto = require('crypto'); uuid = require('node-uuid'); funclet = require('funclet'); filelet = require('filelet'); FSCas = require('./cas'); ensureMore = function(args, count, usage) { if (args.length < count + 1) { return loglet.croak(usage); } }; run = function(argv) { var command; command = argv._[0]; return funclet.start(function(next) { var options; options = { baseDir: argv.baseDir || path.join(process.env.HOME, '.caslet') }; return FSCas.initialize(options, next); })["catch"](function(err) { return loglet.croak(err); }).done(function(cas) { switch (command) { case 'store': ensureMore(argv._, 2, "caslet store <file_to_be_stored> <dest_path>"); return runStore2(cas, argv._[1], argv._[2]); case 'pathget': ensureMore(argv._, 1, "caslet pathget <dest_path>"); return runGet2(cas, argv._[1]); case 'hashget': ensureMore(argv._, 1, "caslet hashget <hash>"); return runhashGet2(cas, argv._[1]); default: return loglet.croak({ error: 'unknown_command', command: command, args: argv }); } }); }; runGet2 = function(cas, filePath) { return funclet.start(function(next) { return cas.get({ path: filePath }, next); })["catch"](function(err) { return loglet.croak(err); }).done(function(stream) { stream.on('close', function() { return stream.close(); }); return stream.pipe(process.stdout); }); }; runhashGet2 = function(cas, filePath) { return funclet.start(function(next) { return cas.get({ hash: filePath }, next); })["catch"](function(err) { return loglet.croak(err); }).done(function(stream) { stream.on('close', function() { return stream.close(); }); return stream.pipe(process.stdout); }); }; runStore2 = function(cas, filePath, destPath) { return funclet.start(function(next) { var stream; stream = fs.createReadStream(filePath); return cas.storeWithPath(stream, destPath, next); })["catch"](function(err) { return loglet.croak(err); }).done(function(hash) { return loglet.log(hash); }); }; module.exports = { run: run, CAS: FSCas }; }).call(this);