Skip to content

Commit c9d30e7

Browse files
authored
Skip package:flutter in analyzer and dartdoc (with a bit of refactoring). (#996)
1 parent 0da169f commit c9d30e7

File tree

6 files changed

+25
-10
lines changed

6 files changed

+25
-10
lines changed

app/lib/analyzer/pana_runner.dart

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ class PanaRunner implements TaskRunner {
2626

2727
@override
2828
Future<bool> shouldSkipTask(Task task) async {
29+
if (redirectPackagePages.containsKey(task.package)) {
30+
return true;
31+
}
2932
final TaskTargetStatus status = await _analysisBackend.getTargetStatus(
3033
task.package, task.version, task.updated);
3134
if (status.shouldSkip) {

app/lib/dartdoc/dartdoc_runner.dart

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import 'package:uuid/uuid.dart';
1313

1414
import '../shared/configuration.dart' show envConfig;
1515
import '../shared/task_scheduler.dart' show Task, TaskRunner;
16+
import '../shared/utils.dart' show redirectDartdocPages;
1617

1718
import 'backend.dart';
1819
import 'models.dart';
@@ -29,6 +30,9 @@ class DartdocRunner implements TaskRunner {
2930

3031
@override
3132
Future<bool> shouldSkipTask(Task task) async {
33+
if (redirectDartdocPages.containsKey(task.package)) {
34+
return true;
35+
}
3236
final dartdocVersion = await _getDartdocVersion();
3337
final shouldRun = await dartdocBackend.shouldRunTask(task, dartdocVersion);
3438
return !shouldRun;

app/lib/dartdoc/handlers.dart

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import '../shared/handlers.dart';
1111
import '../shared/notification.dart';
1212
import '../shared/scheduler_stats.dart';
1313
import '../shared/task_client.dart';
14-
import '../shared/utils.dart' show contentType;
14+
import '../shared/utils.dart' show contentType, redirectDartdocPages;
1515

1616
import 'backend.dart';
1717

@@ -26,9 +26,6 @@ Future<shelf.Response> dartdocServiceHandler(shelf.Request request) async {
2626

2727
if (handler != null) {
2828
return handler(request);
29-
} else if (path == '/documentation/flutter' ||
30-
path.startsWith('/documentation/flutter/')) {
31-
return redirectResponse('https://docs.flutter.io/');
3229
} else if (path.startsWith('/documentation/')) {
3330
return documentationHandler(request);
3431
} else if (path.startsWith('/packages/')) {
@@ -81,6 +78,9 @@ Future<shelf.Response> documentationHandler(shelf.Request request) async {
8178
if (docFilePath == null) {
8279
return notFoundHandler(request);
8380
}
81+
if (redirectDartdocPages.containsKey(docFilePath.package)) {
82+
return redirectResponse(redirectDartdocPages[docFilePath.package]);
83+
}
8484
final String requestMethod = request.method?.toUpperCase();
8585
if (requestMethod == 'GET') {
8686
final entry = await dartdocBackend.getLatestEntry(
@@ -106,6 +106,7 @@ class DocFilePath {
106106
DocFilePath parseRequestUri(Uri uri) {
107107
final pathSegments = uri.pathSegments.where((s) => s.isNotEmpty).toList();
108108
if (pathSegments.length < 3) {
109+
// TODO: handle URLs without versions, redirect to latest stable version
109110
return null;
110111
}
111112
if (pathSegments[0] != 'documentation') {

app/lib/frontend/handlers.dart

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -458,8 +458,8 @@ Future<shelf.Response> _packageVersionHandlerHtmlCore(
458458
AnalysisExtract extract,
459459
AnalysisView analysis),
460460
{String versionName}) async {
461-
if (packageName == 'flutter') {
462-
return redirectResponse('https://flutter.io/');
461+
if (redirectPackagePages.containsKey(packageName)) {
462+
return redirectResponse(redirectPackagePages[packageName]);
463463
}
464464
final Stopwatch sw = new Stopwatch()..start();
465465
String cachedPage;

app/lib/shared/utils.dart

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,14 @@ const _knownGoodLowerCasePackages = const [
189189
'babylon',
190190
];
191191

192+
const redirectPackagePages = const <String, String>{
193+
'flutter': 'https://flutter.io/',
194+
};
195+
196+
const redirectDartdocPages = const <String, String>{
197+
'flutter': 'https://docs.flutter.io/',
198+
};
199+
192200
/// Sanity checks if the user would upload a package with a modified pub client
193201
/// that skips these verifications.
194202
/// TODO: share code to use the same validations as in

app/test/dartdoc/handlers_test.dart

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,11 +66,10 @@ void main() {
6666
new shelf.Request('GET', Uri.parse('https://www.dartdocs.org$uri')));
6767

6868
test('/documentation/flutter redirect', () async {
69-
expectRedirectResponse(
70-
await issueGet('/documentation/flutter'),
71-
'https://docs.flutter.io/',
72-
);
69+
// TODO: this should be redirect (after the url is redirected to the latest version)
70+
expectNotFoundResponse(await issueGet('/documentation/flutter'));
7371
});
72+
7473
test('/documentation/flutter/version redirect', () async {
7574
expectRedirectResponse(
7675
await issueGet('/documentation/flutter/version'),

0 commit comments

Comments
 (0)