Skip to content

Commit

Permalink
Merge pull request #662 from BoomTownROI/MSSolutionRestorePackage
Browse files Browse the repository at this point in the history
Adding ability to run nuget package restore on a visual studio project
  • Loading branch information
forki committed Feb 24, 2015
2 parents d3a1750 + 1e0fea5 commit e47cca4
Showing 1 changed file with 40 additions and 10 deletions.
50 changes: 40 additions & 10 deletions src/app/FakeLib/RestorePackageHelper.fs
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -83,15 +83,18 @@ let runNuGet toolPath timeOut args failWith =
let rec runNuGetTrial retries toolPath timeOut args failWith =
let f() = runNuGet toolPath timeOut args failWith
TaskRunnerHelper.runWithRetries f retries

// [omit]
let buildSources sources =
sources
|> List.map (fun source -> " \"-Source\" \"" + source + "\"")
|> separated ""

/// [omit]
let buildNuGetArgs setParams packageId =
let parameters = RestoreSinglePackageDefaults |> setParams
let sources =
parameters.Sources
|> List.map (fun source -> " \"-Source\" \"" + source + "\"")
|> separated ""

let sources = parameters.Sources |> buildSources

let args = " \"install\" \"" + packageId + "\" \"-OutputDirectory\" \"" + (parameters.OutputPath |> FullName) + "\"" + sources

match parameters.ExcludeVersion, parameters.IncludePreRelease, parameters.Version with
Expand Down Expand Up @@ -132,10 +135,7 @@ let RestorePackage setParams packageFile =
traceStartTask "RestorePackage" packageFile
let (parameters:RestorePackageParams) = RestorePackageDefaults |> setParams

let sources =
parameters.Sources
|> List.map (fun source -> " \"-Source\" \"" + source + "\"")
|> separated ""
let sources = parameters.Sources |> buildSources

let args =
" \"install\" \"" + (packageFile |> FullName) + "\"" +
Expand All @@ -148,4 +148,34 @@ let RestorePackage setParams packageFile =
/// Restores all packages from NuGet to the default directories by scanning for packages.config files in any subdirectory.
let RestorePackages() =
!! "./**/packages.config"
|> Seq.iter (RestorePackage id)
|> Seq.iter (RestorePackage id)

/// Restores the packages in the given solution file file from NuGet.
/// ## Parameters
///
/// - `setParams` - Function used to manipulate the default NuGet parameters.
/// - `solutionFile` - The microsoft sln file name.
///
/// ## Sample
///
/// Target "RestorePackages" (fun _ ->
/// "./scr/Everything.sln"
/// |> RestoreMSSolutionPackages (fun p ->
/// { p with
/// Sources = "http:://myNugetSources.com" :: p.Sources
/// OutputPath = outputDir
/// Retries = 4 })
/// )
let RestoreMSSolutionPackages setParams solutionFile =
traceStartTask "RestoreSolutionPackages" solutionFile
let (parameters:RestorePackageParams) = RestorePackageDefaults |> setParams

let sources = parameters.Sources |> buildSources

let args =
"\"restore\" \"" + (solutionFile |> FullName) + "\"" +
" \"-OutputDirectory\" \"" + (parameters.OutputPath |> FullName) + "\"" + sources

runNuGetTrial parameters.Retries parameters.ToolPath parameters.TimeOut args (fun () -> failwithf "Package restore of %s failed" solutionFile)

traceEndTask "RestoreSolutionPackages" solutionFile

0 comments on commit e47cca4

Please sign in to comment.