def with_config(base_dir, val_when_no_match)
      CONFIG_FILENAMES.each do |f|
        path = base_dir.nil? ? f : File.join(base_dir, f)
        return (yield path) if File.exist?(path)
      end
      val_when_no_match
    end
def with_config(base_dir, val_when_no_match)
      CONFIG_FILENAMES.each do |f|
        path = base_dir.nil? ? f : File.join(base_dir, f)
        return (yield path) if File.exist?(path)
      end
      val_when_no_match
    end
Get the config file at a given path, if it exists, and pass that to a block.
 Many config files may exist, but only the first match is used
 @param base_dir [String] The directory in which to search for a config file
 @param val_when_no_match [Object] The value to return if no config files are found
 @yield [path] Process the configuration file at the given path
 @yieldparam [String] The path of an existing config file
 @yieldreturn [ArduinoCI::CIConfig] a settings object
 @return [ArduinoCI::CIConfig]