X-Git-Url: http://git.sourceforge.jp/view?p=applistation%2FAppliStation.git;a=blobdiff_plain;f=all-get%2FMain.cs;h=a4be97073ca05645eb7d4462f6b087bf3a1fb491;hp=2989c3444ede06e5de12da779f3a28a9c207b11e;hb=4400961321739b1a12162e22619290477333a8e6;hpb=1de4f60dc16fd25652dbe310374ed1e9cd6df055 diff --git a/all-get/Main.cs b/all-get/Main.cs index 2989c34..a4be970 100644 --- a/all-get/Main.cs +++ b/all-get/Main.cs @@ -2,70 +2,99 @@ using System; using System.IO; using System.Collections.Generic; -using NaGet.Net; using NaGet.Packages; using NaGet.Packages.Install; using NaGet.SubCommands; +using NaGet.Tasks; namespace AllGet { - - class DownloadListener + sealed class TaskSetEventHandlers { - private string line = null; + public static void OnTaskSetEvent(object sender, TaskEventArgs e) { + switch (e.Type) { +// case NaGetTaskSetEventType.COMPLETED_TASKSET +// break; + case TaskEventType.COMPLETED: + Console.WriteLine("Done."); + break; + case TaskEventType.STARTED_SUBTASK: + Console.Write(" " + e.TaskMessage); + break; + case TaskEventType.COMPLETED_SUBTASK: + Console.WriteLine(" ... Done. [{0}%]", (int) e.ProgressPercent); + break; + case TaskEventType.INFO: + Console.WriteLine(" " + e.TaskMessage); + break; + case TaskEventType.ERROR: + case TaskEventType.WARNING: + Console.WriteLine(" [Error]" + e.TaskMessage); + break; + } + } - /// - /// lineのコンソール上における長さ - /// - private int lineWidth = 0; - - public void OnDownload(object sender, DownloadEventArgs a) { - if (line != null) { - lock (line) { - int newpos = (lineWidth <= 0)? 0 : Console.CursorLeft - lineWidth; - if (newpos < 0) newpos = 0; - - // 空白で埋める - Console.CursorLeft = newpos; - for (int i = 0; i < lineWidth && Console.CursorLeft < Console.BufferWidth; i++) { - Console.Write(' '); - } - Console.CursorLeft = newpos; - - line = null; lineWidth = 0; + public static void OnDownloadSubTaskEvent(object sender, TaskEventArgs e) + { + if (sender is NaGet.SubCommands.SubTask.DownloadSubTask) { + if (e.Type == TaskEventType.STARTED) { + Console.WriteLine(); + } + + int origPosX = Console.CursorLeft; + for (int i = 0; i < Console.WindowWidth - 1; i++) { + Console.Write(' '); + } + Console.CursorLeft = origPosX; + + switch (e.Type) { + case TaskEventType.PING: + { + int origPos = Console.CursorLeft; + Console.Write(e.TaskMessage); + Console.CursorLeft = origPos; + } + break; + case TaskEventType.WARNING: + case TaskEventType.ERROR: + Console.WriteLine(" [Error]" + e.TaskMessage); + break; + default: + Console.WriteLine(e.TaskMessage); + break; } } - - switch (a.Type) { - case DownloadEventType.INITED: - line = "starting..."; - break; - case DownloadEventType.CONNECTED: - case DownloadEventType.DOWNLOADING: - line = a.TaskMessage; - break; - case DownloadEventType.COMPLETED: - // - line = null; - break; - case DownloadEventType.ERROR: - Console.Write("interrupted! ERROR!"); - line = null; - break; + } + + public static NaGetTaskQueryResult OnTaskQueryEvent(object sender, NaGetTaskQueryArgs e) + { + char result = '\u0000'; + if (e.SelectionFlag == (NaGetTaskQueryResult.CONTINUE | NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) { + result = AllGet.Util.Query(e.Message + " [y/R/n]?", "yrn", 'r'); + } else if (e.SelectionFlag == (NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) { + result = AllGet.Util.Query(e.Message + " [R/n]?", "rn", 'r'); + } else if (e.SelectionFlag == NaGetTaskQueryResult.CONTINUE) { + result = AllGet.Util.Query(e.Message + " [Y]?", "y", 'y'); + } else { + result = AllGet.Util.Query(e.Message + " [Y/n]?", "yn", 'y'); } - if (line != null) { - int posOld = Console.CursorLeft; - Console.Write(line); - lineWidth = Console.CursorLeft - posOld; + switch (result) { + case 'y': + return NaGetTaskQueryResult.CONTINUE; + case 'n': + return NaGetTaskQueryResult.CANCEL; + case 'r': + return NaGetTaskQueryResult.RETRY; + default: + return NaGetTaskQueryResult.CANCELED_AUTOMATICALLY; } } } - + + class MainClass { - private Downloader downloader; - private PackageListsManager pkgListMan; /// @@ -75,10 +104,6 @@ namespace AllGet public MainClass() { - downloader = new Downloader(); - DownloadListener dl = new DownloadListener(); - downloader.DownloadEventRaised += new EventHandler(dl.OnDownload); - pkgListMan = new PackageListsManager(); pkgListMan.LoadPackageLists(); } @@ -95,62 +120,32 @@ namespace AllGet public void update(bool downloadPackageListFlag) { - NaGet.SubCommands.NaGetUpdate tasks = new NaGet.SubCommands.NaGetUpdate(pkgListMan, downloadPackageListFlag); - tasks.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) { - switch (e.Type) { -// case NaGetTaskSetEventType.COMPLETED_TASKSET -// break; - case NaGetTaskSetEventType.COMPLETED: - Console.WriteLine("Done."); - break; - case NaGetTaskSetEventType.STARTED_TASKSET: - Console.Write(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.COMPLETED_TASKSET: - Console.WriteLine(" ... Done. [{0}%]", (int) e.TaskProgressPercent); - break; - case NaGetTaskSetEventType.INFO: - Console.WriteLine(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.ERROR: - case NaGetTaskSetEventType.WARNING: - Console.WriteLine(" [Error]" + e.TaskMessage); - break; - } - }; - DownloadListener dl = new DownloadListener(); - tasks.Downloader.DownloadEventRaised += dl.OnDownload; + NaGet.SubCommands.NaGetUpdate2 tasks = new NaGet.SubCommands.NaGetUpdate2(pkgListMan, downloadPackageListFlag); + tasks.TaskEventRaised += TaskSetEventHandlers.OnTaskSetEvent; + tasks.SubTaskEventRaised += TaskSetEventHandlers.OnDownloadSubTaskEvent; tasks.Run(); } public void CheckUpgrade() { - PackageList packageList = pkgListMan.AvailablePkgList; - - VersionComparetor verComp = new VersionComparetor(); - - foreach (InstalledPackage pkg in pkgListMan.InstalledPkgList) { - Package avaiablePkg = packageList.GetPackageForName(pkg.Name); + foreach (Package pkg in UpgradeFinder.GetUpgradePackages(pkgListMan)) { + bool isSystem = false; + Package instPkg = null; - if (avaiablePkg != null) { - if (verComp.Compare(pkg.Version, avaiablePkg.Version) < 0 && - pkgListMan.InstalledPkgList.GetPackageForPackage(pkg.Name, avaiablePkg.Version) == null) { - - Console.WriteLine("{0} ({1}) => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version); + instPkg = pkgListMan.SystemInstalledPkgList.GetPackageForName(pkg.Name); + if (instPkg != null) { + isSystem = true; + } else { + instPkg = pkgListMan.InstalledPkgList.GetPackageForName(pkg.Name); + if (instPkg != null) { + isSystem = false; + } else { + System.Diagnostics.Debug.Fail("internal error."); } } - } - foreach (InstalledPackage pkg in pkgListMan.SystemInstalledPkgList) { - Package avaiablePkg = packageList.GetPackageForName(pkg.Name); - if (avaiablePkg != null) { - if (verComp.Compare(pkg.Version, avaiablePkg.Version) < 0 && - pkgListMan.SystemInstalledPkgList.GetPackageForPackage(pkg.Name, avaiablePkg.Version) == null) { - - Console.WriteLine("{0} ({1})@sys => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version); - } - } + Console.WriteLine("{0} ({1}){3} => ({2})", pkg.Name, instPkg.Version, pkg.Version, (isSystem)? "@sys" : ""); } } @@ -193,6 +188,7 @@ namespace AllGet } } + public void Download(string[] packagenames) { Installation[] installations = null; @@ -223,54 +219,10 @@ namespace AllGet Environment.Exit(0); } - NaGet.SubCommands.NaGetDownloadToCache tasks = new NaGet.SubCommands.NaGetDownloadToCache(pkgListMan, installations); - tasks.TaskQueryRaised += delegate(object sender, NaGetTaskQueryArgs e) { - char result = '\u0000'; - if (e.SelectionFlag == (NaGetTaskQueryResult.CONTINUE | NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) { - result = AllGet.Util.Query(e.Message + " [y/R/n]?", "yrn", 'r'); - } else if (e.SelectionFlag == (NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) { - result = AllGet.Util.Query(e.Message + " [R/n]?", "rn", 'r'); - } else if (e.SelectionFlag == NaGetTaskQueryResult.CONTINUE) { - result = AllGet.Util.Query(e.Message + " [Y]?", "y", 'y'); - } else { - result = AllGet.Util.Query(e.Message + " [Y/n]?", "yn", 'y'); - } - - switch (result) { - case 'y': - return NaGetTaskQueryResult.CONTINUE; - case 'n': - return NaGetTaskQueryResult.CANCEL; - case 'r': - return NaGetTaskQueryResult.RETRY; - default: - return NaGetTaskQueryResult.CANCELED_AUTOMATICALLY; - } - }; - tasks.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) { - switch (e.Type) { -// case NaGetTaskSetEventType.COMPLETED_TASKSET -// break; - case NaGetTaskSetEventType.COMPLETED: - Console.WriteLine("Done."); - break; - case NaGetTaskSetEventType.STARTED_TASKSET: - Console.Write(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.COMPLETED_TASKSET: - Console.WriteLine(" ... Done. [{0}%]", (int) e.TaskProgressPercent); - break; - case NaGetTaskSetEventType.INFO: - Console.WriteLine(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.ERROR: - case NaGetTaskSetEventType.WARNING: - Console.WriteLine(" [Error] " + e.TaskMessage); - break; - } - }; - DownloadListener dl = new DownloadListener(); - tasks.Downloader.DownloadEventRaised += dl.OnDownload; + NaGet.SubCommands.NaGetDownloadToCache2 tasks = new NaGet.SubCommands.NaGetDownloadToCache2(pkgListMan, installations); + tasks.TaskEventRaised += TaskSetEventHandlers.OnTaskSetEvent; + tasks.SubTaskEventRaised += TaskSetEventHandlers.OnDownloadSubTaskEvent; + tasks.TaskQueryRaised += TaskSetEventHandlers.OnTaskQueryEvent; tasks.Run(); } @@ -299,13 +251,6 @@ namespace AllGet installations = new Installation[downloadList.Count]; for (int i = 0; i < installations.Length; i++) { installations[i] = new Installation(downloadList[i]); - - installations[i].Silent = silent; // サイレントインストールのフラグの設定 - - if (! installations[i].IsInstallablePackage()) { - Console.WriteLine("E: Can not install package {0} to your PC.", installations[i].ToString()); - Environment.Exit(1); - } } } @@ -323,54 +268,10 @@ namespace AllGet Environment.Exit(0); } - NaGet.SubCommands.NaGetInstall tasks = new NaGet.SubCommands.NaGetInstall(pkgListMan, installations); - tasks.TaskQueryRaised += delegate(object sender, NaGetTaskQueryArgs e) { - char result = '\u0000'; - if (e.SelectionFlag == (NaGetTaskQueryResult.CONTINUE | NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) { - result = AllGet.Util.Query(e.Message + " [y/R/n]?", "yrn", 'r'); - } else if (e.SelectionFlag == (NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) { - result = AllGet.Util.Query(e.Message + " [R/n]?", "rn", 'r'); - } else if (e.SelectionFlag == NaGetTaskQueryResult.CONTINUE) { - result = AllGet.Util.Query(e.Message + " [Y]?", "y", 'y'); - } else { - result = AllGet.Util.Query(e.Message + " [Y/n]?", "yn", 'y'); - } - - switch (result) { - case 'y': - return NaGetTaskQueryResult.CONTINUE; - case 'n': - return NaGetTaskQueryResult.CANCEL; - case 'r': - return NaGetTaskQueryResult.RETRY; - default: - return NaGetTaskQueryResult.CANCELED_AUTOMATICALLY; - } - }; - tasks.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) { - switch (e.Type) { -// case NaGetTaskSetEventType.COMPLETED_TASKSET -// break; - case NaGetTaskSetEventType.COMPLETED: - Console.WriteLine("Done."); - break; - case NaGetTaskSetEventType.STARTED_TASKSET: - Console.Write(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.COMPLETED_TASKSET: - Console.WriteLine(" ... Done. [{0}%]", (int) e.TaskProgressPercent); - break; - case NaGetTaskSetEventType.INFO: - Console.WriteLine(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.ERROR: - case NaGetTaskSetEventType.WARNING: - Console.WriteLine(" [Error] " + e.TaskMessage); - break; - } - }; - DownloadListener dl = new DownloadListener(); - tasks.Downloader.DownloadEventRaised += dl.OnDownload; + NaGet.SubCommands.NaGetInstall2 tasks = new NaGet.SubCommands.NaGetInstall2(pkgListMan, installations); + tasks.TaskEventRaised += TaskSetEventHandlers.OnTaskSetEvent; + tasks.SubTaskEventRaised += TaskSetEventHandlers.OnDownloadSubTaskEvent; + tasks.TaskQueryRaised += TaskSetEventHandlers.OnTaskQueryEvent; tasks.Run(); } @@ -386,16 +287,14 @@ namespace AllGet PackageList installedPkgList = new PackageList(); installedPkgList.AddPackages(pkgListMan.GetAllInstalledPackages()); - Uninstallation[] uninstallations = new Uninstallation[packagenames.Length]; + InstalledPackage[] insPkgs = new InstalledPackage[packagenames.Length]; for (int i = 0; i < packagenames.Length; i++) { - InstalledPackage pkg = installedPkgList.GetPackageForName(packagenames[i]); + insPkgs[i] = installedPkgList.GetPackageForName(packagenames[i]); - if (pkg == null) { + if (insPkgs[i] == null) { Console.WriteLine("E: could not found package " + packagenames[i]); Environment.Exit(1); } - - uninstallations[i] = new Uninstallation(pkg); } // if (AllGet.Util.Confirm("Do you want to continue [Y/n]?", true) == false) { @@ -403,29 +302,8 @@ namespace AllGet // Environment.Exit(0); // } - NaGet.SubCommands.NaGetUninstall tasks = new NaGet.SubCommands.NaGetUninstall(pkgListMan, uninstallations); - tasks.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) { - switch (e.Type) { -// case NaGetTaskSetEventType.COMPLETED_TASKSET -// break; - case NaGetTaskSetEventType.COMPLETED: - Console.WriteLine("Done."); - break; - case NaGetTaskSetEventType.STARTED_TASKSET: - Console.Write(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.COMPLETED_TASKSET: - Console.WriteLine(" ... Done. [{0}%]", (int) e.TaskProgressPercent); - break; - case NaGetTaskSetEventType.INFO: - Console.WriteLine(" " + e.TaskMessage); - break; - case NaGetTaskSetEventType.ERROR: - case NaGetTaskSetEventType.WARNING: - Console.WriteLine(" [Error] " + e.TaskMessage); - break; - } - }; + NaGet.SubCommands.NaGetUninstall2 tasks = new NaGet.SubCommands.NaGetUninstall2(pkgListMan, insPkgs); + tasks.TaskEventRaised += TaskSetEventHandlers.OnTaskSetEvent; tasks.Run(); }