private void HandleCompilePackageListStatusComplete(Action action) { IsWorking.SetValue(false); Operation.SetValue(null); PackageListStatus.SetValue((PackageListStatus)action.Payload); }
private static void SyncProjectInternal(PackageListStatus packageListStatus, Action <OperationResult> onComplete) { if (packageListStatus.IsProjectUpToDate) { onComplete(new OperationResult()); return; } var operation = new AsyncOperation(); foreach (var packageStatus in packageListStatus.Packages) { var version = packageStatus.RequiredVersion; var packageName = packageStatus.PackageName; var gitUrl = packageStatus.GitUrl; var relativeInstallDirectory = Settings.RelativePackagesDirectoryPath + packageName; var absoluteInstallDirectory = Settings.AbsolutePackagesDirectoryPath + packageName; if (packageStatus.IsMissing) { operation.Add(new AddSubmoduleTask(gitUrl, relativeInstallDirectory)); operation.Add(new CheckoutSubmoduleTask(absoluteInstallDirectory, version)); } else if (packageStatus.IsOnWrongVersion) { operation.Add(new CheckoutSubmoduleTask(absoluteInstallDirectory, version)); } } operation.Execute(onComplete); }
public static AsyncOperation CompilePackageListStatus() { var operation = new AsyncOperation(); var packageListStatus = new PackageListStatus(); foreach (var package in RootStore.Instance.Packages.InstalledPackages.Value.Packages) { var packageStatus = new PackageStatus { RequiredVersion = package.Version, PackageName = package.Name, GitUrl = package.GitUrl }; packageListStatus.Packages.Add(packageStatus); var packageDirectory = Settings.AbsolutePackagesDirectoryPath + package.Name; if (!Directory.Exists(packageDirectory)) { packageStatus.IsMissing = true; continue; } var getGitBranchOrTagTask = new GetGitBranchOrTagTask(package); var packageVersion = package.Version; operation.Add(getGitBranchOrTagTask, (result, op) => { packageStatus.IsOnWrongVersion = result.Data != packageVersion; }); } operation.AddSync(() => { Debug.Log("Project package status: "); foreach (var package in packageListStatus.Packages) { Debug.Log(package); } Debug.Log("The project is " + (packageListStatus.IsProjectUpToDate ? "" : "not ") + "up to date"); return(new Result <PackageListStatus>(packageListStatus)); }, (result, op) => { op.Complete(result); }); return(operation); }
public static AsyncOperation SyncProject() { var tasks = new AsyncOperation(); PackageListStatus packageListStatus = null; // Compile package list status tasks.Add(new BasicTask <OperationResult>(CompileProjectPackageListStatus), (result, op) => { if (result.IsError) { Debug.LogError("Failed to compile package status"); Debug.LogError(result.Error.Message); return; } packageListStatus = ((Result <PackageListStatus>)result).Data; }); // Sync project tasks.Add(new BasicTask <OperationResult>(onComplete => SyncProjectInternal(packageListStatus, onComplete))); return(tasks); }
private void HandleCompilePackageListStatusStarted(Action action) { PackageListStatus.SetValue(null); IsWorking.SetValue(true); Operation.SetValue("Compiling status of each package"); }