Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also .

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also .
Choose a Base Repository
datproject/dat
6a68/dat
ANB2/dat
Afey/dat
Ago3t1nho/dat
AlexJiaeHwang/dat
AlexandreXavier/dat
DTrejo/dat
DanteZhou/dat
FLGMwt/dat
GeoBIMpro/dat
HackG/dat
JakenHerman/dat
Klaudit/dat
LinusU/dat
MaxGfeller/dat
Mkoopajr/dat
NEPHILIM-1/dat
NortySpock/dat
Renthusiast/dat
RichardLitt/dat
SanjeebJena/dat
StarNebula/dat
WardCunningham/dat
WorldofOpenDev/dat
YanLinAung/dat
adriagalin/dat
agibsonccc/dat
ajschumacher/dat
akoenig/dat
anandthakker/dat
asd1355215911/dat
atul4mlko/dat
beaugunderson/dat
benitogf/dat
bigeasy/dat
binocarlos/dat
bmpvieira/dat
bnvk/dat
bradparks/dat
bsletten/dat
bussiere/dat
captainsafia/dat
ceejbot/dat
cesine/dat
chillypenguin/dat
chipski/dat
chrisekelley/dat
chuesler/dat
chumpalump/dat
clemsos/dat
cmpera/dat
cnwhy/dat
corbt/dat
dafyddcrosby/dat
davidguttman/dat
delkyd/dat
denismars/dat
derek-watson/dat
devildeveloper/dat
digideskio/dat
diorahman/dat
domspad/dat
dr-lab/dat
eayoungs/dat
ecoviz/dat
edsu/dat
ekg/dat
elf-pavlik/dat
engalex/dat
evanv/dat
finnp/dat
flyingzumwalt/dat
frewsxcv/dat
fureigh/dat
fusuma/dat
gabelula/dat
gabrielcury/dat
gavioto/dat
giantoak/dat
gijs/dat
gobengo/dat
groundrace/dat
hackerway/dat
hadoocn/dat
hasantayyar/dat
hexagon6/dat
hunterwayne7/dat
hyperwalle/dat
inno-v/dat
isayev/dat
jahraphael/dat
jamiepg1/dat
jarib/dat
jay3126/dat
jbenet/dat
jcblw/dat
jimjea/dat
jjjjw/dat
jkutianski/dat
joaquimserafim/dat
josephmartz/dat
joyrexus/dat
jqnatividad/dat
jronallo/dat
karissa/dat
kesla/dat
kevinsimper/dat
keynmol/dat
khayuenkam/dat
kod3r/dat
kodemill/dat
konklone/dat
lazycrazyowl/dat
lazymike/dat
lemonhall/dat
literalsands/dat
llenroc/dat
lmmx/dat
lnielsen/dat
mafintosh/dat
manjush3v/dat
marcesher/dat
marcoippolito/dat
markandrewj/dat
mathisonian/dat
mattknox/dat
mcanthony/dat
mikelehen/dat
mnjstwins/dat
modulexcite/dat
mshayeb/dat
myf/dat
nagyistoce/dat
natematias/dat
natlownes/dat
ngEdmundas/dat
nikita0208/dat
nvcexploder/dat
nvdnkpr/dat
optikfluffel/dat
paulfitz/dat
pilhokim/dat
pjbr/dat
pkafei/dat
podviaznikov/dat
pombredanne/dat
powerpak/dat
prodigeni/dat
pshken/dat
rakesh-mohanta/dat
reggi/dat
rgbkrk/dat
rjsteinert/dat
rliebi/dat
rmoorman/dat
rramdas/dat
ryancoleman/dat
saebekassebil/dat
samuell/dat
sballesteros/dat
schee/dat
schlos/dat
sethvincent/dat
sfrdmn/dat
shama/dat
silky/dat
smikes/dat
sportebois/dat
springmeyer/dat
stamhe/dat
stefanw/dat
suarasaur/dat
suensummit/dat
syncreticudon/dat
tacaswell/dat
tahoemph/dat
tforsberg/dat
timoxley/dat
tlevine/dat
todrobbins/dat
trygve-lie/dat
twistedogic/dat
twong/dat
tylerstalder/dat
vfulco/dat
vnoxygen/dat
vojnovski/dat
waqaszahoor/dat
wbteve/dat
wking/dat
xazzz/dat
xnsxns7/dat
yalamber/dat
ychaim/dat
yetone/dat
yueyingcui/dat
ywyw/dat
zawsx/opendata-db-dat
zofuthan/dat
Nothing to show
Choose a Head Repository
datproject/dat
6a68/dat
ANB2/dat
Afey/dat
Ago3t1nho/dat
AlexJiaeHwang/dat
AlexandreXavier/dat
DTrejo/dat
DanteZhou/dat
FLGMwt/dat
GeoBIMpro/dat
HackG/dat
JakenHerman/dat
Klaudit/dat
LinusU/dat
MaxGfeller/dat
Mkoopajr/dat
NEPHILIM-1/dat
NortySpock/dat
Renthusiast/dat
RichardLitt/dat
SanjeebJena/dat
StarNebula/dat
WardCunningham/dat
WorldofOpenDev/dat
YanLinAung/dat
adriagalin/dat
agibsonccc/dat
ajschumacher/dat
akoenig/dat
anandthakker/dat
asd1355215911/dat
atul4mlko/dat
beaugunderson/dat
benitogf/dat
bigeasy/dat
binocarlos/dat
bmpvieira/dat
bnvk/dat
bradparks/dat
bsletten/dat
bussiere/dat
captainsafia/dat
ceejbot/dat
cesine/dat
chillypenguin/dat
chipski/dat
chrisekelley/dat
chuesler/dat
chumpalump/dat
clemsos/dat
cmpera/dat
cnwhy/dat
corbt/dat
dafyddcrosby/dat
davidguttman/dat
delkyd/dat
denismars/dat
derek-watson/dat
devildeveloper/dat
digideskio/dat
diorahman/dat
domspad/dat
dr-lab/dat
eayoungs/dat
ecoviz/dat
edsu/dat
ekg/dat
elf-pavlik/dat
engalex/dat
evanv/dat
finnp/dat
flyingzumwalt/dat
frewsxcv/dat
fureigh/dat
fusuma/dat
gabelula/dat
gabrielcury/dat
gavioto/dat
giantoak/dat
gijs/dat
gobengo/dat
groundrace/dat
hackerway/dat
hadoocn/dat
hasantayyar/dat
hexagon6/dat
hunterwayne7/dat
hyperwalle/dat
inno-v/dat
isayev/dat
jahraphael/dat
jamiepg1/dat
jarib/dat
jay3126/dat
jbenet/dat
jcblw/dat
jimjea/dat
jjjjw/dat
jkutianski/dat
joaquimserafim/dat
josephmartz/dat
joyrexus/dat
jqnatividad/dat
jronallo/dat
karissa/dat
kesla/dat
kevinsimper/dat
keynmol/dat
khayuenkam/dat
kod3r/dat
kodemill/dat
konklone/dat
lazycrazyowl/dat
lazymike/dat
lemonhall/dat
literalsands/dat
llenroc/dat
lmmx/dat
lnielsen/dat
mafintosh/dat
manjush3v/dat
marcesher/dat
marcoippolito/dat
markandrewj/dat
mathisonian/dat
mattknox/dat
mcanthony/dat
mikelehen/dat
mnjstwins/dat
modulexcite/dat
mshayeb/dat
myf/dat
nagyistoce/dat
natematias/dat
natlownes/dat
ngEdmundas/dat
nikita0208/dat
nvcexploder/dat
nvdnkpr/dat
optikfluffel/dat
paulfitz/dat
pilhokim/dat
pjbr/dat
pkafei/dat
podviaznikov/dat
pombredanne/dat
powerpak/dat
prodigeni/dat
pshken/dat
rakesh-mohanta/dat
reggi/dat
rgbkrk/dat
rjsteinert/dat
rliebi/dat
rmoorman/dat
rramdas/dat
ryancoleman/dat
saebekassebil/dat
samuell/dat
sballesteros/dat
schee/dat
schlos/dat
sethvincent/dat
sfrdmn/dat
shama/dat
silky/dat
smikes/dat
sportebois/dat
springmeyer/dat
stamhe/dat
stefanw/dat
suarasaur/dat
suensummit/dat
syncreticudon/dat
tacaswell/dat
tahoemph/dat
tforsberg/dat
timoxley/dat
tlevine/dat
todrobbins/dat
trygve-lie/dat
twistedogic/dat
twong/dat
tylerstalder/dat
vfulco/dat
vnoxygen/dat
vojnovski/dat
waqaszahoor/dat
wbteve/dat
wking/dat
xazzz/dat
xnsxns7/dat
yalamber/dat
ychaim/dat
yetone/dat
yueyingcui/dat
ywyw/dat
zawsx/opendata-db-dat
zofuthan/dat
Nothing to show
  • 5 commits
  • 4 files changed
  • 0 commit comments
  • 3 contributors
Commits on Dec 02, 2014
Commits on Dec 03, 2014
ekg
add --tsv command-line option
Tab-separated tables (.tsv) are really common in unix-based informatics
pipelines. Adding a --tsv cli option makes it much simpler to pipe in and out
tab-separated data.
Commits on Dec 04, 2014
ekg
Merge https://github.com/maxogden/dat
Resolve conflicts due to basing this on another PR.

Conflicts:
	bin/import.js
	lib/commands.js
	test/tests/cli.js
Merge pull request #232 from ekg/master
add --tsv import/export option to cli
Showing with 87 additions and 7 deletions.
  1. +3 −3 bin/import.js
  2. +5 −2 lib/commands.js
  3. +1 −0 lib/write-stream.js
  4. +78 −2 test/tests/cli.js
View
@@ -24,13 +24,13 @@ function importCmd(dat, opts, cb) {
if (!opts.quiet) console.error('No import file specified, using STDIN as input')
input = process.stdin
} else if (filename) {
if (!(opts.json || opts.csv)) {
if (!(opts.json || opts.csv || opts.tsv)) {
var ending = path.extname(filename)
if (ending === '.json') {
opts.json = true;
} else if (ending === '.tsv') {
opts.csv = true;
opts.separator = ' '; // use tab separator
opts.tsv = true;
opts.separator = '\t'; // use tab separator
} else if (ending === '.csv') {
opts.csv = true;
}
View
@@ -739,13 +739,16 @@ dat.createReadStream = function(opts) {
if (!opts) opts = {}
var pipeline = [this.storage.createReadStream(opts), decoder(this)]
if(!opts.format) {
if(opts.csv) opts.format = 'csv'
if(opts.tsv) {
opts.format = 'csv'
opts.separator = '\t'
}
if(opts.json) opts.format = 'json'
if(opts.ndjson) opts.format = 'ndjson'
}
if(opts.format && opts.format !== 'objectMode')
pipeline.push(formatData(opts))
View
@@ -40,6 +40,7 @@ module.exports = function writeStream(dat, opts) {
function parseStream() {
if (opts.csv || opts.f === 'csv') return parseCSV(opts.separator)
if (opts.tsv || opts.f === 'tsv') return parseCSV('\t')
if (opts.json || opts.f === 'json') return parseJSON(opts.jsonpath)
if (opts.protobuf || opts.f === 'protobuf') return parseProtobuf()
if (opts.objects || opts.f === 'objects') return parseObjects()
View
@@ -200,6 +200,43 @@ module.exports.importCSV = function(test, common) {
})
}
module.exports.importCSVstdin = function(test, common) {
test('CLI dat import csv from stdin', function(t) {
common.destroyTmpDats(function() {
mkdirp(common.dat1tmp, function(err) {
t.notOk(err, 'no err')
initDat({cwd: common.dat1tmp, timeout: timeout, rpc: common.rpc}, function(cleanup) {
var cmd = datCmd + ' import --csv --quiet --results'
var dat = child.exec(cmd, {timeout: timeout, cwd: common.dat1tmp}, done)
dat.stdin.write('a,b,c\n1,2,3\n4,5,6\n7,8,9')
dat.stdin.end()
function done(err, stdo, stde) {
if (process.env.DEBUG) {
process.stdout.write(stdo.toString())
process.stdout.write(stde.toString())
}
t.notOk(err, 'no err')
t.equals(stde.toString(), '', 'empty stderr')
var lines = stdo.toString().split('\n')
var rows = []
lines.map(function(l) {
if (l !== '') rows.push(JSON.parse(l))
})
t.equal(rows.length, 3)
rows.map(function(r) { t.ok(r.key, 'row has key') })
common.destroyTmpDats(function() {
cleanup()
t.end()
})
}
})
})
})
})
}
module.exports.importTSV = function(test, common) {
test('CLI dat import tsv', function(t) {
common.destroyTmpDats(function() {
@@ -210,13 +247,50 @@ module.exports.importTSV = function(test, common) {
fs.writeFileSync(testTsv, 'a\tb\tc\n1\t2\t3\n4\t5\t6\n7\t8\t9')
var cmd = datCmd + ' import "' + testTsv + '" --quiet --results'
child.exec(cmd, {timeout: timeout, cwd: common.dat1tmp}, done)
function done(err, stdo, stde) {
if (process.env.DEBUG) {
process.stdout.write(stdo.toString())
process.stdout.write(stde.toString())
}
t.notOk(err, 'no err')
t.equals(stde.toString(), '', 'empty stderr')
var lines = stdo.toString().split('\n')
var rows = []
lines.map(function(l) {
if (l !== '') rows.push(JSON.parse(l))
})
t.equal(rows.length, 3)
rows.map(function(r) { t.ok(r.key, 'row has key') })
common.destroyTmpDats(function() {
cleanup()
t.end()
})
}
})
})
})
})
}
module.exports.importTSVstdin = function(test, common) {
test('CLI dat import tsv from stdin', function(t) {
common.destroyTmpDats(function() {
mkdirp(common.dat1tmp, function(err) {
t.notOk(err, 'no err')
initDat({cwd: common.dat1tmp, timeout: timeout, rpc: common.rpc}, function(cleanup) {
var cmd = datCmd + ' import --tsv --quiet --results'
var dat = child.exec(cmd, {timeout: timeout, cwd: common.dat1tmp}, done)
dat.stdin.write('a\tb\tc\n1\t2\t3\n4\t5\t6\n7\t8\t9')
dat.stdin.end()
function done(err, stdo, stde) {
if (process.env.DEBUG) {
process.stdout.write(stdo.toString())
process.stdout.write(stde.toString())
}
t.notOk(err, 'no err')
t.equals(stde.toString(), '', 'empty stderr')
var lines = stdo.toString().split('\n')
@@ -639,7 +713,9 @@ module.exports.all = function (test, common) {
module.exports.listenEmptyDir(test, common)
module.exports.listenPort(test, common)
module.exports.importCSV(test, common)
module.exports.importCSVstdin(test, common)
module.exports.importTSV(test, common)
module.exports.importTSVstdin(test, common)
module.exports.blobs(test, common)
module.exports.rows(test, common)
module.exports.badCommand(test, common)

No commit comments for this range