From f64e91adc6bca3be004dbbda8719b1d66071c372 Mon Sep 17 00:00:00 2001 From: Murat Girgin Date: Fri, 18 Sep 2015 09:26:08 -0700 Subject: [PATCH 1/5] Adding dnu clearcache command --- .../ClearCache/ClearCacheCommand.cs | 73 +++++++++++++++++++ .../ClearCacheConsoleCommand.cs | 25 +++++++ src/Microsoft.Dnx.Tooling/Program.cs | 1 + 3 files changed, 99 insertions(+) create mode 100644 src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs create mode 100644 src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs diff --git a/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs new file mode 100644 index 000000000..f416bcdd4 --- /dev/null +++ b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs @@ -0,0 +1,73 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using System; +using System.IO; + +namespace Microsoft.Dnx.Tooling +{ + internal class ClearCacheCommand + { + public Reports Reports { get; } + public string HttpCacheDirectory { get; } + public ClearCacheCommand(Reports reports, string httpCacheDirectory) + { + Reports = reports; + HttpCacheDirectory = httpCacheDirectory; + } + + public int Execute() + { + if(Directory.Exists(HttpCacheDirectory)) + { + Reports.Information.WriteLine($"Clearing cache directory {HttpCacheDirectory}"); + + Exception exception = null; + + for (var i = 0; i < 3; i++) + { + try + { + DeleteDirectoryRecursively(HttpCacheDirectory, false); + Reports.Information.WriteLine("Cache cleared."); + return 0; + } + catch (Exception e) + { + exception = e; + } + } + if (exception != null) + { + Reports.Error.WriteLine($"Unable to clear cache directory: {exception.Message}"); + } + return 1; + } + else + { + Reports.Error.WriteLine($"Cache directory {HttpCacheDirectory} does not exist."); + return 1; + } + } + public void DeleteDirectoryRecursively(string baseDirectory, bool deleteBaseDirectory) + { + var files = Directory.GetFiles(baseDirectory); + var subDirectories = Directory.GetDirectories(baseDirectory); + + foreach (var file in files) + { + File.Delete(file); + } + + foreach(var subDirectory in subDirectories) + { + DeleteDirectoryRecursively(subDirectory, true); + } + + if(deleteBaseDirectory) + { + Directory.Delete(baseDirectory); + } + } + } +} diff --git a/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs new file mode 100644 index 000000000..46a007f0e --- /dev/null +++ b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs @@ -0,0 +1,25 @@ +// Copyright (c) .NET Foundation. All rights reserved. +// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. + +using Microsoft.Dnx.Runtime.Common.CommandLine; + +namespace Microsoft.Dnx.Tooling +{ + internal static class ClearCacheConsoleCommand + { + public static void Register(CommandLineApplication cmdApp, ReportsFactory reportsFactory) + { + cmdApp.Command("clearcache", c => + { + c.Description = "Clears the package cache."; + c.OnExecute(() => + { + var command = new ClearCacheCommand( + reportsFactory.CreateReports(quiet: false), + DnuEnvironment.GetFolderPath(DnuFolderPath.HttpCacheDirectory)); + return command.Execute(); + }); + }); + } + } +} diff --git a/src/Microsoft.Dnx.Tooling/Program.cs b/src/Microsoft.Dnx.Tooling/Program.cs index 2f79242aa..c7afd2195 100644 --- a/src/Microsoft.Dnx.Tooling/Program.cs +++ b/src/Microsoft.Dnx.Tooling/Program.cs @@ -79,6 +79,7 @@ public int Main(string[] args) RestoreConsoleCommand.Register(app, reportsFactory, _environment, _runtimeEnv); WrapConsoleCommand.Register(app, reportsFactory); FeedsConsoleCommand.Register(app, reportsFactory); + ClearCacheConsoleCommand.Register(app, reportsFactory); return app.Execute(args); } From 9bff5c04a4320cf1823b025368d5468c0999a9db Mon Sep 17 00:00:00 2001 From: Murat Girgin Date: Fri, 18 Sep 2015 11:53:48 -0700 Subject: [PATCH 2/5] Formatting, named params --- .../ClearCache/ClearCacheCommand.cs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs index f416bcdd4..72e99832e 100644 --- a/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs +++ b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs @@ -10,15 +10,16 @@ internal class ClearCacheCommand { public Reports Reports { get; } public string HttpCacheDirectory { get; } + public ClearCacheCommand(Reports reports, string httpCacheDirectory) { Reports = reports; HttpCacheDirectory = httpCacheDirectory; } - + public int Execute() { - if(Directory.Exists(HttpCacheDirectory)) + if (Directory.Exists(HttpCacheDirectory)) { Reports.Information.WriteLine($"Clearing cache directory {HttpCacheDirectory}"); @@ -28,7 +29,7 @@ public int Execute() { try { - DeleteDirectoryRecursively(HttpCacheDirectory, false); + DeleteDirectoryRecursively(HttpCacheDirectory, deleteBaseDirectory: false); Reports.Information.WriteLine("Cache cleared."); return 0; } @@ -59,12 +60,12 @@ public void DeleteDirectoryRecursively(string baseDirectory, bool deleteBaseDire File.Delete(file); } - foreach(var subDirectory in subDirectories) + foreach (var subDirectory in subDirectories) { - DeleteDirectoryRecursively(subDirectory, true); + DeleteDirectoryRecursively(subDirectory, deleteBaseDirectory: true); } - if(deleteBaseDirectory) + if (deleteBaseDirectory) { Directory.Delete(baseDirectory); } From 5c9b4c4e82b71bca33533fdf9790a9acbc8beee1 Mon Sep 17 00:00:00 2001 From: Murat Girgin Date: Fri, 18 Sep 2015 14:08:12 -0700 Subject: [PATCH 3/5] PR feedback --- .../ClearCache/ClearCacheCommand.cs | 30 ++++++------------- .../ClearCacheConsoleCommand.cs | 2 +- 2 files changed, 10 insertions(+), 22 deletions(-) diff --git a/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs index 72e99832e..edf8624a2 100644 --- a/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs +++ b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs @@ -23,32 +23,20 @@ public int Execute() { Reports.Information.WriteLine($"Clearing cache directory {HttpCacheDirectory}"); - Exception exception = null; - - for (var i = 0; i < 3; i++) + try { - try - { - DeleteDirectoryRecursively(HttpCacheDirectory, deleteBaseDirectory: false); - Reports.Information.WriteLine("Cache cleared."); - return 0; - } - catch (Exception e) - { - exception = e; - } + DeleteDirectoryRecursively(HttpCacheDirectory, deleteBaseDirectory: false); + Reports.Information.WriteLine("Cache cleared."); + return 0; } - if (exception != null) + catch (Exception e) { - Reports.Error.WriteLine($"Unable to clear cache directory: {exception.Message}"); + Reports.Error.WriteLine($"Unable to clear cache directory: {e.Message}"); + return 1; } - return 1; - } - else - { - Reports.Error.WriteLine($"Cache directory {HttpCacheDirectory} does not exist."); - return 1; } + + return 0; } public void DeleteDirectoryRecursively(string baseDirectory, bool deleteBaseDirectory) { diff --git a/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs index 46a007f0e..ec8c7dce6 100644 --- a/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs +++ b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs @@ -9,7 +9,7 @@ internal static class ClearCacheConsoleCommand { public static void Register(CommandLineApplication cmdApp, ReportsFactory reportsFactory) { - cmdApp.Command("clearcache", c => + cmdApp.Command("clear-cache", c => { c.Description = "Clears the package cache."; c.OnExecute(() => From f1be67255cb8cabea76c9e47d951d445fc7944bb Mon Sep 17 00:00:00 2001 From: Murat Girgin Date: Fri, 18 Sep 2015 14:19:11 -0700 Subject: [PATCH 4/5] Make -h|-?|--help options not fail with an exception --- .../ConsoleCommands/ClearCacheConsoleCommand.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs index ec8c7dce6..6419702a5 100644 --- a/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs +++ b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs @@ -12,6 +12,7 @@ public static void Register(CommandLineApplication cmdApp, ReportsFactory report cmdApp.Command("clear-cache", c => { c.Description = "Clears the package cache."; + c.HelpOption("-?|-h|--help"); c.OnExecute(() => { var command = new ClearCacheCommand( From a61ad72997374409821a495ef7d67542c68ce521 Mon Sep 17 00:00:00 2001 From: Murat Girgin Date: Mon, 21 Sep 2015 08:18:11 -0700 Subject: [PATCH 5/5] more PR feedback --- .../ClearCache/ClearCacheCommand.cs | 29 +++---------------- .../ClearCacheConsoleCommand.cs | 2 +- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs index edf8624a2..04b5871a8 100644 --- a/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs +++ b/src/Microsoft.Dnx.Tooling/ClearCache/ClearCacheCommand.cs @@ -8,15 +8,15 @@ namespace Microsoft.Dnx.Tooling { internal class ClearCacheCommand { - public Reports Reports { get; } - public string HttpCacheDirectory { get; } - public ClearCacheCommand(Reports reports, string httpCacheDirectory) { Reports = reports; HttpCacheDirectory = httpCacheDirectory; } + public Reports Reports { get; } + public string HttpCacheDirectory { get; } + public int Execute() { if (Directory.Exists(HttpCacheDirectory)) @@ -25,9 +25,8 @@ public int Execute() try { - DeleteDirectoryRecursively(HttpCacheDirectory, deleteBaseDirectory: false); + FileOperationUtils.DeleteFolder(HttpCacheDirectory); Reports.Information.WriteLine("Cache cleared."); - return 0; } catch (Exception e) { @@ -38,25 +37,5 @@ public int Execute() return 0; } - public void DeleteDirectoryRecursively(string baseDirectory, bool deleteBaseDirectory) - { - var files = Directory.GetFiles(baseDirectory); - var subDirectories = Directory.GetDirectories(baseDirectory); - - foreach (var file in files) - { - File.Delete(file); - } - - foreach (var subDirectory in subDirectories) - { - DeleteDirectoryRecursively(subDirectory, deleteBaseDirectory: true); - } - - if (deleteBaseDirectory) - { - Directory.Delete(baseDirectory); - } - } } } diff --git a/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs index 6419702a5..00e3af227 100644 --- a/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs +++ b/src/Microsoft.Dnx.Tooling/ConsoleCommands/ClearCacheConsoleCommand.cs @@ -9,7 +9,7 @@ internal static class ClearCacheConsoleCommand { public static void Register(CommandLineApplication cmdApp, ReportsFactory reportsFactory) { - cmdApp.Command("clear-cache", c => + cmdApp.Command("clear-http-cache", c => { c.Description = "Clears the package cache."; c.HelpOption("-?|-h|--help");