name: ContainerDebugCommand
class_comment: null
dependencies:
- name: DescriptorHelper
  type: class
  source: Symfony\Bundle\FrameworkBundle\Console\Helper\DescriptorHelper
- name: AsCommand
  type: class
  source: Symfony\Component\Console\Attribute\AsCommand
- name: Command
  type: class
  source: Symfony\Component\Console\Command\Command
- name: CompletionInput
  type: class
  source: Symfony\Component\Console\Completion\CompletionInput
- name: CompletionSuggestions
  type: class
  source: Symfony\Component\Console\Completion\CompletionSuggestions
- name: InvalidArgumentException
  type: class
  source: Symfony\Component\Console\Exception\InvalidArgumentException
- name: InputArgument
  type: class
  source: Symfony\Component\Console\Input\InputArgument
- name: InputInterface
  type: class
  source: Symfony\Component\Console\Input\InputInterface
- name: InputOption
  type: class
  source: Symfony\Component\Console\Input\InputOption
- name: OutputInterface
  type: class
  source: Symfony\Component\Console\Output\OutputInterface
- name: SymfonyStyle
  type: class
  source: Symfony\Component\Console\Style\SymfonyStyle
- name: ContainerBuilder
  type: class
  source: Symfony\Component\DependencyInjection\ContainerBuilder
- name: ServiceNotFoundException
  type: class
  source: Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException
- name: ParameterBag
  type: class
  source: Symfony\Component\DependencyInjection\ParameterBag\ParameterBag
- name: BuildDebugContainerTrait
  type: class
  source: BuildDebugContainerTrait
properties: []
methods:
- name: validateInput
  visibility: protected
  parameters:
  - name: input
  comment: "# * A console command for retrieving information about services.\n# *\n\
    # * @author Ryan Weaver <ryan@thatsquality.com>\n# *\n# * @internal\n# */\n# #[AsCommand(name:\
    \ 'debug:container', description: 'Display current services for an application')]\n\
    # class ContainerDebugCommand extends Command\n# {\n# use BuildDebugContainerTrait;\n\
    # \n# protected function configure(): void\n# {\n# $this\n# ->setDefinition([\n\
    # new InputArgument('name', InputArgument::OPTIONAL, 'A service name (foo)'),\n\
    # new InputOption('show-arguments', null, InputOption::VALUE_NONE, 'Show arguments\
    \ in services'),\n# new InputOption('show-hidden', null, InputOption::VALUE_NONE,\
    \ 'Show hidden (internal) services'),\n# new InputOption('tag', null, InputOption::VALUE_REQUIRED,\
    \ 'Show all services with a specific tag'),\n# new InputOption('tags', null, InputOption::VALUE_NONE,\
    \ 'Display tagged services for an application'),\n# new InputOption('parameter',\
    \ null, InputOption::VALUE_REQUIRED, 'Display a specific parameter for an application'),\n\
    # new InputOption('parameters', null, InputOption::VALUE_NONE, 'Display parameters\
    \ for an application'),\n# new InputOption('types', null, InputOption::VALUE_NONE,\
    \ 'Display types (classes/interfaces) available in the container'),\n# new InputOption('env-var',\
    \ null, InputOption::VALUE_REQUIRED, 'Display a specific environment variable\
    \ used in the container'),\n# new InputOption('env-vars', null, InputOption::VALUE_NONE,\
    \ 'Display environment variables used in the container'),\n# new InputOption('format',\
    \ null, InputOption::VALUE_REQUIRED, \\sprintf('The output format (\"%s\")', implode('\"\
    , \"', $this->getAvailableFormatOptions())), 'txt'),\n# new InputOption('raw',\
    \ null, InputOption::VALUE_NONE, 'To output raw description'),\n# new InputOption('deprecations',\
    \ null, InputOption::VALUE_NONE, 'Display deprecations generated when compiling\
    \ and warming up the container'),\n# ])\n# ->setHelp(<<<'EOF'\n# The <info>%command.name%</info>\
    \ command displays all configured <comment>public</comment> services:\n# \n# <info>php\
    \ %command.full_name%</info>\n# \n# To see deprecations generated during container\
    \ compilation and cache warmup, use the <info>--deprecations</info> option:\n\
    # \n# <info>php %command.full_name% --deprecations</info>\n# \n# To get specific\
    \ information about a service, specify its name:\n# \n# <info>php %command.full_name%\
    \ validator</info>\n# \n# To get specific information about a service including\
    \ all its arguments, use the <info>--show-arguments</info> flag:\n# \n# <info>php\
    \ %command.full_name% validator --show-arguments</info>\n# \n# To see available\
    \ types that can be used for autowiring, use the <info>--types</info> flag:\n\
    # \n# <info>php %command.full_name% --types</info>\n# \n# To see environment variables\
    \ used by the container, use the <info>--env-vars</info> flag:\n# \n# <info>php\
    \ %command.full_name% --env-vars</info>\n# \n# Display a specific environment\
    \ variable by specifying its name with the <info>--env-var</info> option:\n# \n\
    # <info>php %command.full_name% --env-var=APP_ENV</info>\n# \n# Use the --tags\
    \ option to display tagged <comment>public</comment> services grouped by tag:\n\
    # \n# <info>php %command.full_name% --tags</info>\n# \n# Find all services with\
    \ a specific tag by specifying the tag name with the <info>--tag</info> option:\n\
    # \n# <info>php %command.full_name% --tag=form.type</info>\n# \n# Use the <info>--parameters</info>\
    \ option to display all parameters:\n# \n# <info>php %command.full_name% --parameters</info>\n\
    # \n# Display a specific parameter by specifying its name with the <info>--parameter</info>\
    \ option:\n# \n# <info>php %command.full_name% --parameter=kernel.debug</info>\n\
    # \n# By default, internal services are hidden. You can display them\n# using\
    \ the <info>--show-hidden</info> flag:\n# \n# <info>php %command.full_name% --show-hidden</info>\n\
    # \n# The <info>--format</info> option specifies the format of the command output:\n\
    # \n# <info>php %command.full_name% --format=json</info>\n# EOF\n# )\n# ;\n# }\n\
    # \n# protected function execute(InputInterface $input, OutputInterface $output):\
    \ int\n# {\n# $io = new SymfonyStyle($input, $output);\n# $errorIo = $io->getErrorStyle();\n\
    # \n# $this->validateInput($input);\n# $kernel = $this->getApplication()->getKernel();\n\
    # $object = $this->getContainerBuilder($kernel);\n# \n# if ($input->getOption('env-vars'))\
    \ {\n# $options = ['env-vars' => true];\n# } elseif ($envVar = $input->getOption('env-var'))\
    \ {\n# $options = ['env-vars' => true, 'name' => $envVar];\n# } elseif ($input->getOption('types'))\
    \ {\n# $options = [];\n# $options['filter'] = $this->filterToServiceTypes(...);\n\
    # } elseif ($input->getOption('parameters')) {\n# $parameters = [];\n# $parameterBag\
    \ = $object->getParameterBag();\n# foreach ($parameterBag->all() as $k => $v)\
    \ {\n# $parameters[$k] = $object->resolveEnvPlaceholders($v);\n# }\n# $object\
    \ = new ParameterBag($parameters);\n# if ($parameterBag instanceof ParameterBag)\
    \ {\n# foreach ($parameterBag->allDeprecated() as $k => $deprecation) {\n# $object->deprecate($k,\
    \ ...$deprecation);\n# }\n# }\n# $options = [];\n# } elseif ($parameter = $input->getOption('parameter'))\
    \ {\n# $options = ['parameter' => $parameter];\n# } elseif ($input->getOption('tags'))\
    \ {\n# $options = ['group_by' => 'tags'];\n# } elseif ($tag = $input->getOption('tag'))\
    \ {\n# $tag = $this->findProperTagName($input, $errorIo, $object, $tag);\n# $options\
    \ = ['tag' => $tag];\n# } elseif ($name = $input->getArgument('name')) {\n# $name\
    \ = $this->findProperServiceName($input, $errorIo, $object, $name, $input->getOption('show-hidden'));\n\
    # $options = ['id' => $name];\n# } elseif ($input->getOption('deprecations'))\
    \ {\n# $options = ['deprecations' => true];\n# } else {\n# $options = [];\n# }\n\
    # \n# $helper = new DescriptorHelper();\n# $options['format'] = $input->getOption('format');\n\
    # $options['show_arguments'] = $input->getOption('show-arguments');\n# $options['show_hidden']\
    \ = $input->getOption('show-hidden');\n# $options['raw_text'] = $input->getOption('raw');\n\
    # $options['output'] = $io;\n# $options['is_debug'] = $kernel->isDebug();\n# \n\
    # try {\n# $helper->describe($io, $object, $options);\n# \n# if ('txt' === $options['format']\
    \ && isset($options['id'])) {\n# if ($object->hasDefinition($options['id'])) {\n\
    # $definition = $object->getDefinition($options['id']);\n# if ($definition->isDeprecated())\
    \ {\n# $errorIo->warning($definition->getDeprecation($options['id'])['message']\
    \ ?? \\sprintf('The \"%s\" service is deprecated.', $options['id']));\n# }\n#\
    \ }\n# if ($object->hasAlias($options['id'])) {\n# $alias = $object->getAlias($options['id']);\n\
    # if ($alias->isDeprecated()) {\n# $errorIo->warning($alias->getDeprecation($options['id'])['message']\
    \ ?? \\sprintf('The \"%s\" alias is deprecated.', $options['id']));\n# }\n# }\n\
    # }\n# \n# if (isset($options['id']) && isset($kernel->getContainer()->getRemovedIds()[$options['id']]))\
    \ {\n# $errorIo->note(\\sprintf('The \"%s\" service or alias has been removed\
    \ or inlined when the container was compiled.', $options['id']));\n# }\n# } catch\
    \ (ServiceNotFoundException $e) {\n# if ('' !== $e->getId() && '@' === $e->getId()[0])\
    \ {\n# throw new ServiceNotFoundException($e->getId(), $e->getSourceId(), null,\
    \ [substr($e->getId(), 1)]);\n# }\n# \n# throw $e;\n# }\n# \n# if (!$input->getArgument('name')\
    \ && !$input->getOption('tag') && !$input->getOption('parameter') && !$input->getOption('env-vars')\
    \ && !$input->getOption('env-var') && $input->isInteractive()) {\n# if ($input->getOption('tags'))\
    \ {\n# $errorIo->comment('To search for a specific tag, re-run this command with\
    \ a search term. (e.g. <comment>debug:container --tag=form.type</comment>)');\n\
    # } elseif ($input->getOption('parameters')) {\n# $errorIo->comment('To search\
    \ for a specific parameter, re-run this command with a search term. (e.g. <comment>debug:container\
    \ --parameter=kernel.debug</comment>)');\n# } elseif (!$input->getOption('deprecations'))\
    \ {\n# $errorIo->comment('To search for a specific service, re-run this command\
    \ with a search term. (e.g. <comment>debug:container log</comment>)');\n# }\n\
    # }\n# \n# return 0;\n# }\n# \n# public function complete(CompletionInput $input,\
    \ CompletionSuggestions $suggestions): void\n# {\n# if ($input->mustSuggestOptionValuesFor('format'))\
    \ {\n# $suggestions->suggestValues($this->getAvailableFormatOptions());\n# \n\
    # return;\n# }\n# \n# $kernel = $this->getApplication()->getKernel();\n# $object\
    \ = $this->getContainerBuilder($kernel);\n# \n# if ($input->mustSuggestArgumentValuesFor('name')\n\
    # && !$input->getOption('tag') && !$input->getOption('tags')\n# && !$input->getOption('parameter')\
    \ && !$input->getOption('parameters')\n# && !$input->getOption('env-var') && !$input->getOption('env-vars')\n\
    # && !$input->getOption('types') && !$input->getOption('deprecations')\n# ) {\n\
    # $suggestions->suggestValues($this->findServiceIdsContaining(\n# $object,\n#\
    \ $input->getCompletionValue(),\n# (bool) $input->getOption('show-hidden')\n#\
    \ ));\n# \n# return;\n# }\n# \n# if ($input->mustSuggestOptionValuesFor('tag'))\
    \ {\n# $suggestions->suggestValues($object->findTags());\n# \n# return;\n# }\n\
    # \n# if ($input->mustSuggestOptionValuesFor('parameter')) {\n# $suggestions->suggestValues(array_keys($object->getParameterBag()->all()));\n\
    # }\n# }\n# \n# /**\n# * Validates input arguments and options.\n# *\n# * @throws\
    \ \\InvalidArgumentException"
- name: findProperServiceName
  visibility: private
  parameters:
  - name: input
  - name: io
  - name: container
  - name: name
  - name: showHidden
  comment: null
- name: findProperTagName
  visibility: private
  parameters:
  - name: input
  - name: io
  - name: container
  - name: tagName
  comment: null
- name: findServiceIdsContaining
  visibility: private
  parameters:
  - name: container
  - name: name
  - name: showHidden
  comment: null
- name: findTagsContaining
  visibility: private
  parameters:
  - name: container
  - name: tagName
  comment: null
- name: filterToServiceTypes
  visibility: public
  parameters:
  - name: serviceId
  comment: '# * @internal'
- name: getAvailableFormatOptions
  visibility: private
  parameters: []
  comment: '# @return string[]'
traits:
- Symfony\Bundle\FrameworkBundle\Console\Helper\DescriptorHelper
- Symfony\Component\Console\Attribute\AsCommand
- Symfony\Component\Console\Command\Command
- Symfony\Component\Console\Completion\CompletionInput
- Symfony\Component\Console\Completion\CompletionSuggestions
- Symfony\Component\Console\Exception\InvalidArgumentException
- Symfony\Component\Console\Input\InputArgument
- Symfony\Component\Console\Input\InputInterface
- Symfony\Component\Console\Input\InputOption
- Symfony\Component\Console\Output\OutputInterface
- Symfony\Component\Console\Style\SymfonyStyle
- Symfony\Component\DependencyInjection\ContainerBuilder
- Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException
- Symfony\Component\DependencyInjection\ParameterBag\ParameterBag
- BuildDebugContainerTrait
interfaces: []