├── .config ├── 1espt │ └── PipelineAutobaseliningConfig.yml ├── dotnet-tools.json ├── guardian │ └── .gdnbaselines └── tsaoptions.json ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github ├── ISSUE_TEMPLATE │ ├── codeflow-issue.yml │ └── rollout-issue.md ├── copilot-instructions.md ├── copilot-setup-steps.yml ├── pull_request_template.md └── workflows │ └── inter-branch-merge-flow.yml ├── .gitignore ├── .packages ├── Directory.Build.props ├── Directory.Build.targets └── Directory.Packages.props ├── .vault-config ├── helixkv.yaml ├── product-construction-dev.yaml ├── product-construction-int.yaml ├── product-construction-prod.yaml ├── vmr-synchronization.1.yaml └── vmr-synchronization.2.yaml ├── Build.cmd ├── CODE-OF-CONDUCT.md ├── CredScanSuppressions.json ├── Directory.Build.props ├── Directory.Build.targets ├── Directory.Packages.props ├── LICENSE.TXT ├── NuGet.config ├── README.md ├── SECURITY.md ├── THIRD-PARTY-NOTICES.TXT ├── arcade-services.sln ├── artifacts ├── Directory.Build.props ├── Directory.Build.targets └── Directory.Packages.props ├── azure-pipelines-daily.yml ├── azure-pipelines-pr.yml ├── azure-pipelines.yml ├── build.sh ├── docs ├── Darc.md ├── DarcLibGitClients.md ├── DevGuide.md ├── Images │ ├── build-view.png │ └── channels-view.png └── scenarios.md ├── eng ├── BuildTask.targets ├── Install-SqlExpress.ps1 ├── PoliCheckExclusions.xml ├── Publishing.props ├── Signing.props ├── Version.Details.xml ├── Versions.props ├── common │ ├── BuildConfiguration │ │ └── build-configuration.json │ ├── CIBuild.cmd │ ├── PSScriptAnalyzerSettings.psd1 │ ├── README.md │ ├── SetupNugetSources.ps1 │ ├── SetupNugetSources.sh │ ├── build.ps1 │ ├── build.sh │ ├── cibuild.sh │ ├── cross │ │ ├── arm │ │ │ ├── sources.list.bionic │ │ │ ├── sources.list.focal │ │ │ ├── sources.list.jammy │ │ │ ├── sources.list.jessie │ │ │ ├── sources.list.xenial │ │ │ ├── sources.list.zesty │ │ │ └── tizen │ │ │ │ └── tizen.patch │ │ ├── arm64 │ │ │ ├── sources.list.bionic │ │ │ ├── sources.list.buster │ │ │ ├── sources.list.focal │ │ │ ├── sources.list.jammy │ │ │ ├── sources.list.stretch │ │ │ ├── sources.list.xenial │ │ │ ├── sources.list.zesty │ │ │ └── tizen │ │ │ │ └── tizen.patch │ │ ├── armel │ │ │ ├── armel.jessie.patch │ │ │ ├── sources.list.jessie │ │ │ └── tizen │ │ │ │ └── tizen.patch │ │ ├── armv6 │ │ │ └── sources.list.buster │ │ ├── build-android-rootfs.sh │ │ ├── build-rootfs.sh │ │ ├── ppc64le │ │ │ └── sources.list.bionic │ │ ├── riscv64 │ │ │ └── sources.list.sid │ │ ├── s390x │ │ │ └── sources.list.bionic │ │ ├── tizen-build-rootfs.sh │ │ ├── tizen-fetch.sh │ │ ├── toolchain.cmake │ │ └── x86 │ │ │ ├── sources.list.bionic │ │ │ └── sources.list.xenial │ ├── darc-init.ps1 │ ├── darc-init.sh │ ├── dotnet-install.cmd │ ├── dotnet-install.ps1 │ ├── dotnet-install.sh │ ├── enable-cross-org-publishing.ps1 │ ├── generate-locproject.ps1 │ ├── generate-sbom-prep.ps1 │ ├── generate-sbom-prep.sh │ ├── helixpublish.proj │ ├── init-tools-native.cmd │ ├── init-tools-native.ps1 │ ├── init-tools-native.sh │ ├── internal-feed-operations.ps1 │ ├── internal-feed-operations.sh │ ├── internal │ │ ├── Directory.Build.props │ │ ├── NuGet.config │ │ └── Tools.csproj │ ├── loc │ │ └── P22DotNetHtmlLocalization.lss │ ├── msbuild.ps1 │ ├── msbuild.sh │ ├── native │ │ ├── CommonLibrary.psm1 │ │ ├── common-library.sh │ │ ├── init-compiler.sh │ │ ├── init-distro-rid.sh │ │ ├── init-os-and-arch.sh │ │ ├── install-cmake-test.sh │ │ ├── install-cmake.sh │ │ └── install-tool.ps1 │ ├── pipeline-logging-functions.ps1 │ ├── pipeline-logging-functions.sh │ ├── post-build │ │ ├── add-build-to-channel.ps1 │ │ ├── check-channel-consistency.ps1 │ │ ├── nuget-validation.ps1 │ │ ├── post-build-utils.ps1 │ │ ├── publish-using-darc.ps1 │ │ ├── sourcelink-validation.ps1 │ │ ├── symbols-validation.ps1 │ │ └── trigger-subscriptions.ps1 │ ├── retain-build.ps1 │ ├── sdk-task.ps1 │ ├── sdl │ │ ├── NuGet.config │ │ ├── configure-sdl-tool.ps1 │ │ ├── execute-all-sdl-tools.ps1 │ │ ├── extract-artifact-archives.ps1 │ │ ├── extract-artifact-packages.ps1 │ │ ├── init-sdl.ps1 │ │ ├── packages.config │ │ ├── run-sdl.ps1 │ │ ├── sdl.ps1 │ │ └── trim-assets-version.ps1 │ ├── templates-official │ │ ├── job │ │ │ ├── job.yml │ │ │ ├── onelocbuild.yml │ │ │ ├── publish-build-assets.yml │ │ │ ├── source-build.yml │ │ │ └── source-index-stage1.yml │ │ ├── jobs │ │ │ ├── codeql-build.yml │ │ │ ├── jobs.yml │ │ │ └── source-build.yml │ │ ├── post-build │ │ │ ├── common-variables.yml │ │ │ ├── post-build.yml │ │ │ ├── setup-maestro-vars.yml │ │ │ └── trigger-subscription.yml │ │ ├── steps │ │ │ ├── add-build-to-channel.yml │ │ │ ├── build-reason.yml │ │ │ ├── component-governance.yml │ │ │ ├── enable-internal-runtimes.yml │ │ │ ├── execute-codeql.yml │ │ │ ├── execute-sdl.yml │ │ │ ├── generate-sbom.yml │ │ │ ├── get-delegation-sas.yml │ │ │ ├── get-federated-access-token.yml │ │ │ ├── publish-logs.yml │ │ │ ├── retain-build.yml │ │ │ ├── send-to-helix.yml │ │ │ └── source-build.yml │ │ └── variables │ │ │ ├── pool-providers.yml │ │ │ └── sdl-variables.yml │ ├── templates │ │ ├── job │ │ │ ├── execute-sdl.yml │ │ │ ├── job.yml │ │ │ ├── onelocbuild.yml │ │ │ ├── publish-build-assets.yml │ │ │ ├── source-build.yml │ │ │ └── source-index-stage1.yml │ │ ├── jobs │ │ │ ├── codeql-build.yml │ │ │ ├── jobs.yml │ │ │ └── source-build.yml │ │ ├── post-build │ │ │ ├── common-variables.yml │ │ │ ├── post-build.yml │ │ │ ├── setup-maestro-vars.yml │ │ │ └── trigger-subscription.yml │ │ ├── steps │ │ │ ├── add-build-to-channel.yml │ │ │ ├── build-reason.yml │ │ │ ├── component-governance.yml │ │ │ ├── enable-internal-runtimes.yml │ │ │ ├── execute-codeql.yml │ │ │ ├── execute-sdl.yml │ │ │ ├── generate-sbom.yml │ │ │ ├── get-delegation-sas.yml │ │ │ ├── get-federated-access-token.yml │ │ │ ├── publish-logs.yml │ │ │ ├── retain-build.yml │ │ │ ├── run-on-unix.yml │ │ │ ├── run-on-windows.yml │ │ │ ├── run-script-ifequalelse.yml │ │ │ ├── send-to-helix.yml │ │ │ ├── source-build.yml │ │ │ ├── telemetry-end.yml │ │ │ └── telemetry-start.yml │ │ └── variables │ │ │ ├── pool-providers.yml │ │ │ └── sdl-variables.yml │ ├── tools.ps1 │ └── tools.sh ├── enforce-issue.ps1 ├── new-issue.ps1 ├── service-templates │ ├── ProductConstructionService │ │ ├── ApplicationGateway │ │ │ ├── application-gateway.bicep │ │ │ ├── private-dns-zone.bicep │ │ │ ├── production.bicepparam │ │ │ └── staging.bicepparam │ │ ├── FullCreate │ │ │ ├── container-app.bicep │ │ │ ├── container-environment.bicep │ │ │ ├── container-registry.bicep │ │ │ ├── key-vaults.bicep │ │ │ ├── managed-identities.bicep │ │ │ ├── nsg.bicep │ │ │ ├── production.bicepparam │ │ │ ├── provision.bicep │ │ │ ├── provision.ps1 │ │ │ ├── public-ip-address.bicep │ │ │ ├── redis.bicep │ │ │ ├── scheduledContainerJob.bicep │ │ │ ├── staging.bicepparam │ │ │ ├── storage-account.bicep │ │ │ └── virtual-network.bicep │ │ └── RecreateEnvOnly │ │ │ ├── README.md │ │ │ ├── container-environment-recreate.bicep │ │ │ ├── production.bicepparam │ │ │ ├── recreate.bicep │ │ │ └── staging.bicepparam │ └── readme.md └── templates │ ├── jobs │ ├── darc-and-api-tests.yml │ └── e2e-pcs-tests.yml │ ├── stages │ ├── deploy.yaml │ └── secret-validation.yml │ └── steps │ ├── build.yml │ ├── docker-build.yml │ ├── generate-sbom.yml │ └── test.yml ├── github-merge-flow.jsonc ├── global.json ├── src ├── Maestro │ ├── Maestro.Common │ │ ├── AppCredentials │ │ │ ├── AppCredential.cs │ │ │ ├── AppCredentialResolver.cs │ │ │ ├── AppCredentialResolverOptions.cs │ │ │ ├── CachedInteractiveBrowserCredential.cs │ │ │ ├── CredentialResolverOptions.cs │ │ │ └── ResolvedCredential.cs │ │ ├── AzureDevOpsTokens │ │ │ ├── AzureDevOpsCredentialResolverOptions.cs │ │ │ ├── AzureDevOpsTokenProvider.cs │ │ │ ├── AzureDevOpsTokenProviderOptions.cs │ │ │ └── IAzureDevOpsTokenProvider.cs │ │ ├── IRemoteTokenProvider.cs │ │ └── Maestro.Common.csproj │ ├── Maestro.Data │ │ ├── ApplicationUser.cs │ │ ├── ApplicationUserPersonalAccessToken.cs │ │ ├── BuildAssetRegistryContext.cs │ │ ├── BuildAssetRegistryInstallationLookup.cs │ │ ├── BuildAssetRegistryRegistrations.cs │ │ ├── GlobalSuppressions.cs │ │ ├── JsonExtensions.cs │ │ ├── Maestro.Data.csproj │ │ ├── Migrations │ │ │ ├── 20220425233739_initial-squashed.cs │ │ │ ├── 20220427230202_initial-squashed.Designer.cs │ │ │ ├── 20240202111944_CodeEnabledSubscriptions.Designer.cs │ │ │ ├── 20240202111944_CodeEnabledSubscriptions.cs │ │ │ ├── 20240216101522_CodeEnabledSubscriptions2.Designer.cs │ │ │ ├── 20240216101522_CodeEnabledSubscriptions2.cs │ │ │ ├── 20240403133733_CodeEnabledSubscriptions3.Designer.cs │ │ │ ├── 20240403133733_CodeEnabledSubscriptions3.cs │ │ │ ├── 20250227091038_IncreaseAssetNameSize.Designer.cs │ │ │ ├── 20250227091038_IncreaseAssetNameSize.cs │ │ │ └── BuildAssetRegistryContextModelSnapshot.cs │ │ ├── Models │ │ │ ├── Asset.cs │ │ │ ├── AssetFilter.cs │ │ │ ├── AssetLocation.cs │ │ │ ├── Build.cs │ │ │ ├── BuildIncoherence.cs │ │ │ ├── Channel.cs │ │ │ ├── DefaultChannel.cs │ │ │ ├── DependencyFlow.cs │ │ │ ├── GoalTime.cs │ │ │ ├── LocationType.cs │ │ │ ├── LongestBuildPath.cs │ │ │ ├── MergePolicyDefinition.cs │ │ │ ├── Repository.cs │ │ │ ├── Subscription.cs │ │ │ ├── SubscriptionPolicy.cs │ │ │ ├── SubscriptionUpdate.cs │ │ │ ├── SubscriptionUpdateHistory.cs │ │ │ └── UpdateFrequency.cs │ │ ├── SqlServerDbContextOptionsExtensions.cs │ │ └── dotnet-ef.ps1 │ ├── Maestro.DataProviders │ │ ├── DarcRemoteMemoryCache.cs │ │ ├── ISqlBarClient.cs │ │ ├── Maestro.DataProviders.csproj │ │ ├── MultiProjectKustoQuery.cs │ │ ├── RemoteFactory.cs │ │ ├── SharedKustoQueries.cs │ │ └── SqlBarClient.cs │ ├── Maestro.MergePolicies │ │ ├── AllChecksSuccessfulMergePolicy.cs │ │ ├── BackFlowMergePolicy.cs │ │ ├── CodeFlowDirection.cs │ │ ├── CodeFlowMergePolicy.cs │ │ ├── CoherencyErrorDetails.cs │ │ ├── DependencyUpdateSummary.cs │ │ ├── DontAutomergeDowngradesMergePolicy.cs │ │ ├── ForwardFlowMergePolicy.cs │ │ ├── Maestro.MergePolicies.csproj │ │ ├── MergePolicy.cs │ │ ├── MergePolicyServiceCollectionExtensions.cs │ │ ├── NoRequestedChangesMergePolicy.cs │ │ ├── PullRequestUpdateSummary.cs │ │ ├── StandardMergePolicy.cs │ │ ├── SubscriptionUpdateSummary.cs │ │ └── ValidateCoherencyMergePolicy.cs │ ├── Maestro.MergePolicyEvaluation │ │ ├── IMergePolicyInfo.cs │ │ ├── Maestro.MergePolicyEvaluation.csproj │ │ ├── MergePolicyConstants.cs │ │ ├── MergePolicyEvaluationResult.cs │ │ ├── MergePolicyEvaluationResults.cs │ │ └── MergePolicyEvaluationStatus.cs │ └── Microsoft.DotNet.Maestro.Tasks │ │ ├── Microsoft.DotNet.Maestro.Tasks.csproj │ │ ├── Proxies │ │ ├── GetEnvProxy.cs │ │ └── VersionIdentifierProxy.cs │ │ ├── XmlSerializationHelper.cs │ │ └── src │ │ ├── AssetDataComparer.cs │ │ ├── CertificatesSignInfoComparer.cs │ │ ├── FileExtensionSignInfoComparer.cs │ │ ├── FileSignInfoComparer.cs │ │ ├── ItemsToSignComparer.cs │ │ ├── LaunchDebugger.cs │ │ ├── MSBuildLogger.cs │ │ ├── Models │ │ ├── Manifest.cs │ │ └── ManifestBuildData.cs │ │ ├── PushMetadataToBuildAssetRegistry.cs │ │ └── StrongNameSignInfoComparer.cs ├── Microsoft.DotNet.Darc │ ├── Darc │ │ ├── Constants.cs │ │ ├── Helpers │ │ │ ├── CancellationKeyListener.cs │ │ │ ├── EncodedFile.cs │ │ │ ├── LocalSettings.cs │ │ │ ├── RemoteFactory.cs │ │ │ ├── UxHelpers.cs │ │ │ └── UxManager.cs │ │ ├── Microsoft.DotNet.Darc.csproj │ │ ├── Models │ │ │ └── PopUps │ │ │ │ ├── AddSubscriptionPopUp.cs │ │ │ │ ├── AuthenticateEditorPopUp.cs │ │ │ │ ├── EditorPopUp.cs │ │ │ │ ├── MergePoliciesPopUpHelpers.cs │ │ │ │ ├── MergePolicyData.cs │ │ │ │ ├── SetRepositoryMergePoliciesPopUp.cs │ │ │ │ ├── SubscriptionData.cs │ │ │ │ ├── SubscriptionPopUp.cs │ │ │ │ ├── SubscriptionUpdateData.cs │ │ │ │ └── UpdateSubscriptionPopUp.cs │ │ ├── Operations │ │ │ ├── AddBuildToChannelOperation.cs │ │ │ ├── AddChannelOperation.cs │ │ │ ├── AddDefaultChannelOperation.cs │ │ │ ├── AddDependencyOperation.cs │ │ │ ├── AddSubscriptionOperation.cs │ │ │ ├── AuthenticateOperation.cs │ │ │ ├── CloneOperation.cs │ │ │ ├── DefaultChannelStatusOperation.cs │ │ │ ├── DeleteBuildFromChannelOperation.cs │ │ │ ├── DeleteChannelOperation.cs │ │ │ ├── DeleteDefaultChannelOperation.cs │ │ │ ├── DeleteSubscriptionsOperation.cs │ │ │ ├── GatherDropOperation.cs │ │ │ ├── GetAssetOperation.cs │ │ │ ├── GetBuildOperation.cs │ │ │ ├── GetChannelOperation.cs │ │ │ ├── GetChannelsOperation.cs │ │ │ ├── GetDefaultChannelsOperation.cs │ │ │ ├── GetDependenciesOperation.cs │ │ │ ├── GetDependencyFlowGraphOperation.cs │ │ │ ├── GetDependencyGraphOperation.cs │ │ │ ├── GetGoalOperation.cs │ │ │ ├── GetHealthOperation.cs │ │ │ ├── GetLatestBuildOperation.cs │ │ │ ├── GetRepositoryMergePoliciesOperation.cs │ │ │ ├── GetSubscriptionsOperation.cs │ │ │ ├── Operation.cs │ │ │ ├── SetGoalOperations.cs │ │ │ ├── SetRepositoryMergePoliciesOperation.cs │ │ │ ├── SubscriptionsStatusOperation.cs │ │ │ ├── TriggerSubscriptionsOperation.cs │ │ │ ├── UpdateBuildOperation.cs │ │ │ ├── UpdateChannelOperation.cs │ │ │ ├── UpdateDefaultChannelBaseOperation.cs │ │ │ ├── UpdateDependenciesOperation.cs │ │ │ ├── UpdateSubscriptionOperation.cs │ │ │ ├── VerifyOperation.cs │ │ │ └── VirtualMonoRepo │ │ │ │ ├── BackflowOperation.cs │ │ │ │ ├── CloakedFileScanOperation.cs │ │ │ │ ├── CodeFlowOperation.cs │ │ │ │ ├── ForwardFlowOperation.cs │ │ │ │ ├── GenerateTpnOperation.cs │ │ │ │ ├── GetRepoVersionOperation.cs │ │ │ │ ├── InitializeOperation.cs │ │ │ │ ├── PushOperation.cs │ │ │ │ ├── ScanOperationBase.cs │ │ │ │ ├── UpdateOperation.cs │ │ │ │ ├── VmrDiffOperation.cs │ │ │ │ └── VmrOperationBase.cs │ │ ├── Options │ │ │ ├── AddBuildToChannelCommandLineOptions.cs │ │ │ ├── AddChannelCommandLineOptions.cs │ │ │ ├── AddDefaultChannelCommandLineOptions.cs │ │ │ ├── AddDependencyCommandLineOptions.cs │ │ │ ├── AddSubscriptionCommandLineOptions.cs │ │ │ ├── AuthenticateCommandLineOptions.cs │ │ │ ├── CloneCommandLineOptions.cs │ │ │ ├── CommandLineOptions.cs │ │ │ ├── DarcOutputType.cs │ │ │ ├── DefaultChannelStatusCommandLineOptions.cs │ │ │ ├── DeleteBuildFromChannelCommandLineOptions.cs │ │ │ ├── DeleteChannelCommandLineOptions.cs │ │ │ ├── DeleteDefaultChannelCommandLineOptions.cs │ │ │ ├── DeleteSubscriptionsCommandLineOptions.cs │ │ │ ├── GatherDropCommandLineOptions.cs │ │ │ ├── GetAssetCommandLineOptions.cs │ │ │ ├── GetBuildCommandLineOptions.cs │ │ │ ├── GetChannelCommandLineOptions.cs │ │ │ ├── GetChannelsCommandLineOptions.cs │ │ │ ├── GetDefaultChannelsCommandLineOptions.cs │ │ │ ├── GetDependenciesCommandLineOptions.cs │ │ │ ├── GetDependencyFlowGraphCommandLineOptions.cs │ │ │ ├── GetDependencyGraphCommandLineOptions.cs │ │ │ ├── GetGoalCommandLineOptions.cs │ │ │ ├── GetHealthCommandLineOptions.cs │ │ │ ├── GetLatestBuildCommandLineOptions.cs │ │ │ ├── GetRepositoryMergePoliciesCommandLineOptions.cs │ │ │ ├── GetSubscriptionsCommandLineOptions.cs │ │ │ ├── ICommandLineOptions.cs │ │ │ ├── RedactFromLoggingAttribute.cs │ │ │ ├── SetGoalCommandLineOptions.cs │ │ │ ├── SetRepositoryMergePoliciesCommandLineOptions.cs │ │ │ ├── SubscriptionCommandLineOptions.cs │ │ │ ├── SubscriptionsCommandLineOptions.cs │ │ │ ├── SubscriptionsStatusCommandLineOptions.cs │ │ │ ├── TriggerSubscriptionsCommandLineOptions.cs │ │ │ ├── UpdateBuildCommandLineOptions.cs │ │ │ ├── UpdateChannelCommandLineOptions.cs │ │ │ ├── UpdateDefaultChannelBaseCommandLineOptions.cs │ │ │ ├── UpdateDependenciesCommandLineOptions.cs │ │ │ ├── UpdateSubscriptionCommandLineOptions.cs │ │ │ ├── VerifyCommandLineOptions.cs │ │ │ └── VirtualMonoRepo │ │ │ │ ├── BackflowCommandLineOptions.cs │ │ │ │ ├── CloakedFileScanOptions.cs │ │ │ │ ├── CodeFlowCommandLineOptions.cs │ │ │ │ ├── ForwardFlowCommandLineOptions.cs │ │ │ │ ├── GenerateTpnCommandLineOptions.cs │ │ │ │ ├── GetRepoVersionCommandLineOptions.cs │ │ │ │ ├── IBaseVmrCommandLineOptions.cs │ │ │ │ ├── InitializeCommandLineOptions.cs │ │ │ │ ├── UpdateCommandLineOptions.cs │ │ │ │ ├── VmrCommandLineOptions.cs │ │ │ │ ├── VmrCommandLineOptionsBase.cs │ │ │ │ ├── VmrDiffOptions.cs │ │ │ │ ├── VmrPushCommandLineOptions.cs │ │ │ │ ├── VmrScanOptions.cs │ │ │ │ └── VmrSyncCommandLineOptions.cs │ │ ├── Program.cs │ │ ├── Properties │ │ │ └── AssemblyInfo.cs │ │ └── runtimeconfig.template.json │ └── DarcLib │ │ ├── AssetLocationResolver.cs │ │ ├── AzureDevOpsClient.cs │ │ ├── BarApiClient.cs │ │ ├── CoherencyUpdateResolver.cs │ │ ├── Commit.cs │ │ ├── Constants.cs │ │ ├── DarcAuthenticationFailureException.cs │ │ ├── DarcCoherencyException.cs │ │ ├── DarcException.cs │ │ ├── DependencyException.cs │ │ ├── DependencyFileNotFoundException.cs │ │ ├── GitHubClient.cs │ │ ├── GitHubTokenProvider.cs │ │ ├── GitNativeRepoCloner.cs │ │ ├── GitRepoCloner.cs │ │ ├── GitRepoFactory.cs │ │ ├── GitSubmoduleInfo.cs │ │ ├── GithubApplicationInstallationException.cs │ │ ├── HealthMetrics │ │ ├── HealthMetric.cs │ │ ├── ProductDependencyCyclesHealthMetric.cs │ │ └── SubscriptionHealthMetric.cs │ │ ├── Helpers │ │ ├── AzureAuthentication.cs │ │ ├── DependencyExtensions.cs │ │ ├── DependencyFileManager.cs │ │ ├── FeedConstants.cs │ │ ├── FileSystem.cs │ │ ├── GitFile.cs │ │ ├── GitFileContentContainer.cs │ │ ├── GitObjectType.cs │ │ ├── GitRepoType.cs │ │ ├── GitRepoUrlUtils.cs │ │ ├── HttpRequestManager.cs │ │ ├── IDependencyFileManager.cs │ │ ├── IFileSystem.cs │ │ ├── LocalPath.cs │ │ ├── ManifestHelper.cs │ │ ├── PackagesHelper.cs │ │ ├── ProcessExecutionResult.cs │ │ ├── ProcessManager.cs │ │ ├── StringUtils.cs │ │ ├── VersionDetailsParser.cs │ │ └── VersionFiles.cs │ │ ├── IAzureDevOpsClient.cs │ │ ├── IBarApiClient.cs │ │ ├── IBasicBarClient.cs │ │ ├── ICoherencyUpdateResolver.cs │ │ ├── IGitRepo.cs │ │ ├── IGitRepoCloner.cs │ │ ├── IGitRepoExtension.cs │ │ ├── ILocalGitClient.cs │ │ ├── ILocalGitRepo.cs │ │ ├── ILocalLibGit2Client.cs │ │ ├── IRemote.cs │ │ ├── IRemoteFactory.cs │ │ ├── IRemoteGitRepo.cs │ │ ├── KnownDependencyType.cs │ │ ├── Local.cs │ │ ├── LocalGitClient.cs │ │ ├── LocalGitRepo.cs │ │ ├── LocalLibGit2Client.cs │ │ ├── MergePullRequestParameters.cs │ │ ├── Microsoft.DotNet.DarcLib.csproj │ │ ├── Models │ │ ├── AzureDevOps │ │ │ ├── AzureDevOpsArtifact.cs │ │ │ ├── AzureDevOpsArtifactSourceReference.cs │ │ │ ├── AzureDevOpsBuild.cs │ │ │ ├── AzureDevOpsBuildArtifact.cs │ │ │ ├── AzureDevOpsBuildDefinition.cs │ │ │ ├── AzureDevOpsChange.cs │ │ │ ├── AzureDevOpsChangeType.cs │ │ │ ├── AzureDevOpsCheckState.cs │ │ │ ├── AzureDevOpsComment.cs │ │ │ ├── AzureDevOpsCommit.cs │ │ │ ├── AzureDevOpsFeed.cs │ │ │ ├── AzureDevOpsIdNamePair.cs │ │ │ ├── AzureDevOpsItem.cs │ │ │ ├── AzureDevOpsPackage.cs │ │ │ ├── AzureDevOpsPipelineResourceParameter.cs │ │ │ ├── AzureDevOpsPipelineRunDefinition.cs │ │ │ ├── AzureDevOpsPrStatus.cs │ │ │ ├── AzureDevOpsProject.cs │ │ │ ├── AzureDevOpsPush.cs │ │ │ ├── AzureDevOpsRef.cs │ │ │ ├── AzureDevOpsRefUpdate.cs │ │ │ ├── AzureDevOpsRelease.cs │ │ │ ├── AzureDevOpsReleaseDefinition.cs │ │ │ ├── AzureDevOpsReleaseEnvironment.cs │ │ │ ├── AzureDevOpsReleaseStatus.cs │ │ │ ├── AzureDevOpsRepositoryResourceParameter.cs │ │ │ ├── AzureDevOpsRunResourcesParameters.cs │ │ │ └── AzureDevOpsVariable.cs │ │ ├── Check.cs │ │ ├── CheckState.cs │ │ ├── Darc │ │ │ ├── AssetComparer.cs │ │ │ ├── BuildComparer.cs │ │ │ ├── CoherencyMode.cs │ │ │ ├── DependencyDetail.cs │ │ │ ├── DependencyDetailComparer.cs │ │ │ ├── DependencyFlowEdge.cs │ │ │ ├── DependencyFlowGraph.cs │ │ │ ├── DependencyFlowNode.cs │ │ │ ├── DependencyGraph.cs │ │ │ ├── DependencyGraphNode.cs │ │ │ ├── DependencyGraphNodeComparer.cs │ │ │ ├── DependencyType.cs │ │ │ ├── DependencyUpdate.cs │ │ │ ├── DownloadedAsset.cs │ │ │ ├── DownloadedBuild.cs │ │ │ └── SourceBuildInfo.cs │ │ ├── GitDiff.cs │ │ ├── GitHub │ │ │ ├── GitHubComment.cs │ │ │ ├── GitHubCommit.cs │ │ │ ├── GitHubContent.cs │ │ │ ├── GitHubContentType.cs │ │ │ ├── GitHubMergeMethod.cs │ │ │ ├── GitHubPullRequest.cs │ │ │ ├── GitHubRef.cs │ │ │ ├── GitHubTree.cs │ │ │ └── GitHubTreeItem.cs │ │ ├── MsBuildPropsFile.cs │ │ ├── PrStatus.cs │ │ ├── Review.cs │ │ ├── ReviewState.cs │ │ ├── VersionDetails.cs │ │ └── VirtualMonoRepo │ │ │ ├── CodeFlowParameters.cs │ │ │ ├── CodeFlowResult.cs │ │ │ ├── Codeflow.cs │ │ │ ├── GitInfoFile.cs │ │ │ ├── ManifestRecord.cs │ │ │ ├── SourceManifest.cs │ │ │ ├── SourceMapping.cs │ │ │ └── SourceMappingFile.cs │ │ ├── PullRequestNotMergeableException.cs │ │ ├── PullRequestProperties.cs │ │ ├── Remote.cs │ │ ├── RemoteRepoBase.cs │ │ ├── RemoteTokenProvider.cs │ │ ├── TelemetryRecorder.cs │ │ └── VirtualMonoRepo │ │ ├── CloneManager.cs │ │ ├── CodeFlowVmrUpdater.cs │ │ ├── CodeownersGenerator.cs │ │ ├── ConflictingDependencyUpdateException.cs │ │ ├── CredScanSuppressionsGenerator.cs │ │ ├── EmptySyncException.cs │ │ ├── Exceptions.cs │ │ ├── IVmrInitializer.cs │ │ ├── IVmrPatchHandler.cs │ │ ├── IVmrScanner.cs │ │ ├── IVmrUpdater.cs │ │ ├── InvalidSynchronizationException.cs │ │ ├── RepositoryCloneManager.cs │ │ ├── SourceMappingParser.cs │ │ ├── ThirdPartyNoticesGenerator.cs │ │ ├── VersionFileCodeFlowUpdater.cs │ │ ├── VersionFileUpdateResult.cs │ │ ├── VmrBackflower.cs │ │ ├── VmrCloakedFileScanner.cs │ │ ├── VmrCloneManager.cs │ │ ├── VmrCodeflower.cs │ │ ├── VmrDependencyTracker.cs │ │ ├── VmrDependencyUpdate.cs │ │ ├── VmrForwardFlower.cs │ │ ├── VmrInfo.cs │ │ ├── VmrIngestionPatch.cs │ │ ├── VmrInitializer.cs │ │ ├── VmrManagerBase.cs │ │ ├── VmrPatchHandler.cs │ │ ├── VmrPusher.cs │ │ ├── VmrRegistrations.cs │ │ ├── VmrScanner.cs │ │ ├── VmrUpdater.cs │ │ ├── WorkBranch.cs │ │ └── WorkBranchFactory.cs └── ProductConstructionService │ ├── BarVizBlazor.sln │ ├── DependencyFlowProcess.md │ ├── Microsoft.DotNet.ProductConstructionService.Client │ ├── AuthenticationException.cs │ ├── Build.cs │ ├── BuildData.cs │ ├── Generated │ │ ├── Assets.cs │ │ ├── AzDo.cs │ │ ├── BuildTime.cs │ │ ├── Builds.cs │ │ ├── Channels.cs │ │ ├── DefaultChannels.cs │ │ ├── Goal.cs │ │ ├── Models │ │ │ ├── ApiError.cs │ │ │ ├── Asset.cs │ │ │ ├── AssetAndLocation.cs │ │ │ ├── AssetData.cs │ │ │ ├── AssetLocation.cs │ │ │ ├── AssetLocationData.cs │ │ │ ├── AzDoBuild.cs │ │ │ ├── Build.cs │ │ │ ├── BuildData.cs │ │ │ ├── BuildGraph.cs │ │ │ ├── BuildIncoherence.cs │ │ │ ├── BuildRef.cs │ │ │ ├── BuildTime.cs │ │ │ ├── BuildUpdate.cs │ │ │ ├── Channel.cs │ │ │ ├── Commit.cs │ │ │ ├── DefaultChannel.cs │ │ │ ├── DefaultChannelCreateData.cs │ │ │ ├── DefaultChannelUpdateData.cs │ │ │ ├── FlowEdge.cs │ │ │ ├── FlowGraph.cs │ │ │ ├── FlowRef.cs │ │ │ ├── Goal.cs │ │ │ ├── GoalRequestJson.cs │ │ │ ├── LocationType.cs │ │ │ ├── MergePolicy.cs │ │ │ ├── PullRequestUpdate.cs │ │ │ ├── ReleasePipeline.cs │ │ │ ├── RepositoryBranch.cs │ │ │ ├── RepositoryHistoryItem.cs │ │ │ ├── Subscription.cs │ │ │ ├── SubscriptionData.cs │ │ │ ├── SubscriptionHistoryItem.cs │ │ │ ├── SubscriptionPolicy.cs │ │ │ ├── SubscriptionUpdate.cs │ │ │ ├── TrackedPullRequest.cs │ │ │ └── UpdateFrequency.cs │ │ ├── PagedResponse.cs │ │ ├── Pipelines.cs │ │ ├── ProductConstructionServiceApi.cs │ │ ├── PullRequest.cs │ │ ├── Repository.cs │ │ ├── Status.cs │ │ └── Subscriptions.cs │ ├── GlobalSuppressions.cs │ ├── Microsoft.DotNet.ProductConstructionService.Client.csproj │ ├── PcsApiFactory.cs │ ├── ProductConstructionServiceApi.cs │ ├── ProductConstructionServiceApiOptions.cs │ ├── Subscription.cs │ ├── Subscriptions.cs │ └── generate-client.cmd │ ├── ProductConstructionService.Api │ ├── Api │ │ ├── ApiError.cs │ │ ├── GitHubInstallationIdResolver.cs │ │ ├── HandleDuplicateKeyRowsAttribute.cs │ │ ├── RepositoryUrlAttribute.cs │ │ ├── ValidateModelStateAttribute.cs │ │ ├── v2018_07_16 │ │ │ ├── Controllers │ │ │ │ ├── AssetsController.cs │ │ │ │ ├── BuildsController.cs │ │ │ │ ├── ChannelsController.cs │ │ │ │ ├── DefaultChannelsController.cs │ │ │ │ ├── PipelinesController.cs │ │ │ │ ├── RepositoryController.cs │ │ │ │ └── SubscriptionsController.cs │ │ │ └── Models │ │ │ │ ├── Asset.cs │ │ │ │ ├── AssetData.cs │ │ │ │ ├── AssetLocation.cs │ │ │ │ ├── AssetLocationData.cs │ │ │ │ ├── Build.cs │ │ │ │ ├── BuildData.cs │ │ │ │ ├── BuildDataValidator.cs │ │ │ │ ├── Channel.cs │ │ │ │ ├── DefaultChannel.cs │ │ │ │ ├── FlowEdge.cs │ │ │ │ ├── FlowGraph.cs │ │ │ │ ├── FlowRef.cs │ │ │ │ ├── LocationType.cs │ │ │ │ ├── MergePolicy.cs │ │ │ │ ├── ReleasePipeline.cs │ │ │ │ ├── RepositoryBranch.cs │ │ │ │ ├── RepositoryHistoryItem.cs │ │ │ │ ├── Subscription.cs │ │ │ │ ├── SubscriptionData.cs │ │ │ │ ├── SubscriptionHistoryItem.cs │ │ │ │ ├── SubscriptionPolicy.cs │ │ │ │ ├── SubscriptionUpdate.cs │ │ │ │ └── UpdateFrequency.cs │ │ ├── v2019_01_16 │ │ │ ├── Controllers │ │ │ │ ├── BuildTimeController.cs │ │ │ │ ├── BuildsController.cs │ │ │ │ ├── GoalController.cs │ │ │ │ └── SubscriptionsController.cs │ │ │ └── Models │ │ │ │ ├── Build.cs │ │ │ │ ├── BuildData.cs │ │ │ │ ├── BuildGraph.cs │ │ │ │ ├── BuildTime.cs │ │ │ │ ├── BuildUpdate.cs │ │ │ │ ├── Goal.cs │ │ │ │ └── Subscription.cs │ │ └── v2020_02_20 │ │ │ ├── Controllers │ │ │ ├── AssetsController.cs │ │ │ ├── BuildsController.cs │ │ │ ├── ChannelsController.cs │ │ │ ├── DefaultChannelsController.cs │ │ │ ├── GoalController.cs │ │ │ ├── PullRequestController.cs │ │ │ └── SubscriptionsController.cs │ │ │ └── Models │ │ │ ├── AssetAndLocation.cs │ │ │ ├── Build.cs │ │ │ ├── BuildData.cs │ │ │ ├── BuildGraph.cs │ │ │ ├── BuildIncoherence.cs │ │ │ ├── BuildUpdate.cs │ │ │ ├── Channel.cs │ │ │ ├── CodeFlowRequest.cs │ │ │ ├── Commit.cs │ │ │ ├── CreateBranchRequest.cs │ │ │ ├── DefaultChannel.cs │ │ │ ├── Goal.cs │ │ │ ├── Subscription.cs │ │ │ ├── SubscriptionData.cs │ │ │ └── SubscriptionUpdate.cs │ ├── Configuration │ │ ├── ApiRedirection.cs │ │ ├── AuthenticationConfiguration.cs │ │ ├── DataProtection.cs │ │ ├── GitHubClientFactoryConfiguration.cs │ │ ├── KeyVaultSecretsWithPrefix.cs │ │ ├── MaestroAuthTestRepositoryExtensions.cs │ │ ├── NameRequestBodyFilter.cs │ │ ├── PaginatedExtension.cs │ │ ├── RequestBodyNameExtension.cs │ │ ├── SpaApplicationBuilderExtensions.cs │ │ ├── SubscriptionTriggerConfiguration.cs │ │ ├── SwaggerConfiguration.cs │ │ └── WorkItemProcessorStateInitialization.cs │ ├── Controllers │ │ ├── AccountController.cs │ │ ├── ActionResults │ │ │ └── PreconditionFailedActionResult.cs │ │ ├── AzDevController.cs │ │ ├── AzDoController.cs │ │ ├── GitHubWebhookEventProcessor.cs │ │ ├── Models │ │ │ └── AzDoBuild.cs │ │ └── StatusController.cs │ ├── Dockerfile │ ├── InitializationBackgroundService.cs │ ├── InitializationHealthCheck.cs │ ├── Pages │ │ ├── DependencyFlow │ │ │ ├── GitHubInfo.cs │ │ │ ├── Incoming.cshtml │ │ │ ├── Incoming.cshtml.cs │ │ │ ├── IncomingRepo.cs │ │ │ ├── Sla.cs │ │ │ └── SlaOptions.cs │ │ ├── Error.cshtml │ │ ├── Error.cshtml.cs │ │ ├── _Layout.cshtml │ │ └── _ViewStart.cshtml │ ├── PcsStartup.cs │ ├── ProductConstructionService.Api.csproj │ ├── Program.cs │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── Telemetry │ │ ├── RemoveDefaultPropertiesTelemetryProcessor.cs │ │ ├── TelemetryConfiguration.cs │ │ ├── TelemetryRecorder.cs │ │ └── TelemetryRoleNameInitializer.cs │ ├── VirtualMonoRepo │ │ └── VmrConfiguration.cs │ ├── appsettings.Development.json │ ├── appsettings.Production.json │ ├── appsettings.Staging.json │ ├── appsettings.json │ └── wwwroot │ │ └── _ │ ├── ProductConstructionService.AppHost │ ├── ProductConstructionService.AppHost.csproj │ ├── Program.cs │ ├── appsettings.Development.json │ └── appsettings.json │ ├── ProductConstructionService.BarViz │ ├── App.razor │ ├── Code │ │ ├── Helpers │ │ │ ├── BuildGraphData.cs │ │ │ ├── BuildHelper.cs │ │ │ ├── BuildTreeViewItem.cs │ │ │ ├── DateFormatter.cs │ │ │ ├── JSRuntimeExtensions.cs │ │ │ ├── RepoUrlConverter.cs │ │ │ └── StringExtensions.cs │ │ ├── SelectedDependencyRelationType.cs │ │ └── Services │ │ │ ├── UrlRedirectManager.cs │ │ │ └── UserRoleManager.cs │ ├── Components │ │ ├── Assets.razor │ │ ├── BuildInfo.razor │ │ ├── ChannelNavMenuItem.razor │ │ ├── CodeflowContextMenu.razor │ │ ├── CodeflowSubscriptionContextMenu.razor │ │ ├── Common │ │ │ ├── DataGridLoadingSkeleton.razor │ │ │ ├── DependencyRelationIcon.razor │ │ │ ├── GridViewTemplate.razor │ │ │ ├── PageLoadingStatus.razor │ │ │ ├── PageLoadingStatus.razor.css │ │ │ ├── SmallBadge.razor │ │ │ └── SmallBadge.razor.css │ │ ├── Dependencies.razor │ │ ├── Dependencies.razor.cs │ │ ├── DependencyGrid.razor │ │ ├── DependencyGrid.razor.cs │ │ ├── DependencyTree.razor │ │ ├── PinnedChannels.razor │ │ ├── PullRequestContextMenu.razor │ │ ├── SiteSettingsPanel.razor │ │ ├── SubscriptionContextMenu.razor │ │ ├── SubscriptionDetailDialog.razor │ │ └── SubscriptionGrid.razor │ ├── Layout │ │ ├── MainLayout.razor │ │ └── NavMenu.razor │ ├── Model │ │ └── CodeflowSubscription.cs │ ├── Pages │ │ ├── Build.razor │ │ ├── Channel.razor │ │ ├── Codeflows.razor │ │ ├── Home.razor │ │ ├── PullRequests.razor │ │ └── Subscriptions.razor │ ├── ProductConstructionService.BarViz.csproj │ ├── Program.cs │ ├── Properties │ │ └── launchSettings.json │ ├── _Imports.razor │ ├── watch.ps1 │ └── wwwroot │ │ ├── css │ │ ├── app.css │ │ ├── bootstrap-reboot.min.css │ │ └── bootstrap.min.css │ │ ├── favicon.ico │ │ └── index.html │ ├── ProductConstructionService.Common │ ├── AddJobLoggingExtension.cs │ ├── CompactConsoleLoggerFormatter.cs │ ├── ConfigurationExtension.cs │ ├── IRedisCacheFactory.cs │ ├── MetricRecorder.cs │ ├── ProductConstructionService.Common.csproj │ ├── ProductConstructionServiceExtension.cs │ ├── RedisCache.cs │ └── Utility.cs │ ├── ProductConstructionService.DependencyFlow │ ├── BatchedPullRequestUpdater.cs │ ├── DependencyFlowConfiguration.cs │ ├── IPullRequestUpdater.cs │ ├── ISubscriptionTriggerer.cs │ ├── InProgressPullRequest.cs │ ├── MergePolicyEvaluator.cs │ ├── Model │ │ ├── Asset.cs │ │ ├── DependencyFlowEvent.cs │ │ ├── MergePolicyCheckResult.cs │ │ └── SubscriptionUpdateAction.cs │ ├── NonBatchedPullRequestUpdater.cs │ ├── PcsVmrBackFlower.cs │ ├── PcsVmrForwardFlower.cs │ ├── ProductConstructionService.DependencyFlow.csproj │ ├── Properties │ │ └── AssemblyInfo.cs │ ├── PullRequestBuilder.cs │ ├── PullRequestConflictNotifier.cs │ ├── PullRequestPolicyFailureNotifier.cs │ ├── PullRequestStatus.cs │ ├── PullRequestUpdater.cs │ ├── PullRequestUpdaterFactory.cs │ ├── PullRequestUpdaterId.cs │ ├── SubscriptionException.cs │ ├── SubscriptionPullRequestUpdate.cs │ ├── SubscriptionTriggerer.cs │ ├── SubscriptionType.cs │ ├── WorkItemProcessors │ │ ├── BuildCoherencyInfoProcessor.cs │ │ ├── DependencyFlowUpdateProcessor.cs │ │ ├── PullRequestCheckProcessor.cs │ │ ├── SubscriptionTriggerProcessor.cs │ │ └── SubscriptionUpdateProcessor.cs │ └── WorkItems │ │ ├── BuildCoherencyInfoWorkItem.cs │ │ ├── DependencyFlowWorkItem.cs │ │ ├── PullRequestCheck.cs │ │ ├── SubscriptionTriggerWorkItem.cs │ │ └── SubscriptionUpdateWorkItem.cs │ ├── ProductConstructionService.FeedCleaner │ ├── FeedCleaner.cs │ ├── FeedCleanerConfiguration.cs │ ├── FeedCleanerJob.cs │ ├── FeedCleanerOptions.cs │ ├── ProductConstructionService.FeedCleaner.csproj │ ├── Program.cs │ ├── appsettings.Development.json │ ├── appsettings.Production.json │ ├── appsettings.Staging.json │ └── appsettings.json │ ├── ProductConstructionService.ServiceDefaults │ ├── Extensions.cs │ └── ProductConstructionService.ServiceDefaults.csproj │ ├── ProductConstructionService.SubscriptionTriggerer │ ├── ProductConstructionService.SubscriptionTriggerer.csproj │ ├── Program.cs │ ├── SubscriptionTriggerer.cs │ ├── SubscriptionTriggererConfiguration.cs │ ├── appsettings.Development.json │ ├── appsettings.Production.json │ ├── appsettings.Staging.json │ └── appsettings.json │ └── ProductConstructionService.WorkItems │ ├── LocalReplicaWorkItemProcessorStateCacheFactory.cs │ ├── ProductConstructionService.WorkItems.csproj │ ├── Properties │ └── AssemblyInfo.cs │ ├── ReminderManager.cs │ ├── ReminderManagerFactory.cs │ ├── ReplicaWorkItemProcessorStateCache.cs │ ├── WorkItem.cs │ ├── WorkItemConfiguration.cs │ ├── WorkItemConsumer.cs │ ├── WorkItemConsumerOptions.cs │ ├── WorkItemProcessor.cs │ ├── WorkItemProcessorRegistrations.cs │ ├── WorkItemProcessorState.cs │ ├── WorkItemProcessorStateCache.cs │ ├── WorkItemProducer.cs │ ├── WorkItemProducerFactory.cs │ ├── WorkItemScope.cs │ └── WorkItemScopeManager.cs ├── test ├── Directory.Build.props ├── Maestro.Data.Tests │ ├── DependencyRegistrationTests.cs │ └── Maestro.Data.Tests.csproj ├── Microsoft.DotNet.Darc.Tests │ ├── AzureDevOpsClientTests.cs │ ├── DependencyAddUpdateTests.cs │ ├── DependencyCoherencyTests.cs │ ├── DependencyFileManagerTests.cs │ ├── DependencyFlowGraphTests.cs │ ├── DependencyFlowTestDriver.cs │ ├── DependencyGraphTests.cs │ ├── DependencyRegistrationTests.cs │ ├── DependencyTestDriver.cs │ ├── Helpers │ │ ├── ConsoleOutputIntercepter.cs │ │ └── UxManagerHelpers.cs │ ├── Microsoft.DotNet.Darc.Tests.csproj │ ├── Operations │ │ ├── GetBuildOperationTests.cs │ │ ├── GetSubscriptionsOperationTests.GetSubscriptionsOperationTests_ExecuteAsync_returns_json.verified.txt │ │ ├── GetSubscriptionsOperationTests.GetSubscriptionsOperationTests_ExecuteAsync_returns_sorted_text.verified.txt │ │ ├── GetSubscriptionsOperationTests.GetSubscriptionsOperationTests_ExecuteAsync_returns_text.verified.txt │ │ ├── GetSubscriptionsOperationTests.cs │ │ └── OperationsTests.cs │ ├── TestHelpers.cs │ └── inputs │ │ ├── AddArcadeDependency1 │ │ ├── input │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── AddArcadeDependency2 │ │ ├── input │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── AddProductDependency1 │ │ ├── input │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── AddProductDependency2 │ │ ├── input │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── AddProductDependency4 │ │ ├── input │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── AddProductDependency5 │ │ ├── input │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── AddProductDependency6 │ │ ├── input │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── DependencyFlowGraph │ │ └── IncludeBuildTimes │ │ │ ├── input.json │ │ │ └── output.json │ │ ├── DependencyGraph │ │ └── input │ │ │ ├── AspNetCore-Tooling │ │ │ ├── 5e05f5ff63eb6ade6621c915a36573a763ea2791 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 88edd69c1979129bc25a883f419da7a0cb936bab │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── bd7fc9ddf67dec0d582168bcd3d1d4681747f81a │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── AspNetCore │ │ │ ├── 1aa50faa290ecda304507981cd01ed92651d5e34 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── 9de74918a2441fe320d44e7a3b8e58dc37434a02 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── DotNet-Trusted │ │ │ ├── 24b4ae9332545f7677a8ce2f8916cc2284e31b75 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── 619a17dad9a44c9dd349fd192141019279a6a020 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── EntityFrameworkCore │ │ │ ├── 3d1e08eb08789a9dde3ac20851d3c82fdf9272e5 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 4c985938cf66e449802ce4600917a181a80e7159 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── c4d81f30919599abf1254fcd55f81320a91ae702 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── Extensions │ │ │ ├── 0de62ae930da31048ba7e54c8cd0c6c0bcbd9095 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 36471a9622b74a43185915550907aa28605be099 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 9d9fbcd3fa2278d73900c0a00fb73bf0aee29b06 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── a7d89b7301abfc949a5d87c00f67feb65abbddea │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── arcade │ │ │ ├── 044fa99d22e576fcfaf63f09ee9bba821855dddb │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 0fb5fc58347f42121ddc9c0b361e84b8acbffb12 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 289a8e607ef2a7358c351ddf3d08056186d4e554 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 35ce15432d5ae2faa563ad0ba99aff49f8e28130 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 4de204b5decdcee471d186e2290a09e35c5c3996 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 52d4b539dd1ab771015bdf33ed4221afcaaabf3d │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 8694eb83a2c13057a8da3c80f829363de4dc8c9c │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 96c87ddd97d9c562ef77f1e4606a0dbb000ab644 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── af8ab7d7ca13d5f129c31cfa7aeda19f6d168e6e │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── bed438c56afcd799b4de747291cf68815ae2f53b │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── e7e2a81eefde4d3973a579458079e6da27ed0018 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── f3336ecb1009ee5c6f68142c0d05a68bc5609a60 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── cli │ │ │ ├── 4d8c4255cbf3e6219ea8361c9b7691e6ab37aedf │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── 511071e1e199c8ccd8fad072cc31327db0737577 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── cliCommandLineParser │ │ │ └── d8f545b1995fb62fd5c64f794491afbfcf6a84ca │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── core-sdk │ │ │ ├── 36e48aa03cb568c128f387a090ad5ece86933c1c │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── c57bde45936fc120c0124bf964f570c45bfd8f8b │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── core-setup │ │ │ ├── 108365c2f4ba1d6b2bc2dc44dba575b22ab59865 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 464f69912c1e644e1b6e3aa0184f5c7c1a690cec │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 5bdcd4b15d203109d341a6c42bfdf7c730633bdb │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 63a01b08e5d1d1a6b8544f598b3d3bda76e6e424 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 66bef64d51b21f583b431428a41982aee1b6305c │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 9b55524cc97e033052fa95fb5ca7a68d4bb011ae │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── b54833551f0102ea4456439438e4ca84028bfc3e │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── dacf8569e562f9c89aba859ceed11f729ad62e42 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── coreclr │ │ │ ├── 35c8c4e01066e50756c04893e535777b50e6f0e0 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 401e931714e9b0890aaaa047710d0eb582bb8722 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 635a609eba8db8082a4e1245ce1291f9bbe9835c │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 80720a220c340e99aa88d04ebae8118eb4fc198b │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── b2c6dd4eb427caf7cb852998076b0b1543447a28 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── b9e88989458e24fa9764e045917b141e3338eae7 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── corefx │ │ │ ├── 351ca391579740ae8af8a5405cffa16d152ad6b2 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── bc0cfc49d1a8c1681fb09603f3389ef65342d542 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── d8c200414ccf65e0be94358937e9c711c0fd532d │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── msbuild │ │ │ ├── 966cdf2ac602e359530ad63f608e6cbba9c9fd0f │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── b2db71bebaae4f54f7236ca303e2b0a14aca1a0d │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── roslyn │ │ │ └── 359844cc9c32a5b4c1ba72a6e73a32989bd5daeb │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── sdk │ │ │ ├── 010b0fb362878d3eb8dfff7f521fc0db6b7e3a50 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── 674b4ae3250f294d3c922a425b44a1731dcff207 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── 6c3324d3624a10c9d1dfcfba188c974063e86984 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── templating │ │ │ └── ac8f12b90238542dfd2ea596178ae24ea20a0f55 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── toolset │ │ │ ├── 7d58b0e59dc51ef1dbd4c27f1cf0199a000936d7 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── b1d20340cbb0da27bb9e17bc64a83b9f44921f5b │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── websdk │ │ │ └── c92b1354da7d7290ec63984cf445a4d2cc9667e8 │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ ├── winforms │ │ │ ├── 383a83c08f15540289d78cfd684b1a0b58ad1a85 │ │ │ │ ├── eng │ │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── 63c7e76b747e67819a00b153b2d9dea6d9045d7b │ │ │ │ ├── eng │ │ │ │ └── Version.Details.xml │ │ │ │ ├── graph-with-toolset.xml │ │ │ │ └── graph-without-toolset.xml │ │ │ └── wpf │ │ │ └── dbd3bd96849f6bca8c0ca0275de36895bd77a835 │ │ │ ├── eng │ │ │ └── Version.Details.xml │ │ │ ├── graph-with-toolset.xml │ │ │ └── graph-without-toolset.xml │ │ ├── EmptyVersions1 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── EmptyVersions2 │ │ ├── input │ │ │ ├── NuGet.Config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── NugetConfigFiles │ │ ├── AddFeedsToNuGetConfigWithoutManagedFeeds │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── EnsureAppendsDisableEntryAfterLastClear │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── EnsureMultipleDisabledSourcesGetComments │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── ExistingFeedsHaveCommentsOutOfAlphabeticOrder │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── MalformedMaestroManagedFeedComentsJustBegin │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── MalformedMaestroManagedFeedComentsJustEnd │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── MatchMoreFeedPatterns │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── NoManagedFeedsToAdd │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── NonManagedDisabledFeedSources │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── PreserveCommentsInRightLocationsWhenReplacing │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── PreserveCommentsInRightLocationsWithNoExistingBlock │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── PreserveManagedFeedFromOutside │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── RedisableCurrentlyEnabledIntSources │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── RemoveAllManagedFeeds │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── RemovingAllSourcesKeepsTheComments │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── ReplaceExistingFeedsWithNewOnes │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ └── WhiteSpaceCorrectlyFormatted │ │ │ ├── NuGet.input.config │ │ │ └── NuGet.output.config │ │ ├── SupportAlternateVersionPropertyFormats1 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── SupportAlternateVersionPropertyFormats2 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateArcadeDependency1 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateArcadeDependency2 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateArcadeDependencyWithSdkUpdate │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateDependencies1 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateDependencies3 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateDependencies4 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateDependencies5 │ │ ├── input │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateToolsJsonFile1 │ │ ├── input │ │ │ ├── .config │ │ │ │ └── dotnet-tools.json │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── .config │ │ │ └── dotnet-tools.json │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── UpdateToolsJsonNotPresent │ │ ├── input │ │ │ ├── .config │ │ │ │ └── pizza-bananas.json │ │ │ ├── NuGet.config │ │ │ ├── eng │ │ │ │ ├── Version.Details.xml │ │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ └── output │ │ │ ├── .config │ │ │ └── pizza-bananas.json │ │ │ ├── eng │ │ │ ├── Version.Details.xml │ │ │ └── Versions.props │ │ │ └── global.json.test │ │ ├── VersionPropsFiles │ │ ├── AlternateNamesDuplicated.props │ │ ├── DuplicatedSameConditions.props │ │ ├── NoDuplicatedDifferentConditions.props │ │ ├── NothingDuplicated.props │ │ └── SimpleDuplicated.props │ │ └── source-mappings.json ├── Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests │ ├── Constants.cs │ ├── GitOperationsHelper.cs │ ├── LoadSourceMappingsFromInstallerTest.cs │ ├── Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests.csproj │ ├── RemoteFactory.cs │ ├── Resources │ │ ├── add-file.patch │ │ ├── add-submodule-file.patch │ │ ├── changed-patch.patch │ │ ├── changed-test-repo-file.txt │ │ ├── example.patch │ │ ├── new-patch.patch │ │ ├── product-repo1-file.txt │ │ ├── remove-file.patch │ │ ├── test-file-after-changed-patch.txt │ │ ├── test-file-after-new-patch.txt │ │ └── test-file-after-patch.txt │ ├── VmrBackflowTest.cs │ ├── VmrCloakedFileScannerTest.cs │ ├── VmrCodeFlowTests.cs │ ├── VmrForwardFlowTest.cs │ ├── VmrMultipleRemotesTests.cs │ ├── VmrPatchAddingFileTest.cs │ ├── VmrPatchAddingSubmoduleFileTest.cs │ ├── VmrPatchChangingFileTest.cs │ ├── VmrPatchRemovingFileTest.cs │ ├── VmrPatchesTestsBase.cs │ ├── VmrRecursiveSyncTests.cs │ ├── VmrRepoDeletionTest.cs │ ├── VmrRepositoryCloningTest.cs │ ├── VmrSyncAdditionalMappingsTest.cs │ ├── VmrSyncRepoChangesTest.cs │ ├── VmrTestsBase.cs │ ├── VmrTestsOneTimeSetUp.cs │ └── VmrTwoWayCodeflowTest.cs ├── Microsoft.DotNet.DarcLib.Tests │ ├── GitHubClientTests.cs │ ├── Helpers │ │ ├── DarcManifestHelperTests.cs │ │ ├── DependencyFileManagerTests.cs │ │ ├── GitRepoUrlParserTest.cs │ │ ├── LocalPathTests.cs │ │ ├── VersionDetailsParserTests.cs │ │ └── VersionFilesTests.cs │ ├── Microsoft.DotNet.DarcLib.Tests.csproj │ ├── Models │ │ ├── Darc │ │ │ └── DependencyFlowNodeTests.cs │ │ └── VirtualMonoRepo │ │ │ ├── GitInfoFileTests.cs │ │ │ ├── ManifestRecordTests.cs │ │ │ └── MsBuildPropsFileTests.cs │ ├── RemoteTests.cs │ └── VirtualMonoRepo │ │ ├── RepositoryCloneManagerTests.cs │ │ ├── VersionFileCodeFlowUpdaterTests.cs │ │ ├── VmrPatchHandlerTests.cs │ │ ├── VmrPusherTests.cs │ │ └── VmrRegistrationsTests.cs ├── Microsoft.DotNet.Maestro.Tasks.Tests │ ├── AddAssetTests.cs │ ├── CreateMergedManifestBuildModelTests.cs │ ├── GetManifestAsAssetTests.cs │ ├── MergeSigningInfoTests.cs │ ├── MergedManifestTests.cs │ ├── Microsoft.DotNet.Maestro.Tasks.Tests.csproj │ ├── Mocks │ │ ├── MockBuildEngine.cs │ │ └── VersionIdentifierMock.cs │ ├── ParseBuildManifestMetadataTests.cs │ ├── SharedMethods.cs │ └── XmlSerializationHelperTests.cs ├── ProductConstructionService.Api.Tests │ ├── ApiTestConfiguration.cs │ ├── BuildController20190116Tests.cs │ ├── BuildController20200914Tests.cs │ ├── ChannelsController20180716Tests.cs │ ├── ChannelsController20200220Tests.cs │ ├── DefaultChannelsController20200220Tests.cs │ ├── DependencyRegistrationTests.cs │ ├── GlobalUsings.cs │ ├── LoggingConfigurationTests.cs │ ├── ProductConstructionService.Api.Tests.csproj │ ├── RepositoryUrlAttributeTests.cs │ ├── SubscriptionsController20200220Tests.cs │ └── TestDatabase.cs ├── ProductConstructionService.BarViz.Tests │ ├── ProductConstructionService.BarViz.Tests.csproj │ ├── RedirectsTests.cs │ └── RepoUrlConverterTests.cs ├── ProductConstructionService.DependencyFlow.Tests │ ├── Disposable.cs │ ├── MockRedisCache.cs │ ├── MockRedisCacheFactory.cs │ ├── MockReminderManager.cs │ ├── MockReminderManagerFactory.cs │ ├── PendingCodeFlowUpdatesTests.cs │ ├── PendingUpdatePullRequestUpdaterTests.cs │ ├── PendingUpdatesTests.cs │ ├── ProductConstructionService.DependencyFlow.Tests.csproj │ ├── PullRequestBuilderTests.cs │ ├── PullRequestPolicyFailureNotifierTests.cs │ ├── PullRequestUpdaterTests.cs │ ├── SubscriptionOrPullRequestUpdaterTests.cs │ ├── SubscriptionUpdaterTests.cs │ ├── TestsWithMocks.cs │ ├── TestsWithServices.cs │ ├── UpdateAssetsForCodeFlowTests.cs │ ├── UpdateAssetsPullRequestUpdaterTests.cs │ ├── UpdateAssetsTests.cs │ ├── UpdaterTests.cs │ └── VerifyableMockRepository.cs ├── ProductConstructionService.FeedCleaner.Tests │ ├── DependencyRegistrationTest.cs │ ├── FeedCleanerTests.cs │ └── ProductConstructionService.FeedCleaner.Tests.csproj ├── ProductConstructionService.ScenarioTests.Tests │ ├── ProductConstructionService.ScenarioTests.Tests.csproj │ └── TestHelpersTest.cs ├── ProductConstructionService.ScenarioTests │ ├── AsyncDisposable.cs │ ├── AsyncDisposableValue.cs │ ├── CodeFlowScenarioTestBase.cs │ ├── Disposable.cs │ ├── EndToEndFlowLogic.cs │ ├── ObjectHelpers │ │ ├── BuildRefComparer.cs │ │ ├── DependencyCollectionStringBuilder.cs │ │ └── SubscriptionBuilder.cs │ ├── ProductConstructionService.ScenarioTests.csproj │ ├── ScenarioTestBase.cs │ ├── ScenarioTests │ │ ├── ScenarioTests_AzDoFlow.cs │ │ ├── ScenarioTests_Builds.cs │ │ ├── ScenarioTests_Channels.cs │ │ ├── ScenarioTests_Clone.cs │ │ ├── ScenarioTests_CodeFlow.cs │ │ ├── ScenarioTests_CodeFlowConflicts.cs │ │ ├── ScenarioTests_DefaultChannels.cs │ │ ├── ScenarioTests_Dependencies.cs │ │ ├── ScenarioTests_GitHubFlow.cs │ │ ├── ScenarioTests_MergePolicies.cs │ │ ├── ScenarioTests_RepoPolicies.cs │ │ ├── ScenarioTests_SdkUpdate.cs │ │ └── ScenarioTests_Subscriptions.cs │ ├── Shareable.cs │ ├── TemporaryDirectory.cs │ ├── TestHelpers.cs │ ├── TestParameters.cs │ └── TestRepository.cs ├── ProductConstructionService.SubscriptionTriggerer.Tests │ ├── DependencyRegistrationTests.cs │ ├── GlobalUsings.cs │ ├── ProductConstructionService.SubscriptionTriggerer.Tests.csproj │ └── SubscriptionTriggererTests.cs ├── ProductConstructionService.WorkItem.Tests │ ├── FakeRedisCache.cs │ ├── GlobalUsings.cs │ ├── ProductConstructionService.WorkItem.Tests.csproj │ ├── WorkItemScopeTests.cs │ └── WorkItemsProcessorScopeManagerTests.cs └── VersionPropsFormatter.Tests │ ├── VersionPropsFormatter.Tests.csproj │ └── VersionPropsFormatterTest.cs └── tools ├── ProductConstructionService.Cli ├── Operations │ ├── DeploymentOperation.cs │ ├── GetPCSStatusOperation.cs │ ├── IOperation.cs │ ├── StartPCSOperation.cs │ └── StopPCSOperation.cs ├── Options │ ├── DeploymentOptions.cs │ ├── GetPCSStatusOptions.cs │ ├── Options.cs │ ├── PCSStatusOptions.cs │ ├── StartPCSOptions.cs │ └── StopPCSOptions.cs ├── ProductConstructionService.Cli.csproj └── Program.cs ├── ProductConstructionService.ReproTool ├── AsyncDisposable.cs ├── AsyncDisposableValue.cs ├── DarcProcessManager.cs ├── Operations │ ├── FlowCommitOperation.cs │ ├── ForwardFlowTestOperation.cs │ ├── FullBackflowTestOperation.cs │ ├── Operation.cs │ └── ReproOperation.cs ├── Options │ ├── FlowCommitOptions.cs │ ├── ForwardFlowTestOptions.cs │ ├── FullBackflowTestOptions.cs │ ├── Options.cs │ └── ReproOptions.cs ├── ProductConstructionService.ReproTool.csproj └── Program.cs ├── Tools.Common ├── Constants.cs ├── Tools.Common.csproj └── VmrDependencyResolver.cs └── VersionPropsFormatter ├── Program.cs ├── VersionPropsFormatter.cs └── VersionPropsFormatter.csproj /.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "microsoft.dnceng.secretmanager": { 6 | "version": "1.1.0-beta.25230.4", 7 | "commands": [ 8 | "secret-manager" 9 | ] 10 | }, 11 | "dotnet-ef": { 12 | "version": "8.0.0", 13 | "commands": [ 14 | "dotnet-ef" 15 | ] 16 | }, 17 | "microsoft.dnceng.configuration.bootstrap": { 18 | "version": "1.1.0-beta.25230.4", 19 | "commands": [ 20 | "bootstrap-dnceng-configuration" 21 | ] 22 | } 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /.config/tsaoptions.json: -------------------------------------------------------------------------------- 1 | { 2 | "instanceUrl": "https://devdiv.visualstudio.com/", 3 | "template": "TFSDEVDIV", 4 | "projectName": "DEVDIV", 5 | "areaPath": "DevDiv\\NET Fundamentals\\Infrastructure\\Arcade\\SDL", 6 | "iterationPath": "DevDiv", 7 | "notificationAliases": [ "dnceng@microsoft.com" ], 8 | "repositoryName":"Arcade-Services", 9 | "codebaseName": "Arcade-Services" 10 | } -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | **/.classpath 2 | **/.dockerignore 3 | **/.env 4 | **/.git 5 | **/.gitignore 6 | **/.project 7 | **/.settings 8 | **/.toolstarget 9 | **/.vs 10 | **/.vscode 11 | **/*.*proj.user 12 | **/*.dbmdl 13 | **/*.jfm 14 | **/azds.yaml 15 | **/bin 16 | **/charts 17 | **/docker-compose* 18 | **/Dockerfile* 19 | **/node_modules 20 | **/npm-debug.log 21 | **/obj 22 | **/secrets.dev.yaml 23 | **/values.dev.yaml 24 | LICENSE 25 | README.md 26 | !**/.gitignore 27 | !.git/HEAD 28 | !.git/config 29 | !.git/packed-refs 30 | !.git/refs/heads/** 31 | !**/*.csproj -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto 2 | *.sh text=auto eol=lf 3 | -------------------------------------------------------------------------------- /.github/copilot-setup-steps.yml: -------------------------------------------------------------------------------- 1 | name: Copilot Setup Steps 2 | 3 | # These steps will be executed before GitHub Copilot assists with code 4 | # This helps ensure Copilot has access to properly restored dependencies 5 | 6 | steps: 7 | - name: Checkout repository 8 | uses: actions/checkout@v3 9 | with: 10 | fetch-depth: 0 11 | 12 | - name: Restore dependencies 13 | run: | 14 | ./eng/common/build.sh -restore 15 | shell: bash 16 | -------------------------------------------------------------------------------- /.github/pull_request_template.md: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /.github/workflows/inter-branch-merge-flow.yml: -------------------------------------------------------------------------------- 1 | name: Inter-branch merge workflow 2 | on: 3 | push: 4 | branches: 5 | - production 6 | 7 | permissions: 8 | contents: write 9 | pull-requests: write 10 | 11 | jobs: 12 | Merge: 13 | uses: dotnet/arcade/.github/workflows/inter-branch-merge-base.yml@main -------------------------------------------------------------------------------- /.packages/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.packages/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.packages/Directory.Packages.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /.vault-config/helixkv.yaml: -------------------------------------------------------------------------------- 1 | storageLocation: 2 | type: azure-key-vault 3 | parameters: 4 | subscription: a4fc5514-21a9-4296-bfaf-5c7ee7fa35d1 5 | name: helixkv 6 | 7 | secrets: 8 | dn-bot-account-redmond: 9 | type: domain-account 10 | parameters: 11 | accountName: dn-bot 12 | description: The dn-bot account 13 | -------------------------------------------------------------------------------- /.vault-config/product-construction-dev.yaml: -------------------------------------------------------------------------------- 1 | storageLocation: 2 | type: azure-key-vault 3 | parameters: 4 | subscription: e6b5f9f5-0ca4-4351-879b-014d78400ec2 5 | name: ProductConstructionDev 6 | 7 | secrets: 8 | 9 | github: 10 | type: github-app-secret 11 | parameters: 12 | hasPrivateKey: true 13 | hasWebhookSecret: false 14 | hasOAuthSecret: true -------------------------------------------------------------------------------- /.vault-config/product-construction-int.yaml: -------------------------------------------------------------------------------- 1 | storageLocation: 2 | type: azure-key-vault 3 | parameters: 4 | subscription: e6b5f9f5-0ca4-4351-879b-014d78400ec2 5 | name: ProductConstructionInt 6 | 7 | secrets: 8 | github: 9 | type: github-app-secret 10 | parameters: 11 | hasPrivateKey: true 12 | hasWebhookSecret: false 13 | hasOAuthSecret: true 14 | -------------------------------------------------------------------------------- /Build.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -restore -build %*" 3 | exit /b %ErrorLevel% 4 | -------------------------------------------------------------------------------- /CODE-OF-CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | This project has adopted the code of conduct defined by the Contributor Covenant 4 | to clarify expected behavior in our community. 5 | 6 | For more information, see the [.NET Foundation Code of Conduct](https://dotnetfoundation.org/code-of-conduct). 7 | -------------------------------------------------------------------------------- /CredScanSuppressions.json: -------------------------------------------------------------------------------- 1 | { 2 | "tool": "Credential Scanner", 3 | "suppressions": [ 4 | { 5 | "placeholder": " hasWebHookSecret: boolean", 6 | "_justification": "The word secret is not a secret" 7 | }, 8 | { 9 | "hash": "0wmzz0zI9MmVLebdqWxSIJ9uxLJ13oIQKoWkEWrmViw=", 10 | "_justification": "SecretReference is the name of a Type. It is not a secret." 11 | } 12 | ] 13 | } 14 | -------------------------------------------------------------------------------- /Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /THIRD-PARTY-NOTICES.TXT: -------------------------------------------------------------------------------- 1 | .NET uses third-party libraries or other resources that may be 2 | distributed under licenses different than the .NET software. 3 | 4 | In the event that we accidentally failed to list a required notice, please 5 | bring it to our attention. Post an issue or email us: 6 | 7 | dotnet@microsoft.com 8 | 9 | The attached notices are provided for information only. 10 | 11 | No notices are provided at this time. 12 | -------------------------------------------------------------------------------- /artifacts/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /artifacts/Directory.Build.targets: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /artifacts/Directory.Packages.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /build.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source="${BASH_SOURCE[0]}" 4 | 5 | # resolve $SOURCE until the file is no longer a symlink 6 | while [[ -h $source ]]; do 7 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" 8 | source="$(readlink "$source")" 9 | 10 | # if $source was a relative symlink, we need to resolve it relative to the path where the 11 | # symlink file was located 12 | [[ $source != /* ]] && source="$scriptroot/$source" 13 | done 14 | 15 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" 16 | "$scriptroot/eng/common/build.sh" --build --restore $@ 17 | -------------------------------------------------------------------------------- /docs/Images/build-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/arcade-services/f6e232e800f932967f91173548fc11244f05a9a1/docs/Images/build-view.png -------------------------------------------------------------------------------- /docs/Images/channels-view.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/arcade-services/f6e232e800f932967f91173548fc11244f05a9a1/docs/Images/channels-view.png -------------------------------------------------------------------------------- /eng/PoliCheckExclusions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | SWAGGER 5 | -------------------------------------------------------------------------------- /eng/Publishing.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 3 5 | 6 | -------------------------------------------------------------------------------- /eng/common/BuildConfiguration/build-configuration.json: -------------------------------------------------------------------------------- 1 | { 2 | "RetryCountLimit": 1, 3 | "RetryByAnyError": false 4 | } 5 | -------------------------------------------------------------------------------- /eng/common/CIBuild.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0Build.ps1""" -restore -build -test -sign -pack -publish -ci %*" -------------------------------------------------------------------------------- /eng/common/PSScriptAnalyzerSettings.psd1: -------------------------------------------------------------------------------- 1 | @{ 2 | IncludeRules=@('PSAvoidUsingCmdletAliases', 3 | 'PSAvoidUsingWMICmdlet', 4 | 'PSAvoidUsingPositionalParameters', 5 | 'PSAvoidUsingInvokeExpression', 6 | 'PSUseDeclaredVarsMoreThanAssignments', 7 | 'PSUseCmdletCorrectly', 8 | 'PSStandardDSCFunctionsInResource', 9 | 'PSUseIdenticalMandatoryParametersForDSC', 10 | 'PSUseIdenticalParametersForDSC') 11 | } -------------------------------------------------------------------------------- /eng/common/cibuild.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | source="${BASH_SOURCE[0]}" 4 | 5 | # resolve $SOURCE until the file is no longer a symlink 6 | while [[ -h $source ]]; do 7 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" 8 | source="$(readlink "$source")" 9 | 10 | # if $source was a relative symlink, we need to resolve it relative to the path where 11 | # the symlink file was located 12 | [[ $source != /* ]] && source="$scriptroot/$source" 13 | done 14 | scriptroot="$( cd -P "$( dirname "$source" )" && pwd )" 15 | 16 | . "$scriptroot/build.sh" --restore --build --test --pack --publish --ci $@ -------------------------------------------------------------------------------- /eng/common/cross/arm/sources.list.focal: -------------------------------------------------------------------------------- 1 | deb http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe 2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe 3 | 4 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe 5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe 6 | 7 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted 8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted 9 | 10 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse 11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/cross/arm/sources.list.jammy: -------------------------------------------------------------------------------- 1 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe 2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe 3 | 4 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe 5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe 6 | 7 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted 8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted 9 | 10 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse 11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/cross/arm/sources.list.jessie: -------------------------------------------------------------------------------- 1 | # Debian (sid) # UNSTABLE 2 | deb http://ftp.debian.org/debian/ sid main contrib non-free 3 | deb-src http://ftp.debian.org/debian/ sid main contrib non-free 4 | -------------------------------------------------------------------------------- /eng/common/cross/arm/sources.list.zesty: -------------------------------------------------------------------------------- 1 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe 2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe 3 | 4 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe 5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe 6 | 7 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted 8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted 9 | 10 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse 11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/cross/arm/tizen/tizen.patch: -------------------------------------------------------------------------------- 1 | diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so 2 | --- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900 3 | +++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900 4 | @@ -2,4 +2,4 @@ 5 | Use the shared library, but some functions are only in 6 | the static library, so try that secondarily. */ 7 | OUTPUT_FORMAT(elf32-littlearm) 8 | -GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux-armhf.so.3 ) ) 9 | +GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-armhf.so.3 ) ) 10 | -------------------------------------------------------------------------------- /eng/common/cross/arm64/sources.list.buster: -------------------------------------------------------------------------------- 1 | deb http://deb.debian.org/debian buster main 2 | deb-src http://deb.debian.org/debian buster main 3 | 4 | deb http://deb.debian.org/debian-security/ buster/updates main 5 | deb-src http://deb.debian.org/debian-security/ buster/updates main 6 | 7 | deb http://deb.debian.org/debian buster-updates main 8 | deb-src http://deb.debian.org/debian buster-updates main 9 | 10 | deb http://deb.debian.org/debian buster-backports main contrib non-free 11 | deb-src http://deb.debian.org/debian buster-backports main contrib non-free 12 | -------------------------------------------------------------------------------- /eng/common/cross/arm64/sources.list.focal: -------------------------------------------------------------------------------- 1 | deb http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe 2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal main restricted universe 3 | 4 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe 5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-updates main restricted universe 6 | 7 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted 8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-backports main restricted 9 | 10 | deb http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse 11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ focal-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/cross/arm64/sources.list.jammy: -------------------------------------------------------------------------------- 1 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe 2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy main restricted universe 3 | 4 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe 5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-updates main restricted universe 6 | 7 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted 8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-backports main restricted 9 | 10 | deb http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse 11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ jammy-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/cross/arm64/sources.list.stretch: -------------------------------------------------------------------------------- 1 | deb http://deb.debian.org/debian stretch main 2 | deb-src http://deb.debian.org/debian stretch main 3 | 4 | deb http://deb.debian.org/debian-security/ stretch/updates main 5 | deb-src http://deb.debian.org/debian-security/ stretch/updates main 6 | 7 | deb http://deb.debian.org/debian stretch-updates main 8 | deb-src http://deb.debian.org/debian stretch-updates main 9 | 10 | deb http://deb.debian.org/debian stretch-backports main contrib non-free 11 | deb-src http://deb.debian.org/debian stretch-backports main contrib non-free 12 | 13 | -------------------------------------------------------------------------------- /eng/common/cross/arm64/sources.list.zesty: -------------------------------------------------------------------------------- 1 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe 2 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty main restricted universe 3 | 4 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe 5 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-updates main restricted universe 6 | 7 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted 8 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-backports main restricted 9 | 10 | deb http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse 11 | deb-src http://ports.ubuntu.com/ubuntu-ports/ zesty-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/cross/arm64/tizen/tizen.patch: -------------------------------------------------------------------------------- 1 | diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so 2 | --- a/usr/lib64/libc.so 2016-12-30 23:00:08.284951863 +0900 3 | +++ b/usr/lib64/libc.so 2016-12-30 23:00:32.140951815 +0900 4 | @@ -2,4 +2,4 @@ 5 | Use the shared library, but some functions are only in 6 | the static library, so try that secondarily. */ 7 | OUTPUT_FORMAT(elf64-littleaarch64) 8 | -GROUP ( /lib64/libc.so.6 /usr/lib64/libc_nonshared.a AS_NEEDED ( /lib/ld-linux-aarch64.so.1 ) ) 9 | +GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux-aarch64.so.1 ) ) 10 | -------------------------------------------------------------------------------- /eng/common/cross/armel/sources.list.jessie: -------------------------------------------------------------------------------- 1 | # Debian (jessie) # Stable 2 | deb http://ftp.debian.org/debian/ jessie main contrib non-free 3 | deb-src http://ftp.debian.org/debian/ jessie main contrib non-free 4 | -------------------------------------------------------------------------------- /eng/common/cross/armel/tizen/tizen.patch: -------------------------------------------------------------------------------- 1 | diff -u -r a/usr/lib/libc.so b/usr/lib/libc.so 2 | --- a/usr/lib/libc.so 2016-12-30 23:00:08.284951863 +0900 3 | +++ b/usr/lib/libc.so 2016-12-30 23:00:32.140951815 +0900 4 | @@ -2,4 +2,4 @@ 5 | Use the shared library, but some functions are only in 6 | the static library, so try that secondarily. */ 7 | OUTPUT_FORMAT(elf32-littlearm) 8 | -GROUP ( /lib/libc.so.6 /usr/lib/libc_nonshared.a AS_NEEDED ( /lib/ld-linux.so.3 ) ) 9 | +GROUP ( libc.so.6 libc_nonshared.a AS_NEEDED ( ld-linux.so.3 ) ) 10 | -------------------------------------------------------------------------------- /eng/common/cross/armv6/sources.list.buster: -------------------------------------------------------------------------------- 1 | deb http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi 2 | deb-src http://raspbian.raspberrypi.org/raspbian/ buster main contrib non-free rpi 3 | -------------------------------------------------------------------------------- /eng/common/cross/riscv64/sources.list.sid: -------------------------------------------------------------------------------- 1 | deb http://deb.debian.org/debian-ports sid main 2 | -------------------------------------------------------------------------------- /eng/common/cross/x86/sources.list.bionic: -------------------------------------------------------------------------------- 1 | deb http://archive.ubuntu.com/ubuntu/ bionic main restricted universe 2 | deb-src http://archive.ubuntu.com/ubuntu/ bionic main restricted universe 3 | 4 | deb http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe 5 | deb-src http://archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe 6 | 7 | deb http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted 8 | deb-src http://archive.ubuntu.com/ubuntu/ bionic-backports main restricted 9 | 10 | deb http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse 11 | deb-src http://archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/cross/x86/sources.list.xenial: -------------------------------------------------------------------------------- 1 | deb http://archive.ubuntu.com/ubuntu/ xenial main restricted universe 2 | deb-src http://archive.ubuntu.com/ubuntu/ xenial main restricted universe 3 | 4 | deb http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe 5 | deb-src http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted universe 6 | 7 | deb http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted 8 | deb-src http://archive.ubuntu.com/ubuntu/ xenial-backports main restricted 9 | 10 | deb http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse 11 | deb-src http://archive.ubuntu.com/ubuntu/ xenial-security main restricted universe multiverse 12 | -------------------------------------------------------------------------------- /eng/common/dotnet-install.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0dotnet-install.ps1""" %*" -------------------------------------------------------------------------------- /eng/common/enable-cross-org-publishing.ps1: -------------------------------------------------------------------------------- 1 | param( 2 | [string] $token 3 | ) 4 | 5 | 6 | . $PSScriptRoot\pipeline-logging-functions.ps1 7 | 8 | # Write-PipelineSetVariable will no-op if a variable named $ci is not defined 9 | # Since this script is only ever called in AzDO builds, just universally set it 10 | $ci = $true 11 | 12 | Write-PipelineSetVariable -Name 'VSS_NUGET_ACCESSTOKEN' -Value $token -IsMultiJobVariable $false 13 | Write-PipelineSetVariable -Name 'VSS_NUGET_URI_PREFIXES' -Value 'https://dnceng.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/dnceng/;https://devdiv.pkgs.visualstudio.com/;https://pkgs.dev.azure.com/devdiv/' -IsMultiJobVariable $false 14 | -------------------------------------------------------------------------------- /eng/common/init-tools-native.cmd: -------------------------------------------------------------------------------- 1 | @echo off 2 | powershell -NoProfile -NoLogo -ExecutionPolicy ByPass -command "& """%~dp0init-tools-native.ps1""" %*" 3 | exit /b %ErrorLevel% -------------------------------------------------------------------------------- /eng/common/internal/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /eng/common/internal/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /eng/common/msbuild.ps1: -------------------------------------------------------------------------------- 1 | [CmdletBinding(PositionalBinding=$false)] 2 | Param( 3 | [string] $verbosity = 'minimal', 4 | [bool] $warnAsError = $true, 5 | [bool] $nodeReuse = $true, 6 | [switch] $ci, 7 | [switch] $prepareMachine, 8 | [switch] $excludePrereleaseVS, 9 | [string] $msbuildEngine = $null, 10 | [Parameter(ValueFromRemainingArguments=$true)][String[]]$extraArgs 11 | ) 12 | 13 | . $PSScriptRoot\tools.ps1 14 | 15 | try { 16 | if ($ci) { 17 | $nodeReuse = $false 18 | } 19 | 20 | MSBuild @extraArgs 21 | } 22 | catch { 23 | Write-Host $_.ScriptStackTrace 24 | Write-PipelineTelemetryError -Category 'Build' -Message $_ 25 | ExitWithExitCode 1 26 | } 27 | 28 | ExitWithExitCode 0 -------------------------------------------------------------------------------- /eng/common/sdl/NuGet.config: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /eng/common/sdl/packages.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /eng/common/templates-official/post-build/trigger-subscription.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | ChannelId: 0 3 | 4 | steps: 5 | - task: PowerShell@2 6 | displayName: Triggering subscriptions 7 | inputs: 8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/trigger-subscriptions.ps1 9 | arguments: -SourceRepo $(Build.Repository.Uri) 10 | -ChannelId ${{ parameters.ChannelId }} 11 | -MaestroApiAccessToken $(MaestroAccessToken) 12 | -MaestroApiEndPoint $(MaestroApiEndPoint) 13 | -MaestroApiVersion $(MaestroApiVersion) 14 | -------------------------------------------------------------------------------- /eng/common/templates-official/steps/add-build-to-channel.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | ChannelId: 0 3 | 4 | steps: 5 | - task: PowerShell@2 6 | displayName: Add Build to Channel 7 | inputs: 8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/add-build-to-channel.ps1 9 | arguments: -BuildId $(BARBuildId) 10 | -ChannelId ${{ parameters.ChannelId }} 11 | -MaestroApiAccessToken $(MaestroApiAccessToken) 12 | -MaestroApiEndPoint $(MaestroApiEndPoint) 13 | -MaestroApiVersion $(MaestroApiVersion) 14 | -------------------------------------------------------------------------------- /eng/common/templates-official/steps/build-reason.yml: -------------------------------------------------------------------------------- 1 | # build-reason.yml 2 | # Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons 3 | # to include steps (',' separated). 4 | parameters: 5 | conditions: '' 6 | steps: [] 7 | 8 | steps: 9 | - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}: 10 | - ${{ parameters.steps }} 11 | - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}: 12 | - ${{ parameters.steps }} 13 | -------------------------------------------------------------------------------- /eng/common/templates-official/steps/component-governance.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | disableComponentGovernance: false 3 | componentGovernanceIgnoreDirectories: '' 4 | 5 | steps: 6 | - ${{ if eq(parameters.disableComponentGovernance, 'true') }}: 7 | - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" 8 | displayName: Set skipComponentGovernanceDetection variable 9 | - ${{ if ne(parameters.disableComponentGovernance, 'true') }}: 10 | - task: ComponentGovernanceComponentDetection@0 11 | continueOnError: true 12 | inputs: 13 | ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} -------------------------------------------------------------------------------- /eng/common/templates-official/variables/sdl-variables.yml: -------------------------------------------------------------------------------- 1 | variables: 2 | # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in 3 | # sync with the packages.config file. 4 | - name: DefaultGuardianVersion 5 | value: 0.109.0 6 | - name: GuardianPackagesConfigFile 7 | value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config -------------------------------------------------------------------------------- /eng/common/templates/post-build/trigger-subscription.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | ChannelId: 0 3 | 4 | steps: 5 | - task: PowerShell@2 6 | displayName: Triggering subscriptions 7 | inputs: 8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/trigger-subscriptions.ps1 9 | arguments: -SourceRepo $(Build.Repository.Uri) 10 | -ChannelId ${{ parameters.ChannelId }} 11 | -MaestroApiAccessToken $(MaestroAccessToken) 12 | -MaestroApiEndPoint $(MaestroApiEndPoint) 13 | -MaestroApiVersion $(MaestroApiVersion) 14 | -------------------------------------------------------------------------------- /eng/common/templates/steps/add-build-to-channel.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | ChannelId: 0 3 | 4 | steps: 5 | - task: PowerShell@2 6 | displayName: Add Build to Channel 7 | inputs: 8 | filePath: $(Build.SourcesDirectory)/eng/common/post-build/add-build-to-channel.ps1 9 | arguments: -BuildId $(BARBuildId) 10 | -ChannelId ${{ parameters.ChannelId }} 11 | -MaestroApiAccessToken $(MaestroApiAccessToken) 12 | -MaestroApiEndPoint $(MaestroApiEndPoint) 13 | -MaestroApiVersion $(MaestroApiVersion) 14 | -------------------------------------------------------------------------------- /eng/common/templates/steps/build-reason.yml: -------------------------------------------------------------------------------- 1 | # build-reason.yml 2 | # Description: runs steps if build.reason condition is valid. conditions is a string of valid build reasons 3 | # to include steps (',' separated). 4 | parameters: 5 | conditions: '' 6 | steps: [] 7 | 8 | steps: 9 | - ${{ if and( not(startsWith(parameters.conditions, 'not')), contains(parameters.conditions, variables['build.reason'])) }}: 10 | - ${{ parameters.steps }} 11 | - ${{ if and( startsWith(parameters.conditions, 'not'), not(contains(parameters.conditions, variables['build.reason']))) }}: 12 | - ${{ parameters.steps }} 13 | -------------------------------------------------------------------------------- /eng/common/templates/steps/component-governance.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | disableComponentGovernance: false 3 | componentGovernanceIgnoreDirectories: '' 4 | 5 | steps: 6 | - ${{ if eq(parameters.disableComponentGovernance, 'true') }}: 7 | - script: echo "##vso[task.setvariable variable=skipComponentGovernanceDetection]true" 8 | displayName: Set skipComponentGovernanceDetection variable 9 | - ${{ if ne(parameters.disableComponentGovernance, 'true') }}: 10 | - task: ComponentGovernanceComponentDetection@0 11 | continueOnError: true 12 | inputs: 13 | ignoreDirectories: ${{ parameters.componentGovernanceIgnoreDirectories }} -------------------------------------------------------------------------------- /eng/common/templates/steps/run-on-unix.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | agentOs: '' 3 | steps: [] 4 | 5 | steps: 6 | - ${{ if ne(parameters.agentOs, 'Windows_NT') }}: 7 | - ${{ parameters.steps }} 8 | -------------------------------------------------------------------------------- /eng/common/templates/steps/run-on-windows.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | agentOs: '' 3 | steps: [] 4 | 5 | steps: 6 | - ${{ if eq(parameters.agentOs, 'Windows_NT') }}: 7 | - ${{ parameters.steps }} 8 | -------------------------------------------------------------------------------- /eng/common/templates/variables/sdl-variables.yml: -------------------------------------------------------------------------------- 1 | variables: 2 | # The Guardian version specified in 'eng/common/sdl/packages.config'. This value must be kept in 3 | # sync with the packages.config file. 4 | - name: DefaultGuardianVersion 5 | value: 0.109.0 6 | - name: GuardianPackagesConfigFile 7 | value: $(Build.SourcesDirectory)\eng\common\sdl\packages.config -------------------------------------------------------------------------------- /eng/service-templates/ProductConstructionService/FullCreate/provision.ps1: -------------------------------------------------------------------------------- 1 | param( 2 | [Parameter(Mandatory=$true)][string]$subscriptionName, 3 | [Parameter(Mandatory=$true)][string]$bicepparamFileName 4 | ) 5 | 6 | az account set --subscription $subscriptionName 7 | 8 | # creates a resource group `product-construction-service` in West US 2 9 | az group create --name product-construction-service --location "West US 2" 10 | 11 | $paramFile = Join-Path -Path $PSScriptRoot -ChildPath $bicepparamFileName 12 | az deployment group create --resource-group product-construction-service --parameters $paramFile --name deploy -------------------------------------------------------------------------------- /eng/service-templates/ProductConstructionService/FullCreate/public-ip-address.bicep: -------------------------------------------------------------------------------- 1 | param publicIpAddressName string 2 | param location string 3 | 4 | resource publicIpAddress 'Microsoft.Network/publicIPAddresses@2022-09-01' = { 5 | name: publicIpAddressName 6 | location: location 7 | properties: { 8 | publicIPAllocationMethod: 'static' 9 | publicIPAddressVersion: 'IPv4' 10 | } 11 | sku: { 12 | name: 'Standard' 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /eng/service-templates/ProductConstructionService/RecreateEnvOnly/README.md: -------------------------------------------------------------------------------- 1 | The scripts in this folder are used to just recreate the container app environment, the containerapp, the jobs, and the virtual environment. 2 | All other resources (KeyVault, ManagedIdentities, etc..) are reused -------------------------------------------------------------------------------- /eng/templates/steps/build.yml: -------------------------------------------------------------------------------- 1 | parameters: 2 | - name: configuration 3 | type: string 4 | - name: buildArgs 5 | type: string 6 | default: '' 7 | 8 | steps: 9 | - task: NuGetToolInstaller@0 10 | displayName: Install NuGet 11 | inputs: 12 | versionSpec: 6.11.x 13 | 14 | - powershell: | 15 | Write-Host "##vso[task.setvariable variable=VersionPrefix]1.1.0" 16 | displayName: Set Package Version 17 | 18 | - script: > 19 | .\eng\common\cibuild.cmd 20 | -configuration ${{ parameters.configuration }} 21 | -prepareMachine 22 | /p:Test=false 23 | /p:Sign=false 24 | ${{ parameters.buildArgs }} 25 | displayName: Build 26 | -------------------------------------------------------------------------------- /github-merge-flow.jsonc: -------------------------------------------------------------------------------- 1 | // IMPORTANT: This file is read by the merge flow from main branch only. 2 | { 3 | "merge-flow-configurations": { 4 | "production":{ 5 | "MergeToBranch": "main" 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "8.0.303", 4 | "rollForward": "minor" 5 | }, 6 | "tools": { 7 | "dotnet": "8.0.303", 8 | "runtimes": { 9 | "dotnet": [ 10 | "6.0.29" 11 | ], 12 | "aspnetcore": [ 13 | "6.0.29" 14 | ] 15 | } 16 | }, 17 | "msbuild-sdks": { 18 | "Microsoft.DotNet.Arcade.Sdk": "8.0.0-beta.25264.2" 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Common/AzureDevOpsTokens/AzureDevOpsCredentialResolverOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Maestro.Common.AppCredentials; 5 | 6 | namespace Maestro.Common.AzureDevOpsTokens; 7 | 8 | public class AzureDevOpsCredentialResolverOptions : AppCredentialResolverOptions 9 | { 10 | public AzureDevOpsCredentialResolverOptions() 11 | : base("499b84ac-1321-427f-aa17-267ca6975798") 12 | { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Common/AzureDevOpsTokens/AzureDevOpsTokenProviderOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.Common.AzureDevOpsTokens; 5 | 6 | public class AzureDevOpsTokenProviderOptions : Dictionary 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Common/AzureDevOpsTokens/IAzureDevOpsTokenProvider.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.Common.AzureDevOpsTokens; 5 | 6 | public interface IAzureDevOpsTokenProvider : IRemoteTokenProvider 7 | { 8 | string GetTokenForAccount(string account); 9 | 10 | Task GetTokenForAccountAsync(string account); 11 | } 12 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Common/IRemoteTokenProvider.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.Common; 5 | 6 | public interface IRemoteTokenProvider 7 | { 8 | string? GetTokenForRepository(string repoUri); 9 | 10 | Task GetTokenForRepositoryAsync(string repoUri); 11 | } 12 | 13 | public class ResolvedTokenProvider(string? token) : IRemoteTokenProvider 14 | { 15 | public string? GetTokenForRepository(string repoUri) => token; 16 | 17 | public Task GetTokenForRepositoryAsync(string repoUri) => Task.FromResult(token); 18 | } 19 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/ApplicationUser.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System; 5 | using System.Collections.Generic; 6 | using Microsoft.AspNetCore.Identity; 7 | 8 | namespace Maestro.Data; 9 | 10 | public class ApplicationUser : IdentityUser 11 | { 12 | public List PersonalAccessTokens { get; set; } 13 | 14 | [PersonalData] 15 | public string FullName { get; set; } 16 | 17 | public DateTimeOffset LastUpdated { get; set; } = DateTimeOffset.UtcNow; 18 | } 19 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/GlobalSuppressions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Diagnostics.CodeAnalysis; 5 | 6 | // This file is used by Code Analysis to maintain SuppressMessage 7 | // attributes that are applied to this project. 8 | // Project-level suppressions either have no target or are given 9 | // a specific target and scoped to a namespace, type, member, etc. 10 | [assembly: SuppressMessage("Style", "IDE0161:Convert to file-scoped namespace", Justification = "", Scope = "namespace", Target = "~N:Maestro.Data.Migrations")] 11 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/AssetFilter.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.ComponentModel.DataAnnotations; 5 | using System.ComponentModel.DataAnnotations.Schema; 6 | 7 | namespace Maestro.Data.Models; 8 | 9 | public class AssetFilter 10 | { 11 | [Key] 12 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 13 | public int Id { get; set; } 14 | 15 | /// 16 | /// Filter for assets to ignore, e.g. "Microsoft.AspNetCore.App", "Microsoft.NETCore.*", etc. 17 | /// 18 | public string Filter { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/AssetLocation.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.ComponentModel.DataAnnotations; 5 | using System.ComponentModel.DataAnnotations.Schema; 6 | 7 | namespace Maestro.Data.Models; 8 | 9 | public class AssetLocation 10 | { 11 | [Key] 12 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 13 | public int Id { get; set; } 14 | 15 | public string Location { get; set; } 16 | 17 | public LocationType Type { get; set; } 18 | } 19 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/BuildIncoherence.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.ComponentModel.DataAnnotations; 5 | using System.ComponentModel.DataAnnotations.Schema; 6 | 7 | namespace Maestro.Data.Models; 8 | 9 | [Table("BuildIncoherencies")] 10 | public class BuildIncoherence 11 | { 12 | [Key] 13 | [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 14 | public int Id { get; set; } 15 | public string Name { get; set; } 16 | public string Version { get; set; } 17 | public string Repository { get; set; } 18 | public string Commit { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/GoalTime.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.Data.Models; 5 | 6 | public class GoalTime 7 | { 8 | public int ChannelId { get; set; } 9 | public Channel Channel { get; set; } 10 | public int DefinitionId { get; set; } 11 | public int Minutes { get; set; } 12 | } 13 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/LocationType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.Data.Models; 5 | 6 | public enum LocationType 7 | { 8 | None = 0, 9 | NugetFeed, 10 | Container 11 | } 12 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/LongestBuildPath.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System; 5 | 6 | namespace Maestro.Data.Models; 7 | 8 | public class LongestBuildPath 9 | { 10 | public int Id { get; set; } 11 | public int ChannelId { get; set; } 12 | public Channel Channel { get; set; } 13 | public DateTimeOffset ReportDate { get; set; } 14 | public double BestCaseTimeInMinutes { get; set; } 15 | public double WorstCaseTimeInMinutes { get; set; } 16 | public string ContributingRepositories { get; set; } 17 | } 18 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/MergePolicyDefinition.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | using Newtonsoft.Json.Linq; 6 | 7 | namespace Maestro.Data.Models; 8 | 9 | public class MergePolicyDefinition 10 | { 11 | public string Name { get; set; } 12 | 13 | public Dictionary Properties { get; set; } 14 | } 15 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/SubscriptionPolicy.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | 6 | namespace Maestro.Data.Models; 7 | 8 | public class SubscriptionPolicy 9 | { 10 | public bool Batchable { get; set; } 11 | 12 | public UpdateFrequency UpdateFrequency { get; set; } 13 | 14 | public List MergePolicies { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/Models/UpdateFrequency.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.Data.Models; 5 | 6 | public enum UpdateFrequency 7 | { 8 | None = 0, 9 | EveryDay, 10 | EveryBuild, 11 | TwiceDaily, 12 | EveryWeek, 13 | EveryTwoWeeks, 14 | EveryMonth, 15 | } 16 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.Data/dotnet-ef.ps1: -------------------------------------------------------------------------------- 1 | ## How to Use 2 | ## 3 | ## Call this script before running any `dotnet ef` commands. For example: 4 | ## to run `dotnet ef database update`, at the command line, call: 5 | ## .\dotnet-ef.ps1 database update 6 | 7 | $extPath = Resolve-Path "..\..\..\artifacts\obj\Maestro.Data" 8 | Write-Output "Adding MSBuild Project Extension Path: '$extPath'" 9 | 10 | dotnet ef --msbuildprojectextensionspath "$extPath" @args 11 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.DataProviders/ISqlBarClient.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System; 5 | using System.Threading.Tasks; 6 | using Microsoft.DotNet.DarcLib; 7 | 8 | namespace Maestro.DataProviders; 9 | public interface ISqlBarClient : IBasicBarClient 10 | { 11 | /// 12 | /// Register a subscription update in the database. This is used to track the status of subscription updates. 13 | /// 14 | Task RegisterSubscriptionUpdate( 15 | Guid subscriptionId, 16 | string updateMessage); 17 | } 18 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.DataProviders/MultiProjectKustoQuery.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.DotNet.Kusto; 5 | 6 | namespace Maestro.DataProviders; 7 | 8 | public class MultiProjectKustoQuery 9 | { 10 | public MultiProjectKustoQuery(KustoQuery internalQuery, KustoQuery publicQuery) 11 | { 12 | Internal = internalQuery; 13 | Public = publicQuery; 14 | } 15 | 16 | public KustoQuery Internal { get; set; } 17 | public KustoQuery Public { get; set; } 18 | } 19 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.MergePolicies/CodeFlowDirection.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.MergePolicies; 5 | 6 | public enum CodeFlowDirection 7 | { 8 | None = 0, 9 | ForwardFlow = 1, 10 | BackFlow = 2 11 | } 12 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.MergePolicies/CoherencyErrorDetails.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | using System.Runtime.Serialization; 6 | 7 | namespace Maestro.MergePolicies; 8 | 9 | [DataContract] 10 | public class CoherencyErrorDetails 11 | { 12 | [DataMember] 13 | public string Error { get; set; } 14 | 15 | [DataMember] 16 | public IEnumerable PotentialSolutions { get; set; } 17 | } 18 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.MergePolicyEvaluation/IMergePolicyInfo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.MergePolicyEvaluation; 5 | 6 | public interface IMergePolicyInfo 7 | { 8 | string Name { get; } 9 | string DisplayName { get; } 10 | } 11 | 12 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.MergePolicyEvaluation/Maestro.MergePolicyEvaluation.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | net6.0 5 | true 6 | enable 7 | enable 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/Maestro/Maestro.MergePolicyEvaluation/MergePolicyEvaluationStatus.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Maestro.MergePolicyEvaluation; 5 | 6 | public enum MergePolicyEvaluationStatus 7 | { 8 | Pending = 0, 9 | DecisiveSuccess, // success that doesn't need to be evaluated again if the commit didn't change 10 | TransientSuccess, // success that needs to be re-evaluated even when on the same commit 11 | DecisiveFailure, // failure that cannot be resolved by simply re-evaluating without adding new commits 12 | TransientFailure, // failure that may be resolved by simply re-evaluating 13 | } 14 | -------------------------------------------------------------------------------- /src/Maestro/Microsoft.DotNet.Maestro.Tasks/src/LaunchDebugger.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.Build.Utilities; 5 | using System.Diagnostics; 6 | 7 | namespace Microsoft.DotNet.Maestro.Tasks 8 | { 9 | public class LaunchDebugger : Task 10 | { 11 | public override bool Execute() 12 | { 13 | Debugger.Launch(); 14 | return true; 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Models/PopUps/MergePolicyData.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | using YamlDotNet.Serialization; 6 | 7 | namespace Microsoft.DotNet.Darc.Models.PopUps; 8 | 9 | public class MergePolicyData 10 | { 11 | [YamlMember(Alias = "Name")] 12 | public string Name { get; set; } 13 | [YamlMember(Alias = "Properties")] 14 | public Dictionary Properties { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Operations/Operation.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Threading.Tasks; 5 | 6 | #nullable enable 7 | namespace Microsoft.DotNet.Darc.Operations; 8 | 9 | public abstract class Operation 10 | { 11 | public abstract Task ExecuteAsync(); 12 | } 13 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/AuthenticateCommandLineOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.DotNet.Darc.Operations; 6 | 7 | namespace Microsoft.DotNet.Darc.Options; 8 | 9 | [Verb("authenticate", HelpText = "Stores the VSTS and GitHub tokens required for remote operations.")] 10 | internal class AuthenticateCommandLineOptions : CommandLineOptions 11 | { 12 | [Option("clear", HelpText = "Clear any settings to defaults.")] 13 | public bool Clear { get; set; } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/DarcOutputType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.Darc.Options; 5 | 6 | /// 7 | /// Output type that darc should use. Commandline enum parsing is case sensitive 8 | /// so we put these as lower case. 9 | /// 10 | public enum DarcOutputType 11 | { 12 | text, 13 | json 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/DeleteChannelCommandLineOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.DotNet.Darc.Operations; 6 | 7 | namespace Microsoft.DotNet.Darc.Options; 8 | 9 | [Verb("delete-channel", HelpText = "Deletes an existing channel.")] 10 | internal class DeleteChannelCommandLineOptions : CommandLineOptions 11 | { 12 | [Option('n', "name", Required = true, HelpText = "Name of channel to delete.")] 13 | public string Name { get; set; } 14 | 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/GetChannelsCommandLineOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.DotNet.Darc.Operations; 6 | 7 | namespace Microsoft.DotNet.Darc.Options; 8 | 9 | [Verb("get-channels", HelpText = "Get a list of channels.")] 10 | internal class GetChannelsCommandLineOptions : CommandLineOptions 11 | { 12 | public override bool IsOutputFormatSupported() 13 | => OutputFormat switch 14 | { 15 | DarcOutputType.json => true, 16 | _ => base.IsOutputFormatSupported(), 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/GetDependenciesCommandLineOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.DotNet.Darc.Operations; 6 | 7 | namespace Microsoft.DotNet.Darc.Options; 8 | 9 | [Verb("get-dependencies", HelpText = "Get local dependencies.")] 10 | internal class GetDependenciesCommandLineOptions : CommandLineOptions 11 | { 12 | [Option('n', "name", HelpText = "Name of dependency to query for.")] 13 | public string Name { get; set; } 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/VerifyCommandLineOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.DotNet.Darc.Operations; 6 | 7 | namespace Microsoft.DotNet.Darc.Options; 8 | 9 | [Verb("verify", HelpText = "Verify that the dependency information in the repository is correct.")] 10 | internal class VerifyCommandLineOptions : CommandLineOptions 11 | { 12 | } 13 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/VirtualMonoRepo/CloakedFileScanOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.DotNet.Darc.Operations.VirtualMonoRepo; 6 | 7 | #nullable enable 8 | namespace Microsoft.DotNet.Darc.Options.VirtualMonoRepo; 9 | 10 | [Verb("scan-cloaked-files", HelpText = "Scans the VMR, checking if it contains any cloaked files")] 11 | internal class CloakedFileScanOptions : VmrScanOptions 12 | { 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Options/VirtualMonoRepo/IBaseVmrCommandLineOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | 6 | namespace Microsoft.DotNet.Darc.Options.VirtualMonoRepo; 7 | 8 | internal interface IBaseVmrCommandLineOptions : ICommandLineOptions 9 | { 10 | string VmrPath { get; } 11 | 12 | string TmpPath { get; } 13 | 14 | IEnumerable AdditionalRemotes { get; } 15 | 16 | IEnumerable Repositories { get; } 17 | } 18 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.CompilerServices; 5 | 6 | [assembly: InternalsVisibleTo("Microsoft.DotNet.Darc.Tests")] 7 | [assembly: InternalsVisibleTo("Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests")] 8 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 9 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/Darc/runtimeconfig.template.json: -------------------------------------------------------------------------------- 1 | { 2 | "rollForwardOnNoCandidateFx": 2 3 | } 4 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Commit.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib; 5 | 6 | public class Commit 7 | { 8 | public Commit(string author, string sha, string message) 9 | { 10 | Author = author; 11 | Sha = sha; 12 | Message = message; 13 | } 14 | 15 | public string Author { get; } 16 | public string Sha { get; } 17 | public string Message { get; } 18 | 19 | public static string GetShortSha(string commitSha) => commitSha[..7]; 20 | } 21 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/GitSubmoduleInfo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable enable 5 | namespace Microsoft.DotNet.DarcLib; 6 | 7 | public record GitSubmoduleInfo( 8 | string Name, 9 | string Path, 10 | string Url, 11 | string Commit); 12 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/HealthMetrics/HealthMetric.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Threading.Tasks; 5 | 6 | namespace Microsoft.DotNet.DarcLib.HealthMetrics; 7 | 8 | public enum HealthResult 9 | { 10 | Passed, 11 | Failed, 12 | Warning 13 | } 14 | 15 | public abstract class HealthMetric 16 | { 17 | public abstract string MetricName { get; } 18 | 19 | public abstract string MetricDescription { get; } 20 | 21 | public HealthResult Result { get; protected set; } 22 | 23 | public abstract Task EvaluateAsync(); 24 | } 25 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Helpers/GitObjectType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Helpers; 5 | 6 | public enum GitObjectType 7 | { 8 | Unknown, 9 | Blob, 10 | Tree, 11 | Commit, 12 | Tag, 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Helpers/GitRepoType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Helpers; 5 | 6 | public enum GitRepoType 7 | { 8 | GitHub, 9 | AzureDevOps, 10 | Local, 11 | None 12 | } 13 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/IRemoteFactory.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.DotNet.DarcLib.Helpers; 5 | using System.Threading.Tasks; 6 | 7 | namespace Microsoft.DotNet.DarcLib; 8 | 9 | /// 10 | /// For certain use cases where components will step between various remote repositories 11 | /// (e.g. between azure devops and github). 12 | /// 13 | public interface IRemoteFactory 14 | { 15 | Task CreateRemoteAsync(string repoUrl); 16 | 17 | Task CreateDependencyFileManagerAsync(string repoUrl); 18 | } 19 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/KnownDependencyType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib; 5 | 6 | public enum KnownDependencyType 7 | { 8 | GlobalJson, 9 | Docker 10 | } 11 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/MergePullRequestParameters.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib; 5 | 6 | public class MergePullRequestParameters 7 | { 8 | public string CommitToMerge { get; set; } 9 | public bool SquashMerge { get; set; } = true; 10 | public bool DeleteSourceBranch { get; set; } = true; 11 | } 12 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsArtifact.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsArtifact 7 | { 8 | public string Type { get; set; } 9 | 10 | public string Alias { get; set; } 11 | 12 | public AzureDevOpsArtifactSourceReference DefinitionReference { get; set; } 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsArtifactSourceReference.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsArtifactSourceReference 7 | { 8 | public AzureDevOpsIdNamePair DefaultVersionSpecific { get; set; } 9 | 10 | public AzureDevOpsIdNamePair DefaultVersionType { get; set; } 11 | 12 | public AzureDevOpsIdNamePair Definition { get; set; } 13 | 14 | public AzureDevOpsIdNamePair Project { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsBuild.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsBuild 7 | { 8 | public long Id { get; set; } 9 | 10 | public string BuildNumber { get; set; } 11 | 12 | public AzureDevOpsBuildDefinition Definition { get; set; } 13 | 14 | public AzureDevOpsProject Project { get; set; } 15 | 16 | public string Status { get; set; } 17 | 18 | public string Result { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsBuildArtifact.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsBuildArtifact 7 | { 8 | public int Id { get; set; } 9 | 10 | public string Name { get; set; } 11 | } 12 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsBuildDefinition.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsBuildDefinition : AzureDevOpsIdNamePair 7 | { 8 | } 9 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsChangeType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsChangeType 7 | { 8 | public const int Add = 1; 9 | 10 | public const int Edit = 2; 11 | 12 | public const int Delete = 16; 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsCheckState.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public enum AzureDevOpsCheckState 7 | { 8 | None, 9 | Queued, 10 | Broken, 11 | Rejected, 12 | Approved, 13 | Running 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsCommit.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | 6 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 7 | 8 | public class AzureDevOpsCommit 9 | { 10 | public AzureDevOpsCommit(List changes, string commitComment) 11 | { 12 | Changes = changes; 13 | Comment = commitComment; 14 | } 15 | 16 | public List Changes { get; set; } 17 | 18 | public string Comment { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsIdNamePair.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsIdNamePair 7 | { 8 | public string Id { get; set; } 9 | 10 | public string Name { get; set; } 11 | } 12 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsItem.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsItem 7 | { 8 | public string Path { get; set; } 9 | 10 | public bool IsFolder { get; set; } 11 | } 12 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPipelineResourceParameter.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsPipelineResourceParameter 7 | { 8 | public string Version { get; set; } 9 | 10 | public AzureDevOpsPipelineResourceParameter(string version) 11 | { 12 | Version = version; 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPipelineRunDefinition.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | 6 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 7 | 8 | public class AzureDevOpsPipelineRunDefinition 9 | { 10 | public AzureDevOpsRunResourcesParameters Resources { get; set; } 11 | 12 | public Dictionary TemplateParameters { get; set; } 13 | 14 | public Dictionary Variables { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPrStatus.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public enum AzureDevOpsPrStatus 7 | { 8 | None, 9 | Active, 10 | Completed, 11 | Abandoned 12 | } 13 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsProject.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public partial class AzureDevOpsProject : AzureDevOpsIdNamePair 7 | { 8 | public AzureDevOpsProject(string name, string id) 9 | { 10 | Id = id; 11 | Name = name; 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsPush.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | 6 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 7 | 8 | public class AzureDevOpsPush 9 | { 10 | public AzureDevOpsPush(AzureDevOpsRefUpdate refUpdate, AzureDevOpsCommit vstsCommit) 11 | { 12 | RefUpdates = [refUpdate]; 13 | Commits = [vstsCommit]; 14 | } 15 | 16 | public List RefUpdates { get; set; } 17 | 18 | public List Commits { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsRefUpdate.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsRefUpdate 7 | { 8 | public AzureDevOpsRefUpdate(string branch, string currentSha) 9 | { 10 | Name = branch; 11 | OldObjectId = currentSha; 12 | } 13 | 14 | public string Name { get; set; } 15 | 16 | public string OldObjectId { get; set; } 17 | } 18 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsRelease.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public partial class AzureDevOpsRelease 7 | { 8 | public long Id { get; set; } 9 | 10 | public AzureDevOpsReleaseEnvironment[] Environments { get; set; } 11 | 12 | public string Name { get; set; } 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsReleaseEnvironment.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public partial class AzureDevOpsReleaseEnvironment 7 | { 8 | public string Status { get; set; } 9 | } 10 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsReleaseStatus.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public static class AzureDevOpsReleaseStatus 7 | { 8 | /// 9 | /// A successfull release. 10 | /// 11 | public const string Succeeded = "succeeded"; 12 | /// 13 | /// A failed release. 14 | /// 15 | public const string Rejected = "rejected"; 16 | } 17 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsRepositoryResourceParameter.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsRepositoryResourceParameter 7 | { 8 | public string RefName { get; set; } 9 | public string Version { get; set; } 10 | 11 | public AzureDevOpsRepositoryResourceParameter(string refName, string version) 12 | { 13 | RefName = refName; 14 | Version = version; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/AzureDevOps/AzureDevOpsVariable.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.AzureDevOps; 5 | 6 | public class AzureDevOpsVariable 7 | { 8 | public bool IsSecret { get; set; } 9 | public string Value { get; set; } 10 | 11 | public AzureDevOpsVariable(string value, bool isSecret = false) 12 | { 13 | Value = value; 14 | IsSecret = isSecret; 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/Check.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models; 5 | 6 | public class Check 7 | { 8 | public Check(CheckState status, string name, string url, bool isMaestroMergePolicy = false) 9 | { 10 | Status = status; 11 | Name = name; 12 | Url = url; 13 | IsMaestroMergePolicy = isMaestroMergePolicy; 14 | } 15 | 16 | public CheckState Status { get; } 17 | public string Name { get; } 18 | public string Url { get; } 19 | public bool IsMaestroMergePolicy { get; } 20 | } 21 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/CheckState.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models; 5 | 6 | public enum CheckState 7 | { 8 | None, 9 | Pending, 10 | Error, 11 | Failure, 12 | Success 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/Darc/BuildComparer.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.DotNet.ProductConstructionService.Client.Models; 5 | using System.Collections.Generic; 6 | 7 | namespace Microsoft.DotNet.DarcLib.Models.Darc; 8 | 9 | public class BuildComparer : IEqualityComparer 10 | { 11 | public bool Equals(Build x, Build y) 12 | { 13 | return x.Id == y.Id; 14 | } 15 | 16 | public int GetHashCode(Build obj) 17 | { 18 | return obj.Id; 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/Darc/CoherencyMode.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.Darc; 5 | 6 | /// 7 | /// Method of coherency. 8 | /// 9 | public enum CoherencyMode 10 | { 11 | Legacy, 12 | Strict 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/Darc/DependencyType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.Darc; 5 | 6 | public enum DependencyType 7 | { 8 | Toolset, 9 | Product 10 | } 11 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubComment.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 5 | 6 | public class GitHubComment 7 | { 8 | public GitHubComment(string commentBody) 9 | { 10 | Body = commentBody; 11 | } 12 | 13 | public string Body { get; set; } 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubCommit.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | 6 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 7 | 8 | public class GitHubCommit 9 | { 10 | public string Message { get; set; } 11 | 12 | public string Tree { get; set; } 13 | 14 | public List Parents { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubContent.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 5 | 6 | public class GitHubContent 7 | { 8 | public string Type { get; set; } 9 | 10 | public string Path { get; set; } 11 | 12 | public string Sha { get; set; } 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubContentType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 5 | 6 | public class GitHubContentType 7 | { 8 | public const string File = "file"; 9 | public const string Dir = "dir"; 10 | } 11 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubMergeMethod.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 5 | 6 | public class GitHubMergeMethod 7 | { 8 | public const string Merge = "merge"; 9 | public const string Squash = "squash"; 10 | public const string Rebase = "rebase"; 11 | } 12 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubPullRequest.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 5 | 6 | public class GitHubPullRequest 7 | { 8 | public GitHubPullRequest(string title, string body, string head, string baseBranch) 9 | { 10 | Title = title; 11 | Body = body; 12 | Head = head; 13 | Base = baseBranch; 14 | } 15 | 16 | public string Title { get; set; } 17 | 18 | public string Body { get; set; } 19 | 20 | public string Head { get; set; } 21 | 22 | public string Base { get; set; } 23 | } 24 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubRef.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 5 | 6 | public class GitHubRef 7 | { 8 | public GitHubRef(string githubRef, string sha) 9 | { 10 | Ref = githubRef; 11 | Sha = sha; 12 | } 13 | 14 | public string Ref { get; set; } 15 | 16 | public string Sha { get; set; } 17 | 18 | public bool Force { get; set; } 19 | } 20 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubTree.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | using Newtonsoft.Json; 6 | 7 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 8 | 9 | public class GitHubTree 10 | { 11 | [JsonProperty("base_tree")] 12 | public string BaseTree { get; set; } 13 | 14 | public List Tree { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/GitHub/GitHubTreeItem.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models.GitHub; 5 | 6 | public class GitHubTreeItem 7 | { 8 | public string Mode { get; set; } 9 | 10 | public string Type { get; set; } 11 | 12 | public string Path { get; set; } 13 | 14 | public string Content { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/PrStatus.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models; 5 | 6 | public enum PrStatus 7 | { 8 | None, 9 | Open, 10 | Closed, 11 | Merged 12 | } 13 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/Review.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models; 5 | 6 | public class Review 7 | { 8 | public Review(ReviewState state, string url) 9 | { 10 | Status = state; 11 | Url = url; 12 | } 13 | 14 | public ReviewState Status { get; } 15 | public string Url { get; } 16 | } 17 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/ReviewState.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib.Models; 5 | 6 | public enum ReviewState 7 | { 8 | Approved, 9 | ChangesRequested, 10 | Commented, 11 | Rejected, 12 | Pending 13 | } 14 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/VirtualMonoRepo/CodeFlowParameters.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable enable 5 | using System.Collections.Generic; 6 | using Microsoft.DotNet.DarcLib.VirtualMonoRepo; 7 | 8 | namespace Microsoft.DotNet.DarcLib.Models.VirtualMonoRepo; 9 | 10 | public record CodeFlowParameters( 11 | IReadOnlyCollection AdditionalRemotes, 12 | string? TpnTemplatePath, 13 | bool GenerateCodeOwners, 14 | bool GenerateCredScanSuppressions, 15 | bool DiscardPatches, 16 | bool ApplyAdditionalMappings); 17 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/Models/VirtualMonoRepo/CodeFlowResult.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | using Microsoft.DotNet.DarcLib.Helpers; 6 | using Microsoft.DotNet.DarcLib.Models.Darc; 7 | 8 | #nullable enable 9 | namespace Microsoft.DotNet.DarcLib.Models.VirtualMonoRepo; 10 | 11 | public record CodeFlowResult( 12 | bool HadUpdates, 13 | IReadOnlyCollection ConflictedFiles, 14 | NativePath RepoPath, 15 | List DependencyUpdates); 16 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/PullRequestNotMergeableException.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System; 5 | 6 | namespace Microsoft.DotNet.DarcLib; 7 | 8 | [Serializable] 9 | public class PullRequestNotMergeableException : DarcException 10 | { 11 | public PullRequestNotMergeableException() : base() { } 12 | 13 | public PullRequestNotMergeableException(string message) : base(message) { } 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/PullRequestProperties.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.DarcLib; 5 | 6 | public class PullRequestProperties 7 | { 8 | public const string TitleTag = "[Darc-Update]"; 9 | } 10 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/VirtualMonoRepo/EmptySyncException.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System; 5 | 6 | #nullable enable 7 | namespace Microsoft.DotNet.DarcLib.VirtualMonoRepo; 8 | 9 | public class EmptySyncException : Exception 10 | { 11 | public EmptySyncException(string message) : base(message) 12 | { 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/VirtualMonoRepo/IVmrScanner.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | using System.Threading; 6 | using System.Threading.Tasks; 7 | 8 | #nullable enable 9 | namespace Microsoft.DotNet.DarcLib.VirtualMonoRepo; 10 | 11 | public interface IVmrScanner 12 | { 13 | Task> ScanVmr(string? baselineFilePath, CancellationToken cancellationToken); 14 | } 15 | -------------------------------------------------------------------------------- /src/Microsoft.DotNet.Darc/DarcLib/VirtualMonoRepo/InvalidSynchronizationException.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System; 5 | 6 | #nullable enable 7 | namespace Microsoft.DotNet.DarcLib.VirtualMonoRepo; 8 | 9 | public class InvalidSynchronizationException : Exception 10 | { 11 | public InvalidSynchronizationException(string message) 12 | : base(message) 13 | { 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/ApiError.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Collections.Generic; 5 | using Newtonsoft.Json; 6 | 7 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models 8 | { 9 | public partial class ApiError 10 | { 11 | public ApiError() 12 | { 13 | } 14 | 15 | [JsonProperty("message")] 16 | public string Message { get; set; } 17 | 18 | [JsonProperty("errors")] 19 | public List Errors { get; set; } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/BuildUpdate.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Newtonsoft.Json; 5 | 6 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models 7 | { 8 | public partial class BuildUpdate 9 | { 10 | public BuildUpdate() 11 | { 12 | } 13 | 14 | [JsonProperty("released")] 15 | public bool? Released { get; set; } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/GoalRequestJson.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Newtonsoft.Json; 5 | 6 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models 7 | { 8 | public partial class GoalRequestJson 9 | { 10 | public GoalRequestJson(int minutes) 11 | { 12 | Minutes = minutes; 13 | } 14 | 15 | [JsonProperty("minutes")] 16 | public int Minutes { get; set; } 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Generated/Models/LocationType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.Serialization; 5 | 6 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models 7 | { 8 | public enum LocationType 9 | { 10 | [EnumMember(Value = "none")] 11 | None, 12 | [EnumMember(Value = "nugetFeed")] 13 | NugetFeed, 14 | [EnumMember(Value = "container")] 15 | Container, 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/Subscription.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Microsoft.DotNet.ProductConstructionService.Client.Models 5 | { 6 | public partial class Subscription 7 | { 8 | public bool IsBackflow() => SourceEnabled && !string.IsNullOrEmpty(SourceDirectory); 9 | public bool IsForwardFlow() => SourceEnabled && !string.IsNullOrEmpty(TargetDirectory); 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/ProductConstructionService/Microsoft.DotNet.ProductConstructionService.Client/generate-client.cmd: -------------------------------------------------------------------------------- 1 | dotnet msbuild /t:GenerateCode /p:TargetFramework=netstandard2.0 2 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/ApiError.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.Api.Api; 5 | 6 | public class ApiError 7 | { 8 | public ApiError(string message, IEnumerable? errors = null) 9 | { 10 | Message = message; 11 | Errors = errors; 12 | } 13 | 14 | public string Message { get; } 15 | public IEnumerable? Errors { get; } 16 | } 17 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/BuildDataValidator.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using FluentValidation; 5 | 6 | #nullable disable 7 | namespace ProductConstructionService.Api.v2018_07_16.Models; 8 | 9 | public class BuildDataValidator : AbstractValidator 10 | { 11 | public BuildDataValidator() 12 | { 13 | RuleFor(b => b.Assets).NotEmpty(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/LocationType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable disable 5 | namespace ProductConstructionService.Api.v2018_07_16.Models; 6 | 7 | public enum LocationType 8 | { 9 | None = 0, 10 | NugetFeed, 11 | Container 12 | } 13 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/ReleasePipeline.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable disable 5 | namespace ProductConstructionService.Api.v2018_07_16.Models; 6 | 7 | public class ReleasePipeline 8 | { 9 | public int Id { get; set; } 10 | 11 | public int PipelineIdentifier { get; set; } 12 | 13 | public string Organization { get; set; } 14 | 15 | public string Project { get; set; } 16 | } 17 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2018_07_16/Models/UpdateFrequency.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable disable 5 | namespace ProductConstructionService.Api.v2018_07_16.Models; 6 | 7 | public enum UpdateFrequency 8 | { 9 | None = 0, 10 | EveryDay, 11 | EveryBuild, 12 | TwiceDaily, 13 | EveryWeek, 14 | EveryTwoWeeks, 15 | EveryMonth, 16 | } 17 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2019_01_16/Models/BuildUpdate.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable disable 5 | namespace ProductConstructionService.Api.v2019_01_16.Models; 6 | 7 | public class BuildUpdate 8 | { 9 | public bool? Released { get; set; } 10 | } 11 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2020_02_20/Models/AssetAndLocation.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using ProductConstructionService.Api.v2018_07_16.Models; 5 | 6 | #nullable disable 7 | namespace ProductConstructionService.Api.v2020_02_20.Models; 8 | 9 | public class AssetAndLocation 10 | { 11 | public int AssetId { get; set; } 12 | 13 | public string Location { get; set; } 14 | 15 | public LocationType LocationType { get; set; } 16 | } 17 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2020_02_20/Models/BuildUpdate.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable disable 5 | namespace ProductConstructionService.Api.v2020_02_20.Models; 6 | 7 | public class BuildUpdate 8 | { 9 | public bool? Released { get; set; } 10 | } 11 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Api/v2020_02_20/Models/Commit.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | #nullable disable 5 | namespace ProductConstructionService.Api.v2020_02_20.Models; 6 | 7 | public class Commit 8 | { 9 | public Commit(string author, string sha, string message) 10 | { 11 | Author = author; 12 | Sha = sha; 13 | Message = message ?? string.Empty; 14 | } 15 | 16 | public string Author { get; } 17 | public string Sha { get; } 18 | public string Message { get; } 19 | } 20 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Configuration/KeyVaultSecretsWithPrefix.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Azure.Extensions.AspNetCore.Configuration.Secrets; 5 | using Azure.Security.KeyVault.Secrets; 6 | 7 | namespace ProductConstructionService.Api.Configuration; 8 | 9 | internal class KeyVaultSecretsWithPrefix(string prefix) : KeyVaultSecretManager 10 | { 11 | private readonly string _prefix = prefix; 12 | 13 | public override string GetKey(KeyVaultSecret secret) 14 | => _prefix + secret.Name.Replace("--", ConfigurationPath.KeyDelimiter); 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Configuration/RequestBodyNameExtension.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.OpenApi.Interfaces; 5 | using Microsoft.OpenApi.Writers; 6 | using Microsoft.OpenApi; 7 | 8 | namespace ProductConstructionService.Api.Configuration; 9 | 10 | internal class RequestBodyNameExtension : IOpenApiExtension 11 | { 12 | public string? Name { get; set; } 13 | 14 | public void Write(IOpenApiWriter writer, OpenApiSpecVersion specVersion) 15 | { 16 | writer.WriteValue(Name); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Controllers/Models/AzDoBuild.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.Api.Controllers.Models; 5 | 6 | public class AzDoBuild 7 | { 8 | public required DateTime FinishTime { get; init; } 9 | public required int Id { get; init; } 10 | public required string Result { get; init; } 11 | } 12 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Pages/DependencyFlow/GitHubInfo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.Api.Pages.DependencyFlow; 5 | 6 | public record GitHubInfo(string Owner, string Repo); 7 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Pages/DependencyFlow/IncomingRepo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Maestro.Data.Models; 5 | 6 | namespace ProductConstructionService.Api.Pages.DependencyFlow; 7 | 8 | public record IncomingRepo( 9 | Build LastConsumedBuild, 10 | string ShortName, 11 | Build? OldestPublishedButUnconsumedBuild, 12 | string CommitUrl, 13 | string BuildUrl, 14 | int? CommitDistance, 15 | DateTimeOffset? CommitAge); 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Pages/DependencyFlow/Sla.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Diagnostics; 5 | 6 | namespace ProductConstructionService.Api.Pages.DependencyFlow; 7 | 8 | [DebuggerDisplay("{GetDebuggerDisplay(),nq}")] 9 | public class Sla 10 | { 11 | public int WarningUnconsumedBuildAge { get; set; } 12 | public int FailUnconsumedBuildAge { get; set; } 13 | 14 | private string GetDebuggerDisplay() 15 | => $"{nameof(Sla)}(Warn: {WarningUnconsumedBuildAge}, Fail: {FailUnconsumedBuildAge})"; 16 | } 17 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Pages/_ViewStart.cshtml: -------------------------------------------------------------------------------- 1 | @{ 2 | Layout = "_Layout"; 3 | ViewBag.Brand = "Maestro++"; 4 | } 5 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.CompilerServices; 5 | 6 | [assembly: InternalsVisibleTo("ProductConstructionService.Api.Tests")] 7 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 8 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/Telemetry/TelemetryRoleNameInitializer.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.ApplicationInsights.Extensibility; 5 | using Microsoft.ApplicationInsights.Channel; 6 | 7 | namespace ProductConstructionService.Api.Telemetry; 8 | 9 | internal class TelemetryRoleNameInitializer : ITelemetryInitializer 10 | { 11 | public void Initialize(ITelemetry telemetry) 12 | { 13 | telemetry.Context.Cloud.RoleName = "pcs"; 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Api/wwwroot/_: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/arcade-services/f6e232e800f932967f91173548fc11244f05a9a1/src/ProductConstructionService/ProductConstructionService.Api/wwwroot/_ -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.AppHost/Program.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | var builder = DistributedApplication.CreateBuilder(args); 5 | 6 | var redisCache = builder 7 | .AddRedis("redis", port: 55689); 8 | 9 | var queues = builder.AddAzureStorage("storage") 10 | .RunAsEmulator() 11 | .AddQueues("queues"); 12 | 13 | builder.AddProject("productConstructionServiceApi") 14 | .WithReference(queues) 15 | .WithReference(redisCache); 16 | 17 | builder.Build().Run(); 18 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.AppHost/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning" 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.AppHost/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Microsoft.AspNetCore": "Warning", 6 | "Aspire.Hosting.Dcp": "Warning" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Code/Helpers/JSRuntimeExtensions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.JSInterop; 5 | 6 | namespace ProductConstructionService.BarViz.Code.Helpers; 7 | 8 | internal static class JSRuntimeExtensions 9 | { 10 | public static async Task OpenNewWindow(this IJSRuntime jsRuntime, string uri) 11 | { 12 | await jsRuntime.InvokeAsync("open", uri, "_blank"); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Code/SelectedDependencyRelationType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.BarViz.Code; 5 | 6 | public enum SelectedDependencyRelationType 7 | { 8 | None, 9 | Selected, 10 | Parent, 11 | Child, 12 | Ancestor, 13 | Descendant, 14 | Conflict 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Code/Services/UserRoleManager.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.DotNet.ProductConstructionService.Client; 5 | 6 | namespace ProductConstructionService.BarViz.Code.Services; 7 | 8 | public class UserRoleManager(IProductConstructionServiceApi pcsApi) 9 | { 10 | private readonly Lazy> _isAdmin = new( 11 | () => pcsApi.IsAdmin(), 12 | LazyThreadSafetyMode.ExecutionAndPublication); 13 | 14 | public Task IsAdmin => _isAdmin.Value; 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Components/Common/DataGridLoadingSkeleton.razor: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Components/Common/PageLoadingStatus.razor: -------------------------------------------------------------------------------- 1 | 
2 |
3 | @StatusText 4 |
5 |
6 |
7 |
8 | 9 |
10 |
11 | 12 | @code { 13 | [Parameter] 14 | public string? StatusText { get; set; } 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Components/Common/PageLoadingStatus.razor.css: -------------------------------------------------------------------------------- 1 | .loading-status { 2 | width: 100%; 3 | display: flex; 4 | justify-content: center; 5 | } 6 | 7 | .loading-status .status-text { 8 | font-size: 12pt; 9 | margin: 20px auto 0 auto; 10 | } 11 | 12 | .loading-status .spinner { 13 | margin: 20px auto 0 auto; 14 | } 15 | 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Components/Common/SmallBadge.razor: -------------------------------------------------------------------------------- 1 |  2 | @if (ChildContent != null) 3 | { 4 | @ChildContent 5 | } 6 | else 7 | { 8 | @Text 9 | } 10 | 11 | 12 | @code { 13 | public ElementReference Element { get; set; } = default!; 14 | 15 | [Parameter] 16 | public RenderFragment? ChildContent { get; set; } 17 | 18 | [Parameter] 19 | public string? Text { get; set; } 20 | } 21 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Components/Common/SmallBadge.razor.css: -------------------------------------------------------------------------------- 1 | span.custom-small-badge { 2 | height: 20px; 3 | font-size: 10px; 4 | color: #ddd; 5 | background-color: #d35153; 6 | border: 1px; 7 | border-radius: 4px; 8 | padding: 1px 6px; 9 | position: relative; 10 | display: inline-block; 11 | } 12 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/Model/CodeflowSubscription.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.DotNet.ProductConstructionService.Client.Models; 5 | 6 | namespace ProductConstructionService.BarViz.Model; 7 | 8 | public record CodeflowSubscription( 9 | string RepositoryUrl, 10 | string? RepositoryBranch, 11 | string MappingName, 12 | bool Enabled, 13 | Subscription? BackflowSubscription, 14 | Subscription? ForwardflowSubscription, 15 | string? BackflowPr, 16 | string? ForwardflowPr); 17 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/watch.ps1: -------------------------------------------------------------------------------- 1 | $Env:DOTNET_WATCH_RESTART_ON_RUDE_EDIT = 1 2 | $Env:DOTNET_WATCH_SUPPRESS_LAUNCH_BROWSER = 1 3 | # --no-hot-reload => you can add this switch if you don't like hot reload behavior 4 | dotnet watch --verbose --launch-profile https -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.BarViz/wwwroot/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dotnet/arcade-services/f6e232e800f932967f91173548fc11244f05a9a1/src/ProductConstructionService/ProductConstructionService.BarViz/wwwroot/favicon.ico -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.Common/ConfigurationExtension.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.Extensions.Configuration; 5 | 6 | namespace ProductConstructionService.Common; 7 | public static class ConfigurationExtension 8 | { 9 | public static string GetRequiredValue(this IConfiguration config, string key) => 10 | config[key] ?? throw new ArgumentException($"{key} missing from the configuration / environment settings"); 11 | } 12 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/Model/Asset.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.Serialization; 5 | 6 | #nullable disable 7 | namespace ProductConstructionService.DependencyFlow.Model; 8 | 9 | [DataContract] 10 | public class Asset 11 | { 12 | [DataMember] 13 | public string Name { get; set; } 14 | 15 | [DataMember] 16 | public string Version { get; set; } 17 | 18 | [DataMember] 19 | public string[] Locations { get; set; } 20 | } 21 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/Model/DependencyFlowEvent.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.DependencyFlow.Model; 5 | 6 | public enum DependencyFlowEventType 7 | { 8 | Fired = 0, 9 | Created = 1, 10 | Updated = 2, 11 | Completed = 3, 12 | } 13 | 14 | public enum DependencyFlowEventReason 15 | { 16 | New = 0, 17 | AutomaticallyMerged = 1, 18 | ManuallyMerged = 2, 19 | ManuallyClosed = 3, 20 | FailedUpdate = 4, 21 | NothingToDo = 5, 22 | } 23 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/Model/MergePolicyCheckResult.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.DependencyFlow.Model; 5 | 6 | public enum MergePolicyCheckResult 7 | { 8 | NoPolicies = 0, 9 | PendingPolicies = 1, 10 | FailedPolicies = 2, 11 | FailedToMerge = 3, 12 | Merged = 4, 13 | } 14 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/Model/SubscriptionUpdateAction.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.DependencyFlow.Model; 5 | 6 | public enum SubscriptionUpdateAction 7 | { 8 | ApplyingUpdates = 0, 9 | MergingPullRequest = 1 10 | } 11 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.CompilerServices; 5 | 6 | [assembly: InternalsVisibleTo("ProductConstructionService.Api.Tests")] 7 | [assembly: InternalsVisibleTo("ProductConstructionService.DependencyFlow.Tests")] 8 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 9 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/PullRequestStatus.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.DependencyFlow; 5 | 6 | public enum PullRequestStatus 7 | { 8 | Invalid = 0, 9 | Completed = 2, 10 | InProgressCanUpdate = 3, 11 | InProgressCannotUpdate = 4, 12 | } 13 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/SubscriptionType.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.DependencyFlow; 5 | 6 | public enum SubscriptionType 7 | { 8 | Dependencies = 0, 9 | DependenciesAndSources = 1, 10 | } 11 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/WorkItems/BuildCoherencyInfoWorkItem.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using ProductConstructionService.WorkItems; 5 | 6 | namespace ProductConstructionService.DependencyFlow.WorkItems; 7 | public class BuildCoherencyInfoWorkItem : WorkItem 8 | { 9 | public required int BuildId { get; init; } 10 | } 11 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/WorkItems/DependencyFlowWorkItem.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.Serialization; 5 | using ProductConstructionService.WorkItems; 6 | 7 | #nullable disable 8 | namespace ProductConstructionService.DependencyFlow.WorkItems; 9 | 10 | [DataContract] 11 | public abstract class DependencyFlowWorkItem : WorkItem 12 | { 13 | [DataMember] 14 | public required string UpdaterId { get; init; } 15 | } 16 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.DependencyFlow/WorkItems/PullRequestCheck.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.Serialization; 5 | 6 | #nullable disable 7 | namespace ProductConstructionService.DependencyFlow.WorkItems; 8 | 9 | [DataContract] 10 | public class PullRequestCheck : DependencyFlowWorkItem 11 | { 12 | [DataMember] 13 | public required string Url { get; set; } 14 | [DataMember] 15 | public required bool IsCodeFlow { get; set; } 16 | } 17 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.FeedCleaner/FeedCleanerOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.FeedCleaner; 5 | 6 | public class FeedCleanerOptions 7 | { 8 | public required bool Enabled { get; set; } 9 | 10 | public required List AzdoAccounts { get; set; } 11 | } 12 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.FeedCleaner/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "BuildAssetRegistrySqlConnectionString": "Data Source=localhost\\SQLEXPRESS;Initial Catalog=BuildAssetRegistry;Integrated Security=true", 3 | "AzureDevOps": { 4 | "dnceng": { 5 | "UseLocalCredentials": true 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.FeedCleaner/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Azure.Core": "Warning", 6 | "Azure.Identity": "Warning" 7 | } 8 | }, 9 | "FeedCleaner": { 10 | "Enabled": false 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.SubscriptionTriggerer/appsettings.Development.json: -------------------------------------------------------------------------------- 1 | { 2 | "BuildAssetRegistrySqlConnectionString": "Data Source=localhost\\SQLEXPRESS;Initial Catalog=BuildAssetRegistry;Integrated Security=true", 3 | // Start the azurite container using: docker run -p 10001:10001 mcr.microsoft.com/azure-storage/azurite 4 | "ConnectionStrings": { 5 | "queues": "UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://127.0.0.1:10001" 6 | }, 7 | "Kusto": { 8 | "Database": "engineeringdata", 9 | "KustoClusterUri": "https://engdata.westus2.kusto.windows.net", 10 | "UseAzCliAuthentication": true 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.SubscriptionTriggerer/appsettings.json: -------------------------------------------------------------------------------- 1 | { 2 | "Logging": { 3 | "LogLevel": { 4 | "Default": "Information", 5 | "Azure.Core": "Warning", 6 | "Azure.Identity": "Warning" 7 | } 8 | }, 9 | "DefaultWorkItemQueueName": "pcs-workitems", 10 | "CodeflowWorkItemQueueName": "pcs-codeflow-workitems" 11 | } 12 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.WorkItems/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System.Runtime.CompilerServices; 5 | 6 | [assembly: InternalsVisibleTo("ProductConstructionService.WorkItem.Tests")] 7 | [assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")] 8 | -------------------------------------------------------------------------------- /src/ProductConstructionService/ProductConstructionService.WorkItems/WorkItemConsumerOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.WorkItems; 5 | 6 | public class WorkItemConsumerOptions 7 | { 8 | public const string ConfigurationKey = "WorkItemConsumerOptions"; 9 | 10 | public required TimeSpan QueuePollTimeout { get; init; } 11 | public required int MaxWorkItemRetries { get; init; } 12 | public required TimeSpan QueueMessageInvisibilityTime { get; init; } 13 | } 14 | -------------------------------------------------------------------------------- /test/Directory.Build.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | false 6 | false 7 | enable 8 | enable 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/Maestro.Data.Tests/Maestro.Data.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | disable 5 | disable 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/Operations/GetSubscriptionsOperationTests.GetSubscriptionsOperationTests_ExecuteAsync_returns_text.verified.txt: -------------------------------------------------------------------------------- 1 | source (name) ==> 'target' ('test') 2 | - Id: 00000000-0000-0000-0000-000000000000 3 | - Update Frequency: EveryDay 4 | - Enabled: True 5 | - Batchable: False 6 | - PR Failure Notification tags: 7 | - Source-enabled: False 8 | - Merge Policies: [] 9 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/TestHelpers.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using System; 5 | 6 | namespace Microsoft.DotNet.Darc.Tests; 7 | 8 | internal static class TestHelpers 9 | { 10 | internal static string NormalizeLineEndings(string text) 11 | { 12 | return text.Replace("\r\n", "\n").Replace("\r", "\n").Replace("\n", Environment.NewLine); 13 | } 14 | } 15 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency1/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency1/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency1/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency1/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | 11 | https://github.com/dotnet/arcade 12 | 123 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency1/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency1/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "msbuild-sdks": { 3 | "Microsoft.DotNet.Arcade.Sdk": "1.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency2/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency2/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency2/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "msbuild-sdks": { 3 | "Microsoft.DotNet.Arcade.Sdk": "1.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency2/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | 11 | https://github.com/dotnet/arcade 12 | 123 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency2/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddArcadeDependency2/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "msbuild-sdks": { 3 | "Microsoft.DotNet.Arcade.Sdk": "2.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency1/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency1/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency1/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency1/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 12345 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency1/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency1/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency2/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency2/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency2/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency2/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 12345 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency2/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency2/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency4/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency4/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency4/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency4/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 1.2.4 7 | 1.2.4 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency4/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency5/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency5/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency5/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency5/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://foo.com/bop/bop 10 | 123 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency5/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency5/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency6/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency6/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency6/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency6/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 12345 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency6/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/AddProductDependency6/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/AspNetCore-Tooling/5e05f5ff63eb6ade6621c915a36573a763ea2791/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | e7e2a81eefde4d3973a579458079e6da27ed0018 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/AspNetCore-Tooling/88edd69c1979129bc25a883f419da7a0cb936bab/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | 4de204b5decdcee471d186e2290a09e35c5c3996 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/cliCommandLineParser/d8f545b1995fb62fd5c64f794491afbfcf6a84ca/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | af8ab7d7ca13d5f129c31cfa7aeda19f6d168e6e 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/coreclr/35c8c4e01066e50756c04893e535777b50e6f0e0/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | 96c87ddd97d9c562ef77f1e4606a0dbb000ab644 8 | 9 | 10 | arcade 11 | 96c87ddd97d9c562ef77f1e4606a0dbb000ab644 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/coreclr/401e931714e9b0890aaaa047710d0eb582bb8722/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | bed438c56afcd799b4de747291cf68815ae2f53b 8 | 9 | 10 | arcade 11 | bed438c56afcd799b4de747291cf68815ae2f53b 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/coreclr/635a609eba8db8082a4e1245ce1291f9bbe9835c/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | bed438c56afcd799b4de747291cf68815ae2f53b 8 | 9 | 10 | arcade 11 | bed438c56afcd799b4de747291cf68815ae2f53b 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/coreclr/80720a220c340e99aa88d04ebae8118eb4fc198b/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | 289a8e607ef2a7358c351ddf3d08056186d4e554 8 | 9 | 10 | arcade 11 | 289a8e607ef2a7358c351ddf3d08056186d4e554 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/coreclr/b2c6dd4eb427caf7cb852998076b0b1543447a28/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | bed438c56afcd799b4de747291cf68815ae2f53b 8 | 9 | 10 | arcade 11 | bed438c56afcd799b4de747291cf68815ae2f53b 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/coreclr/b9e88989458e24fa9764e045917b141e3338eae7/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | bed438c56afcd799b4de747291cf68815ae2f53b 8 | 9 | 10 | arcade 11 | bed438c56afcd799b4de747291cf68815ae2f53b 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/msbuild/966cdf2ac602e359530ad63f608e6cbba9c9fd0f/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | arcade 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/msbuild/b2db71bebaae4f54f7236ca303e2b0a14aca1a0d/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | arcade 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/roslyn/359844cc9c32a5b4c1ba72a6e73a32989bd5daeb/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | arcade 8 | 8694eb83a2c13057a8da3c80f829363de4dc8c9c 9 | 10 | 11 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/sdk/010b0fb362878d3eb8dfff7f521fc0db6b7e3a50/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | arcade 8 | af8ab7d7ca13d5f129c31cfa7aeda19f6d168e6e 9 | 10 | 11 | arcade 12 | af8ab7d7ca13d5f129c31cfa7aeda19f6d168e6e 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/sdk/674b4ae3250f294d3c922a425b44a1731dcff207/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | arcade 6 | 35ce15432d5ae2faa563ad0ba99aff49f8e28130 7 | 8 | 9 | 10 | 11 | arcade 12 | 35ce15432d5ae2faa563ad0ba99aff49f8e28130 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/sdk/6c3324d3624a10c9d1dfcfba188c974063e86984/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | arcade 6 | 044fa99d22e576fcfaf63f09ee9bba821855dddb 7 | 8 | 9 | 10 | 11 | arcade 12 | 044fa99d22e576fcfaf63f09ee9bba821855dddb 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/templating/ac8f12b90238542dfd2ea596178ae24ea20a0f55/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | f3336ecb1009ee5c6f68142c0d05a68bc5609a60 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/DependencyGraph/input/websdk/c92b1354da7d7290ec63984cf445a4d2cc9667e8/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | arcade 7 | f3336ecb1009ee5c6f68142c0d05a68bc5609a60 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions1/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions1/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions1/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions1/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions1/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions1/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions1/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions2/input/NuGet.Config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions2/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions2/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 7 | 8 | 9 | Foo.Bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions2/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "tools": { 3 | "dotnet": "2.1.400-preview-009088" 4 | }, 5 | "msbuild-sdks": { 6 | "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.18525.8" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions2/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions2/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 7 | 8 | 9 | Foo.Bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/EmptyVersions2/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "tools": { 3 | "dotnet": "2.1.400-preview-009088" 4 | }, 5 | "msbuild-sdks": { 6 | "Microsoft.DotNet.Arcade.Sdk": "1.0.0-beta.18525.8" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats1/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats1/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats1/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats1/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://foo.com/foo/bar 10 | 12345 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats1/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats2/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats2/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats2/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 7 | 8 | 9 | Existing.Dependency 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats2/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats2/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 4 7 | 8 | 9 | https://foo.com/foo/bar 10 | 12345 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats2/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 4.5.6 6 | 4.5.6 7 | 8 | 9 | 10 | Existing.Dependency 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/SupportAlternateVersionPropertyFormats2/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency1/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency1/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://github.com/dotnet/arcade 10 | abc 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency1/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency1/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "msbuild-sdks": { 3 | "Microsoft.DotNet.Arcade.Sdk": "1.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency1/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://github.com/dotnet/arcade 10 | 456 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency1/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency1/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "msbuild-sdks": { 3 | "Microsoft.DotNet.Arcade.Sdk": "2.0" 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency2/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency2/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://github.com/dotnet/arcade 10 | abc 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency2/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency2/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "3.1.200" 4 | }, 5 | "tools": { 6 | "dotnet": "3.1.200", 7 | "runtimes": { 8 | "dotnet": [ 9 | "2.1.11" 10 | ] 11 | } 12 | }, 13 | "msbuild-sdks": { 14 | "Microsoft.DotNet.Arcade.Sdk": "1.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency2/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://github.com/dotnet/arcade 10 | 456 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency2/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependency2/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "3.1.200" 4 | }, 5 | "tools": { 6 | "dotnet": "3.1.200", 7 | "runtimes": { 8 | "dotnet": [ 9 | "2.1.11" 10 | ] 11 | } 12 | }, 13 | "msbuild-sdks": { 14 | "Microsoft.DotNet.Arcade.Sdk": "2.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependencyWithSdkUpdate/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependencyWithSdkUpdate/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://github.com/dotnet/arcade 10 | abc 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependencyWithSdkUpdate/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependencyWithSdkUpdate/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "3.1.200" 4 | }, 5 | "tools": { 6 | "dotnet": "3.1.200", 7 | "runtimes": { 8 | "dotnet": [ 9 | "2.1.11" 10 | ] 11 | } 12 | }, 13 | "msbuild-sdks": { 14 | "Microsoft.DotNet.Arcade.Sdk": "5.0.0-beta.20224.11" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependencyWithSdkUpdate/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://github.com/dotnet/arcade 10 | 456 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependencyWithSdkUpdate/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 0.0.0 6 | 7 | 8 | 9 | Foo.bar 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateArcadeDependencyWithSdkUpdate/output/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "10.1.1-preview-1234" 4 | }, 5 | "tools": { 6 | "dotnet": "10.1.1-preview-1234", 7 | "runtimes": { 8 | "dotnet": [ 9 | "2.1.11" 10 | ] 11 | } 12 | }, 13 | "msbuild-sdks": { 14 | "Microsoft.DotNet.Arcade.Sdk": "2.0" 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies1/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies1/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies1/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 1.2.4 7 | 1.2.4 8 | 9 | 10 | 11 | Foo.Bar 12 | Foo.Bar2 13 | Foo.Bar3 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies1/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies1/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 4 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies1/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 1.2.4 7 | 1.2.4 8 | 9 | 10 | 11 | Foo.Bar 12 | Foo.Bar2 13 | Foo.Bar3 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies1/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies3/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies3/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies3/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies3/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 4 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies3/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies4/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies4/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies4/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies4/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 4 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies4/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies5/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies5/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | https://foo.com/foo/baz 10 | szdfsdfsdf 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies5/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies5/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 4 7 | 8 | 9 | https://foo.com/foo/baz 10 | szdfsdfsdf 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateDependencies5/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/input/.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "Existing.Dependency": { 6 | "version": "1.2.3", 7 | "commands": [ 8 | "pizza", 9 | "banana" 10 | ] 11 | }, 12 | "Another.DependencyToNotUpdate": { 13 | "version": "0.1.2", 14 | "commands": [ 15 | "frenchfries", 16 | "milkshake" 17 | ] 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 1.2.4 7 | 1.2.4 8 | 9 | 10 | 11 | Foo.Bar 12 | Foo.Bar2 13 | Foo.Bar3 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/output/.config/dotnet-tools.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 1, 3 | "isRoot": true, 4 | "tools": { 5 | "Existing.Dependency": { 6 | "version": "4.5.6", 7 | "commands": [ 8 | "pizza", 9 | "banana" 10 | ] 11 | }, 12 | "Another.DependencyToNotUpdate": { 13 | "version": "0.1.2", 14 | "commands": [ 15 | "frenchfries", 16 | "milkshake" 17 | ] 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 4 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 1.2.4 7 | 1.2.4 8 | 9 | 10 | 11 | Foo.Bar 12 | Foo.Bar2 13 | Foo.Bar3 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonFile1/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/input/.config/pizza-bananas.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/input/NuGet.config: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/input/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/baz 6 | szdfsdfsdf 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/input/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 1.2.4 7 | 1.2.4 8 | 9 | 10 | 11 | Foo.Bar 12 | Foo.Bar2 13 | Foo.Bar3 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/input/global.json.test: -------------------------------------------------------------------------------- 1 | { 2 | } 3 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/output/.config/pizza-bananas.json: -------------------------------------------------------------------------------- 1 | { 2 | 3 | } -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/output/eng/Version.Details.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | https://foo.com/foo/bar 6 | 4 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/output/eng/Versions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 1.2.3 6 | 1.2.4 7 | 1.2.4 8 | 9 | 10 | 11 | Foo.Bar 12 | Foo.Bar2 13 | Foo.Bar3 14 | 15 | 16 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/UpdateToolsJsonNotPresent/output/global.json.test: -------------------------------------------------------------------------------- 1 | {} 2 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/VersionPropsFiles/AlternateNamesDuplicated.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1.2.3 4 | 1.2.3 5 | 1.2.4 6 | 1.2.4 7 | 1.2.3 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/VersionPropsFiles/DuplicatedSameConditions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1.2.3 4 | 1.2.3 5 | 1.2.4 6 | 1.2.4 7 | 1.2.3 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/VersionPropsFiles/NoDuplicatedDifferentConditions.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1.2.3 4 | 1.2.3 5 | 1.2.4 6 | 1.2.4 7 | 1.2.3 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/VersionPropsFiles/NothingDuplicated.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1.2.3 4 | 1.2.4 5 | 1.2.4 6 | 1.2.3 7 | 8 | 9 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.Tests/inputs/VersionPropsFiles/SimpleDuplicated.props: -------------------------------------------------------------------------------- 1 | 2 | 3 | 1.2.3 4 | 1.2.3 5 | 1.2.4 6 | 1.2.4 7 | 1.2.3 8 | 9 | 10 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/add-file.patch: -------------------------------------------------------------------------------- 1 | diff --git a/new-file.txt b/new-file.txt 2 | new file mode 100644 3 | index 0000000..1271944 4 | --- /dev/null 5 | +++ b/new-file.txt 6 | @@ -0,0 +1 @@ 7 | +new file 8 | \ No newline at end of file 9 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/add-submodule-file.patch: -------------------------------------------------------------------------------- 1 | diff --git a/submodules/submodule1/foo/patched-submodule-file.txt b/submodules/submodule1/foo/patched-submodule-file.txt 2 | new file mode 100644 3 | index 0000000..1271944 4 | --- /dev/null 5 | +++ b/submodules/submodule1/foo/patched-submodule-file.txt 6 | @@ -0,0 +1 @@ 7 | +new file 8 | \ No newline at end of file 9 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/changed-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git a/product-repo1-file.txt b/product-repo1-file.txt 2 | index 2ad314b..bc0b4f5 100644 3 | --- a/product-repo1-file.txt 4 | +++ b/product-repo1-file.txt 5 | @@ -1,5 +1,5 @@ 6 | File in the test repo 7 | patches will change the next lines 8 | AAA 9 | -BBB 10 | +DDD 11 | end of changes 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/changed-test-repo-file.txt: -------------------------------------------------------------------------------- 1 | File in the test repo 2 | patches will change the next lines 3 | CCC 4 | BBB 5 | end of changes 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/example.patch: -------------------------------------------------------------------------------- 1 | diff --git a/product-repo1-file.txt b/product-repo1-file.txt 2 | index 2ad314b..bc0b4f5 100644 3 | --- a/product-repo1-file.txt 4 | +++ b/product-repo1-file.txt 5 | @@ -1,5 +1,5 @@ 6 | File in the test repo 7 | patches will change the next lines 8 | AAA 9 | -BBB 10 | +CCC 11 | end of changes 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/new-patch.patch: -------------------------------------------------------------------------------- 1 | diff --git a/product-repo1-file.txt b/product-repo1-file.txt 2 | index 2ad314b..d1402a5 100644 3 | --- a/product-repo1-file.txt 4 | +++ b/product-repo1-file.txt 5 | @@ -1,5 +1,5 @@ 6 | File in the test repo 7 | patches will change the next lines 8 | -AAA 9 | +TTT 10 | BBB 11 | end of changes 12 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/product-repo1-file.txt: -------------------------------------------------------------------------------- 1 | File in the test repo 2 | patches will change the next lines 3 | AAA 4 | BBB 5 | end of changes 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/remove-file.patch: -------------------------------------------------------------------------------- 1 | diff --git a/product-repo1-file.txt b/product-repo1-file.txt 2 | deleted file mode 100644 3 | index ba59085..0000000 4 | --- a/product-repo1-file.txt 5 | +++ /dev/null 6 | @@ -1,5 +0,0 @@ 7 | -File in the test repo 8 | -patches will change the next lines 9 | -AAA 10 | -BBB 11 | -end of changes 12 | \ No newline at end of file 13 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/test-file-after-changed-patch.txt: -------------------------------------------------------------------------------- 1 | File in the test repo 2 | patches will change the next lines 3 | AAA 4 | DDD 5 | end of changes 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/test-file-after-new-patch.txt: -------------------------------------------------------------------------------- 1 | File in the test repo 2 | patches will change the next lines 3 | TTT 4 | BBB 5 | end of changes 6 | -------------------------------------------------------------------------------- /test/Microsoft.DotNet.Darc.VirtualMonoRepo.E2E.Tests/Resources/test-file-after-patch.txt: -------------------------------------------------------------------------------- 1 | File in the test repo 2 | patches will change the next lines 3 | AAA 4 | CCC 5 | end of changes 6 | -------------------------------------------------------------------------------- /test/ProductConstructionService.Api.Tests/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | global using NUnit.Framework; 5 | -------------------------------------------------------------------------------- /test/ProductConstructionService.BarViz.Tests/ProductConstructionService.BarViz.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /test/ProductConstructionService.DependencyFlow.Tests/Disposable.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.DependencyFlow.Tests; 5 | 6 | internal class Disposable : IDisposable 7 | { 8 | private Action _dispose; 9 | 10 | public static IDisposable Create(Action dispose) 11 | { 12 | return new Disposable(dispose); 13 | } 14 | 15 | private Disposable(Action dispose) 16 | { 17 | _dispose = dispose; 18 | } 19 | 20 | public void Dispose() 21 | { 22 | Interlocked.Exchange(ref _dispose!, null)?.Invoke(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/ProductConstructionService.DependencyFlow.Tests/MockReminderManagerFactory.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using ProductConstructionService.WorkItems; 5 | 6 | namespace ProductConstructionService.DependencyFlow.Tests; 7 | 8 | internal class MockReminderManagerFactory : IReminderManagerFactory 9 | { 10 | public Dictionary Reminders { get; } = []; 11 | 12 | public IReminderManager CreateReminderManager(string key) where T : WorkItem 13 | { 14 | key = $"{typeof(T).Name}_{key}"; 15 | return new MockReminderManager(key, Reminders); 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /test/ProductConstructionService.DependencyFlow.Tests/ProductConstructionService.DependencyFlow.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /test/ProductConstructionService.DependencyFlow.Tests/VerifyableMockRepository.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Moq; 5 | 6 | namespace ProductConstructionService.DependencyFlow.Tests; 7 | 8 | public class VerifyableMockRepository : MockRepository 9 | { 10 | public VerifyableMockRepository(MockBehavior defaultBehavior) : base(defaultBehavior) 11 | { 12 | } 13 | 14 | public void VerifyNoUnverifiedCalls() 15 | { 16 | foreach (dynamic mock in Mocks) 17 | { 18 | mock.VerifyNoOtherCalls(); 19 | } 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /test/ProductConstructionService.FeedCleaner.Tests/ProductConstructionService.FeedCleaner.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/ProductConstructionService.ScenarioTests.Tests/ProductConstructionService.ScenarioTests.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /test/ProductConstructionService.ScenarioTests/Disposable.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.ScenarioTests; 5 | 6 | public class Disposable : IDisposable 7 | { 8 | private Action _dispose; 9 | 10 | public static IDisposable Create(Action dispose) 11 | { 12 | return new Disposable(dispose); 13 | } 14 | 15 | private Disposable(Action dispose) 16 | { 17 | _dispose = dispose; 18 | } 19 | 20 | public void Dispose() 21 | { 22 | Interlocked.Exchange(ref _dispose, null)?.Invoke(); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /test/ProductConstructionService.SubscriptionTriggerer.Tests/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | global using NUnit.Framework; 5 | global using FluentAssertions; 6 | -------------------------------------------------------------------------------- /test/ProductConstructionService.SubscriptionTriggerer.Tests/ProductConstructionService.SubscriptionTriggerer.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/ProductConstructionService.WorkItem.Tests/GlobalUsings.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | global using NUnit.Framework; 5 | -------------------------------------------------------------------------------- /test/ProductConstructionService.WorkItem.Tests/ProductConstructionService.WorkItem.Tests.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /test/VersionPropsFormatter.Tests/VersionPropsFormatter.Tests.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | enable 5 | enable 6 | 7 | false 8 | true 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tools/ProductConstructionService.Cli/Operations/IOperation.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace ProductConstructionService.Cli.Operations; 5 | 6 | internal interface IOperation 7 | { 8 | Task RunAsync(); 9 | } 10 | -------------------------------------------------------------------------------- /tools/ProductConstructionService.Cli/Options/GetPCSStatusOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using ProductConstructionService.Cli.Operations; 7 | 8 | namespace ProductConstructionService.Cli.Options; 9 | 10 | [Verb("get-status", HelpText = "Get PCS status")] 11 | internal class GetPcsStatusOptions : PcsStatusOptions 12 | { 13 | public override IOperation GetOperation(IServiceProvider sp) => ActivatorUtilities.CreateInstance(sp); 14 | } 15 | -------------------------------------------------------------------------------- /tools/ProductConstructionService.Cli/Options/StartPCSOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using ProductConstructionService.Cli.Operations; 7 | 8 | namespace ProductConstructionService.Cli.Options; 9 | 10 | [Verb("start", HelpText = "Start PCS")] 11 | internal class StartPcsOptions : PcsStatusOptions 12 | { 13 | public override IOperation GetOperation(IServiceProvider sp) => ActivatorUtilities.CreateInstance(sp); 14 | } 15 | -------------------------------------------------------------------------------- /tools/ProductConstructionService.Cli/Options/StopPCSOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using ProductConstructionService.Cli.Operations; 7 | 8 | namespace ProductConstructionService.Cli.Options; 9 | 10 | [Verb("stop", HelpText = "Stop PCS")] 11 | internal class StopPcsOptions : PcsStatusOptions 12 | { 13 | public override IOperation GetOperation(IServiceProvider sp) => ActivatorUtilities.CreateInstance(sp); 14 | } 15 | -------------------------------------------------------------------------------- /tools/ProductConstructionService.ReproTool/Options/ForwardFlowTestOptions.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using CommandLine; 5 | using Microsoft.Extensions.DependencyInjection; 6 | using ProductConstructionService.ReproTool.Operations; 7 | 8 | namespace ProductConstructionService.ReproTool.Options; 9 | [Verb("forward-flow-test", HelpText = "Test full flat flow in the maestro-auth-test org")] 10 | internal class ForwardFlowTestOptions : Options 11 | { 12 | internal override Operation GetOperation(IServiceProvider sp) 13 | => ActivatorUtilities.CreateInstance(sp); 14 | } 15 | -------------------------------------------------------------------------------- /tools/Tools.Common/Constants.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | namespace Tools.Common; 5 | 6 | public static class Constants 7 | { 8 | public const string VmrUri = "https://github.com/dotnet/dotnet"; 9 | public const string ArcadeRepoUri = "https://github.com/dotnet/arcade"; 10 | public const string SdkRepoUri = "https://github.com/dotnet/sdk"; 11 | public const string LatestArcadeChannel = ".NET Eng - Latest"; 12 | public const string VmrChannelName = ".NET 10 UB"; 13 | public const string SdkPatchLocation = "src/SourceBuild/patches"; 14 | } 15 | -------------------------------------------------------------------------------- /tools/Tools.Common/Tools.Common.csproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | enable 5 | enable 6 | false 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /tools/VersionPropsFormatter/Program.cs: -------------------------------------------------------------------------------- 1 | // Licensed to the .NET Foundation under one or more agreements. 2 | // The .NET Foundation licenses this file to you under the MIT license. 3 | 4 | using Microsoft.Extensions.DependencyInjection; 5 | 6 | IServiceCollection serviceCollection = new ServiceCollection(); 7 | 8 | VersionPropsFormatter.VersionPropsFormatter.RegisterServices(serviceCollection); 9 | 10 | using var serviceProvider = serviceCollection.BuildServiceProvider(); 11 | 12 | await ActivatorUtilities.CreateInstance(serviceProvider).RunAsync(Directory.GetCurrentDirectory()); 13 | 14 | --------------------------------------------------------------------------------