def load_configuration_file(config_file_name = nil, block_for_missing = nil, skip_printing_values = false)
      return unless config_file_name

      self.config_file_name = config_file_name

      path = FastlaneCore::Configuration.find_configuration_file_path(config_file_name: config_file_name)
      return if path.nil?

      begin
        configuration_file = ConfigurationFile.new(self, path, block_for_missing, skip_printing_values)
        options = configuration_file.options
      rescue FastlaneCore::ConfigurationFile::ExceptionWhileParsingError => e
        options = e.recovered_options
        wrapped_exception = e.wrapped_exception
      end

      # Make sure all the values set in the config file pass verification
      options.each do |key, val|
        option = self.verify_options_key!(key)
        option.verify!(val)
      end

      # Merge the new options into the old ones, keeping all previously set keys
      self.config_file_options = options.merge(self.config_file_options)

      verify_conflicts # important, since user can set conflicting options in configuration file

      # Now that everything is verified, re-raise an exception that was raised in the config file
      raise wrapped_exception unless wrapped_exception.nil?

      configuration_file
    end
def load_configuration_file(config_file_name = nil, block_for_missing = nil, skip_printing_values = false)
      return unless config_file_name

      self.config_file_name = config_file_name

      path = FastlaneCore::Configuration.find_configuration_file_path(config_file_name: config_file_name)
      return if path.nil?

      begin
        configuration_file = ConfigurationFile.new(self, path, block_for_missing, skip_printing_values)
        options = configuration_file.options
      rescue FastlaneCore::ConfigurationFile::ExceptionWhileParsingError => e
        options = e.recovered_options
        wrapped_exception = e.wrapped_exception
      end

      # Make sure all the values set in the config file pass verification
      options.each do |key, val|
        option = self.verify_options_key!(key)
        option.verify!(val)
      end

      # Merge the new options into the old ones, keeping all previously set keys
      self.config_file_options = options.merge(self.config_file_options)

      verify_conflicts # important, since user can set conflicting options in configuration file

      # Now that everything is verified, re-raise an exception that was raised in the config file
      raise wrapped_exception unless wrapped_exception.nil?

      configuration_file
    end
This method takes care of parsing and using the configuration file as values
 Call this once you know where the config file might be located
 Take a look at how `gym` uses this method

 @param config_file_name [String] The name of the configuration file to use (optional)
 @param block_for_missing [Block] A ruby block that is called when there is an unknown method
   in the configuration file