@emanuelsan/mosaic-js
Version:
Composable Markdown-based AI instruction engine for Node.js
23 lines • 1.01 kB
JavaScript
import path from 'path';
import fs from 'fs';
import { Effect, Data } from 'effect';
import { Mosaic } from '../Mosaic';
// Error Types
class DirectoryNotFoundError extends Data.TaggedError('DirectoryNotFoundError') {
}
class ItemNotADirectoryError extends Data.TaggedError('ItemNotADirectoryError') {
}
// Function
export const checkDirectory = (instructionsDir) => Effect.gen(function* () {
const absInstructionsDir = path.resolve(process.cwd(), instructionsDir);
// Check if the directory exists
if (!fs.existsSync(absInstructionsDir)) {
return yield* Effect.fail(new DirectoryNotFoundError({ message: `Directory does not exist: ${absInstructionsDir}` }));
}
// Check if the item is an actual directory
if (!fs.statSync(absInstructionsDir).isDirectory()) {
return yield* Effect.fail(new ItemNotADirectoryError({ message: `Item is not a directory: ${absInstructionsDir}` }));
}
return new Mosaic(instructionsDir);
});
//# sourceMappingURL=checkDirectory.js.map