public static void Menu_DownloadLatestDugite()
    {
        LogHelper.LogAdapter = new UnityLogAdapter();

        var unityAssetsPath          = Application.dataPath;
        var unityApplication         = EditorApplication.applicationPath;
        var unityApplicationContents = EditorApplication.applicationContentsPath;
        var extensionInstallPath     = Application.dataPath.ToNPath().Parent;
        var unityVersion             = Application.unityVersion;
        var env = new DefaultEnvironment();

        env.Initialize(unityVersion, extensionInstallPath, unityApplication.ToNPath(),
                       unityApplicationContents.ToNPath(), unityAssetsPath.ToNPath());
        env.InitializeRepository();
        TaskManager.Instance.Initialize(new UnityUIThreadSynchronizationContext());

        var installer = new GitInstaller.GitInstallDetails(env.RepositoryPath, env);
        var manifest  = DugiteReleaseManifest.Load(installer.GitManifest, GitInstaller.GitInstallDetails.GitPackageFeed, env);

        var downloader   = new Downloader();
        var downloadPath = env.RepositoryPath.Combine("downloads");

        foreach (var asset in manifest.Assets)
        {
            downloadPath.Combine(asset.Url.Filename).DeleteIfExists();
            downloader.QueueDownload(asset.Url, downloadPath, retryCount: 3);
        }

        downloader.Progress(p => {
            TaskManager.Instance.RunInUI(() => {
                if (EditorUtility.DisplayCancelableProgressBar(p.Message, p.InnerProgress?.InnerProgress?.Message ?? p.InnerProgress?.Message ?? p.Message,
                                                               p.Percentage))
                {
                    downloader.Cancel();
                }
            });
        }).FinallyInUI((success, ex) => {
            EditorUtility.ClearProgressBar();
            if (success)
            {
                EditorUtility.DisplayDialog("Download done", downloadPath, "Ok");
            }
            else
            {
                EditorUtility.DisplayDialog("Error!", ex.GetExceptionMessageOnly(), "Ok");
            }
        }).Start();
    }
示例#2
0
 public void InitializeRepository(NPath?expectedPath = null)
 {
     defaultEnvironment.InitializeRepository(expectedPath);
 }