<?php

namespace Illuminate\Database\Console\Migrations;

use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Illuminate\Database\Migrations\MigrationRepositoryInterface;

class InstallCommand extends Command
{// InstallCommand extends Command
    /**
     * The console command name.
     *
     * @var string
     */
    protected $name = 'migrate:install';// The console command name.

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Create the migration repository';// The console command description

    /**
     * The repository instance.
     *
     * @var \Illuminate\Database\Migrations\MigrationRepositoryInterface
     */
    protected $repository;//The repository instance

    /**
     * Create a new migration install command instance.
     *
     * @param  \Illuminate\Database\Migrations\MigrationRepositoryInterface  $repository
     * @return void
     */
    public function __construct(MigrationRepositoryInterface $repository)
    {//Create a new migration install command instance.
        parent::__construct();// set the parent::__construct()

        $this->repository = $repository;// set the repository
    }

    /**
     * Execute the console command.
     *
     * @return void
     */
    public function fire()
    {//Execute the console command
        $this->repository->setSource($this->input->getOption('database'));
// set Source
        $this->repository->createRepository();
// create Repository
        $this->info('Migration table created successfully.');
    }// set info

    /**
     * Get the console command options.
     *
     * @return array
     */
    protected function getOptions()
    {// Get the console command options
        return [
            ['database', null, InputOption::VALUE_OPTIONAL, 'The database connection to use.'],
        ];// run at php5.4+
    }
}