check static method

PackageCompatibilityResult check({
  1. required String packageConstraint,
  2. required String appVersion,
})

Checks packageConstraint (the package's declared zuraffa constraint) against appVersion (the running zuraffa version).

Implementation

static PackageCompatibilityResult check({
  required String packageConstraint,
  required String appVersion,
}) {
  final minRequired = _minimumOf(packageConstraint);
  final app = _parse(appVersion);

  if (minRequired == null || app == null) {
    // Unparseable input is never silently accepted for a mismatch
    // verdict — treat as warning with an explicit message.
    return PackageCompatibilityResult(
      PackageCompatibilityStatus.warning,
      'could not compare package constraint '
      '"$packageConstraint" with app version "$appVersion"',
    );
  }

  if (minRequired[0] != app[0]) {
    return PackageCompatibilityResult(
      PackageCompatibilityStatus.incompatible,
      'package requires zuraffa $packageConstraint '
      '(major ${minRequired[0]}) but this app runs zuraffa '
      '$appVersion (major ${app[0]})',
    );
  }

  if (minRequired[1] > app[1]) {
    return PackageCompatibilityResult(
      PackageCompatibilityStatus.warning,
      'package was generated against zuraffa '
      '${minRequired.join('.')} which is newer than the running '
      '$appVersion — some generated features may be missing',
    );
  }

  return const PackageCompatibilityResult(
    PackageCompatibilityStatus.compatible,
    'compatible',
  );
}