Files
sporel-tool-atlas-baker/bin/atlas-baker.js

60 lines
2.1 KiB
JavaScript

#!/usr/bin/env node
// CLI entry. Parses args, dispatches to bake(), prints summary.
const { bake } = require('../src/bake');
function parseArgs(argv) {
const opts = {};
for (let i = 0; i < argv.length; i++) {
const a = argv[i];
const next = argv[i + 1];
switch (a) {
case '--in': opts.inDir = next; i++; break;
case '--out': opts.outDir = next; i++; break;
case '--atlas-id': opts.atlasId = next; i++; break;
case '--tile-size':
opts.tileSize = (next === 'auto') ? 'auto' : parseInt(next, 10);
i++;
break;
case '--max-size': opts.maxSize = parseInt(next, 10); i++; break;
case '--lock': opts.lockPath = next; i++; break;
case '--blocks-sight-pattern':
opts.blocksSightPattern = new RegExp(next); i++; break;
case '--pad-px': opts.padPx = parseInt(next, 10); i++; break;
case '--schema': opts.schema = next; i++; break;
case '--mode': opts.mode = next; i++; break;
case '--strip-prefix': opts.stripPrefix = next; i++; break;
case '--verbose': opts.verbose = true; break;
default:
console.error(`unknown arg: ${a}`);
process.exit(2);
}
}
return opts;
}
(async () => {
try {
const opts = parseArgs(process.argv.slice(2));
const result = await bake(opts);
if (opts.mode === 'sprite') {
console.log(
`OK ${result.atlasId}: ${result.spriteCount} sprites, `
+ `${result.boundsW}x${result.boundsH} px atlas`
);
} else {
console.log(
`OK ${result.atlasId}: ${result.tileCount} tiles, `
+ `${result.boundsW}x${result.boundsH} px atlas`
);
}
process.exit(0);
} catch (err) {
console.error('ERROR:', err.message);
if (err.scanErrors) {
for (const e of err.scanErrors) console.error(' ', e);
}
process.exit(1);
}
})();