bestForOpenSUSE method

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

Determines the best installation method for OpenSUSE.

The to parameter is the installation target.

Implementation

Future<String> bestForOpenSUSE({String to = 'install'}) async {
  final methods = package.methods ?? [];
  final hasMethod = methods.contains('zypper');

  final defaults = package.defaults ?? [];
  final hasDefault = defaults.contains('zypper');

  if (hasMethod || hasDefault) {
    final zypper = await Executable('zypper').find();

    if (zypper != null) {
      Global.updateCommand = '${Global.sudoPath} $zypper refresh || $errorOnUpdate';
      if (hasDefault) {
        return '${Global.sudoPath} $zypper --non-interactive $to ${package.name}';
      }
      return '${to}_zypper "${Global.sudoPath} $zypper --non-interactive"';
    }
  }

  if (forceMethod) {
    leave(message: 'No suitable package manager found. [FORCED: $preferredMethod]', exitCode: 1);
  }

  return await bestForAny(to: to);
}