\r
public void CheckUpgrade()\r
{\r
- PackageList<Package> packageList = pkgListMan.AvailablePkgList;\r
- \r
- VersionComparetor verComp = new VersionComparetor();\r
- \r
- foreach (InstalledPackage pkg in pkgListMan.InstalledPkgList) {\r
- Package avaiablePkg = packageList.GetPackageForName(pkg.Name);\r
+ foreach (Package pkg in UpgradeFinder.GetUpgradePackages(pkgListMan)) {\r
+ bool isSystem = false;\r
+ Package instPkg = null;\r
\r
- if (avaiablePkg != null) {\r
- if (verComp.Compare(pkg.Version, avaiablePkg.Version) < 0 &&\r
- pkgListMan.InstalledPkgList.GetPackageForPackage(pkg.Name, avaiablePkg.Version) == null) {\r
- \r
- Console.WriteLine("{0} ({1}) => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version);\r
+ instPkg = pkgListMan.SystemInstalledPkgList.GetPackageForName(pkg.Name);\r
+ if (instPkg != null) {\r
+ isSystem = true;\r
+ } else {\r
+ instPkg = pkgListMan.InstalledPkgList.GetPackageForName(pkg.Name);\r
+ if (instPkg != null) {\r
+ isSystem = false;\r
+ } else {\r
+ System.Diagnostics.Debug.Fail("internal error.");\r
}\r
}\r
- }\r
- foreach (InstalledPackage pkg in pkgListMan.SystemInstalledPkgList) {\r
- Package avaiablePkg = packageList.GetPackageForName(pkg.Name);\r
\r
- if (avaiablePkg != null) {\r
- if (verComp.Compare(pkg.Version, avaiablePkg.Version) < 0 &&\r
- pkgListMan.SystemInstalledPkgList.GetPackageForPackage(pkg.Name, avaiablePkg.Version) == null) {\r
- \r
- Console.WriteLine("{0} ({1})@sys => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version);\r
- }\r
- }\r
+ Console.WriteLine("{0} ({1}){3} => ({2})", pkg.Name, instPkg.Version, pkg.Version, (isSystem)? "@sys" : "");\r
}\r
}\r
\r
\r
installations = new Installation[downloadList.Count];\r
for (int i = 0; i < installations.Length; i++) {\r
- installations[i] = new Installation((Package) downloadList[i]);\r
+ installations[i] = new Installation(downloadList[i]);\r
}\r
}\r
\r
Environment.Exit(0);\r
}\r
\r
- {\r
- int i = 0;\r
- foreach (Installation inst in installations) {\r
- i++;\r
- \r
- if (! inst.IsInstallablePackage()) {\r
- Console.WriteLine("E:{0} {1} can not be installed.", i, inst.ToString());\r
- continue;\r
- }\r
- \r
- try {\r
- Console.Write("Get:{0} {1}", i, inst.ToString());\r
- inst.Download(downloader);\r
- Console.WriteLine(" ...Done");\r
- } catch (Exception e) {\r
- Console.WriteLine("E: "+e.Message);\r
- throw new ApplicationException(string.Format("Failed to download {0}", inst.ToString()), e);\r
- }\r
+ NaGet.SubCommands.NaGetDownloadToCache tasks = new NaGet.SubCommands.NaGetDownloadToCache(pkgListMan, installations);\r
+ tasks.TaskQueryRaised += delegate(object sender, NaGetTaskQueryArgs e) {\r
+ char result = '\u0000';\r
+ if (e.SelectionFlag == (NaGetTaskQueryResult.CONTINUE | NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) {\r
+ result = AllGet.Util.Query(e.Message + " [y/R/n]?", "yrn", 'r');\r
+ } else if (e.SelectionFlag == (NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) {\r
+ result = AllGet.Util.Query(e.Message + " [R/n]?", "rn", 'r');\r
+ } else if (e.SelectionFlag == NaGetTaskQueryResult.CONTINUE) {\r
+ result = AllGet.Util.Query(e.Message + " [Y]?", "y", 'y');\r
+ } else {\r
+ result = AllGet.Util.Query(e.Message + " [Y/n]?", "yn", 'y');\r
}\r
\r
- i = 0;\r
- foreach (Installation inst in installations) {\r
- i++;\r
- \r
- if (inst.IsInstallablePackage() && inst.VerifyHashValues() == false) {\r
- Console.WriteLine("Verify:{0} {1} does not match hash value!", i, inst.ToString());\r
- }\r
+ switch (result) {\r
+ case 'y':\r
+ return NaGetTaskQueryResult.CONTINUE;\r
+ case 'n':\r
+ return NaGetTaskQueryResult.CANCEL;\r
+ case 'r':\r
+ return NaGetTaskQueryResult.RETRY;\r
+ default:\r
+ return NaGetTaskQueryResult.CANCELED_AUTOMATICALLY;\r
}\r
- }\r
+ };\r
+ tasks.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) { \r
+ switch (e.Type) {\r
+// case NaGetTaskSetEventType.COMPLETED_TASKSET\r
+// break;\r
+ case NaGetTaskSetEventType.COMPLETED:\r
+ Console.WriteLine("Done.");\r
+ break;\r
+ case NaGetTaskSetEventType.STARTED_TASKSET:\r
+ Console.Write(" " + e.TaskMessage);\r
+ break;\r
+ case NaGetTaskSetEventType.COMPLETED_TASKSET:\r
+ Console.WriteLine(" ... Done. [{0}%]", (int) e.TaskProgressPercent);\r
+ break;\r
+ case NaGetTaskSetEventType.INFO:\r
+ Console.WriteLine(" " + e.TaskMessage);\r
+ break;\r
+ case NaGetTaskSetEventType.ERROR:\r
+ case NaGetTaskSetEventType.WARNING:\r
+ Console.WriteLine(" [Error] " + e.TaskMessage);\r
+ break;\r
+ }\r
+ };\r
+ DownloadListener dl = new DownloadListener();\r
+ tasks.Downloader.DownloadEventRaised += dl.OnDownload;\r
+ \r
+ tasks.Run();\r
}\r
\r
public void Install(string[] packagenames)\r
\r
installations = new Installation[downloadList.Count];\r
for (int i = 0; i < installations.Length; i++) {\r
- installations[i] = new Installation((Package) downloadList[i]);\r
+ installations[i] = new Installation(downloadList[i]);\r
\r
installations[i].Silent = silent; // サイレントインストールのフラグの設定\r
\r
}\r
mc.Update();\r
break;\r
- case "localupate":\r
+ case "localupdate":\r
if (args.Length != 1) {\r
Console.WriteLine("E: The update command takes no arguments");\r
Environment.Exit(1);\r