# src/lib/commands/init/run-installer.js

    import { Installer } from '../../core';
    import { promptMissingOptions } from './options';
    import InstallerLogger from './installer-logger';

    /**
     * Run the installer
     * @param  {Object}  [options={}] installer options
     * @param  {string}  options.seedersFolder
     * @param  {string}  options.seedersTemplate
     * @return {Promise}
     */
    export default async (options = {}) => {
      // get relevat config and options
      const { seedersFolder, customSeederTemplate } = await promptMissingOptions(
        options
      );

      // create logger
      const logger = new InstallerLogger();

      // create installer
      const installer = new Installer({ seedersFolder, customSeederTemplate });

      // run seeders
      const observable = installer.install();

      // subscribe logger
      observable.subscribe(logger.asObserver());

      // wait for installer to finish
      await observable.toPromise();
    };