From ac71515e3ca5d6ecade6f158a1b11373148b9e4e Mon Sep 17 00:00:00 2001
From: Inga Lovinde <52715130+inga-lovinde@users.noreply.github.com>
Date: Mon, 20 Jul 2015 11:34:21 +0300
Subject: [PATCH] Implemented nuget package restore
---
BuildServer/lib/tasks/dotnetbuild.js | 6 +++++
BuildServer/lib/tasks/dotnetnugetrestore.js | 18 ++++++++++++++
.../MicroBuildServer.DotNetBuilder.csproj | 1 +
DotNetBuilder/NuGetRestoreRequest.cs | 9 +++++++
DotNetBuilder/NuGetter.cs | 24 +++++++++++++++++++
DotNetBuilder/Program.cs | 2 ++
6 files changed, 60 insertions(+)
create mode 100644 BuildServer/lib/tasks/dotnetnugetrestore.js
create mode 100644 DotNetBuilder/NuGetRestoreRequest.cs
diff --git a/BuildServer/lib/tasks/dotnetbuild.js b/BuildServer/lib/tasks/dotnetbuild.js
index 8cee327..55d573a 100644
--- a/BuildServer/lib/tasks/dotnetbuild.js
+++ b/BuildServer/lib/tasks/dotnetbuild.js
@@ -14,6 +14,12 @@ module.exports = function (params, processor) {
skipCodeSigning: params.skipCodeSigning
}
},
+ {
+ type: "dotnetnugetrestore",
+ params: {
+ solution: params.solution
+ }
+ },
{
type: "dotnetbuilderwrapper",
params: {
diff --git a/BuildServer/lib/tasks/dotnetnugetrestore.js b/BuildServer/lib/tasks/dotnetnugetrestore.js
new file mode 100644
index 0000000..dd5f488
--- /dev/null
+++ b/BuildServer/lib/tasks/dotnetnugetrestore.js
@@ -0,0 +1,18 @@
+"use strict";
+
+var sequential = require('./sequential');
+
+module.exports = function (params, processor) {
+ return sequential({
+ tasks: [
+ {
+ type: "dotnetbuilderwrapper",
+ params: {
+ command: "nugetrestore",
+ BaseDirectory: processor.context.exported,
+ SolutionPath: processor.context.exported + "/" + params.solution
+ }
+ }
+ ]
+ }, processor);
+};
diff --git a/DotNetBuilder/MicroBuildServer.DotNetBuilder.csproj b/DotNetBuilder/MicroBuildServer.DotNetBuilder.csproj
index 4858937..23a63dc 100644
--- a/DotNetBuilder/MicroBuildServer.DotNetBuilder.csproj
+++ b/DotNetBuilder/MicroBuildServer.DotNetBuilder.csproj
@@ -83,6 +83,7 @@
+
diff --git a/DotNetBuilder/NuGetRestoreRequest.cs b/DotNetBuilder/NuGetRestoreRequest.cs
new file mode 100644
index 0000000..15f3ef3
--- /dev/null
+++ b/DotNetBuilder/NuGetRestoreRequest.cs
@@ -0,0 +1,9 @@
+namespace MicroBuildServer.DotNetBuilder
+{
+ class NuGetRestoreRequest
+ {
+ public string BaseDirectory { get; set; }
+
+ public string SolutionPath { get; set; }
+ }
+}
diff --git a/DotNetBuilder/NuGetter.cs b/DotNetBuilder/NuGetter.cs
index 618ab26..b564d2b 100644
--- a/DotNetBuilder/NuGetter.cs
+++ b/DotNetBuilder/NuGetter.cs
@@ -213,5 +213,29 @@ namespace MicroBuildServer.DotNetBuilder
return new Response {Messages = console.Messages.ToArray()};
}
+
+ public static Response Restore(NuGetRestoreRequest request)
+ {
+ var console = new Console();
+ PackageBuilder builder = new PackageBuilder();
+ var command = new RestoreCommand
+ {
+ SolutionDirectory = PathTools.OptimizePath(request.BaseDirectory),
+ Console = console,
+ Verbosity = Verbosity.Detailed,
+ };
+ command.Arguments.Add(request.SolutionPath);
+
+ try
+ {
+ command.Execute();
+ }
+ catch (Exception e)
+ {
+ console.WriteError(e);
+ }
+
+ return new Response { Messages = console.Messages.ToArray() };
+ }
}
}
diff --git a/DotNetBuilder/Program.cs b/DotNetBuilder/Program.cs
index 8cbd35c..7f7a83c 100644
--- a/DotNetBuilder/Program.cs
+++ b/DotNetBuilder/Program.cs
@@ -22,6 +22,8 @@ namespace MicroBuildServer.DotNetBuilder
return NuGetter.Pack(JsonConvert.DeserializeObject(input));
case "nugetpush":
return NuGetter.Push(JsonConvert.DeserializeObject(input));
+ case "nugetrestore":
+ return NuGetter.Restore(JsonConvert.DeserializeObject(input));
default:
throw new ApplicationException("Unsupported type '" + args[0] + "'");
}