public function init( Configurable $configurable, string $environment, InputInterface $input, OutputInterface $output ) {

		/**
		 * config values from the selected environment
		 */
		$environmentConfigurable = new PrefixConfigurableDecorator($configurable, "project.environments.$environment.");

		/**
		 * config values from the project `default` section
		 */
		$projectConfigurable = new PrefixConfigurableDecorator($configurable, "project.default.");

		/**
		 * config values from the selected environment
		 * If no value is set then the project `default` is checked
		 * If no value is there then the default value is returned
		 */
		$fallbackConfigurable = new ConfigurableFallback($environmentConfigurable, $projectConfigurable);

		/**
		 * Convenience service
		 * Replaces
		 *
		 *  if( $config->has($key) )  {
		 *		echo info exists already
		 * }
		 * echo info setting default value
		 * $config->set($key, $defaultValue)
		 *
		 * with
		 * $initializer->init($$fallbackConfigurable, 'key', defaultValue) - sets in default value in environment
		 * or
		 * $initializer->init($fallbackConfigurable, 'key', defaultValue, ) - sets in default value in project defaults
		 */
		$initializer = new ConfigurationInitializer($output);



		/**
		 *
		 */
		if( $this->getFlag('dev', false) ) {
			/**
			 * Provide defaults for local development environment
			 */
			$initializer->init($fallbackConfigurable, 'mount-workdir', true);
			$initializer->init($fallbackConfigurable, 'use-app-container', false);
		} else {
            $initializer->init($fallbackConfigurable, 'rancher.stack', 'Project');

            $schedulerInitializer = new SchedulerInitializer($initializer);
            $schedulerInitializer->init($fallbackConfigurable, $projectConfigurable);
        }

        /**
         * Provide defaults for rancher environments
         */
        $initializer->init($fallbackConfigurable, 'external_links', []);

        $initializer->init($fallbackConfigurable, 'docker.repository', 'repo/name', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'docker.version-prefix', '', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'service-name', 'Project', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'docker.base-image', 'php:7.0-alpine', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'environment', ["EXAMPLE" => 'value']);

        /**
         * Blueprint specific entries
         */
        $initializer->init($fallbackConfigurable, 'php', '7.0', $projectConfigurable);
//        $initializer->init($fallbackConfigurable, 'extensions', []);
        $initializer->init($fallbackConfigurable, 'add-composer', false, $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'command', "-i", $projectConfigurable);

    }
public function init( Configurable $configurable, string $environment, InputInterface $input, OutputInterface $output ) {

		/**
		 * config values from the selected environment
		 */
		$environmentConfigurable = new PrefixConfigurableDecorator($configurable, "project.environments.$environment.");

		/**
		 * config values from the project `default` section
		 */
		$projectConfigurable = new PrefixConfigurableDecorator($configurable, "project.default.");

		/**
		 * config values from the selected environment
		 * If no value is set then the project `default` is checked
		 * If no value is there then the default value is returned
		 */
		$fallbackConfigurable = new ConfigurableFallback($environmentConfigurable, $projectConfigurable);

		/**
		 * Convenience service
		 * Replaces
		 *
		 *  if( $config->has($key) )  {
		 *		echo info exists already
		 * }
		 * echo info setting default value
		 * $config->set($key, $defaultValue)
		 *
		 * with
		 * $initializer->init($$fallbackConfigurable, 'key', defaultValue) - sets in default value in environment
		 * or
		 * $initializer->init($fallbackConfigurable, 'key', defaultValue, ) - sets in default value in project defaults
		 */
		$initializer = new ConfigurationInitializer($output);



		/**
		 *
		 */
		if( $this->getFlag('dev', false) ) {
			/**
			 * Provide defaults for local development environment
			 */
			$initializer->init($fallbackConfigurable, 'mount-workdir', true);
			$initializer->init($fallbackConfigurable, 'use-app-container', false);
		} else {
            $initializer->init($fallbackConfigurable, 'rancher.stack', 'Project');

            $schedulerInitializer = new SchedulerInitializer($initializer);
            $schedulerInitializer->init($fallbackConfigurable, $projectConfigurable);
        }

        /**
         * Provide defaults for rancher environments
         */
        $initializer->init($fallbackConfigurable, 'external_links', []);

        $initializer->init($fallbackConfigurable, 'docker.repository', 'repo/name', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'docker.version-prefix', '', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'service-name', 'Project', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'docker.base-image', 'php:7.0-alpine', $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'environment', ["EXAMPLE" => 'value']);

        /**
         * Blueprint specific entries
         */
        $initializer->init($fallbackConfigurable, 'php', '7.0', $projectConfigurable);
//        $initializer->init($fallbackConfigurable, 'extensions', []);
        $initializer->init($fallbackConfigurable, 'add-composer', false, $projectConfigurable);
        $initializer->init($fallbackConfigurable, 'command', "-i", $projectConfigurable);

    }
public function init ( Configurable $ configurable , string $ environment , InputInterface $ input , OutputInterface $ output ) { /**
		 * config values from the selected environment
		 */ $ environmentConfigurable = new PrefixConfigurableDecorator ( $ configurable , "project.environments.$environment." ) ; /**
		 * config values from the project `default` section
		 */ $ projectConfigurable = new PrefixConfigurableDecorator ( $ configurable , "project.default." ) ; /**
		 * config values from the selected environment
		 * If no value is set then the project `default` is checked
		 * If no value is there then the default value is returned
		 */ $ fallbackConfigurable = new ConfigurableFallback ( $ environmentConfigurable , $ projectConfigurable ) ; /**
		 * Convenience service
		 * Replaces
		 *
		 *  if( $config->has($key) )  {
		 *		echo info exists already
		 * }
		 * echo info setting default value
		 * $config->set($key, $defaultValue)
		 *
		 * with
		 * $initializer->init($$fallbackConfigurable, 'key', defaultValue) - sets in default value in environment
		 * or
		 * $initializer->init($fallbackConfigurable, 'key', defaultValue, ) - sets in default value in project defaults
		 */ $ initializer = new ConfigurationInitializer ( $ output ) ; /**
		 *
		 */ if ( $ this -> getFlag ( 'dev' , false ) ) { /**
			 * Provide defaults for local development environment
			 */ $ initializer -> init ( $ fallbackConfigurable , 'mount-workdir' , true ) ; $ initializer -> init ( $ fallbackConfigurable , 'use-app-container' , false ) ; } else { $ initializer -> init ( $ fallbackConfigurable , 'rancher.stack' , 'Project' ) ; $ schedulerInitializer = new SchedulerInitializer ( $ initializer ) ; $ schedulerInitializer -> init ( $ fallbackConfigurable , $ projectConfigurable ) ; } /**
         * Provide defaults for rancher environments
         */ $ initializer -> init ( $ fallbackConfigurable , 'external_links' , [ ] ) ; $ initializer -> init ( $ fallbackConfigurable , 'docker.repository' , 'repo/name' , $ projectConfigurable ) ; $ initializer -> init ( $ fallbackConfigurable , 'docker.version-prefix' , '' , $ projectConfigurable ) ; $ initializer -> init ( $ fallbackConfigurable , 'service-name' , 'Project' , $ projectConfigurable ) ; $ initializer -> init ( $ fallbackConfigurable , 'docker.base-image' , 'php:7.0-alpine' , $ projectConfigurable ) ; $ initializer -> init ( $ fallbackConfigurable , 'environment' , [ "EXAMPLE" => 'value' ] ) ; /**
         * Blueprint specific entries
         */ $ initializer -> init ( $ fallbackConfigurable , 'php' , '7.0' , $ projectConfigurable ) ; //        $initializer->init($fallbackConfigurable, 'extensions', []); $ initializer -> init ( $ fallbackConfigurable , 'add-composer' , false , $ projectConfigurable ) ; $ initializer -> init ( $ fallbackConfigurable , 'command' , "-i" , $ projectConfigurable ) ; }
Fill the configurable with all possible options with explanatory default options set

@param Configurable $configurable
@param string $environment
@param InputInterface $input
@param OutputInterface $output
Fill the configurable with all possible options with explanatory default options set