From 203925d9a48d34537bdf6cd25502134df5e91ae7 Mon Sep 17 00:00:00 2001 From: Elizabeth Hunt Date: Wed, 24 Jan 2024 18:59:13 -0700 Subject: initial commit --- src/index.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/index.ts (limited to 'src/index.ts') diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..09d952b --- /dev/null +++ b/src/index.ts @@ -0,0 +1,34 @@ +import { args, type Args } from '@/args'; +import { join } from 'path'; +import { watch } from 'fs/promises'; +import { generateParser, GRAMMAR_FILE, GENERATED_PARSER } from '@/parser'; +import { ConsoleTracingLogger } from '@/utils'; + +const devMode = async (logger: ConsoleTracingLogger) => { + logger.info('Watching for changes in parser...'); + const watcher = watch(import.meta.dir, { recursive: true }); + for await (const event of watcher) { + if (event.filename?.endsWith(GRAMMAR_FILE)) { + const grammarFile = join(import.meta.dir, event.filename); + const outputFile = join( + import.meta.dir, + event.filename.replace(GRAMMAR_FILE, GENERATED_PARSER), + ); + logger.info( + `Generating parser at Location=(${grammarFile}) to Source=(${outputFile})...`, + ); + generateParser(grammarFile, outputFile); + } + } +}; + +export const main = async (args: Args) => { + const logger = new ConsoleTracingLogger('main'); + + if (args.devMode) { + logger.info('Starting in dev mode...'); + await devMode(logger.createChild('devMode')); + } +}; + +main(args); -- cgit v1.2.3-70-g09d2