import { BaseFormatter } from '../classes.baseformatter.js';
import type { IPlannedChange } from '../interfaces.format.js';
import { Project } from '../../classes.project.js';
import * as plugins from '../mod.plugins.js';

// This is a wrapper for existing format modules
export class LegacyFormatter extends BaseFormatter {
  private moduleName: string;
  private formatModule: any;
  
  constructor(context: any, project: Project, moduleName: string, formatModule: any) {
    super(context, project);
    this.moduleName = moduleName;
    this.formatModule = formatModule;
  }
  
  get name(): string {
    return this.moduleName;
  }
  
  async analyze(): Promise<IPlannedChange[]> {
    // For legacy modules, we can't easily predict changes
    // So we'll return a generic change that indicates the module will run
    return [{
      type: 'modify',
      path: '<various files>',
      module: this.name,
      description: `Run ${this.name} formatter`
    }];
  }
  
  async applyChange(change: IPlannedChange): Promise<void> {
    // Run the legacy format module
    await this.formatModule.run(this.project);
  }
}