private (FilePath filePath, string warningMessage) FindManifestFile()
        {
            if (!string.IsNullOrWhiteSpace(_explicitManifestFile))
            {
                return(new FilePath(_explicitManifestFile), null);
            }

            var manifestFilesContainPackageId
                = _toolManifestFinder.FindByPackageId(_packageId);

            if (manifestFilesContainPackageId.Any())
            {
                string warning = null;
                if (manifestFilesContainPackageId.Count > 1)
                {
                    warning =
                        string.Format(
                            LocalizableStrings.SamePackageIdInOtherManifestFile,
                            string.Join(
                                Environment.NewLine,
                                manifestFilesContainPackageId.Skip(1).Select(m => $"\t{m}")));
                }

                return(manifestFilesContainPackageId.First(), warning);
            }

            return(_toolManifestFinder.FindFirst(), null);
        }
Exemple #2
0
        public static (FilePath?filePath, string warningMessage) ExplicitManifestOrFindManifestContainPackageId(
            this IToolManifestFinder toolManifestFinder,
            string explicitManifestFile,
            PackageId packageId)
        {
            if (!string.IsNullOrWhiteSpace(explicitManifestFile))
            {
                return(new FilePath(explicitManifestFile), null);
            }

            IReadOnlyList <FilePath> manifestFilesContainPackageId;

            try
            {
                manifestFilesContainPackageId
                    = toolManifestFinder.FindByPackageId(packageId);
            }
            catch (ToolManifestCannotBeFoundException e)
            {
                throw new GracefulException(new[]
                {
                    e.Message,
                    LocalizableStrings.NoManifestGuide
                },
                                            verboseMessages: new[] { e.VerboseMessage },
                                            isUserError: false);
            }

            if (manifestFilesContainPackageId.Any())
            {
                string warning = null;
                if (manifestFilesContainPackageId.Count > 1)
                {
                    warning =
                        string.Format(
                            LocalizableStrings.SamePackageIdInOtherManifestFile,
                            string.Join(
                                Environment.NewLine,
                                manifestFilesContainPackageId.Skip(1).Select(m => $"\t{m}")));
                }

                return(manifestFilesContainPackageId.First(), warning);
            }

            return(null, null);
        }