Skip to content

Commit 04a3db5

Browse files
committed
Added support to transform all EML files from a directory
1 parent 1cd57fe commit 04a3db5

File tree

1 file changed

+40
-12
lines changed

1 file changed

+40
-12
lines changed

parse.js

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,54 @@
11
#!/usr/bin/env node
22

33
import { MailParser } from 'mailparser';
4-
import { writeFileSync, createReadStream } from 'fs';
5-
import nomnom from 'nomnom'
4+
import { writeFileSync, createReadStream, readdir } from 'fs';
5+
import { basename } from 'path';
6+
import nomnom from 'nomnom';
67

7-
const mailparser = new MailParser();
8-
const opts = nomnom.option('infile', {
8+
const opts = nomnom
9+
.option('directory', {
10+
abbr: 'd',
11+
flag: true,
12+
help: 'Adds the ability to use directories instead of files'
13+
})
14+
.option('infile', {
915
abbr: 'i',
1016
required: true,
11-
help: 'Specify input file'
17+
help: 'Specify input file or directory with -d flag'
1218
})
1319
.option('outfile', {
1420
abbr: 'o',
1521
required: true,
16-
help: 'Specify output file'
22+
help: 'Specify output file or directory with -d flag'
1723
})
1824
.parse();
1925

20-
mailparser.on('data', data => {
21-
if (data.type === 'text') {
22-
writeFileSync(opts.outfile, data.html);
23-
}
24-
});
26+
if (opts.directory) {
27+
readdir(opts.infile, (err, files) => {
28+
if (err) console.error("Error:", err);
29+
else {
30+
files.forEach(file => {
31+
const fileName = basename(file, '.eml');
32+
const mailparser = new MailParser();
33+
34+
mailparser.on('data', data => {
35+
if (data.type === 'text') {
36+
writeFileSync(`${opts.outfile}/${fileName}.html`, data.html);
37+
}
38+
});
39+
40+
createReadStream(`${opts.infile}/${file}`).pipe(mailparser);
41+
});
42+
}
43+
});
44+
} else {
45+
const mailparser = new MailParser();
46+
47+
mailparser.on('data', data => {
48+
if (data.type === 'text') {
49+
writeFileSync(opts.outfile, data.html);
50+
}
51+
});
2552

26-
createReadStream(opts.infile).pipe(mailparser);
53+
createReadStream(opts.infile).pipe(mailparser);
54+
}

0 commit comments

Comments
 (0)