bestForSnap method
Determines the best installation method for package managers that work on any operating system.
The to parameter is the installation target.
Implementation
Future<String> bestForSnap({String to = 'install'}) async {
// @TODO: Add support for hasDefault and xSUDO and global update.
final methods = package.methods ?? [];
final hasMethod = methods.contains('snap');
final defaults = package.defaults ?? [];
final hasDefault = defaults.contains('snap');
if (hasMethod || hasDefault) {
final String? snap = await Executable('snap').find();
final String? bestSnap = snap;
if (bestSnap != null) {
// no update command available, only upgrade
if (hasDefault) {
return '${Global.sudoPath} $bestSnap $to ${package.name}';
}
return '${to}_snap "${Global.sudoPath} $bestSnap"';
}
}
stopIfForcedMethodNotFound();
return await bestForAny(to: to);
}