Permalink
Browse files

add folder-walker and implement file adding

  • Loading branch information...
maxogden committed Dec 4, 2015
1 parent 6fc4583 commit 0ce2279a7dc0f0d5791248b03ad68c25de888bc9
Showing with 67 additions and 14 deletions.
  1. +1 −0 .gitignore
  2. +17 −10 cli.js
  3. +44 −3 index.js
  4. +5 −1 package.json
View
@@ -2,3 +2,4 @@ node_modules
.DS_Store
tmp
.idea
data
View
27 cli.js
@@ -1,16 +1,23 @@
#!/usr/bin/env node
var args = require('minimist')(process.argv.splice(2))
var usage = require('./usage')
var dat = require('./')
var cmd = args._[0]
if (cmd === 'share') {
// share
var loc = args._[1] || process.cwd()
var db = dat(loc)
} else if (cmd) {
// download
var hash = args._[1]
if (!hash) return usage()
} else {
return usage('root.txt')
run()
function run () {
if (cmd === 'share') {
// share
var loc = args._[1] || process.cwd()
var db = dat(loc)
db.share()
} else if (cmd) {
// download
var hash = args._[1]
if (!hash) return usage()
} else {
return usage('root.txt')
}
}
View
@@ -1,12 +1,53 @@
var level = require('level')
var fs = require('fs')
var path = require('path')
var walker = require('folder-walker')
var level = require('level')
var homedir = require('os-homedir')
var hyperdrive = require('hyperdrive')
var xtend = require('xtend')
var mkdirp = require('mkdirp')
var through = require('through2')
var pump = require('pump')
module.exports = Dat
function Dat (loc, opts) {
function Dat (dir, opts) {
if (!(this instanceof Dat)) return new Dat(dir, opts)
if (!opts) opts = {}
this.dir = dir
var defaults = {
createIfMissing: true
}
opts = xtend(opts, defaults)
var datPath = path.join(homedir(), '.dat/db')
return hyperdrive(level(datPath), opts)
if (opts.createIfMissing) mkdirp.sync(datPath)
var hyperdriveOpts = {name: 'dat'}
var drive = hyperdrive(level(datPath, opts), hyperdriveOpts)
this.drive = drive
}
Dat.prototype.share = function () {
var stream = walker(this.dir, {filter: function (filename) {
var basename = path.basename(filename)
if (basename[0] === '.') return false // ignore hidden files and folders
return true
}})
var pack = this.drive.add()
var adder = through.obj(function (data, enc, next) {
var isFile = data.stat.isFile()
if (!isFile) {
console.log('skipping non file', data.filepath)
return next()
}
console.log('reading', data.filepath)
var entry = pack.entry({name: data.relname, mode: data.stat.mode})
fs.createReadStream(data.filepath).pipe(entry)
next()
})
pump(stream, adder, function (err) {
if (err) throw err
pack.finalize(function () {
console.log('added stuff')
})
})
}
View
@@ -26,9 +26,13 @@
"author": "max ogden",
"license": "BSD-3-Clause",
"dependencies": {
"folder-walker": "^1.1.2",
"level": "^1.3.0",
"minimist": "^1.2.0",
"os-homedir": "^1.0.1"
"mkdirp": "^0.5.1",
"os-homedir": "^1.0.1",
"pump": "^1.0.1",
"xtend": "^4.0.1"
},
"bugs": {
"url": "https://github.com/maxogden/dat/issues"

0 comments on commit 0ce2279

Please sign in to comment.