From c481567ebbdbb9fc3ab89855bedc8fe4a264745a Mon Sep 17 00:00:00 2001 From: Dustin Carlino Date: Mon, 2 Nov 2020 17:36:02 -0800 Subject: [PATCH] Cut over from Dropbox to S3. #195, #326 Uploading files individually to Dropbox is flaky, and the unique URL per file complicates data/MANIFEST. While we're at it, start carving aside a directory structure for keeping data for the last few releases. [rebuild] to make sure github actions can download everything --- README.md | 2 +- abstutil/src/abst_data.rs | 2 - book/src/howto/README.md | 2 +- data/MANIFEST.json | 369 +++++++++++++------------------------- game/src/load.rs | 4 +- release/deploy_web.sh | 15 +- updater/src/main.rs | 107 ++++------- 7 files changed, 175 insertions(+), 326 deletions(-) diff --git a/README.md b/README.md index 00a3b68852..b77974b459 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ pedestrians. [Mac](https://github.com/dabreegster/abstreet/releases/download/v0.2.17/abstreet_mac_v0_2_17.zip), [Linux](https://github.com/dabreegster/abstreet/releases/download/v0.2.17/abstreet_linux_v0_2_17.zip), [FreeBSD](https://www.freshports.org/games/abstreet/), - [your web browser](http://abstreet.s3-website.us-east-2.amazonaws.com/), or + [your web browser](http://abstreet.s3-website.us-east-2.amazonaws.com/dev), or [read all instructions](https://dabreegster.github.io/abstreet/howto/index.html) (new releases every Sunday) - [build from source](https://dabreegster.github.io/abstreet/dev/index.html) diff --git a/abstutil/src/abst_data.rs b/abstutil/src/abst_data.rs index 068e4beada..ee8c688e0b 100644 --- a/abstutil/src/abst_data.rs +++ b/abstutil/src/abst_data.rs @@ -16,8 +16,6 @@ pub struct Manifest { pub struct Entry { /// md5sum of the file pub checksum: String, - /// URL to a .zip file containing the one file - pub dropbox_url: Option, } impl Manifest { diff --git a/book/src/howto/README.md b/book/src/howto/README.md index 1fb6a46ca5..b5576c1d0b 100644 --- a/book/src/howto/README.md +++ b/book/src/howto/README.md @@ -29,7 +29,7 @@ Grab a pre-built binary release -- updated every Sunday, announced at [Yuri](https://github.com/yurivict) Or you can try playing -[directly in your web browser](http://abstreet.s3-website.us-east-2.amazonaws.com/) +[directly in your web browser](http://abstreet.s3-website.us-east-2.amazonaws.com/dev) -- still experimental for now. Or you can [compile from source](../dev/index.md). diff --git a/data/MANIFEST.json b/data/MANIFEST.json index 917b728354..5bb3c5937e 100644 --- a/data/MANIFEST.json +++ b/data/MANIFEST.json @@ -1,496 +1,373 @@ { "entries": { "data/input/berlin/EWR201812E_Matrix.csv": { - "checksum": "7966d3e37c45e7ffa4ee26bb6c8cec28", - "dropbox_url": "https://www.dropbox.com/s/6cmgk93bxcriu4b/EWR201812E_Matrix.csv.gz?dl=0" + "checksum": "7966d3e37c45e7ffa4ee26bb6c8cec28" }, "data/input/berlin/berlin_center_separate_cycleways.bin": { - "checksum": "0d409eab4345bb575f485d073d2b021f", - "dropbox_url": "https://www.dropbox.com/s/zb327re3zwry0g5/berlin_center_separate_cycleways.bin.gz?dl=0" + "checksum": "0d409eab4345bb575f485d073d2b021f" }, "data/input/berlin/berlin_center_snapped_cycleways.bin": { - "checksum": "2ff14b60c55ada6154bad1ce71f1ddb5", - "dropbox_url": "https://www.dropbox.com/s/p8oqsltnfc7mtip/berlin_center_snapped_cycleways.bin.gz?dl=0" + "checksum": "2ff14b60c55ada6154bad1ce71f1ddb5" }, "data/input/berlin/footways.bin": { - "checksum": "19d6608e9bc85800706e004e4530a81b", - "dropbox_url": "https://www.dropbox.com/s/oq1ns3g0qzauawr/footways.bin.gz?dl=0" + "checksum": "19d6608e9bc85800706e004e4530a81b" }, "data/input/berlin/osm/berlin-latest.osm.pbf": { - "checksum": "8e7f5ecf37631bb975f062593c5add99", - "dropbox_url": "https://www.dropbox.com/s/6g190fpbbj22gc1/berlin-latest.osm.pbf.gz?dl=0" + "checksum": "8e7f5ecf37631bb975f062593c5add99" }, "data/input/berlin/osm/berlin_center.osm": { - "checksum": "7411c1f8e1e5ff792445a7cd575f5379", - "dropbox_url": "https://www.dropbox.com/s/40c4itpinaogbip/berlin_center.osm.gz?dl=0" + "checksum": "7411c1f8e1e5ff792445a7cd575f5379" }, "data/input/berlin/planning_areas.bin": { - "checksum": "f1a3bd5118a0e4982b64c2307e01d82a", - "dropbox_url": "https://www.dropbox.com/s/obddlwxjf7djvip/planning_areas.bin.gz?dl=0" + "checksum": "f1a3bd5118a0e4982b64c2307e01d82a" }, "data/input/berlin/planning_areas.kml": { - "checksum": "1bfc2044f1f5f40acdcdded1a644ad22", - "dropbox_url": "https://www.dropbox.com/s/qpe1i6k2h7xk8l5/planning_areas.kml.gz?dl=0" + "checksum": "1bfc2044f1f5f40acdcdded1a644ad22" }, "data/input/berlin/service_roads.bin": { - "checksum": "be06e4b4136771f8e03a2ba7a5f9b8cd", - "dropbox_url": "https://www.dropbox.com/s/ybrr87nreq8g29q/service_roads.bin.gz?dl=0" + "checksum": "be06e4b4136771f8e03a2ba7a5f9b8cd" }, "data/input/krakow/footways.bin": { - "checksum": "b04c0b011e531d6d1396218523deef4a", - "dropbox_url": "https://www.dropbox.com/s/sbk48ubt9jt3tn6/footways.bin.gz?dl=0" + "checksum": "b04c0b011e531d6d1396218523deef4a" }, "data/input/krakow/krakow_center_separate_cycleways.bin": { - "checksum": "ed48534c05d85299cff01eb013bac5c3", - "dropbox_url": "https://www.dropbox.com/s/vljil5rin981uwz/krakow_center_separate_cycleways.bin.gz?dl=0" + "checksum": "ed48534c05d85299cff01eb013bac5c3" }, "data/input/krakow/krakow_center_snapped_cycleways.bin": { - "checksum": "8eeb3343858a8a065cd0136ccef23b9c", - "dropbox_url": "https://www.dropbox.com/s/endzjoyybhsv345/krakow_center_snapped_cycleways.bin.gz?dl=0" + "checksum": "8eeb3343858a8a065cd0136ccef23b9c" }, "data/input/krakow/osm/krakow_center.osm": { - "checksum": "b914bbcd42a7f769a40a90970cea35f2", - "dropbox_url": "https://www.dropbox.com/s/brj0x21w47gjocl/krakow_center.osm.gz?dl=0" + "checksum": "b914bbcd42a7f769a40a90970cea35f2" }, "data/input/krakow/osm/malopolskie-latest.osm.pbf": { - "checksum": "9505917bbacc478177e36605e89b6d77", - "dropbox_url": "https://www.dropbox.com/s/jc1d06mjasim0c3/malopolskie-latest.osm.pbf.gz?dl=0" + "checksum": "9505917bbacc478177e36605e89b6d77" }, "data/input/krakow/service_roads.bin": { - "checksum": "a702f4fa6680793c7e1047668d8d0b69", - "dropbox_url": "https://www.dropbox.com/s/cbg35iupffcfx58/service_roads.bin.gz?dl=0" + "checksum": "a702f4fa6680793c7e1047668d8d0b69" }, "data/input/london/footways.bin": { - "checksum": "95816ac4d77d857c561a61830d1998a0", - "dropbox_url": "https://www.dropbox.com/s/gz716rytdlqw6nq/footways.bin.gz?dl=0" + "checksum": "95816ac4d77d857c561a61830d1998a0" }, "data/input/london/osm/greater-london-latest.osm.pbf": { - "checksum": "ef110d0831b482bb7336c82e36b115ed", - "dropbox_url": "https://www.dropbox.com/s/egx3g3jhvyd1l1n/greater-london-latest.osm.pbf.gz?dl=0" + "checksum": "ef110d0831b482bb7336c82e36b115ed" }, "data/input/london/osm/southbank.osm": { - "checksum": "b86babace41d69a9e5b8be2310a725ae", - "dropbox_url": "https://www.dropbox.com/s/xep4ucuuzg493vk/southbank.osm.gz?dl=0" + "checksum": "b86babace41d69a9e5b8be2310a725ae" }, "data/input/london/service_roads.bin": { - "checksum": "4f651a450d9d6b73618db015c34a03ad", - "dropbox_url": "https://www.dropbox.com/s/lvols45zgdbccuo/service_roads.bin.gz?dl=0" + "checksum": "4f651a450d9d6b73618db015c34a03ad" }, "data/input/london/southbank_separate_cycleways.bin": { - "checksum": "389edd8f711e0ac7a2e677a4f8ed5085", - "dropbox_url": "https://www.dropbox.com/s/wo2ri4wgixqcq8j/southbank_separate_cycleways.bin.gz?dl=0" + "checksum": "389edd8f711e0ac7a2e677a4f8ed5085" }, "data/input/london/southbank_snapped_cycleways.bin": { - "checksum": "6cbbe9d6c102a1d35c17ddd1acd7841a", - "dropbox_url": "https://www.dropbox.com/s/9nihx0xtt9xjknq/southbank_snapped_cycleways.bin.gz?dl=0" + "checksum": "6cbbe9d6c102a1d35c17ddd1acd7841a" }, "data/input/raw_maps/ballard.bin": { - "checksum": "9321228f47483f7a14b2747e5ea84885", - "dropbox_url": "https://www.dropbox.com/s/cncmths47hqgev7/ballard.bin.gz?dl=0" + "checksum": "9321228f47483f7a14b2747e5ea84885" }, "data/input/raw_maps/berlin_center.bin": { - "checksum": "0045c35aada8114ba1c2cf0113708b2f", - "dropbox_url": "https://www.dropbox.com/s/5ivlbou6dk3uu6p/berlin_center.bin.gz?dl=0" + "checksum": "0045c35aada8114ba1c2cf0113708b2f" }, "data/input/raw_maps/downtown.bin": { - "checksum": "a01147203819f1b6f4ea893af4300c44", - "dropbox_url": "https://www.dropbox.com/s/o2xd10fqopcik7l/downtown.bin.gz?dl=0" + "checksum": "a01147203819f1b6f4ea893af4300c44" }, "data/input/raw_maps/huge_seattle.bin": { - "checksum": "77a10eb129d0d5ce61d79192bd55b996", - "dropbox_url": "https://www.dropbox.com/s/ldedc1ncxtydr3y/huge_seattle.bin.gz?dl=0" + "checksum": "77a10eb129d0d5ce61d79192bd55b996" }, "data/input/raw_maps/krakow_center.bin": { - "checksum": "d355436d13a89b6c6462a5aa4eb6720b", - "dropbox_url": "https://www.dropbox.com/s/bg61y1i1bjrtyfg/krakow_center.bin.gz?dl=0" + "checksum": "d355436d13a89b6c6462a5aa4eb6720b" }, "data/input/raw_maps/lakeslice.bin": { - "checksum": "5362657bbcdac16ac22aadf58f2a769c", - "dropbox_url": "https://www.dropbox.com/s/t6sdgj3r7jo78il/lakeslice.bin.gz?dl=0" + "checksum": "5362657bbcdac16ac22aadf58f2a769c" }, "data/input/raw_maps/montlake.bin": { - "checksum": "60776c41875cad8f79354dff8c4d3d47", - "dropbox_url": "https://www.dropbox.com/s/xgb2m8dnl7osyzh/montlake.bin.gz?dl=0" + "checksum": "60776c41875cad8f79354dff8c4d3d47" }, "data/input/raw_maps/south_seattle.bin": { - "checksum": "e29c6adc12d97b5b2b8beb643271dcfd", - "dropbox_url": "https://www.dropbox.com/s/cggt3o7mh4ulgaz/south_seattle.bin.gz?dl=0" + "checksum": "e29c6adc12d97b5b2b8beb643271dcfd" }, "data/input/raw_maps/southbank.bin": { - "checksum": "a6e3939121a21b99518f481865ef7ee0", - "dropbox_url": "https://www.dropbox.com/s/czoli9fk078ppqf/southbank.bin.gz?dl=0" + "checksum": "a6e3939121a21b99518f481865ef7ee0" }, "data/input/raw_maps/tel_aviv.bin": { - "checksum": "b6faf60108d82d7308cc15e7edd26f30", - "dropbox_url": "https://www.dropbox.com/s/zc58fib1hrui960/tel_aviv.bin.gz?dl=0" + "checksum": "b6faf60108d82d7308cc15e7edd26f30" }, "data/input/raw_maps/udistrict.bin": { - "checksum": "8dca7ce30cb5e6fa6417f8c2ce737fe2", - "dropbox_url": "https://www.dropbox.com/s/1ybin4n8m4lhvw0/udistrict.bin.gz?dl=0" + "checksum": "8dca7ce30cb5e6fa6417f8c2ce737fe2" }, "data/input/raw_maps/west_seattle.bin": { - "checksum": "4ed2b3505bd9ce9ca8158c174b8925e7", - "dropbox_url": "https://www.dropbox.com/s/7e5jomffotnt6yl/west_seattle.bin.gz?dl=0" + "checksum": "4ed2b3505bd9ce9ca8158c174b8925e7" }, "data/input/raw_maps/xian.bin": { - "checksum": "944535618cda403d0613ed485ef18072", - "dropbox_url": "https://www.dropbox.com/s/vgw6vfobljzaf1f/xian.bin.gz?dl=0" + "checksum": "944535618cda403d0613ed485ef18072" }, "data/input/screenshots/downtown.zip": { - "checksum": "0f6281f4a154cf33e7d8e0622a10f892", - "dropbox_url": "https://www.dropbox.com/s/k1y8tqbgcyvaffd/downtown.zip.gz?dl=0" + "checksum": "0f6281f4a154cf33e7d8e0622a10f892" }, "data/input/screenshots/krakow_center.zip": { - "checksum": "1aa1db83e194651a917e230c70ae897d", - "dropbox_url": "https://www.dropbox.com/s/lq5313pjaj66904/krakow_center.zip.gz?dl=0" + "checksum": "1aa1db83e194651a917e230c70ae897d" }, "data/input/screenshots/lakeslice.zip": { - "checksum": "cec91a0f2786dedc250e70c7d50dd42e", - "dropbox_url": "https://www.dropbox.com/s/1uvs2xr334fzwjn/lakeslice.zip.gz?dl=0" + "checksum": "cec91a0f2786dedc250e70c7d50dd42e" }, "data/input/screenshots/montlake.zip": { - "checksum": "2163547c4b4f7c4ed32397c1d9bd7d0d", - "dropbox_url": "https://www.dropbox.com/s/yvg1hhjg4whybmh/montlake.zip.gz?dl=0" + "checksum": "2163547c4b4f7c4ed32397c1d9bd7d0d" }, "data/input/screenshots/southbank.zip": { - "checksum": "b36aa4257d3fa625284b835e8e2c27b5", - "dropbox_url": "https://www.dropbox.com/s/pzcnetuwolkv9kw/southbank.zip.gz?dl=0" + "checksum": "b36aa4257d3fa625284b835e8e2c27b5" }, "data/input/screenshots/udistrict.zip": { - "checksum": "e45711495e86f8f7df6c2a3252fa3aef", - "dropbox_url": "https://www.dropbox.com/s/n3931wlwpikxz2c/udistrict.zip.gz?dl=0" + "checksum": "e45711495e86f8f7df6c2a3252fa3aef" }, "data/input/seattle/N47W122.hgt": { - "checksum": "0db4e23e51f7680538b0bbbc72208e07", - "dropbox_url": "https://www.dropbox.com/s/gel850r7t7bdrct/N47W122.hgt.gz?dl=0" + "checksum": "0db4e23e51f7680538b0bbbc72208e07" }, "data/input/seattle/ballard_separate_cycleways.bin": { - "checksum": "74e1dcd759d4fd4cfe55de70acea4879", - "dropbox_url": "https://www.dropbox.com/s/jzbil2qr2r4bbgo/ballard_separate_cycleways.bin.gz?dl=0" + "checksum": "74e1dcd759d4fd4cfe55de70acea4879" }, "data/input/seattle/ballard_snapped_cycleways.bin": { - "checksum": "1f25c6dac0d0c8f01b187031c4bcf58c", - "dropbox_url": "https://www.dropbox.com/s/s1tafjt0db47kte/ballard_snapped_cycleways.bin.gz?dl=0" + "checksum": "1f25c6dac0d0c8f01b187031c4bcf58c" }, "data/input/seattle/blockface.bin": { - "checksum": "add872bab9040ae911366328a230f8b5", - "dropbox_url": "https://www.dropbox.com/s/ok52innaee0zxsq/blockface.bin.gz?dl=0" + "checksum": "add872bab9040ae911366328a230f8b5" }, "data/input/seattle/blockface.kml": { - "checksum": "350bd9e59bf2af4e885a7c0741e6ee6b", - "dropbox_url": "https://www.dropbox.com/s/umqszk08zub6g7z/blockface.kml.gz?dl=0" + "checksum": "350bd9e59bf2af4e885a7c0741e6ee6b" }, "data/input/seattle/downtown_separate_cycleways.bin": { - "checksum": "8fad2366384701119defe71503ba45e0", - "dropbox_url": "https://www.dropbox.com/s/bndwgldr898thjg/downtown_separate_cycleways.bin.gz?dl=0" + "checksum": "8fad2366384701119defe71503ba45e0" }, "data/input/seattle/downtown_snapped_cycleways.bin": { - "checksum": "ece26188973856f10bcebe54b84b14da", - "dropbox_url": "https://www.dropbox.com/s/g82ecr1fvxbukem/downtown_snapped_cycleways.bin.gz?dl=0" + "checksum": "ece26188973856f10bcebe54b84b14da" }, "data/input/seattle/footways.bin": { - "checksum": "09c6aca2ad37d007c6bd40b91886ed95", - "dropbox_url": "https://www.dropbox.com/s/g7dmqbb9vpeih1e/footways.bin.gz?dl=0" + "checksum": "09c6aca2ad37d007c6bd40b91886ed95" }, "data/input/seattle/google_transit/agency.txt": { - "checksum": "75f564fcc06b1950b7b33acf9d61f696", - "dropbox_url": "https://www.dropbox.com/s/o0626nd98tse9li/agency.txt.gz?dl=0" + "checksum": "75f564fcc06b1950b7b33acf9d61f696" }, "data/input/seattle/google_transit/block.txt": { - "checksum": "bc4926e7436fe46b2a48117e2d564c9c", - "dropbox_url": "https://www.dropbox.com/s/of4ktttrgj1tfgr/block.txt.gz?dl=0" + "checksum": "bc4926e7436fe46b2a48117e2d564c9c" }, "data/input/seattle/google_transit/block_trip.txt": { - "checksum": "8d3626586ddbb1a384931215580de078", - "dropbox_url": "https://www.dropbox.com/s/kyr9mdaklxhk6os/block_trip.txt.gz?dl=0" + "checksum": "8d3626586ddbb1a384931215580de078" }, "data/input/seattle/google_transit/calendar.txt": { - "checksum": "25572f0a15b93f1fcc2c40752cc3b7de", - "dropbox_url": "https://www.dropbox.com/s/8t55thp90dfim6c/calendar.txt.gz?dl=0" + "checksum": "25572f0a15b93f1fcc2c40752cc3b7de" }, "data/input/seattle/google_transit/calendar_dates.txt": { - "checksum": "df39100d58ac380a4d530dba4bf511f3", - "dropbox_url": "https://www.dropbox.com/s/qh2pptsbffmch6v/calendar_dates.txt.gz?dl=0" + "checksum": "df39100d58ac380a4d530dba4bf511f3" }, "data/input/seattle/google_transit/fare_attributes.txt": { - "checksum": "ca5a7569e1af41e0046fe5e8865cf733", - "dropbox_url": "https://www.dropbox.com/s/x0b2dwj1zwsv6q3/fare_attributes.txt.gz?dl=0" + "checksum": "ca5a7569e1af41e0046fe5e8865cf733" }, "data/input/seattle/google_transit/fare_rules.txt": { - "checksum": "ac9dbd2b81a25a144e762b059a7781a2", - "dropbox_url": "https://www.dropbox.com/s/2flk3kn77iyswo9/fare_rules.txt.gz?dl=0" + "checksum": "ac9dbd2b81a25a144e762b059a7781a2" }, "data/input/seattle/google_transit/routes.txt": { - "checksum": "3cbe6f1230081c6dbbfab04e6ee5c628", - "dropbox_url": "https://www.dropbox.com/s/by5xoauma397zql/routes.txt.gz?dl=0" + "checksum": "3cbe6f1230081c6dbbfab04e6ee5c628" }, "data/input/seattle/google_transit/shapes.txt": { - "checksum": "aebada05d6d05c78551adb634b748e22", - "dropbox_url": "https://www.dropbox.com/s/1ta45g2sxytg3wk/shapes.txt.gz?dl=0" + "checksum": "aebada05d6d05c78551adb634b748e22" }, "data/input/seattle/google_transit/stop_times.txt": { - "checksum": "1f1d148b266142b72ab24816d76a9cee", - "dropbox_url": "https://www.dropbox.com/s/mxsc2lffrlrhixs/stop_times.txt.gz?dl=0" + "checksum": "1f1d148b266142b72ab24816d76a9cee" }, "data/input/seattle/google_transit/stops.txt": { - "checksum": "da1ff7000efdf2166d861479a69d80a4", - "dropbox_url": "https://www.dropbox.com/s/8w0fvtq3fpd32wy/stops.txt.gz?dl=0" + "checksum": "da1ff7000efdf2166d861479a69d80a4" }, "data/input/seattle/google_transit/trips.txt": { - "checksum": "e8efe1d2e130e248942188284d88ab09", - "dropbox_url": "https://www.dropbox.com/s/rtkawykjcr5cy5g/trips.txt.gz?dl=0" + "checksum": "e8efe1d2e130e248942188284d88ab09" }, "data/input/seattle/huge_seattle_separate_cycleways.bin": { - "checksum": "520aa459a115fd71cdd3965cea19cccc", - "dropbox_url": "https://www.dropbox.com/s/fdrbkxtkrzgm229/huge_seattle_separate_cycleways.bin.gz?dl=0" + "checksum": "520aa459a115fd71cdd3965cea19cccc" }, "data/input/seattle/huge_seattle_snapped_cycleways.bin": { - "checksum": "8ec684df2622622e5b30a4cab5bfed68", - "dropbox_url": "https://www.dropbox.com/s/23b9jqfpljjmeqb/huge_seattle_snapped_cycleways.bin.gz?dl=0" + "checksum": "8ec684df2622622e5b30a4cab5bfed68" }, "data/input/seattle/lakeslice_separate_cycleways.bin": { - "checksum": "3bb85b3efcea7d8a6bc17e213e61727a", - "dropbox_url": "https://www.dropbox.com/s/tykdoibm8uyn76v/lakeslice_separate_cycleways.bin.gz?dl=0" + "checksum": "3bb85b3efcea7d8a6bc17e213e61727a" }, "data/input/seattle/lakeslice_snapped_cycleways.bin": { - "checksum": "30916279d151f97fd7ff6653eaef8719", - "dropbox_url": "https://www.dropbox.com/s/orusz8jbdp3yhs8/lakeslice_snapped_cycleways.bin.gz?dl=0" + "checksum": "30916279d151f97fd7ff6653eaef8719" }, "data/input/seattle/montlake_separate_cycleways.bin": { - "checksum": "7eb7bef064d189458249d4fea13cb215", - "dropbox_url": "https://www.dropbox.com/s/fsrn01extdzti8y/montlake_separate_cycleways.bin.gz?dl=0" + "checksum": "7eb7bef064d189458249d4fea13cb215" }, "data/input/seattle/montlake_snapped_cycleways.bin": { - "checksum": "bad5e9c0a0ca11b8e73d79e47ab903a2", - "dropbox_url": "https://www.dropbox.com/s/ylgw3c6oxx1wqio/montlake_snapped_cycleways.bin.gz?dl=0" + "checksum": "bad5e9c0a0ca11b8e73d79e47ab903a2" }, "data/input/seattle/offstreet_parking.bin": { - "checksum": "a33c05e8962dfe10a7a14b9eb6413803", - "dropbox_url": "https://www.dropbox.com/s/1gknl1417hopko3/offstreet_parking.bin.gz?dl=0" + "checksum": "a33c05e8962dfe10a7a14b9eb6413803" }, "data/input/seattle/offstreet_parking.kml": { - "checksum": "e24d1c308ca739df73621846c7b7847c", - "dropbox_url": "https://www.dropbox.com/s/mn22g1ekj32zxkp/offstreet_parking.kml.gz?dl=0" + "checksum": "e24d1c308ca739df73621846c7b7847c" }, "data/input/seattle/osm/ballard.osm": { - "checksum": "f1fabfda271614393aee8c9aa4797afa", - "dropbox_url": "https://www.dropbox.com/s/kufho6vgj7fr5qw/ballard.osm.gz?dl=0" + "checksum": "f1fabfda271614393aee8c9aa4797afa" }, "data/input/seattle/osm/downtown.osm": { - "checksum": "390d049823a5be08b10eb62e8321d922", - "dropbox_url": "https://www.dropbox.com/s/g3hkytisju10bm4/downtown.osm.gz?dl=0" + "checksum": "390d049823a5be08b10eb62e8321d922" }, "data/input/seattle/osm/huge_seattle.osm": { - "checksum": "b53c5c9d9ed5d3c0d08832471161abe5", - "dropbox_url": "https://www.dropbox.com/s/869bqvgvj1gwthk/huge_seattle.osm.gz?dl=0" + "checksum": "b53c5c9d9ed5d3c0d08832471161abe5" }, "data/input/seattle/osm/lakeslice.osm": { - "checksum": "dafae542f1f70fbb4111e56d79531c02", - "dropbox_url": "https://www.dropbox.com/s/8g8hceuhjkg2ybe/lakeslice.osm.gz?dl=0" + "checksum": "dafae542f1f70fbb4111e56d79531c02" }, "data/input/seattle/osm/montlake.osm": { - "checksum": "54d1a86b873ba135f3220ddd89899bb7", - "dropbox_url": "https://www.dropbox.com/s/5seo70crmep75lk/montlake.osm.gz?dl=0" + "checksum": "54d1a86b873ba135f3220ddd89899bb7" }, "data/input/seattle/osm/south_seattle.osm": { - "checksum": "aeafea7b1d390389f0ea75a30954008e", - "dropbox_url": "https://www.dropbox.com/s/zg6vuw5yh0682bw/south_seattle.osm.gz?dl=0" + "checksum": "aeafea7b1d390389f0ea75a30954008e" }, "data/input/seattle/osm/udistrict.osm": { - "checksum": "41d0109c61665a53b5cd1bd11acf0363", - "dropbox_url": "https://www.dropbox.com/s/sw1usti80zi5l91/udistrict.osm.gz?dl=0" + "checksum": "41d0109c61665a53b5cd1bd11acf0363" }, "data/input/seattle/osm/washington-latest.osm.pbf": { - "checksum": "948d49da8aae15d99bd36e95c7c27ef2", - "dropbox_url": "https://www.dropbox.com/s/z8z0yjmb2gmd14e/washington-latest.osm.pbf.gz?dl=0" + "checksum": "948d49da8aae15d99bd36e95c7c27ef2" }, "data/input/seattle/osm/west_seattle.osm": { - "checksum": "d8a7e897774db567728f9a70337ef376", - "dropbox_url": "https://www.dropbox.com/s/mnmmeeio3houmqi/west_seattle.osm.gz?dl=0" + "checksum": "d8a7e897774db567728f9a70337ef376" }, "data/input/seattle/parcels.bin": { - "checksum": "9cd91b7fa68b13634b21be7abfa0e654", - "dropbox_url": "https://www.dropbox.com/s/zc8i4trb74lgrx5/parcels.bin.gz?dl=0" + "checksum": "9cd91b7fa68b13634b21be7abfa0e654" }, "data/input/seattle/parcels_urbansim.txt": { - "checksum": "db63d7d606e8702d12f9399e87e6a00f", - "dropbox_url": "https://www.dropbox.com/s/f7a9dt3xtd00cqi/parcels_urbansim.txt.gz?dl=0" + "checksum": "db63d7d606e8702d12f9399e87e6a00f" }, "data/input/seattle/popdat.bin": { - "checksum": "592592ec7bd0dadc7b09ee96a4d086a7", - "dropbox_url": "https://www.dropbox.com/s/g6m6sjrx3lpo55a/popdat.bin.gz?dl=0" + "checksum": "592592ec7bd0dadc7b09ee96a4d086a7" }, "data/input/seattle/service_roads.bin": { - "checksum": "550f1e72408b63781596ec26b6daa1d0", - "dropbox_url": "https://www.dropbox.com/s/2cyxiwagdi2bfkv/service_roads.bin.gz?dl=0" + "checksum": "550f1e72408b63781596ec26b6daa1d0" }, "data/input/seattle/south_seattle_separate_cycleways.bin": { - "checksum": "c5f4b5d9bf7eecdbfc8d3c7a2371f8a1", - "dropbox_url": "https://www.dropbox.com/s/spjj5x9m2ygy9p4/south_seattle_separate_cycleways.bin.gz?dl=0" + "checksum": "c5f4b5d9bf7eecdbfc8d3c7a2371f8a1" }, "data/input/seattle/south_seattle_snapped_cycleways.bin": { - "checksum": "92bb9e7d7b8d89e63ecb4d9fe54e3b7f", - "dropbox_url": "https://www.dropbox.com/s/3ut3bcakvzjag9r/south_seattle_snapped_cycleways.bin.gz?dl=0" + "checksum": "92bb9e7d7b8d89e63ecb4d9fe54e3b7f" }, "data/input/seattle/trips_2014.csv": { - "checksum": "d4a8e733045b28c0385fb81359d6df03", - "dropbox_url": "https://www.dropbox.com/s/cv5gycnstf1vr9o/trips_2014.csv.gz?dl=0" + "checksum": "d4a8e733045b28c0385fb81359d6df03" }, "data/input/seattle/udistrict_separate_cycleways.bin": { - "checksum": "ea30d6bb153f09602fd2c2f4c4ae0b22", - "dropbox_url": "https://www.dropbox.com/s/to0srtr35qsf83f/udistrict_separate_cycleways.bin.gz?dl=0" + "checksum": "ea30d6bb153f09602fd2c2f4c4ae0b22" }, "data/input/seattle/udistrict_snapped_cycleways.bin": { - "checksum": "bcea0f2da9f979c814db74d63482f9cf", - "dropbox_url": "https://www.dropbox.com/s/9siwmoeahm55ug5/udistrict_snapped_cycleways.bin.gz?dl=0" + "checksum": "bcea0f2da9f979c814db74d63482f9cf" }, "data/input/seattle/west_seattle_separate_cycleways.bin": { - "checksum": "414394c82988c9ff0de38af30cc52af0", - "dropbox_url": "https://www.dropbox.com/s/d4cfbqux3pz1pf6/west_seattle_separate_cycleways.bin.gz?dl=0" + "checksum": "414394c82988c9ff0de38af30cc52af0" }, "data/input/seattle/west_seattle_snapped_cycleways.bin": { - "checksum": "4a8e438b0795360aa7fec1ebacd64233", - "dropbox_url": "https://www.dropbox.com/s/x0qi1rxw14ccu8o/west_seattle_snapped_cycleways.bin.gz?dl=0" + "checksum": "4a8e438b0795360aa7fec1ebacd64233" }, "data/input/tel_aviv/footways.bin": { - "checksum": "4fb70e32d0cc3ddeaa8924c240bc9d5b", - "dropbox_url": "https://www.dropbox.com/s/02gtb03q5delie3/footways.bin.gz?dl=0" + "checksum": "4fb70e32d0cc3ddeaa8924c240bc9d5b" }, "data/input/tel_aviv/osm/israel-and-palestine-latest.osm.pbf": { - "checksum": "d5b0d6a26bfdedd32cc5c9c26e6fd426", - "dropbox_url": "https://www.dropbox.com/s/ccqhfnst4vm39q1/israel-and-palestine-latest.osm.pbf.gz?dl=0" + "checksum": "d5b0d6a26bfdedd32cc5c9c26e6fd426" }, "data/input/tel_aviv/osm/tel_aviv.osm": { - "checksum": "eeb7f3813a33f754eceed13766a3c236", - "dropbox_url": "https://www.dropbox.com/s/wmiut0z40xkkd8q/tel_aviv.osm.gz?dl=0" + "checksum": "eeb7f3813a33f754eceed13766a3c236" }, "data/input/tel_aviv/service_roads.bin": { - "checksum": "216407d6f112683e81973fbb11af6403", - "dropbox_url": "https://www.dropbox.com/s/5sjdqemot922tkx/service_roads.bin.gz?dl=0" + "checksum": "216407d6f112683e81973fbb11af6403" }, "data/input/tel_aviv/tel_aviv_separate_cycleways.bin": { - "checksum": "afab5c75ce130c564a111ccce361db09", - "dropbox_url": "https://www.dropbox.com/s/t5m27jm9n95uvzg/tel_aviv_separate_cycleways.bin.gz?dl=0" + "checksum": "afab5c75ce130c564a111ccce361db09" }, "data/input/tel_aviv/tel_aviv_snapped_cycleways.bin": { - "checksum": "58bcaad6a593b6981c4f4cede45c8abb", - "dropbox_url": "https://www.dropbox.com/s/4qv8f33dexqalaf/tel_aviv_snapped_cycleways.bin.gz?dl=0" + "checksum": "58bcaad6a593b6981c4f4cede45c8abb" }, "data/input/xian/footways.bin": { - "checksum": "425becbab867631415fe49edcf8f9694", - "dropbox_url": "https://www.dropbox.com/s/nyypqskbb95v29s/footways.bin.gz?dl=0" + "checksum": "425becbab867631415fe49edcf8f9694" }, "data/input/xian/osm/china-latest.osm.pbf": { - "checksum": "0108807f1dc321d5de5579622ac3f4cf", - "dropbox_url": "https://www.dropbox.com/s/n7clagxq06ppqit/china-latest.osm.pbf.gz?dl=0" + "checksum": "0108807f1dc321d5de5579622ac3f4cf" }, "data/input/xian/osm/xian.osm": { - "checksum": "4084c665ad947bb40173a43cb33fdec8", - "dropbox_url": "https://www.dropbox.com/s/ygv2ckeb0f7t5a1/xian.osm.gz?dl=0" + "checksum": "4084c665ad947bb40173a43cb33fdec8" }, "data/input/xian/service_roads.bin": { - "checksum": "c9a1a296817cfbd6c64dbe0d3389c40a", - "dropbox_url": "https://www.dropbox.com/s/0a70c642858qbna/service_roads.bin.gz?dl=0" + "checksum": "c9a1a296817cfbd6c64dbe0d3389c40a" }, "data/system/cities/seattle.bin": { - "checksum": "b9e9b4e33104749dd14ffbcd746748fa", - "dropbox_url": "https://www.dropbox.com/s/6qmpjesv2juh2ui/seattle.bin.gz?dl=0" + "checksum": "b9e9b4e33104749dd14ffbcd746748fa" }, "data/system/maps/ballard.bin": { - "checksum": "c73171860d55e178437725646cc78ab7", - "dropbox_url": "https://www.dropbox.com/s/zjavtq94i13rrmv/ballard.bin.gz?dl=0" + "checksum": "c73171860d55e178437725646cc78ab7" }, "data/system/maps/berlin_center.bin": { - "checksum": "2a0a126ecfae8d1204cb359d362e0dca", - "dropbox_url": "https://www.dropbox.com/s/rp4yi43ivlyqoil/berlin_center.bin.gz?dl=0" + "checksum": "2a0a126ecfae8d1204cb359d362e0dca" }, "data/system/maps/downtown.bin": { - "checksum": "6709080b9e4efd8dd39b6f5753bfda2c", - "dropbox_url": "https://www.dropbox.com/s/vzkif8hvqo2ep50/downtown.bin.gz?dl=0" + "checksum": "6709080b9e4efd8dd39b6f5753bfda2c" }, "data/system/maps/huge_seattle.bin": { - "checksum": "c7274af833eee6d5d0646b45e921bf9c", - "dropbox_url": "https://www.dropbox.com/s/fff3h6g06g9mirm/huge_seattle.bin.gz?dl=0" + "checksum": "c7274af833eee6d5d0646b45e921bf9c" }, "data/system/maps/krakow_center.bin": { - "checksum": "49fd1c63a8160659a05011dcc344ba02", - "dropbox_url": "https://www.dropbox.com/s/6l3iubvqz7uhmv5/krakow_center.bin.gz?dl=0" + "checksum": "49fd1c63a8160659a05011dcc344ba02" }, "data/system/maps/lakeslice.bin": { - "checksum": "da08eecbaeebbadea93d3ee96cdeaea6", - "dropbox_url": "https://www.dropbox.com/s/y2roopngq5yec2t/lakeslice.bin.gz?dl=0" + "checksum": "da08eecbaeebbadea93d3ee96cdeaea6" }, "data/system/maps/montlake.bin": { - "checksum": "59c3c1bddd2e0bf317e8a0b63e85a580", - "dropbox_url": "https://www.dropbox.com/s/clbkw35ltsr6dz5/montlake.bin.gz?dl=0" + "checksum": "59c3c1bddd2e0bf317e8a0b63e85a580" }, "data/system/maps/south_seattle.bin": { - "checksum": "9114499e2e3280305b35f2559fc4027e", - "dropbox_url": "https://www.dropbox.com/s/rouk8g6z0ec4jp3/south_seattle.bin.gz?dl=0" + "checksum": "9114499e2e3280305b35f2559fc4027e" }, "data/system/maps/southbank.bin": { - "checksum": "bba1693321fd95776ba5b6cc411aa817", - "dropbox_url": "https://www.dropbox.com/s/47zsurhkxxpw40c/southbank.bin.gz?dl=0" + "checksum": "bba1693321fd95776ba5b6cc411aa817" }, "data/system/maps/tel_aviv.bin": { - "checksum": "04bc1bc90e81624af322b390f33b1957", - "dropbox_url": "https://www.dropbox.com/s/6p68obas1fls56o/tel_aviv.bin.gz?dl=0" + "checksum": "04bc1bc90e81624af322b390f33b1957" }, "data/system/maps/udistrict.bin": { - "checksum": "02f2f0a371a89e50e2b80a7d8c2e9524", - "dropbox_url": "https://www.dropbox.com/s/fmummxsjqd5ndos/udistrict.bin.gz?dl=0" + "checksum": "02f2f0a371a89e50e2b80a7d8c2e9524" }, "data/system/maps/west_seattle.bin": { - "checksum": "bd5e15621ed2c752d2ed571c8663b3fe", - "dropbox_url": "https://www.dropbox.com/s/15avdntkp82aivo/west_seattle.bin.gz?dl=0" + "checksum": "bd5e15621ed2c752d2ed571c8663b3fe" }, "data/system/maps/xian.bin": { - "checksum": "a7cfdb82c59fa99242df14e20d5e666e", - "dropbox_url": "https://www.dropbox.com/s/ftqotsj4bx96l9q/xian.bin.gz?dl=0" + "checksum": "a7cfdb82c59fa99242df14e20d5e666e" }, "data/system/prebaked_results/lakeslice/weekday.bin": { - "checksum": "b06748aebca40aefe5092662fccdc41b", - "dropbox_url": "https://www.dropbox.com/s/73cjk9fgj8iimug/weekday.bin.gz?dl=0" + "checksum": "b06748aebca40aefe5092662fccdc41b" }, "data/system/prebaked_results/montlake/car vs bike contention.bin": { - "checksum": "e602068a44a8c2e2aa6852013e54d752", - "dropbox_url": "https://www.dropbox.com/s/hnhydaypg7dsgfe/car%20vs%20bike%20contention.bin.gz?dl=0" + "checksum": "e602068a44a8c2e2aa6852013e54d752" }, "data/system/prebaked_results/montlake/weekday.bin": { - "checksum": "04c72381efac86f446ab1c472e919cb0", - "dropbox_url": "https://www.dropbox.com/s/yjaxfy6j10if04k/weekday.bin.gz?dl=0" + "checksum": "04c72381efac86f446ab1c472e919cb0" }, "data/system/scenarios/ballard/weekday.bin": { - "checksum": "ae0d591f1386da1067e9389ebdb58547", - "dropbox_url": "https://www.dropbox.com/s/7itcvm1oh5ft3bi/weekday.bin.gz?dl=0" + "checksum": "ae0d591f1386da1067e9389ebdb58547" }, "data/system/scenarios/downtown/weekday.bin": { - "checksum": "ab1f9132a4ed12641a27492586f154cb", - "dropbox_url": "https://www.dropbox.com/s/n7lq3btuslji8sw/weekday.bin.gz?dl=0" + "checksum": "ab1f9132a4ed12641a27492586f154cb" }, "data/system/scenarios/huge_seattle/weekday.bin": { - "checksum": "16ebca93a10e77d5012eaa37c796f5db", - "dropbox_url": "https://www.dropbox.com/s/eahbd3tghgdt9y6/weekday.bin.gz?dl=0" + "checksum": "16ebca93a10e77d5012eaa37c796f5db" }, "data/system/scenarios/lakeslice/weekday.bin": { - "checksum": "c8f246737bdc077e1f16c889bc7a409b", - "dropbox_url": "https://www.dropbox.com/s/gpkwhvfscry09nt/weekday.bin.gz?dl=0" + "checksum": "c8f246737bdc077e1f16c889bc7a409b" }, "data/system/scenarios/montlake/weekday.bin": { - "checksum": "9679c6c1469dbcdaaca867e7b4303623", - "dropbox_url": "https://www.dropbox.com/s/dr03jf6oa7umylr/weekday.bin.gz?dl=0" + "checksum": "9679c6c1469dbcdaaca867e7b4303623" }, "data/system/scenarios/south_seattle/weekday.bin": { - "checksum": "d9c28ce9d855eddbc3f5082b3f6d4401", - "dropbox_url": "https://www.dropbox.com/s/gv787817n0aww7p/weekday.bin.gz?dl=0" + "checksum": "d9c28ce9d855eddbc3f5082b3f6d4401" }, "data/system/scenarios/udistrict/weekday.bin": { - "checksum": "f4d428ef447118f94e8f6b6c7ef6642b", - "dropbox_url": "https://www.dropbox.com/s/t4h56x0g3j4gi6t/weekday.bin.gz?dl=0" + "checksum": "f4d428ef447118f94e8f6b6c7ef6642b" }, "data/system/scenarios/west_seattle/weekday.bin": { - "checksum": "11e7bfcbd8d56f9e71af5e122cb3d389", - "dropbox_url": "https://www.dropbox.com/s/84qe0ut6175fyxo/weekday.bin.gz?dl=0" + "checksum": "11e7bfcbd8d56f9e71af5e122cb3d389" } } } \ No newline at end of file diff --git a/game/src/load.rs b/game/src/load.rs index 4317fe6b71..6c40a50321 100644 --- a/game/src/load.rs +++ b/game/src/load.rs @@ -155,8 +155,10 @@ mod wasm_loader { // Note that files are only gzipepd on S3. When running locally, we just symlink the // data/ directory, where files aren't compressed. let url = if cfg!(feature = "wasm_s3") { + // Anytime data with a new binary format is uploaded, the web client has to be + // re-deployed too format!( - "http://abstreet.s3-website.us-east-2.amazonaws.com/{}.gz", + "http://abstreet.s3-website.us-east-2.amazonaws.com/dev/data/{}.gz", path.strip_prefix(&abstutil::path("")).unwrap() ) } else { diff --git a/release/deploy_web.sh b/release/deploy_web.sh index 797f8ee654..bb4d666dd0 100755 --- a/release/deploy_web.sh +++ b/release/deploy_web.sh @@ -1,23 +1,24 @@ #!/bin/bash +VERSION=dev + set -e cd game wasm-pack build --release --target web -- --no-default-features --features wasm,wasm_s3 cd pkg -# Temporarily point to the Dropbox data, which is gzipped +# Temporarily remove the symlink to the data directory; it's uploaded separately by the updater tool rm -f system -ln -s ~/Dropbox/abstreet_data/data/system/ system -aws s3 sync --delete --exclude '*/osm_demo/*' . s3://abstreet -# Undo that symlink swap +aws s3 sync . s3://abstreet/$VERSION +# Undo that symlink hiding git checkout system # Set the content type for .wasm files, to speed up how browsers load them aws s3 cp \ - s3://abstreet/ \ - s3://abstreet/ \ + s3://abstreet/$VERSION \ + s3://abstreet/$VERSION \ --exclude '*' \ --include '*.wasm' \ --no-guess-mime-type \ --content-type="application/wasm" \ --metadata-directive="REPLACE" \ --recursive -echo "Have the appropriate amount of fun: http://abstreet.s3-website.us-east-2.amazonaws.com/" +echo "Have the appropriate amount of fun: http://abstreet.s3-website.us-east-2.amazonaws.com/$VERSION" diff --git a/updater/src/main.rs b/updater/src/main.rs index 1ce8163052..551d95dc61 100644 --- a/updater/src/main.rs +++ b/updater/src/main.rs @@ -9,6 +9,7 @@ use walkdir::WalkDir; use abstutil::{Entry, Manifest, Timer}; const MD5_BUF_READ_SIZE: usize = 4096; +const VERSION: &str = "dev"; #[tokio::main] async fn main() { @@ -20,9 +21,6 @@ async fn main() { "--dry" => { just_compare(); } - "--checklinks" => { - check_links().await; - } x => { println!("Unknown argument {}", x); std::process::exit(1); @@ -51,7 +49,7 @@ async fn download() { for (path, entry) in truth.entries { if local.entries.get(&path).map(|x| &x.checksum) != Some(&entry.checksum) { std::fs::create_dir_all(std::path::Path::new(&path).parent().unwrap()).unwrap(); - match curl(entry).await { + match curl(&path).await { Ok(bytes) => { println!( "> decompress {}, which is {} bytes compressed", @@ -99,7 +97,7 @@ fn just_compare() { } fn upload() { - let remote_base = "/home/dabreegster/Dropbox/abstreet_data"; + let remote_base = format!("/home/dabreegster/s3_abst_data/{}", VERSION); let mut local = generate_manifest(); let remote: Manifest = abstutil::maybe_read_json( @@ -131,56 +129,29 @@ fn upload() { std::io::copy(&mut input, &mut encoder).unwrap(); encoder.finish().unwrap(); } - - // Wait for the Dropbox client to sync - loop { - std::thread::sleep(std::time::Duration::from_millis(1000)); - println!("Waiting for {} to sync", remote_path); - if run(Command::new("dropbox").arg("filestatus").arg(&remote_path)) - .contains("up to date") - { - break; - } - } - } - entry.dropbox_url = remote - .entries - .get(path) - .map(|x| x.dropbox_url.clone().unwrap()); - // The sharelink sometimes changes when the file does. - if entry.dropbox_url.is_none() || changed { - // Dropbox crashes when trying to upload lots of tiny screenshots. :D - std::thread::sleep(std::time::Duration::from_millis(1000)); - let url = run(Command::new("dropbox").arg("sharelink").arg(remote_path)) - .trim() - .to_string(); - if !url.contains("dropbox.com") { - panic!("dropbox daemon is sad, slow down"); - } - entry.dropbox_url = Some(url); } } abstutil::write_json(format!("{}/MANIFEST.json", remote_base), &local); abstutil::write_json("data/MANIFEST.json".to_string(), &local); -} -async fn check_links() { - let client = reqwest::Client::new(); - - for (file, entry) in Manifest::load().entries { - println!("> Check remote for {}", file); - let url = entry.dropbox_url.unwrap(); - let url = format!("{}{}", &url[..url.len() - 1], "1"); - if let Err(err) = client - .head(&url) - .send() - .await - .and_then(|res| res.error_for_status()) - { - println!("{} broken: {}", url, err); - } - } + must_run_cmd( + Command::new("aws") + .arg("s3") + .arg("sync") + .arg("--delete") + .arg(format!("{}/data", remote_base)) + .arg(format!("s3://abstreet/{}/data", VERSION)), + ); + // Because of the directory structure, do this one separately, without --delete. The wasm files + // also live in /dev/. + must_run_cmd( + Command::new("aws") + .arg("s3") + .arg("cp") + .arg(format!("{}/MANIFEST.json", remote_base)) + .arg(format!("s3://abstreet/{}/MANIFEST.json", VERSION)), + ); } fn generate_manifest() -> Manifest { @@ -216,13 +187,7 @@ fn generate_manifest() -> Manifest { context.consume(&buffer[..n]); } let checksum = format!("{:x}", context.compute()); - kv.insert( - path, - Entry { - checksum, - dropbox_url: None, - }, - ); + kv.insert(path, Entry { checksum }); } Manifest { entries: kv } } @@ -384,9 +349,18 @@ fn basename(path: &str) -> String { .unwrap() } -fn run(cmd: &mut Command) -> String { - println!("> {:?}", cmd); - String::from_utf8(cmd.output().unwrap().stdout).unwrap() +fn must_run_cmd(cmd: &mut Command) { + println!("> Running {:?}", cmd); + match cmd.status() { + Ok(status) => { + if !status.success() { + panic!("{:?} failed", cmd); + } + } + Err(err) => { + panic!("Failed to run {:?}: {:?}", cmd, err); + } + } } fn rm(path: &str) { @@ -404,20 +378,17 @@ fn rm(path: &str) { } } -async fn curl(entry: Entry) -> Result, Box> { - let src = entry.dropbox_url.unwrap(); - // the ?dl=0 param at the end of each URL takes you to an interactive page - // for viewing the folder in the browser. For some reason, curl and wget can - // both get around this to download the file with no extra flags needed but - // I can't figure out how to make reqwest do that so this switches it to ?dl=1 - // which redirects to a direct download link - let src = &format!("{}{}", &src[..src.len() - 1], "1"); +async fn curl(path: &str) -> Result, Box> { + let src = format!( + "http://abstreet.s3-website.us-east-2.amazonaws.com/{}/{}.gz", + VERSION, path + ); let mut bytes = Vec::new(); println!("> download {}", src); - let mut resp = reqwest::get(src).await.unwrap(); + let mut resp = reqwest::get(&src).await.unwrap(); match resp.error_for_status_ref() { Ok(_) => {}