getMyVersionConstraint function

Future<PubDependencyReference> getMyVersionConstraint({
  1. String? name,
  2. String? localPubspecFile,
  3. bool published = true,
})

Implementation

Future<PubDependencyReference> getMyVersionConstraint({
  String? name,
  String? localPubspecFile,
  bool published = true,
}) async {
  PubSpec? sourcePubspec;

  try {
    if (localPubspecFile != null) {
      var loadFile = PubSpec.loadFile(localPubspecFile);
      sourcePubspec = await loadFile;
      name ??= sourcePubspec.name;
      assert(name == sourcePubspec.name, "Name and pubspec should match");
    }
  } catch (e) {
    throw DartBomException(
        'ERROR: Unable to parse ${localPubspecFile} as a pubspec.yaml: $e', 2);
  }

  String _name() =>
      _expect<String>(name, 'No pubspec name could be determined!');

  Version? versionToUse = published
      ? (await getLastVersionsForPackage(_name(),
          publishedTo: sourcePubspec?.publishTo))
      : _expect(sourcePubspec,
              'To use non-published version, you must have a locally checked out copy')
          .version;

  if (sourcePubspec?.publishTo == noneUrl || versionToUse == null) {
    return PubDependencyReference(
      _name(),
      PathReference(
        File(_expect(localPubspecFile,
                'Expected a local checked out copy for publish_to: none project'))
            .parent
            .absolute
            .path,
      ),
    );
  } else if (sourcePubspec?.publishTo != null) {
    return PubDependencyReference(
        _name(),
        ExternalHostedReference(_name(), sourcePubspec!.publishTo?.toString(),
            VersionConstraint.compatibleWith(versionToUse), true));
  } else {
    return PubDependencyReference(_name(),
        HostedReference(VersionConstraint.compatibleWith(versionToUse)));
  }
}