From 2c9f32b3bb88c07bd58fb8000da576cc163a43ea Mon Sep 17 00:00:00 2001 From: Yunus Emre Kalkan Date: Thu, 16 Jul 2020 12:18:13 +0300 Subject: [PATCH] cli: remove abp nightly source when switched to stable --- .../PackagePreviewSwitcher.cs | 11 ++-- ...SourceAdder.cs => PackageSourceManager.cs} | 56 +++++++++++++++++-- 2 files changed, 56 insertions(+), 11 deletions(-) rename framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/{PackageSourceAdder.cs => PackageSourceManager.cs} (55%) diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs index f80f9a3c0d..ee76496e32 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackagePreviewSwitcher.cs @@ -11,17 +11,17 @@ namespace Volo.Abp.Cli.ProjectModification { public class PackagePreviewSwitcher : ITransientDependency { - private readonly PackageSourceAdder _packageSourceAdder; + private readonly PackageSourceManager _packageSourceManager; private readonly NpmPackagesUpdater _npmPackagesUpdater; private readonly VoloNugetPackagesVersionUpdater _nugetPackagesVersionUpdater; public ILogger Logger { get; set; } - public PackagePreviewSwitcher(PackageSourceAdder packageSourceAdder, + public PackagePreviewSwitcher(PackageSourceManager packageSourceManager, NpmPackagesUpdater npmPackagesUpdater, VoloNugetPackagesVersionUpdater nugetPackagesVersionUpdater) { - _packageSourceAdder = packageSourceAdder; + _packageSourceManager = packageSourceManager; _npmPackagesUpdater = npmPackagesUpdater; _nugetPackagesVersionUpdater = nugetPackagesVersionUpdater; Logger = NullLogger.Instance; @@ -44,8 +44,7 @@ namespace Volo.Abp.Cli.ProjectModification public async Task SwitchToNightlyPreview(CommandLineArgs commandLineArgs) { - // TODO: Remove this when switched to stable - _packageSourceAdder.Add("ABP Nightly", "https://www.myget.org/F/abp-nightly/api/v3/index.json"); + _packageSourceManager.Add("ABP Nightly", "https://www.myget.org/F/abp-nightly/api/v3/index.json"); var solutionPath = GetSolutionPath(commandLineArgs); var solutionFolder = GetSolutionFolder(commandLineArgs); @@ -61,6 +60,8 @@ namespace Volo.Abp.Cli.ProjectModification public async Task SwitchToStable(CommandLineArgs commandLineArgs) { + _packageSourceManager.Remove("ABP Nightly"); + var solutionPath = GetSolutionPath(commandLineArgs); var solutionFolder = GetSolutionFolder(commandLineArgs); diff --git a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceManager.cs similarity index 55% rename from framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs rename to framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceManager.cs index 3e651b3bf1..7272a41506 100644 --- a/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceAdder.cs +++ b/framework/src/Volo.Abp.Cli.Core/Volo/Abp/Cli/ProjectModification/PackageSourceManager.cs @@ -7,19 +7,18 @@ using Volo.Abp.DependencyInjection; namespace Volo.Abp.Cli.ProjectModification { - public class PackageSourceAdder: ITransientDependency + public class PackageSourceManager: ITransientDependency { - public ILogger Logger { get; set; } + public ILogger Logger { get; set; } - public PackageSourceAdder() + public PackageSourceManager() { - Logger = NullLogger.Instance; + Logger = NullLogger.Instance; } public void Add(string sourceKey, string sourceValue) { - var nugetConfigPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), - "NuGet", "NuGet.Config"); + var nugetConfigPath = GetNugetConfigPath(); if (!File.Exists(nugetConfigPath)) { @@ -63,6 +62,51 @@ namespace Volo.Abp.Cli.ProjectModification } } + public void Remove(string sourceKey) + { + var nugetConfigPath = GetNugetConfigPath(); + + if (!File.Exists(nugetConfigPath)) + { + return; + } + + var fileContent = File.ReadAllText(nugetConfigPath); + + if (!fileContent.Contains($"\"{sourceKey}\"")) + { + return; + } + + Logger.LogInformation($"Removing \"{sourceKey}\" from nuget sources..."); + + try + { + var doc = new XmlDocument() { PreserveWhitespace = true }; + + doc.Load(GenerateStreamFromString(fileContent)); + + var nodes = doc.SelectNodes($"/configuration/packageSources[@key='{sourceKey}']"); + + if (nodes != null && nodes.Count > 0) + { + nodes[0].ParentNode.RemoveChild(nodes[0]); + } + + File.WriteAllText(nugetConfigPath, doc.OuterXml); + } + catch + { + Logger.LogWarning($"Removing \"{sourceKey}\" from nuget sources FAILED."); + } + } + + private static string GetNugetConfigPath() + { + return Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + "NuGet", "NuGet.Config"); + } + private static Stream GenerateStreamFromString(string s) { var stream = new MemoryStream();