import { formatFiles, generateFiles, names, type Tree } from '@nx/devkit';

import type { <%- className %>GeneratorSchema } from './schema.js';
import { fileURLToPath } from 'node:url';
import { dirname, join, basename } from 'node:path';

const __dirname = dirname(fileURLToPath(import.meta.url));

export async function <%- propertyName %>Generator(tree: Tree, options: <%- className %>GeneratorSchema) {
  const name = basename(options.directory);
  const sourceRoot = join(__dirname, 'files');
  const targetRoot = options.directory;
  
  generateFiles(tree, sourceRoot, targetRoot, { ...names(name) });
  await formatFiles(tree);
}

export default <%- propertyName %>Generator;
