OSDN Git Service

Merge branch 'master' of git.sourceforge.jp:/gitroot/applistation/AppliStation
[applistation/AppliStation.git] / na-get-lib / NaGet.SubCommands / NaGetUpdate.cs
index f1533de..6198921 100644 (file)
@@ -65,7 +65,7 @@ namespace NaGet.SubCommands
                                        repoList = NaGet.Utils.GetDeserializedObject<RepositoriesList>(NaGet.Env.RepositoriesListFile);\r
                                }\r
                                \r
-                               foreach (RepositoryInfo repo in repoList.Repositories) {\r
+                               foreach (RepositoryInfo repo in repoList.EnabledRepositories) {\r
                                        taskSetNames.Add(string.Format("リスト取得: {0}", repo.Url.Href));\r
                                }\r
                                taskSetNames.Add(string.Format("リスト更新: {0}", NaGet.Env.PackageListFile));\r
@@ -97,7 +97,8 @@ namespace NaGet.SubCommands
                                                        RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, "ネットワークに接続できませんでした。ネットワークが切断されているか、ファイアウォールによって遮断された可能性があります。");\r
                                                }\r
                                        } finally {\r
-                                               currentTaskSetIndex = repoList.Repositories.Length + 1;\r
+                                               int numOfEnabledRepos = NaGet.Utils.IEnumerable2Array(repoList.EnabledRepositories).Length;\r
+                                               currentTaskSetIndex = numOfEnabledRepos + 1;\r
                                        }\r
                                        packageListsDownloaded = true;\r
                                }\r
@@ -113,19 +114,28 @@ namespace NaGet.SubCommands
                private void runDownloadPackages()\r
                {\r
                        PackageList<Package> avaiablePackageList = new PackageList<Package>();\r
-                       foreach(RepositoryInfo repo in repoList.Repositories) {\r
+                       foreach(RepositoryInfo repo in repoList.EnabledRepositories) {\r
                                RaiseTaskSetEvent(NaGetTaskSetEventType.STARTED_TASKSET, TaskSetNames[currentTaskSetIndex]);\r
                                \r
                                string tmpfileName = Path.GetTempFileName();\r
                                try {\r
                                        Downloader.Download(repo.Url.Href, tmpfileName);\r
                                        \r
-                                       PackageList<Package> pkgList = NaGet.Utils.GetDeserializedObject<PackageList<Package>>(tmpfileName);\r
-                                       \r
-                                       // RepositoryReferenceの名前を読み込む // TODO RepositoryReferenceの名前を読み込む処理はここでいいのか?\r
-                                       repo.Name = (string.IsNullOrEmpty(pkgList.Name))? repo.Name : pkgList.Name;\r
-                                       \r
-                                       avaiablePackageList.AddPackages(pkgList.Packages);\r
+                                       if (repo.Type == RepositoryType.APPLISTATION_NATIVE_XML_1_0) {\r
+                                               try {\r
+                                                       PackageList<Package> pkgList = NaGet.Utils.GetDeserializedObject<PackageList<Package>>(tmpfileName);\r
+                                                       pkgList.FixPackageListName(); // PackageListNameとの紐付けを行う\r
+                                                       \r
+                                                       // RepositoryReferenceの名前を読み込む // TODO RepositoryReferenceの名前を読み込む処理はここでいいのか?\r
+                                                       repo.Name = (string.IsNullOrEmpty(pkgList.Name))? repo.Name : pkgList.Name;\r
+                                                       \r
+                                                       avaiablePackageList.AddPackages(pkgList.Packages);\r
+                                               } catch (InvalidOperationException) {\r
+                                                       RaiseTaskSetEvent(NaGetTaskSetEventType.ERROR, string.Format("Repository {0} does not have a AppliStation Native XML softlist.", repo.Name ?? repo.Url.Href));\r
+                                               }\r
+                                       } else {\r
+                                               RaiseTaskSetEvent(NaGetTaskSetEventType.WARNING, string.Format("Repository {0} is illegal type.", repo.Name ?? repo.Url.Href));\r
+                                       }\r
                                } finally {\r
                                        if (File.Exists(tmpfileName)) {\r
                                                File.Delete(tmpfileName);\r