import method

String import(
  1. String i, {
  2. required String at,
})

Implementation

String import(String i, {required String at}) {
  var u = Uri.parse(i);

  var atPkg = _resolve("${pkgName}/${p.relative(at, from: pkgRoot.path)}");

  if (u.scheme == "package") {
    var importPkg = _resolve(u.path);

    if (importPkg == atPkg ||
        importPkg == atPkg.replaceFirst("${pkgName}/src/", "${pkgName}/")) {
      print("[pubtidy] should not import entry `${importPkg}` at ${at}");
    }

    return "${u.scheme}:${_resolve(u.path)}";
  }

  if (u.scheme != "") {
    return i;
  }

  if (i.startsWith("../")) {
    var fullPath = p.relative(
      p.normalize(p.join(p.dirname(at), i)),
      from: pkgRoot.path,
    );

    var importPkg = _resolve("${pkgName}/${fullPath}");

    print("[${atPkg}] ${at}");
    print("[${importPkg}] ${fullPath}");

    if (importPkg != atPkg) {
      return "package:${importPkg}";
    }
  }

  return i;
}