Update command manager and commands to OOP

This commit is contained in:
2024-09-30 22:29:58 +02:00
parent 3ec4bc2557
commit 6ac827630a
4 changed files with 68 additions and 46 deletions

View File

@ -2,43 +2,48 @@ import path from 'path'
import fs from 'fs'
import sharp from 'sharp'
import { commandLogger } from '../utilities/logger'
import { Server } from 'socket.io'
module.exports = async function () {
// Get all tiles
const tilesDir = path.join(process.cwd(), 'public', 'tiles');
const tiles = fs.readdirSync(tilesDir).filter((file) => file.endsWith('.png'));
export default class TilesCommand {
constructor(private readonly io: Server) {}
// Create output directory if it doesn't exist
if (!fs.existsSync(tilesDir)) {
fs.mkdirSync(tilesDir, { recursive: true });
}
public async execute(): Promise<void> {
// Get all tiles
const tilesDir = path.join(process.cwd(), 'public', 'tiles');
const tiles = fs.readdirSync(tilesDir).filter((file) => file.endsWith('.png'));
for (const tile of tiles) {
// Check if tile is already 66x34
const metadata = await sharp(path.join(tilesDir, tile)).metadata();
if (metadata.width === 66 && metadata.height === 34) {
commandLogger.info(`Tile ${tile} already processed`);
continue;
// Create output directory if it doesn't exist
if (!fs.existsSync(tilesDir)) {
fs.mkdirSync(tilesDir, { recursive: true });
}
const inputPath = path.join(tilesDir, tile);
const outputPath = path.join(tilesDir, tile);
for (const tile of tiles) {
// Check if tile is already 66x34
const metadata = await sharp(path.join(tilesDir, tile)).metadata();
if (metadata.width === 66 && metadata.height === 34) {
commandLogger.info(`Tile ${tile} already processed`);
continue;
}
try {
await sharp(inputPath)
.resize({
width: 66,
height: 34,
fit: 'fill',
kernel: 'nearest'
})
.toFile(outputPath);
const inputPath = path.join(tilesDir, tile);
const outputPath = path.join(tilesDir, tile);
commandLogger.info(`Processed: ${tile}`);
} catch (error) {
console.error(`Error processing ${tile}:`, error);
try {
await sharp(inputPath)
.resize({
width: 66,
height: 34,
fit: 'fill',
kernel: 'nearest'
})
.toFile(outputPath);
commandLogger.info(`Processed: ${tile}`);
} catch (error) {
console.error(`Error processing ${tile}:`, error);
}
}
}
commandLogger.info('Tile processing completed.');
commandLogger.info('Tile processing completed.');
}
}