# put parameters here that don't need to change on each machine where the app is deployed
# https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration
parameters:
    keylighter_dir: '%kernel.project_dir%/var/keylighter'
    keylighter_temp_dir: '/tmp/keylighter'

services:
    # default configuration for services in *this* file
    _defaults:
        # automatically injects dependencies in your services
        autowire: true
        # automatically registers your services as commands, event subscribers, etc.
        autoconfigure: true
        # this means you cannot fetch services directly from the container via $container->get()
        # if you need to do this, you can override this setting on individual services
        public: false
    # makes classes in src/ available to be used as services
    # this creates a service per class whose id is the fully-qualified class name
    App\:
        resource: '../src/*'
        # you can exclude directories or files
        # but if a service is unused, it's removed anyway
        exclude: '../src/{Entity,Repository,Tests,Listener,Migrations}'
        lazy: true

    App\Service\:
        resource: '../src/Service/*'
        public: true

    # controllers are imported separately to make sure they're public
    # and have a tag that allows actions to type-hint services
    App\Controller\:
        resource: '../src/Controller'
        public: true
        tags: ['controller.service_arguments']

    # controllers are imported separately to make sure they're public
    # and have a tag that allows actions to type-hint services
    App\Command\:
        resource: '../src/Command'
        public: true
        tags: ['console.command']

    App\Listener\KeyLighterVersionListener:
        tags:
            - { name: kernel.event_listener, event: kernel.request }
            - { name: kernel.event_listener, event: kernel.response }

    App\MessageHandler\UpdateKeylighterHandler:
        arguments:
            $composer:  "%env(COMPOSER_PATH)%"
            $box:       "%env(BOX_PATH)%"
            $installed: "%keylighter_dir%/installed.json"

    Kadet\Highlighter\KeyLighter:
        factory: ['@App\Service\KeyLighterVersioner', 'getKeyLighter']

    League\CommonMark\Environment:
        factory: ['League\CommonMark\Environment', 'createGFMEnvironment']
        calls:
            - ['addExtension', ['@App\CommonMark\KeylighterExtension']]

    League\CommonMark\EnvironmentInterface: '@League\CommonMark\Environment'
    League\CommonMark\DocParser: ~
    League\CommonMark\DocParserInterface: '@League\CommonMark\DocParser'
    League\CommonMark\HtmlRenderer: ~

    twig.versioner: '@App\Service\KeyLighterVersioner'
    twig.keylighter: '@App\Twig\KeyLighterTwigAccess'
