forked from mirror/ObjToSchematic
52 lines
1.7 KiB
TypeScript
52 lines
1.7 KiB
TypeScript
|
import { log, LogStyle } from './logging';
|
||
|
|
||
|
import fs from 'fs';
|
||
|
import path from 'path';
|
||
|
import prompt from 'prompt';
|
||
|
|
||
|
void async function main() {
|
||
|
test();
|
||
|
}();
|
||
|
|
||
|
async function test() {
|
||
|
log(LogStyle.Info, 'Creating a new palette...');
|
||
|
|
||
|
const paletteBlocksDir = path.join(__dirname, './new-palette-blocks.txt');
|
||
|
if (!fs.existsSync(paletteBlocksDir)) {
|
||
|
log(LogStyle.Failure, 'Could not find /tools/new-palette-blocks.txt');
|
||
|
return;
|
||
|
}
|
||
|
log(LogStyle.Success, 'Found list of blocks to use in /tools/new-palette-blocks.txt');
|
||
|
|
||
|
let blocksToUse: string[] = fs.readFileSync(paletteBlocksDir, 'utf8').replace(/\r/g, '').split('\n');
|
||
|
blocksToUse = blocksToUse.filter((block) => {
|
||
|
return block.length !== 0;
|
||
|
});
|
||
|
if (blocksToUse.length === 0) {
|
||
|
log(LogStyle.Failure, 'No blocks listed for palette');
|
||
|
log(LogStyle.Info, 'List the blocks you want from /tools/all-supported-blocks.txt ');
|
||
|
return;
|
||
|
}
|
||
|
log(LogStyle.Info, `Found ${blocksToUse.length} blocks to use`);
|
||
|
|
||
|
const schema: prompt.Schema = {
|
||
|
properties: {
|
||
|
paletteName: {
|
||
|
pattern: /^[a-zA-Z\-]+$/,
|
||
|
description: 'What do you want to call this block palette? (e.g. my-block-palette)',
|
||
|
message: 'Must be only letters or dash',
|
||
|
required: true,
|
||
|
},
|
||
|
},
|
||
|
};
|
||
|
|
||
|
const promptUser = await prompt.get(schema);
|
||
|
|
||
|
const paletteJSON = {
|
||
|
blocks: blocksToUse,
|
||
|
};
|
||
|
|
||
|
fs.writeFileSync(path.join(__dirname, `../resources/palettes/${promptUser.paletteName}.palette`), JSON.stringify(paletteJSON, null, 4));
|
||
|
log(LogStyle.Success, `Successfully created ${promptUser.paletteName}.palette in /resources/palettes/`);
|
||
|
}
|