import { CodeGeneratorError, IResultDir, IResultFile } from '../types';

export default class ResultDir implements IResultDir {
  public name: string;
  public dirs: IResultDir[];
  public files: IResultFile[];

  constructor(name: string) {
    this.name = name;
    this.dirs = [];
    this.files = [];
  }

  public addDirectory(dir: IResultDir): void {
    if (this.dirs.findIndex(d => d.name === dir.name) < 0) {
      this.dirs.push(dir);
    } else {
      throw new CodeGeneratorError('Adding same directory to one directory');
    }
  }

  public addFile(file: IResultFile): void {
    if (
      this.files.findIndex(f => f.name === file.name && f.ext === file.ext) < 0
    ) {
      this.files.push(file);
    } else {
      throw new CodeGeneratorError('Adding same file to one directory');
    }
  }
}
