protected IEnumerable <IDependencyInfo> CreateDependencyInfos(
            bool remote,
            string versionsCommit)
        {
            foreach (ITaskItem info in DependencyInfo ?? Enumerable.Empty <ITaskItem>())
            {
                string type = info.GetMetadata("DependencyType");
                switch (type)
                {
                case "Build":
                    if (versionsCommit != null)
                    {
                        ReplaceExistingMetadata(info, CurrentRefMetadataName, versionsCommit);
                    }
                    yield return(CreateBuildInfoDependency(info, BuildInfoCacheDir));

                    break;

                case "Submodule":
                    yield return(SubmoduleDependencyInfo.Create(
                                     GetRequiredMetadata(info, "Repository"),
                                     GetRequiredMetadata(info, "Ref"),
                                     GetRequiredMetadata(info, "Path"),
                                     remote));

                    break;

                default:
                    throw new NotSupportedException(
                              $"Unsupported DependencyInfo '{info.ItemSpec}': DependencyType '{type}'.");
                }
            }
        }
Esempio n. 2
0
        protected IEnumerable <IDependencyInfo> CreateDependencyInfos(
            bool remote,
            string versionsCommit)
        {
            foreach (ITaskItem info in DependencyInfo ?? Enumerable.Empty <ITaskItem>())
            {
                IDependencyInfo dependencyInfo;

                string type = info.GetMetadata("DependencyType");
                switch (type)
                {
                case "Build":
                    SetVersionsCommitOverride(info, versionsCommit);
                    dependencyInfo = CreateBuildInfoDependency(info, BuildInfoCacheDir);
                    break;

                case "Submodule":
                    dependencyInfo = SubmoduleDependencyInfo.Create(
                        GetRequiredMetadata(info, "Repository"),
                        GetRequiredMetadata(info, "Ref"),
                        GetRequiredMetadata(info, "Path"),
                        remote);
                    break;

                case "Orchestrated build":
                    SetVersionsCommitOverride(info, versionsCommit);
                    dependencyInfo = OrchestratedBuildDependencyInfo.CreateAsync(
                        info.ItemSpec,
                        new GitHubProject(
                            GetRequiredMetadata(info, "VersionsRepo"),
                            GetRequiredMetadata(info, "VersionsRepoOwner")),
                        GetRequiredMetadata(info, CurrentRefMetadataName),
                        GetRequiredMetadata(info, "BasePath"),
                        new BuildManifestClient(GitHubClient)).Result;
                    break;

                case "Orchestrated build file":
                    dependencyInfo = new OrchestratedBuildDependencyInfo(
                        info.ItemSpec,
                        OrchestratedBuildModel.Parse(
                            XElement.Parse(
                                File.ReadAllText(
                                    GetRequiredMetadata(info, "Path")))));
                    break;

                default:
                    throw new NotSupportedException(
                              $"Unsupported DependencyInfo '{info.ItemSpec}': DependencyType '{type}'.");
                }

                DependencyInfoConfigItems[dependencyInfo] = info;
                yield return(dependencyInfo);
            }
        }