Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -240,3 +240,5 @@ ModelManifest.xml

# FAKE - F# Make
.fake/

.idea/
27 changes: 27 additions & 0 deletions NugetDependencyDownloader/Logger.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
using System;
using System.Threading.Tasks;
using NuGet.Common;

namespace NuGetDependencyDownloader
{
public class Logger : ILogger
{
public void LogDebug(string data) => Console.WriteLine($@"DEBUG: {data}");
public void LogVerbose(string data) => Console.WriteLine($@"VERBOSE: {data}");
public void LogInformation(string data) => Console.WriteLine($@"INFORMATION: {data}");
public void LogMinimal(string data) => Console.WriteLine($@"MINIMAL: {data}");
public void LogWarning(string data) => Console.WriteLine($@"WARNING: {data}");
public void LogError(string data) => Console.WriteLine($@"ERROR: {data}");
public void LogInformationSummary(string data) => Console.WriteLine($@"DEBUG: {data}");

public void Log(LogLevel level, string data) => Console.WriteLine($@"{level}: {data}");

public async Task LogAsync(LogLevel level, string data) => Console.WriteLine($@"{level.ToString()}: {data}");

public void Log(ILogMessage message) => Console.WriteLine(message);

public async Task LogAsync(ILogMessage message) => Console.WriteLine(message);

public void LogSummary(string data) => Console.WriteLine($@"SUMMARY: {data}");
}
}
24 changes: 24 additions & 0 deletions NugetDependencyDownloader/MachineWideSettings.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NuGet.Common;
using NuGet.Configuration;

namespace NuGetDependencyDownloader
{
public class MachineWideSettings : IMachineWideSettings
{
private readonly Lazy<IEnumerable<ISettings>> _settings;

public MachineWideSettings()
{
var baseDirectory = NuGetEnvironment.GetFolderPath(NuGetFolderPath.MachineWideConfigDirectory);
_settings = new Lazy<IEnumerable<ISettings>>(
() => new List<ISettings> {global::NuGet.Configuration.Settings.LoadMachineWideSettings(baseDirectory)});
}

public IEnumerable<ISettings> Settings => _settings.Value;

ISettings IMachineWideSettings.Settings => _settings.Value.FirstOrDefault();
}
}
1 change: 0 additions & 1 deletion NugetDependencyDownloader/MainForm.Designer.cs

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

91 changes: 36 additions & 55 deletions NugetDependencyDownloader/MainForm.cs
Original file line number Diff line number Diff line change
@@ -1,32 +1,23 @@
using System;
using System.ComponentModel;
using System.Linq;
using System.IO;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace NuGetDependencyDownloader
{
public partial class MainForm : Form
{
private SlidingBuffer<string> _consoleBuffer = new SlidingBuffer<string>(1000);
private BackgroundWorker _worker;
private PackageTool _packageTool;
private bool _closePending;
private Task _downloadNuGet = null;
private CancellationTokenSource _downloadCancelToken = null;

public MainForm()
{
InitializeComponent();
}

private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (_worker != null && _worker.IsBusy)
{
_closePending = true;
_worker.CancelAsync();
e.Cancel = true;
Enabled = false;
return;
}
TextBoxWriter writer = new TextBoxWriter(textBoxActivity);
Console.SetOut(writer);
}

private void btnStart_Click(object sender, EventArgs e)
Expand All @@ -39,61 +30,51 @@ private void btnStart_Click(object sender, EventArgs e)

private void btnStop_Click(object sender, EventArgs e)
{
ShowActivity("Stop requested.");
Console.WriteLine(@"Stop requested.");
btnStop.Enabled = false;
_worker.CancelAsync();
_downloadCancelToken.Cancel();
}

private void StartWork()
private async void StartWork()
{
_worker = new BackgroundWorker
{
WorkerSupportsCancellation = true,
WorkerReportsProgress = true
};
_worker.DoWork += new DoWorkEventHandler(DoWork);
_worker.ProgressChanged += new ProgressChangedEventHandler(Progress);
_worker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(EndWork);
_downloadCancelToken = new CancellationTokenSource();
_downloadNuGet = NuGetManager.Downloader(textBoxPackage.Text, textBoxVersion.Text, checkBoxPrerelease.Checked, _downloadCancelToken.Token);

_packageTool = new PackageTool();
_packageTool.StopRequested = () => _worker.CancellationPending;
_packageTool.Progress = (x) => _worker.ReportProgress(0, x);

_worker.RunWorkerAsync();
try {
await _downloadNuGet;
} catch(InvalidOperationException)
{
} catch(OperationCanceledException)
{
}
btnStart.Enabled = true;
btnStop.Enabled = false;
}
}

private void Progress(object sender, ProgressChangedEventArgs e)
public class TextBoxWriter : TextWriter
{
// The control where we will write text.
private Control MyControl;
public TextBoxWriter(Control control)
{
ShowActivity((string)e.UserState);
MyControl = control;
}

private void EndWork(object sender, RunWorkerCompletedEventArgs e)
public override void Write(char value)
{
btnStop.Enabled = false;
btnStart.Enabled = true;

_packageTool = null;
_worker = null;

if (_closePending) Close();
_closePending = false;
MyControl.Text += value;
}

private void DoWork(object sender, DoWorkEventArgs e)
public override void Write(string value)
{
_packageTool.ProcessPackage(textBoxPackage.Text, textBoxVersion.Text, checkBoxPrerelease.Checked);
MyControl.Text += value;
}

private void ShowActivity(string text)
public override Encoding Encoding
{
_consoleBuffer.Add(text);

textBoxActivity.Lines = _consoleBuffer.ToArray();
textBoxActivity.Focus();
textBoxActivity.SelectionStart = textBoxActivity.Text.Length;
textBoxActivity.SelectionLength = 0;
textBoxActivity.ScrollToCaret();
textBoxActivity.Refresh();
get => Encoding.Unicode;
}

}
}
83 changes: 76 additions & 7 deletions NugetDependencyDownloader/NuGetDependencyDownloader.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NuGetDependencyDownloader</RootNamespace>
<AssemblyName>NuGetDependencyDownloader</AssemblyName>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.7.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
<TargetFrameworkProfile />
Expand All @@ -34,16 +34,84 @@
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.Web.XmlTransform, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Web.Xdt.2.1.1\lib\net40\Microsoft.Web.XmlTransform.dll</HintPath>
<Reference Include="Microsoft.Build" />
<Reference Include="Microsoft.Web.XmlTransform, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<HintPath>..\packages\Microsoft.Web.Xdt.2.1.2\lib\net40\Microsoft.Web.XmlTransform.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Core, Version=2.12.0.817, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\NuGet.Core.2.12.0\lib\net40-Client\NuGet.Core.dll</HintPath>
<Reference Include="MoreLinq, Version=3.2.0.0, Culture=neutral, PublicKeyToken=384d532d7e88985d">
<HintPath>..\packages\morelinq.3.2.0\lib\net451\MoreLinq.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="mscorlib" />
<Reference Include="Newtonsoft.Json, Version=9.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed">
<HintPath>..\packages\Newtonsoft.Json.9.0.1\lib\net45\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Commands, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Commands.5.3.0\lib\net472\NuGet.Commands.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Common, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Common.5.3.0\lib\net472\NuGet.Common.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Configuration, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Configuration.5.3.0\lib\net472\NuGet.Configuration.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Credentials, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Credentials.5.3.0\lib\net472\NuGet.Credentials.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.DependencyResolver.Core, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.DependencyResolver.Core.5.3.0\lib\net472\NuGet.DependencyResolver.Core.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Frameworks, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Frameworks.5.3.0\lib\net472\NuGet.Frameworks.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.LibraryModel, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.LibraryModel.5.3.0\lib\net472\NuGet.LibraryModel.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.PackageManagement, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.PackageManagement.5.3.0\lib\net472\NuGet.PackageManagement.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Packaging, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Packaging.5.3.0\lib\net472\NuGet.Packaging.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.ProjectModel, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.ProjectModel.5.3.0\lib\net472\NuGet.ProjectModel.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Protocol, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Protocol.5.3.0\lib\net472\NuGet.Protocol.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Resolver, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Resolver.5.3.0\lib\net472\NuGet.Resolver.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="NuGet.Versioning, Version=5.3.0.4, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
<HintPath>..\packages\NuGet.Versioning.5.3.0\lib\net472\NuGet.Versioning.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Core" />
<Reference Include="System.IdentityModel" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Net.Http.WebRequest" />
<Reference Include="System.Security" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.ValueTuple, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51">
<HintPath>..\packages\System.ValueTuple.4.4.0\lib\net47\System.ValueTuple.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
Expand All @@ -55,16 +123,17 @@
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Logger.cs" />
<Compile Include="MachineWideSettings.cs" />
<Compile Include="MainForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="MainForm.Designer.cs">
<DependentUpon>MainForm.cs</DependentUpon>
</Compile>
<Compile Include="NuGetManager.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SlidingBuffer.cs" />
<Compile Include="PackageTool.cs" />
<EmbeddedResource Include="MainForm.resx">
<DependentUpon>MainForm.cs</DependentUpon>
</EmbeddedResource>
Expand Down
Loading