import {Schema as NgAddOptions} from "./schema";
import { Schema as ApplicationOptions } from '../application/schema';
import {chain, Rule, schematic} from "@angular-devkit/schematics"

export default function (options: NgAddOptions): Rule {
  const rules: Rule[] = [];

  const applicationOptions: ApplicationOptions = Object.assign({}, options);

  rules.push(schematic('application', applicationOptions));

  if (options.app) {
    console.log("in ng-add create app module : " + options.app);
    rules.push(schematic('app', applicationOptions));
  }
  if (options.system) {
    console.log("in ng-add create app module : " + options.system);
    rules.push(schematic('system', applicationOptions));
  }
  if (options.auth) {
    console.log("in ng-add create app module : " + options.auth);
    rules.push(schematic('auth', applicationOptions));
  }
  if (options.user) {
    console.log("in ng-add create app module : " + options.user);
    rules.push(schematic('user', applicationOptions));
  }
  if (options.permission) {
    console.log("in ng-add create app module : " + options.permission);
    rules.push(schematic('permission', applicationOptions));
  }
  if (options.log) {
    console.log("in ng-add create app module : " + options.log);
    rules.push(schematic('log', applicationOptions));
  }

  return chain(rules);
}
