setName('makemodel')
            ->addArgument('name', Argument::OPTIONAL, "console name")
            ->setDescription('Create a new model class');
    }
    protected function execute(Input $input, Output $output)
    {
        $name = trim($input->getArgument('name'));
        $classname = $this->getClassName($name);
        try {
            ModelUtils::makeModel($classname);
            $output->writeln('' . $this->type . ':' . $classname . ' created successfully.');
        } catch (\Exception $e) {
            $output->writeln('' . $e->getMessage() . '');
        }
    }
    protected function getClassName($name)
    {
        if (strpos($name, '\\') !== false) {
            return $name;
        }
        if (strpos($name, '@')) {
            [$app, $name] = explode('@', $name);
        } else {
            $app = '';
        }
        if (strpos($name, '/') !== false) {
            $name = str_replace('/', '\\', $name);
        }
        return $this->getNamespace($app) . '\\' . $name;
    }
    protected function getNamespace(string $app): string
    {
        return 'app' . ($app ? '\\' . $app : '') . '\\model';
    }
}