fromLine static method

DartInstalledCliPackage? fromLine(
  1. String line
)

Parses a dart installed line, null if it is not one (i.e. No Dart CLI tools installed.).

Implementation

static DartInstalledCliPackage? fromLine(String line) {
  var text = line.trim();
  String? status;
  final statusMatch = _statusRegExp.firstMatch(text);
  if (statusMatch != null) {
    status = statusMatch.group(1);
    text = text.substring(0, statusMatch.start);
  }
  final nameEnd = text.indexOf(' ');
  if (nameEnd <= 0) {
    return null;
  }
  final name = text.substring(0, nameEnd);
  var rest = text.substring(nameEnd + 1);
  final versionEnd = rest.indexOf(' ');
  final versionText = versionEnd < 0 ? rest : rest.substring(0, versionEnd);
  final Version version;
  try {
    version = Version.parse(versionText);
  } catch (_) {
    return null;
  }
  rest = versionEnd < 0 ? '' : rest.substring(versionEnd + 1);
  if (rest.isEmpty) {
    return DartInstalledCliPackage(
      name: name,
      version: version,
      source: sourceHosted,
      status: status,
    );
  }
  final git = _gitRegExp.firstMatch(rest);
  if (git != null) {
    return DartInstalledCliPackage(
      name: name,
      version: version,
      source: sourceGit,
      gitUrl: git.group(1),
      gitRef: git.group(2),
      status: status,
    );
  }
  final unknown = _unknownRegExp.firstMatch(rest);
  if (unknown != null) {
    return DartInstalledCliPackage(
      name: name,
      version: version,
      source: sourceUnknown,
      status: status,
    );
  }
  final path = _pathRegExp.firstMatch(rest);
  if (path != null) {
    return DartInstalledCliPackage(
      name: name,
      version: version,
      source: sourcePath,
      path: path.group(1),
      lastModified: path.group(2),
      status: status,
    );
  }
  return null;
}