bestForSnap method

Future<String> bestForSnap({
  1. String to = 'install',
})

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);
}