source: node_modules/d3-dsv/bin/dsv2dsv.js@ e4c61dd

Last change on this file since e4c61dd was e4c61dd, checked in by istevanoska <ilinastevanoska@…>, 6 months ago

Prototype 1.1

  • Property mode set to 100644
File size: 1.5 KB
Line 
1#!/usr/bin/env node
2
3import {EOL} from "os";
4import {basename, dirname, resolve} from "path";
5import {readFileSync} from "fs";
6import {fileURLToPath} from "url";
7import rw from "rw";
8import {program} from "commander";
9import iconv from "iconv-lite";
10import {dsvFormat} from "../src/index.js";
11
12const progname = basename(process.argv[1]);
13const defaultInDelimiter = progname.slice(0, 3) === "tsv" ? "\t" : ",";
14const defaultOutDelimiter = progname.slice(-3) === "tsv" ? "\t" : ",";
15
16const options = program
17 .version(JSON.parse(readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), "../package.json"))).version)
18 .usage("[options] [file]")
19 .option("-o, --out <file>", "output file name; defaults to “-” for stdout", "-")
20 .option("-r, --input-delimiter <character>", "input delimiter character", defaultInDelimiter)
21 .option("-w, --output-delimiter <character>", "output delimiter character", defaultOutDelimiter)
22 .option("--input-encoding <encoding>", "input character encoding; defaults to “utf8”", "utf8")
23 .option("--output-encoding <encoding>", "output character encoding; defaults to “utf8”", "utf8")
24 .parse(process.argv)
25 .opts();
26
27const inFormat = dsvFormat(options.inputDelimiter);
28const outFormat = dsvFormat(options.outputDelimiter);
29
30rw.dash.readFile(program.args[0] || "-", (error, text) => {
31 if (error) throw error;
32 rw.dash.writeFile("-", iconv.encode(outFormat.format(inFormat.parse(iconv.decode(text, options.inputEncoding))) + EOL, options.outputEncoding), (error) => {
33 if (error) throw error;
34 });
35});
Note: See TracBrowser for help on using the repository browser.