From b69cead00ce32711e6cb449a799433267f3dbff1 Mon Sep 17 00:00:00 2001 From: Filip Hracek Date: Fri, 23 Feb 2018 22:17:39 -0800 Subject: [PATCH] Add a way to check links and redirects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Includes sitemap as of today, 23 Feb 2018. Doesn’t include an automated, CI solution. --- README.md | 36 ++++++++ tool/sitemap.txt | 235 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 271 insertions(+) create mode 100644 tool/sitemap.txt diff --git a/README.md b/README.md index 42ee0b2fae..55273195aa 100644 --- a/README.md +++ b/README.md @@ -258,3 +258,39 @@ If new sample apps have been added, update `_data/catalog/widget.json`. The entr ``` The `sample_page.dart` app will print a list of all of the `"sample"` properties that should appear in the `widget.json` file. + +## Preventing broken links + +Some form of broken links prevention is done automatically by `rake checklinks` +on every commit (through `tool/travis.sh`). But this won't see any Firebase +redirects (`rake checklinks` doesn't run the Firebase server) and it won't +check incoming links. + +Before we can move the more complete +[automated `linkcheck` solution](https://github.com/dart-lang/site-webdev/blob/master/scripts/check-links-using-fb.sh) +from dartlang.org, we recommend manually running the following. + +* First time setup: + + ``` + pub global activate linkcheck + npm install -g superstatic + ``` + +* Start the localhost Firebase server: + + ``` + superstatic --port 3474 + ``` + +* Run the link checker: + + ``` + linkcheck :3474 + ``` + + Even better, to check that old URLs are correctly redirected: + + ``` + linkcheck :3474 --input tool/sitemap.txt + ``` diff --git a/tool/sitemap.txt b/tool/sitemap.txt new file mode 100644 index 0000000000..238488b33d --- /dev/null +++ b/tool/sitemap.txt @@ -0,0 +1,235 @@ +http://localhost:3474/ +http://localhost:3474/technical-overview/ +http://localhost:3474/tos +http://localhost:3474/tos/ +http://localhost:3474/technical-overview +http://localhost:3474/faq/ +http://localhost:3474/formatting/ +http://localhost:3474/technical-overview/ +http://localhost:3474/upgrading/ +http://localhost:3474/ios-release/ +http://localhost:3474/android-release/ +http://localhost:3474/tos/ +http://localhost:3474/inspector/ +http://localhost:3474/debugging/ +http://localhost:3474/testing/ +http://localhost:3474/hot-reload/ +http://localhost:3474/using-ide/ +http://localhost:3474/downloads/Flutter-IntelliJ-cheat-sheet-WindowsLinux.pdf +http://localhost:3474/json/ +http://localhost:3474/tutorials/internationalization/ +http://localhost:3474/downloads/Flutter-IntelliJ-cheat-sheet-MacOS.pdf +http://localhost:3474/networking/ +http://localhost:3474/reading-writing-files/ +http://localhost:3474/platform-channels/ +http://localhost:3474/developing-packages/ +http://localhost:3474/using-packages/ +http://localhost:3474/tutorials/internationalization +http://localhost:3474/tutorials/internationalization/ +http://localhost:3474/routing-and-navigation/ +http://localhost:3474/text-input/ +http://localhost:3474/assets-and-images/ +http://localhost:3474/layout/ +http://localhost:3474/custom-fonts/ +http://localhost:3474/animations/ +http://localhost:3474/gestures/ +http://localhost:3474/widgets/animation/ +http://localhost:3474/flutter-for-android/ +http://localhost:3474/animations/overview.html +http://localhost:3474/catalog/samples/AnimatedListState_index/ +http://localhost:3474/widgets +http://localhost:3474/animations/staggered-animations/ +http://localhost:3474/widgets/ +http://localhost:3474/animations/hero-animations/ +http://localhost:3474/widgets/scrolling +http://localhost:3474/widgets/accessibility +http://localhost:3474/widgets/async +http://localhost:3474/widgets/accessibility/ +http://localhost:3474/widgets/async/ +http://localhost:3474/widgets/scrolling/ +http://localhost:3474/widgets/painting +http://localhost:3474/widgets/painting/ +http://localhost:3474/widgets/accessibility/ +http://localhost:3474/widgets/scrolling/ +http://localhost:3474/widgets/async/ +http://localhost:3474/widgets/painting/ +http://localhost:3474/widgets/styling +http://localhost:3474/widgets/styling/ +http://localhost:3474/widgets/interaction +http://localhost:3474/widgets/interaction/ +http://localhost:3474/widgets/animation +http://localhost:3474/widgets/animation/ +http://localhost:3474/widgets/input +http://localhost:3474/widgets/input/ +http://localhost:3474/widgets/styling/ +http://localhost:3474/widgets/interaction/ +http://localhost:3474/widgets/input/ +http://localhost:3474/widgets/assets +http://localhost:3474/widgets/assets/ +http://localhost:3474/widgets/text +http://localhost:3474/widgets/text/ +http://localhost:3474/widgets/layout +http://localhost:3474/widgets/layout/ +http://localhost:3474/widgets/cupertino +http://localhost:3474/widgets/cupertino/ +http://localhost:3474/widgets/assets/ +http://localhost:3474/widgets/text/ +http://localhost:3474/widgets/material +http://localhost:3474/widgets/basics +http://localhost:3474/widgets/material/ +http://localhost:3474/widgets/basics/ +http://localhost:3474/catalog/samples/ListView_index/ +http://localhost:3474/widgets/cupertino/ +http://localhost:3474/catalog/samples/expansion-tile-sample/ +http://localhost:3474/catalog/samples/AppBar_index/ +http://localhost:3474/catalog/samples/PopupMenuButton_index/ +http://localhost:3474/catalog/samples/tabbed-app-bar/ +http://localhost:3474/catalog/samples/basic-app-bar/ +http://localhost:3474/catalog/samples/app-bar-bottom/ +http://localhost:3474/catalog/samples/TabBarView_index/ +http://localhost:3474/catalog/samples/IconButton_index/ +http://localhost:3474/catalog/samples/TabBar_index/ +http://localhost:3474/widgets/material/ +http://localhost:3474/catalog/samples/Scaffold_index/ +http://localhost:3474/widgets/basics/ +http://localhost:3474/widgets/layout/ +http://localhost:3474/widgets/widgetindex/ +http://localhost:3474/catalog/samples +http://localhost:3474/catalog/samples/ +http://localhost:3474/catalog/samples/animated-list/ +http://localhost:3474/tutorials/animation/ +http://localhost:3474/web-analogs/ +http://localhost:3474/tutorials/interactive/ +http://localhost:3474/tutorials/layout/ +http://localhost:3474/setup-macos/ +http://localhost:3474/css/two_column.css +http://localhost:3474/catalog/samples/ +http://localhost:3474/layout +http://localhost:3474/layout/ +http://localhost:3474/web-analogs +http://localhost:3474/web-analogs/ +http://localhost:3474/assets-and-images +http://localhost:3474/assets-and-images/ +http://localhost:3474/widgets/ +http://localhost:3474/cookbook/ +http://localhost:3474/widgets-intro/ +http://localhost:3474/cookbook/networking/authenticated-requests/ +http://localhost:3474/cookbook/networking/fetch-data/ +http://localhost:3474/cookbook/lists/horizontal-list/ +http://localhost:3474/cookbook/lists/long-lists/ +http://localhost:3474/json +http://localhost:3474/json/ +http://localhost:3474/cookbook/lists/basic-list/ +http://localhost:3474/cookbook/images/network-image/ +http://localhost:3474/bootstrap-into-dart/ +http://localhost:3474/ide-setup/ +http://localhost:3474/setup/ +http://localhost:3474/getting-started/ +http://localhost:3474/support/ +http://localhost:3474/css/main.css +http://localhost:3474/css/lavish-bootstrap.css +http://localhost:3474/images/favicon.png +http://localhost:3474/setup-linux/ +http://localhost:3474/setup-windows/ +http://localhost:3474/setup-linux +http://localhost:3474/setup-windows +http://localhost:3474/setup-linux/ +http://localhost:3474/setup-windows/ +http://localhost:3474/setup-macos +http://localhost:3474/images/flutter-mark-square-100.png +http://localhost:3474/setup-macos/ +http://localhost:3474/images/homepage/hot-reload-bolt.png +http://localhost:3474/images/homepage/screenshot-1.png +http://localhost:3474/images/homepage/screenshot-2.png +http://localhost:3474/images/homepage/ios-friendlychat.png +http://localhost:3474/images/homepage/screenshot-3.png +http://localhost:3474/js/customscripts.js +http://localhost:3474/js/sidebar_toggle.js +http://localhost:3474/js/prism.js +http://localhost:3474/images/whatisflutter/hero-shrine.svg +http://localhost:3474/images/whatisflutter/diagram-widgetclass.svg +http://localhost:3474/images/whatisflutter/diagram-layercake.svg +http://localhost:3474/images/whatisflutter/diagram-state.svg +http://localhost:3474/images/intellij/trailing-comma-with.png +http://localhost:3474/images/intellij/trailing-comma-without.png +http://localhost:3474/images/releaseguide/xcode_settings.png +http://localhost:3474/images/intellij/visual-debugging.png +http://localhost:3474/images/intellij/hot-reload.gif +http://localhost:3474/images/intellij/inspector_select_example.gif +http://localhost:3474/images/intellij/dart-analysis.png +http://localhost:3474/images/intellij/switch_inspector_tree.gif +http://localhost:3474/images/intellij/main-toolbar.png +http://localhost:3474/images/intellij/log.png +http://localhost:3474/images/intellij/debug-panel.png +http://localhost:3474/images/json/ide_warning.png +http://localhost:3474/images/intellij/keymap-settings-flutter-plugin.png +http://localhost:3474/images/intellij/templates.gif +http://localhost:3474/images/PlatformChannels.png +http://localhost:3474/images/assets-and-images/icon.png +http://localhost:3474/images/intellij/assists.gif +http://localhost:3474/images/assets-and-images/android-icon-path.png +http://localhost:3474/images/assets-and-images/ios-icon-path.png +http://localhost:3474/images/assets-and-images/launch-screen.png +http://localhost:3474/images/assets-and-images/ios-launchscreen-xcode.png +http://localhost:3474/images/ic_new_releases_black_24px.svg +http://localhost:3474/images/catalog-widget-placeholder.png +http://localhost:3474/animations/staggered-animations/images/StaggeredAnimationIntervals.png +http://localhost:3474/images/fonts-example-android.png +http://localhost:3474/images/fonts-example-ios.png +http://localhost:3474/animations/hero-animations/images/hero-transition-0.png +http://localhost:3474/animations/hero-animations/images/hero-transition-1.png +http://localhost:3474/animations/hero-animations/images/hero-transition-3.png +http://localhost:3474/animations/hero-animations/images/hero-transition-2.png +http://localhost:3474/animations/hero-animations/images/photohero-class.png +http://localhost:3474/animations/hero-animations/images/radial-hero-animation.png +http://localhost:3474/images/widget-catalog/cupertino-activity-indicator.png +http://localhost:3474/animations/hero-animations/images/radial-expansion-class.png +http://localhost:3474/images/widget-catalog/cupertino-button.png +http://localhost:3474/images/widget-catalog/cupertino-dialog.png +http://localhost:3474/images/widget-catalog/cupertino-slider.png +http://localhost:3474/images/widget-catalog/cupertino-switch.png +http://localhost:3474/images/widget-catalog/cupertino-nav-bar.png +http://localhost:3474/images/widget-catalog/cupertino-tab-bar.png +http://localhost:3474/tutorials/animation/images/AnimatedBuilder-WidgetTree.png +http://localhost:3474/tutorials/interactive/images/tapbox-active-state.png +http://localhost:3474/tutorials/interactive/images/favorited-not-favorited.png +http://localhost:3474/tutorials/interactive/images/lakes.jpg +http://localhost:3474/tutorials/interactive/images/tapbox-inactive-state.png +http://localhost:3474/images/setup/xcode-account.png +http://localhost:3474/images/setup/trust-computer.png +http://localhost:3474/images/setup/xcode-unique-bundle-id.png +http://localhost:3474/tutorials/layout/images/lakes.jpg +http://localhost:3474/tutorials/layout/images/title-section-diagram.png +http://localhost:3474/tutorials/layout/images/lakes-icons.png +http://localhost:3474/tutorials/layout/images/button-section-diagram.png +http://localhost:3474/tutorials/layout/images/lakes-icons-visual.png +http://localhost:3474/tutorials/layout/images/lakes-diagram.png +http://localhost:3474/tutorials/layout/images/hello-world.png +http://localhost:3474/tutorials/layout/images/pavlova-left-column-diagram.png +http://localhost:3474/tutorials/layout/images/sample-flutter-layout.png +http://localhost:3474/tutorials/layout/images/row-diagram.png +http://localhost:3474/tutorials/layout/images/column-diagram.png +http://localhost:3474/tutorials/layout/images/row-spaceevenly-visual.png +http://localhost:3474/tutorials/layout/images/pavlova-diagram.png +http://localhost:3474/tutorials/layout/images/column-visual.png +http://localhost:3474/tutorials/layout/images/layout-too-large.png +http://localhost:3474/tutorials/layout/images/row-expanded-visual.png +http://localhost:3474/tutorials/layout/images/packed.png +http://localhost:3474/tutorials/layout/images/widget-tree-pavlova-rating-row.png +http://localhost:3474/tutorials/layout/images/row-expanded-2-visual.png +http://localhost:3474/tutorials/layout/images/pavlova-large-annotated.png +http://localhost:3474/tutorials/layout/images/margin-padding-border.png +http://localhost:3474/tutorials/layout/images/widget-tree-pavlova-icon-row.png +http://localhost:3474/tutorials/layout/images/listview.png +http://localhost:3474/tutorials/layout/images/container.png +http://localhost:3474/tutorials/layout/images/gridview-count-flutter-gallery.png +http://localhost:3474/tutorials/layout/images/gridview-extent.png +http://localhost:3474/tutorials/layout/images/listview-flutter-gallery.png +http://localhost:3474/tutorials/layout/images/card.png +http://localhost:3474/tutorials/layout/images/stack.png +http://localhost:3474/tutorials/layout/images/stack-flutter-gallery.png +http://localhost:3474/tutorials/layout/images/listtile-flutter-gallery.png +http://localhost:3474/tutorials/layout/images/card-flutter-gallery.png +http://localhost:3474/images/flutter-starter-app-ios.png +http://localhost:3474/images/thumbs-up-support.png +http://localhost:3474/images/flutter-starter-app-android.png