public Downloader add(String id, String url, Path output) {
    if (url.startsWith("geofabrik:")) {
      url = Geofabrik.getDownloadUrl(url.replaceFirst("^geofabrik:", ""), config);
    } else if (url.startsWith("aws:")) {
      url = AwsOsm.OSM_PDS.getDownloadUrl(url.replaceFirst("^aws:", ""), config);
    } else if (url.startsWith("overture:")) {
      url = AwsOsm.OVERTURE.getDownloadUrl(url.replaceFirst("^overture:", ""), config);
    }
    toDownloadList.add(new ResourceToDownload(id, url, output));
    return this;
  }
Adds a new resource to download but does not start downloading it until {@link #run()} is called.
<p>
The resource won't be downloaded if size on disk is the same as {@code Content-Length} header reported from a
{@code HEAD} request to the resource.

@param id     short name to use for this download when logging progress
@param url    the external resource to fetch, "aws:latest" (for the latest planet .osm.pbf), "overture:latest" (for
              the latest Overture Maps release) or "geofabrik:extract-name" as a shortcut to use
              {@link Geofabrik#getDownloadUrl(String, PlanetilerConfig)} to look up a {@code .osm.pbf}
              <a href="https://download.geofabrik.de/">Geofabrik</a> extract URL by partial match on area name
@param output where to download the file to
@return {@code this} for chaining
planetiler-core/src/main/java/com/onthegomap/planetiler/util/Downloader.java