esfix
Version:
Simple fixture loading for Elasticsearch on Node.js.
106 lines (100 loc) • 2.76 kB
JavaScript
#!/usr/bin/env node
'use strict';
const esFixtures = require('../src/');
const help = require('./help');
const argv = require('minimist')(process.argv.slice(2));
const path = require('path');
const command = argv._[0];
/**
* Get absolute path
* @param {string} rawPath
*/
const getLoader = (index, type) => {
return esFixtures.bootstrap(index, type, {
host: argv.host || argv.h,
log: argv.log || argv.l || 'info'
});
};
/**
* Require data file (.js or .json)
* @param {string} rawPath
*/
const requireDataFile = (rawPath) => {
if (!rawPath) {
return;
}
if (path.isAbsolute(rawPath)) {
return require(rawPath);
} else {
return require(path.join(process.cwd(), rawPath));
}
};
switch (command) {
case 'load': {
const index = argv._[1];
const type = argv._[2];
const data = requireDataFile(argv._[3]);
const incremental = argv.incremental || argv.i;
const refresh = argv.refresh || argv.r;
const loader = getLoader(index, type);
loader.load(data, { incremental, noRefresh: !refresh }).catch(console.error);
break;
}
case 'clear': {
const index = argv._[1];
const type = argv._[2];
const refresh = argv.refresh || argv.r;
const loader = getLoader(index, type);
loader.clear({ noRefresh: !refresh }).catch(console.error);
break;
}
case 'clearAndLoad': {
const index = argv._[1];
const type = argv._[2];
const data = requireDataFile(argv._[3]);
const incremental = argv.incremental || argv.i;
const refresh = argv.refresh || argv.r;
const loader = getLoader(index, type);
loader.clearAndLoad(data, { incremental, noRefresh: !refresh }).catch(console.error);
break;
}
case 'bulk': {
let index;
let type;
let data;
if (argv._.length === 4) {
index = argv._[1];
type = argv._[2];
data = requireDataFile(argv._[3]);
} else if (argv._.length === 3) {
index = argv._[1];
data = requireDataFile(argv._[2]);
} else {
data = requireDataFile(argv._[1]);
}
const refresh = argv.refresh || argv.r;
const loader = getLoader(index, type);
loader.bulk(data, { noRefresh: !refresh }).catch(console.error);
break;
}
case 'createIndex': {
const index = argv._[1];
const data = requireDataFile(argv._[2]);
const force = argv.force || argv.f;
const loader = getLoader(index);
loader.createIndex(data, { force }).catch(console.error);
break;
}
case 'addMapping': {
const index = argv._[1];
const type = argv._[2];
const data = requireDataFile(argv._[3]);
const loader = getLoader(index, type);
loader.addMapping(data).catch(console.error);
break;
}
default: {
console.log(help);
break;
}
}