public async Task ConvertOrInstallOrUpdateInternal(IAbsoluteDirectoryPath path, bool force,
StatusRepo statusRepo, ModState modState, IAbsoluteDirectoryPath packPath)
{
if (path == null)
{
throw new ArgumentNullException(nameof(path));
}
if (statusRepo == null)
{
throw new ArgumentNullException(nameof(statusRepo));
}
if (modState == null)
{
throw new ArgumentNullException(nameof(modState));
}
_path = path;
var opts = GetOptions(statusRepo, packPath.ToString(), force);
if (!modState.Exists)
{
await Install(opts).ConfigureAwait(false);
return;
}
var updateAvailable = modState.State != ContentState.Uptodate;
if (modState.DoesRepoExist())
{
await Update(opts, null, !updateAvailable).ConfigureAwait(false);
}
else
{
var repo = Convert(opts);
await Update(opts, repo).ConfigureAwait(false);
}
}