Exemple #1
0
        /// <summary>
        /// Tries to get or create a <see cref="IPackageRepository"/> instance for a reference
        /// </summary>
        /// <param name="reference"></param>
        /// <param name="repo">The output repository</param>
        /// <returns>True if getting a repository was successful</returns>
        public static bool TryGetRepository(this PartialPackageReference reference, out IPackageRepository repo)
        {
            repo = null;
            if (reference == null)
            {
                return(false);
            }
            if (!string.IsNullOrWhiteSpace(reference.RepositoryUrl))
            {
                var res = DefaultRepositories.TryGetValue(reference.RepositoryUrl, out repo);
                if (!res)
                {
                    res = PresentRepositories.TryGetValue(reference.RepositoryUrl, out repo);
                }
                if (!res && TryCreateRepository(reference.RepositoryUrl, out repo))
                {
                    repo.RegisterRepository();
                    res = repo.Refresh();
                }

                if (res)
                {
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
            else
            {
                Logging.L.Verbose("Repository of {$PackRef} is not specified, looking for it in default repositories", reference);
                foreach (var defrepo in DefaultRepositories.Values)
                {
                    if (defrepo.TryGetPackageText(reference, out _))
                    {
                        repo = defrepo;
                        return(true);
                    }
                }
                return(false);
            }
        }