wotd - include date in data
This commit is contained in:
parent
9652ff1a26
commit
a472733f03
|
@ -1,5 +1,5 @@
|
|||
import { readCSV } from 'https://deno.land/x/csv/mod.ts';
|
||||
import { datetime } from 'https://deno.land/x/ptera/mod.ts';
|
||||
import { DateTime, datetime } from 'https://deno.land/x/ptera/mod.ts';
|
||||
import { EOL } from 'https://deno.land/std/fs/eol.ts';
|
||||
import { brightCyan, yellow, gray } from 'https://deno.land/std@0.117.0/fmt/colors.ts';
|
||||
|
||||
|
@ -13,17 +13,14 @@ if (!Deno.args.length) {
|
|||
}
|
||||
}
|
||||
|
||||
const date = parseDate(Deno.args[1]);
|
||||
|
||||
let skip: number;
|
||||
skip = Number.parseInt(Deno.args[2] ?? '0', 10);
|
||||
skip = Number.parseInt(Deno.args[1] ?? '0', 10);
|
||||
if (isNaN(skip)) {
|
||||
console.error(`Invalid skip argument "${Deno.args[2]}".`);
|
||||
Deno.exit(-1);
|
||||
}
|
||||
|
||||
const file = await Deno.open(Deno.args[0], { read: true, write: false });
|
||||
let dateOffset = 0;
|
||||
// really starts at one because it's incremented right away in loop
|
||||
let rowIndex = 0;
|
||||
|
||||
|
@ -31,9 +28,16 @@ for await (const row of readCSV(file, { lineSeparator: Deno.build.os === 'window
|
|||
rowIndex++;
|
||||
let entry: WotdEntry|undefined;
|
||||
let word: string|undefined = undefined;
|
||||
let date: DateTime|undefined;
|
||||
for await (const cell of row) {
|
||||
if (!cell || rowIndex <= skip) {
|
||||
continue;
|
||||
break;
|
||||
} else if (!date) {
|
||||
date = parseDate(cell);
|
||||
if (!date) {
|
||||
console.error(`Parsing error! Invalid date "${cell}" in row ${rowIndex}.`);
|
||||
break;
|
||||
}
|
||||
} else if (!word) {
|
||||
word = cell;
|
||||
} else if (!entry) {
|
||||
|
@ -49,11 +53,10 @@ for await (const row of readCSV(file, { lineSeparator: Deno.build.os === 'window
|
|||
}
|
||||
}
|
||||
}
|
||||
if (entry) {
|
||||
const filename = date.add({ day: dateOffset }).format('YYYY.MM.dd');
|
||||
if (entry && date) {
|
||||
const filename = date.format('YYYY.MM.dd');
|
||||
await Deno.writeTextFile(filename + '.json', JSON.stringify(entry));
|
||||
console.info(`Wrote ${brightCyan(entry.word)} to ${yellow(filename) + gray('.json')}`);
|
||||
dateOffset++;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -78,23 +81,9 @@ async function doesFileExist(filename: string): Promise<true|string> {
|
|||
}
|
||||
}
|
||||
|
||||
function parseDate(date?: string) {
|
||||
if (!date || date === '-') {
|
||||
return datetime();
|
||||
} else {
|
||||
const parsed = datetime().parse(
|
||||
date.length === 5
|
||||
// if it's short, add the year
|
||||
? date + '-' + datetime().year
|
||||
: date, 'MM-dd-YYYY'
|
||||
);
|
||||
if (parsed.isValid()) {
|
||||
return parsed;
|
||||
} else {
|
||||
console.error(`Invalid date argument "${date}".`);
|
||||
Deno.exit(-1);
|
||||
}
|
||||
}
|
||||
function parseDate(date: string) {
|
||||
const parsed = datetime().parse(date, 'M/d/YYYY');
|
||||
return parsed.isValid() ? parsed : undefined;
|
||||
}
|
||||
|
||||
type WotdEntry = {
|
||||
|
|
Loading…
Reference in New Issue