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] + "'"); }