X-Git-Url: http://git.sourceforge.jp/view?p=applistation%2FAppliStation.git;a=blobdiff_plain;f=all-get%2FMain.cs;h=2989c3444ede06e5de12da779f3a28a9c207b11e;hp=d21168af12a44aaf7a3b4be771b540c933d61078;hb=0498aa30cdc1af85c83cc483b24ccdd02a34e304;hpb=16e153adfbca166311c0bdc6ef0e1e3519bc3b46 diff --git a/all-get/Main.cs b/all-get/Main.cs index d21168a..2989c34 100644 --- a/all-get/Main.cs +++ b/all-get/Main.cs @@ -80,6 +80,7 @@ namespace AllGet downloader.DownloadEventRaised += new EventHandler(dl.OnDownload); pkgListMan = new PackageListsManager(); + pkgListMan.LoadPackageLists(); } public void Update() @@ -95,7 +96,6 @@ namespace AllGet public void update(bool downloadPackageListFlag) { NaGet.SubCommands.NaGetUpdate tasks = new NaGet.SubCommands.NaGetUpdate(pkgListMan, downloadPackageListFlag); - tasks.Downloader = this.downloader; tasks.TaskSetRaised += delegate(object sender, NaGetTaskSetEventArgs e) { switch (e.Type) { // case NaGetTaskSetEventType.COMPLETED_TASKSET @@ -118,6 +118,8 @@ namespace AllGet break; } }; + DownloadListener dl = new DownloadListener(); + tasks.Downloader.DownloadEventRaised += dl.OnDownload; tasks.Run(); } @@ -134,11 +136,9 @@ namespace AllGet if (avaiablePkg != null) { if (verComp.Compare(pkg.Version, avaiablePkg.Version) < 0 && pkgListMan.InstalledPkgList.GetPackageForPackage(pkg.Name, avaiablePkg.Version) == null) { - Console.ForegroundColor = ConsoleColor.Green; + + Console.WriteLine("{0} ({1}) => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version); } - - Console.WriteLine("{0} ({1}) => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version); - Console.ResetColor(); } } foreach (InstalledPackage pkg in pkgListMan.SystemInstalledPkgList) { @@ -147,11 +147,9 @@ namespace AllGet if (avaiablePkg != null) { if (verComp.Compare(pkg.Version, avaiablePkg.Version) < 0 && pkgListMan.SystemInstalledPkgList.GetPackageForPackage(pkg.Name, avaiablePkg.Version) == null) { - Console.ForegroundColor = ConsoleColor.Green; + + Console.WriteLine("{0} ({1})@sys => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version); } - - Console.WriteLine("{0} ({1})@sys => ({2})", pkg.Name, pkg.Version, avaiablePkg.Version); - Console.ResetColor(); } } } @@ -179,11 +177,13 @@ namespace AllGet foreach (Package pkg in allPkgs.GetPackagesForName(packagename)) { Console.WriteLine("Package: {0}", pkg.Name); Console.WriteLine("Version: {0}", pkg.Version); + Console.WriteLine("Summary: {0}", pkg.Summary); if (pkg.Url != null) Console.WriteLine("Website: {0}", pkg.Url.Href); if (pkg.Tags != null) Console.WriteLine("Tag: {0}", pkg.Tags.ToLower()); Console.WriteLine("Type: {0}", pkg.Type); if (pkg.License != null) Console.WriteLine("License: {0}", pkg.License); if (pkg is InstalledPackage) Console.WriteLine("State: Installed"); + Console.WriteLine("Repository: {0}", pkg.PackageListName); if (pkg.Description != null) { Console.WriteLine("Description:"); @@ -212,7 +212,7 @@ namespace AllGet installations = new Installation[downloadList.Count]; for (int i = 0; i < installations.Length; i++) { - installations[i] = new Installation((Package) downloadList[i]); + installations[i] = new Installation(downloadList[i]); } } @@ -223,35 +223,56 @@ namespace AllGet Environment.Exit(0); } - { - int i = 0; - foreach (Installation inst in installations) { - i++; - - if (! inst.IsInstallablePackage()) { - Console.WriteLine("E:{0} {1} can not be installed.", i, inst.ToString()); - continue; - } - - try { - Console.Write("Get:{0} {1}", i, inst.ToString()); - inst.Download(downloader); - Console.WriteLine(" ...Done"); - } catch (Exception e) { - Console.WriteLine("E: "+e.Message); - throw new ApplicationException(string.Format("Failed to download {0}", inst.ToString()), e); - } + 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'); } - i = 0; - foreach (Installation inst in installations) { - i++; - - if (inst.IsInstallablePackage() && inst.VerifyHashValues() == false) { - Console.WriteLine("Verify:{0} {1} does not match hash value!", i, inst.ToString()); - } + 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; + + tasks.Run(); } public void Install(string[] packagenames) @@ -277,7 +298,7 @@ namespace AllGet installations = new Installation[downloadList.Count]; for (int i = 0; i < installations.Length; i++) { - installations[i] = new Installation((Package) downloadList[i]); + installations[i] = new Installation(downloadList[i]); installations[i].Silent = silent; // サイレントインストールのフラグの設定 @@ -288,6 +309,13 @@ namespace AllGet } } + Installation[] depInstallations; + { + Installation[] resolved; + DependeciesResolver.ResolveInstallations(installations, pkgListMan, out resolved, out depInstallations); + installations = resolved; + } + Console.WriteLine("The following packages will be downloaded:"); Console.WriteLine(" {0}", Installation.ToString(installations)); if (AllGet.Util.Confirm("Do you want to continue [Y/n]?", true) == false) { @@ -296,7 +324,6 @@ namespace AllGet } NaGet.SubCommands.NaGetInstall tasks = new NaGet.SubCommands.NaGetInstall(pkgListMan, installations); - tasks.Downloader = this.downloader; tasks.TaskQueryRaised += delegate(object sender, NaGetTaskQueryArgs e) { char result = '\u0000'; if (e.SelectionFlag == (NaGetTaskQueryResult.CONTINUE | NaGetTaskQueryResult.RETRY | NaGetTaskQueryResult.CANCEL)) { @@ -342,6 +369,8 @@ namespace AllGet break; } }; + DownloadListener dl = new DownloadListener(); + tasks.Downloader.DownloadEventRaised += dl.OnDownload; tasks.Run(); } @@ -478,6 +507,7 @@ namespace AllGet Console.WriteLine("誰か {0} をスーパー牛さんパワー化してくれ", executeFileName); } + [STAThread] public static void Main(string[] args) { // アーカイブSYSTEM32をパスに足す @@ -501,81 +531,99 @@ namespace AllGet } } - if (args[0] == "update") { - if (args.Length != 1) { - Console.WriteLine("E: The update command takes no arguments"); - Environment.Exit(1); - } - mc.Update(); - } else if (args[0] == "localupdate") { - if (args.Length != 1) { - Console.WriteLine("E: The update command takes no arguments"); - Environment.Exit(1); - } - mc.LocalUpdate(); - } else if (args[0] == "search") { - if (args.Length <= 1) { - Console.WriteLine("E: You must give exactly one pattern"); - Environment.Exit(1); - } - - mc.Search(string.Join(" ", args, 1, args.Length - 1)); - } else if (args[0] == "show") { - if (args.Length <= 1) { - Console.WriteLine("E: You must give exactly one pattern"); - Environment.Exit(1); - } - - for (int i = 1; i < args.Length; i++) { - mc.Show(args[i]); - } - } else if (args[0] == "download") { - if (args.Length <= 1) { - Console.WriteLine("E: Invalid operation download"); - Environment.Exit(1); - } - - string[] packages = new string[args.Length - 1]; - Array.Copy(args, 1, packages, 0, packages.Length); - - mc.Download(packages); - } else if (args[0] == "install") { - if (args.Length <= 1) { - Console.WriteLine("E: Invalid operation install"); - Environment.Exit(1); - } - - string[] packages = new string[args.Length - 1]; - Array.Copy(args, 1, packages, 0, packages.Length); - - mc.Install(packages); - } else if (args[0] == "checkupgrade") { - mc.CheckUpgrade(); - } else if (args[0] == "remove") { - if (args.Length <= 1) { - Console.WriteLine("E: Invalid operation remove"); + // 引数ごとに操作を決定 + switch (args[0]) + { + case "update": + if (args.Length != 1) { + Console.WriteLine("E: The update command takes no arguments"); + Environment.Exit(1); + } + mc.Update(); + break; + case "localupate": + if (args.Length != 1) { + Console.WriteLine("E: The update command takes no arguments"); + Environment.Exit(1); + } + mc.LocalUpdate(); + break; + case "search": + if (args.Length <= 1) { + Console.WriteLine("E: You must give exactly one pattern"); + Environment.Exit(1); + } + + mc.Search(string.Join(" ", args, 1, args.Length - 1)); + break; + case "show": + if (args.Length <= 1) { + Console.WriteLine("E: You must give exactly one pattern"); + Environment.Exit(1); + } + + for (int i = 1; i < args.Length; i++) { + mc.Show(args[i]); + } + break; + case "download": + if (args.Length <= 1) { + Console.WriteLine("E: Invalid operation download"); + Environment.Exit(1); + } else { + string[] packages = new string[args.Length - 1]; + Array.Copy(args, 1, packages, 0, packages.Length); + + mc.Download(packages); + } + break; + case "install": + if (args.Length <= 1) { + Console.WriteLine("E: Invalid operation install"); + Environment.Exit(1); + } else { + string[] packages = new string[args.Length - 1]; + Array.Copy(args, 1, packages, 0, packages.Length); + + mc.Install(packages); + } + break; + case "checkupgrade": + mc.CheckUpgrade(); + break; + case "remove": + if (args.Length <= 1) { + Console.WriteLine("E: Invalid operation remove"); + Environment.Exit(1); + } else { + string[] packages = new string[args.Length - 1]; + Array.Copy(args, 1, packages, 0, packages.Length); + + mc.Remove(packages); + } + break; + case "cleancache": + { + string[] packages = new string[args.Length - 1]; + Array.Copy(args, 1, packages, 0, packages.Length); + + mc.CleanCache(packages); + } + break; + case "foobar": + mc.FooBar(); + break; + case "hoge": + mc.Hoge(); + break; + case "moo": + mc.Moo(); + break; + default: + mc.Help(); + Environment.Exit(1); - } - - string[] packages = new string[args.Length - 1]; - Array.Copy(args, 1, packages, 0, packages.Length); - - mc.Remove(packages); - } else if (args[0] == "cleancache") { - string[] packages = new string[args.Length - 1]; - Array.Copy(args, 1, packages, 0, packages.Length); - - mc.CleanCache(packages); - } else if (args[0] == "foobar") { - mc.FooBar(); - } else if (args[0] == "hoge") { - mc.Hoge(); - } else if (args[0] == "moo") { - mc.Moo(); - } else { - mc.Help(); - - Environment.Exit(1); + break; } } }