37 lines
1.0 KiB
JavaScript
37 lines
1.0 KiB
JavaScript
"use strict";
|
|
|
|
import fs from 'fs';
|
|
|
|
import l from '../../Helpers/Log.mjs';
|
|
import a from '../../Helpers/Ansi.mjs';
|
|
|
|
import Terrain50 from 'terrain50';
|
|
import Terrain50Renderer from './Terrain50Renderer.mjs';
|
|
|
|
export default async function(settings) {
|
|
if(typeof settings.cli.input !== "string") {
|
|
l.error("Error: No input file specified (try --filename path/to/file.asc)");
|
|
process.exit(1);
|
|
}
|
|
if(typeof settings.cli.output !== "string") {
|
|
l.error("Error: No output file specified (try --filename-output path/to/image.png)");
|
|
process.exit(1);
|
|
}
|
|
|
|
let terrain50 = Terrain50.Parse(
|
|
await fs.promises.readFile(settings.cli.input, "utf-8")
|
|
);
|
|
|
|
let renderer = new Terrain50Renderer(settings.scale_factor | 1);
|
|
let png_buffer = await renderer.render(terrain50);
|
|
|
|
if(!(png_buffer instanceof Buffer))
|
|
throw new Error(`Error: Renderer did not return Buffer (found unexpected ${png_buffer} instead)`);
|
|
|
|
await fs.promises.writeFile(
|
|
settings.cli.output,
|
|
png_buffer
|
|
);
|
|
l.log(`Written to ${a.hicol}${settings.cli.output}${a.reset}`);
|
|
}
|