OSDN Git Service

AppliStation-all,NaGetTaskクラスをTaskクラスに改名他
[applistation/AppliStation.git] / na-get-lib / NaGet.SubCommands / NaGetUpdate.cs
index d16011d..2a0c5a8 100644 (file)
@@ -4,6 +4,7 @@ using NaGet.Packages;
 using NaGet.Packages.Install;\r
 using NaGet.Net;\r
 using NaGet.SubCommands;\r
+using NaGet.Tasks;\r
 \r
 namespace NaGet.SubCommands\r
 {\r
@@ -25,6 +26,11 @@ namespace NaGet.SubCommands
                        get {\r
                                if (downloader == null) {\r
                                        downloader = new Downloader();\r
+                                       downloader.DownloadEventRaised += delegate(object sender, DownloadEventArgs e) {\r
+                                               if (e.Type == DownloadEventType.DOWNLOADING && e.ProgressPercent > 0) {\r
+                                                       RaiseTaskSetEvent(NaGetTaskSetEventType.PING, string.Empty, GetProgressPercent(NaGetTaskSetEventType.PING, e.ProgressPercent));\r
+                                               }\r
+                                       };\r
                                }\r
                                return downloader;\r
                        }\r
@@ -56,14 +62,8 @@ namespace NaGet.SubCommands
                        \r
                        System.Collections.Generic.List<string> taskSetNames = new System.Collections.Generic.List<string>();\r
                        if (downloadPackageLists) {\r
-                               if ((! File.Exists(NaGet.Env.RepositoriesListFile)) && File.Exists(NaGet.Env.ProviderListFile)) {\r
-                                       // repos.list.xmlがなくてprovider.list.txtがあるとき、マイグレートする。\r
-                                       repoList = RepositoriesList.MigrateFromProviderListTxt(NaGet.Env.ProviderListFile);\r
-                                       NaGet.Utils.PutSerializeObject(NaGet.Env.RepositoriesListFile, repoList);\r
-                               } else {\r
-                                       // repos.list.xmlがあるとき、そこからよみとる。\r
-                                       repoList = NaGet.Utils.GetDeserializedObject<RepositoriesList>(NaGet.Env.RepositoriesListFile);\r
-                               }\r
+                               // repos.list.xmlがあるとき、そこからよみとる。\r
+                               repoList = NaGet.Utils.GetDeserializedObject<RepositoriesList>(NaGet.Env.RepositoriesListFile);\r
                                \r
                                foreach (RepositoryInfo repo in repoList.EnabledRepositories) {\r
                                        taskSetNames.Add(string.Format("リスト取得: {0}", repo.Url.Href));\r
@@ -86,9 +86,10 @@ namespace NaGet.SubCommands
                                if (downloadPackageLists) {\r
                                        packageListsDownloaded = false;\r
                                        try {\r
-                                               runDownloadPackages();\r
-                                       } catch (NaGetTaskCanceledException) {\r
+                                               runDownloadPackageLists();\r
+                                       } catch (TaskCanceledException) {\r
                                                RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "リストのダウンロード処理がキャンセルされました");\r
+                                               pkgListMan.LoadPackageLists();\r
                                        } catch (System.Net.WebException e) {\r
                                                RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, e.Message);\r
                                                if (System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()) {\r
@@ -96,6 +97,7 @@ namespace NaGet.SubCommands
                                                } else {\r
                                                        RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "ネットワークに接続できませんでした。ネットワークが切断されているか、ファイアウォールによって遮断された可能性があります。");\r
                                                }\r
+                                               pkgListMan.LoadPackageLists();\r
                                        } finally {\r
                                                int numOfEnabledRepos = NaGet.Utils.IEnumerable2Array(repoList.EnabledRepositories).Length;\r
                                                currentTaskSetIndex = numOfEnabledRepos + 1;\r
@@ -111,7 +113,7 @@ namespace NaGet.SubCommands
                        RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED, "終了", 100);\r
                }\r
                \r
-               private void runDownloadPackages()\r
+               private void runDownloadPackageLists()\r
                {\r
                        PackageList<Package> avaiablePackageList = new PackageList<Package>();\r
                        foreach(RepositoryInfo repo in repoList.EnabledRepositories) {\r
@@ -145,8 +147,8 @@ namespace NaGet.SubCommands
                                        RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, string.Format("レポジトリ'{0}'のURLが不正なため、ソフトリストは取得できませんでした。", repo.Name ?? repo.Url.Href));\r
                                }\r
                                \r
+                               RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                                currentTaskSetIndex ++;\r
-                               RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
                        }\r
                        \r
                        // TODO 暫定的にかならず常にrepositoryリストに書き込む。\r
@@ -157,8 +159,8 @@ namespace NaGet.SubCommands
                        RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                        pkgListMan.availablePkgList = avaiablePackageList; // Mediatorのリストを更新\r
                        pkgListMan.SaveAvailablePackageList();\r
+                       RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                        currentTaskSetIndex ++;\r
-                       RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
                }\r
                \r
                private void runLocalUpdate()\r
@@ -167,15 +169,15 @@ namespace NaGet.SubCommands
                        RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                        pkgListMan.DetectInstalledPkgs();\r
                        pkgListMan.SaveInstalledPackageList();\r
+                       RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                        currentTaskSetIndex++;\r
-                       RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
                \r
                        // システムにインストールされているリストの更新\r
                        RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                        pkgListMan.DetectSystemInstalledPkgs();\r
                        pkgListMan.SaveSystemInstalledPackageList();\r
+                       RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                        currentTaskSetIndex++;\r
-                       RaiseTaskSetEvent(NaGetTaskSetEventType.COMPLETED_TASKSET, TaskSetNames[currentTaskSetIndex-1]);\r
                }\r
                \r
                public override bool Cancel()\r