// Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'dart:async';

import 'package:pub_semver/pub_semver.dart';

import '../validator.dart';

/// Validates that a package's flutter constraint doesn't contain an upper bound
class FlutterConstraintValidator extends Validator {
  static const explanationUrl =
      'https://dart.dev/go/flutter-upper-bound-deprecation';

  @override
  Future validate() async {
    final environment = package.pubspec.fields['environment'];
    if (environment is Map) {
      final flutterConstraint = environment['flutter'];
      if (flutterConstraint is String) {
        final constraint = VersionConstraint.parse(flutterConstraint);
        if (constraint is VersionRange && constraint.max != null) {
          final replacement = constraint.min == null
              ? 'You can replace the constraint with `any`.'
              : 'You can replace that with '
                  'just the lower bound: `>=${constraint.min}`.';

          warnings.add('''
The Flutter constraint should not have an upper bound.
In your pubspec.yaml the constraint is currently `$flutterConstraint`.

$replacement

See $explanationUrl''');
        }
      }
    }
  }
}
