findBest method
Implementation
Future<String> findBest(String to) async {
await boot();
final methods = package.methods ?? [];
final defaults = package.defaults ?? [];
if (distro == 'debian' || distroLike.contains('debian')) {
if (methods.contains('apt') || defaults.contains('apt')) {
return await bestForApt(to: to);
}
}
if (distroLike.contains('arch')) {
if (methods.contains('pacman') || defaults.contains('pacman')) {
return await bestForArch(to: to);
}
}
if (distro == 'fedora' || distro == 'rhel' || distroLike.contains('rhel') || distroLike.contains('fedora')) {
if (methods.contains('dnf') || defaults.contains('dnf')) {
return await bestForFedora(to: to);
}
}
if (distro == 'android') {
if (methods.contains('termux') || defaults.contains('termux')) {
return await bestForAndroid(to: to);
}
}
if (distro == 'opensuse' ||
distro == 'sles' ||
distroLike.contains('sles') ||
distroLike.contains('opensuse') ||
distroLike.contains('suse')) {
if (methods.contains('zypper') || defaults.contains('zypper')) {
return await bestForOpenSUSE(to: to);
}
}
if (distro == 'macos' || distro == 'darwin' || distroLike.contains('darwin') || distroLike.contains('macos')) {
if (methods.contains('brew') || defaults.contains('brew')) {
return await bestForMacOS(to: to);
}
}
if (distro == 'windows') {
if (methods.contains('choco') || defaults.contains('choco')) {
return await bestForWindows(to: to);
}
}
if (distro == 'clear-linux-os' || distroLike.contains('clear-linux-os')) {
if (methods.contains('swupd') || defaults.contains('swupd')) {
return await bestForClearLinux(to: to);
}
}
if (Global.hasFlatpak) {
if (methods.contains('flatpak')) return await bestForFlatpak(to: to);
}
if (Global.hasSnap) {
if (methods.contains('snap') || defaults.contains('snap')) {
return await bestForSnap(to: to);
}
}
if (methods.contains('appimage')) {
return await bestForAppImage(to: to);
}
return await bestForAny(to: to);
}