public function run()
    {
        if ($this->booted) {
            return;
        }
        
        // Boot kernel and console
        $this->kernel->withoutSession();
        $this->kernel->boot();
        
        $this->booted = true;

        foreach ($this->setting->getBootstrap() as $item) {
            require $item;
        }
        
        $command = $this->arg->getParameter('command');

        if (array_key_exists($command, $this->registers)) {
            return $this->registers[$command]($this->arg);
        }

        if ($command == 'launch') {
            $command = null;
        }

        if ($command == 'run') {
            $command = 'launch';
        }

        try {
            $this->call($command);
        } catch (ConsoleException $exception) {
            echo Color::red($exception->getMessage());
            exit(1);
        }
    }