private static string ResolvePackagesDirectory(string projectDir) { var rootDir = ResolveRootDirectory(projectDir); var settings = SettingsUtils.ReadSettings( solutionDir: rootDir, nugetConfigFile: null, fileSystem: new PhysicalFileSystem(projectDir), machineWideSettings: new CommandLineMachineWideSettings()); var packagesDir = settings.GetRepositoryPath(); // If 'repositoryPath' is not specified in NuGet.config, use {SolutionRoot}/packages as default if (string.IsNullOrEmpty(packagesDir)) { packagesDir = Path.Combine(rootDir, "packages"); } return(Path.GetFullPath(packagesDir)); }
public async Task <bool> ExecuteCommand() { if (string.IsNullOrEmpty(_addCommand.Name)) { Reports.Error.WriteLine("Name of dependency to install is required.".Red()); return(false); } SemanticVersion version = null; if (!string.IsNullOrEmpty(_addCommand.Version)) { version = SemanticVersion.Parse(_addCommand.Version); } // Create source provider from solution settings _addCommand.ProjectDir = _addCommand.ProjectDir ?? Directory.GetCurrentDirectory(); var rootDir = ProjectResolver.ResolveRootDirectory(_addCommand.ProjectDir); var fileSystem = new PhysicalFileSystem(Directory.GetCurrentDirectory()); var settings = SettingsUtils.ReadSettings(solutionDir: rootDir, nugetConfigFile: null, fileSystem: fileSystem, machineWideSettings: new CommandLineMachineWideSettings()); var sourceProvider = PackageSourceBuilder.CreateSourceProvider(settings); var effectiveSources = PackageSourceUtils.GetEffectivePackageSources(sourceProvider, _restoreCommand.FeedOptions.Sources, _restoreCommand.FeedOptions.FallbackSources); var packageFeeds = new PackageFeedCache(); var feeds = new List <IPackageFeed>(); foreach (var source in effectiveSources) { var feed = packageFeeds.GetPackageFeed( source, _restoreCommand.FeedOptions.NoCache, _restoreCommand.FeedOptions.IgnoreFailedSources, Reports); if (feed != null) { feeds.Add(feed); } } PackageInfo result = null; if (version == null) { result = await PackageSourceUtils.FindLatestPackage(feeds, _addCommand.Name); } else { result = await PackageSourceUtils.FindBestMatchPackage(feeds, _addCommand.Name, new SemanticVersionRange(version)); } if (result == null) { Reports.Error.WriteLine("Unable to locate {0} >= {1}", _addCommand.Name.Red().Bold(), _addCommand.Version); return(false); } if (string.IsNullOrEmpty(_addCommand.Version)) { _addCommand.Version = result.Version.ToString(); } return(_addCommand.ExecuteCommand() && (await _restoreCommand.Execute())); }