import * as plugins from './plugins.js';
import * as paths from './paths.js';

import { GitzoneConfig } from './classes.gitzoneconfig.js';
import type { TGitzoneProjectType } from './classes.gitzoneconfig.js';

/**
 * the Project class is a tool to work with a gitzone project
 */
export class Project {
  public static async fromCwd() {
    const gitzoneConfig = await GitzoneConfig.fromCwd();
    const project = new Project(gitzoneConfig);
    if (!project.gitzoneConfig.data.projectType) {
      throw new Error('Please define a project type');
    }
    return project;
  }

  public gitzoneConfig: GitzoneConfig;
  public get type(): TGitzoneProjectType {
    return this.gitzoneConfig.data.projectType;
  }

  constructor(gitzoneConfigArg: GitzoneConfig) {
    this.gitzoneConfig = gitzoneConfigArg;
  }
}