NuGet.DefaultPackagePathResolver.GetPackageDirectory C# (CSharp) Méthode

GetPackageDirectory() public méthode

public GetPackageDirectory ( IPackage package ) : string
package IPackage
Résultat string
		public virtual string GetPackageDirectory(IPackage package)
		{
			return GetPackageDirectory(package.Id, package.Version);
		}

Same methods

DefaultPackagePathResolver::GetPackageDirectory ( string packageId, SemanticVersion version ) : string

Usage Example

Exemple #1
0
        public bool Execute()
        {
            var projectFile = ResolveProjectFile();
            if (string.IsNullOrEmpty(projectFile))
            {
                return false;
            }

            _solutionRoot = ProjectResolver.ResolveRootDirectory(projectFile);

            var globalFile = GlobalSettings.GetGlobalFilePath(_solutionRoot);
            if (!File.Exists(globalFile))
            {
                _reports.WriteError($"The '{GlobalSettings.GlobalFileName}' is missing from '{_solutionRoot}'.");
                return false;
            }

            var packagesFolder = ResolvePackagesFolder();
            if (string.IsNullOrEmpty(packagesFolder))
            {
                return false;
            }

            var packageVersion = ResolvePackageVersion(projectFile);
            if (packageVersion == null)
            {
                return false;
            }

            var packageResolver = new DefaultPackagePathResolver(packagesFolder);
            var packageFolder = packageResolver.GetPackageDirectory(_packageId, packageVersion);
            packageFolder = Path.Combine(packagesFolder, packageFolder);

            var snapshotInfo = ReadRepositoryInfo(packageFolder);
            if (snapshotInfo == null)
            {
                return false;
            }

            string repoType;
            if (!snapshotInfo.TryGetValue(Constants.RepoTypeKey, out repoType))
            {
                _reports.WriteError("Repository type information is missing from the repository information file.");
                return false;
            }

            var provider = SourceControlProviderFactory.ResolveProvider(repoType, _reports);
            if (provider == null)
            {
                _reports.WriteError($"Unknown repository type '{repoType}'");
                return false;
            }

            if (!provider.IsInstalled)
            {
                _reports.WriteError($"The '{repoType}' client application is not installed.");
                return false;
            }

            var sourcesFolder = ResolveSourcesFolder();

            var sourceFolderName = provider.CreateShortFolderName(snapshotInfo);
            var sourceDestinationFullPath = Path.Combine(sourcesFolder, sourceFolderName);

            if (!Directory.Exists(sourceDestinationFullPath))
            {
                _reports.WriteInformation($"Downloading sources in '{sourceDestinationFullPath}'...");
                if (!provider.GetSources(sourceDestinationFullPath, snapshotInfo))
                {
                    return false;
                }
            }
            else
            {
                _reports.WriteInformation($"Sources already found in '{sourceDestinationFullPath}'");
            }

            var srcFolder = provider.GetSourceFolderPath(snapshotInfo);
            srcFolder = Path.Combine(sourceDestinationFullPath, srcFolder);
            if (!Directory.Exists(srcFolder))
            {
                _reports.WriteError($"The source code folder '{srcFolder}' is missing.");
                return false;
            }

            _reports.Verbose.WriteLine($"Updating {GlobalSettings.GlobalFileName}...");
            ModifyJson(globalFile, jObj =>
                {
                    var projects = jObj["projects"] as JArray;
                    if (projects == null)
                    {
                        projects = new JArray();
                        projects.Add(srcFolder);
                        jObj.Add("projects", projects);
                    }
                    else
                    {
                        if (!projects.Any(t => t.ToString().Equals(srcFolder)))
                        {
                            projects.Add(srcFolder);
                        }
                    }
                });

            return true;
        }
All Usage Examples Of NuGet.DefaultPackagePathResolver::GetPackageDirectory