-
Notifications
You must be signed in to change notification settings - Fork 727
/
ArtifactRegistry.cs
74 lines (48 loc) · 3.83 KB
/
ArtifactRegistry.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.Reflection;
using Bicep.Core.Diagnostics;
using Bicep.Core.Semantics;
using Bicep.Core.SourceCode;
using Bicep.Core.Utils;
namespace Bicep.Core.Registry
{
public abstract class ArtifactRegistry<T> : IArtifactRegistry where T : ArtifactReference
{
public abstract string Scheme { get; }
public RegistryCapabilities GetCapabilities(ArtifactReference reference) => this.GetCapabilities(ConvertReference(reference));
public abstract bool IsArtifactRestoreRequired(T reference);
public abstract Task<bool> CheckArtifactExists(T reference);
public abstract Task PublishModule(T reference, BinaryData compiled, BinaryData? bicepSources, string? documentationUri, string? description);
public abstract Task PublishProvider(T reference, BinaryData typesTgz);
public abstract Task<IDictionary<ArtifactReference, DiagnosticBuilder.ErrorBuilderDelegate>> RestoreArtifacts(IEnumerable<T> references);
public abstract Task<IDictionary<ArtifactReference, DiagnosticBuilder.ErrorBuilderDelegate>> InvalidateArtifactsCache(IEnumerable<T> references);
public abstract ResultWithDiagnostic<Uri> TryGetLocalArtifactEntryPointUri(T reference);
public abstract ResultWithDiagnostic<ArtifactReference> TryParseArtifactReference(ArtifactType artifactType, string? aliasName, string reference);
public abstract string? TryGetDocumentationUri(T reference);
public abstract Task<string?> TryGetModuleDescription(ModuleSymbol module, T reference);
public abstract ResultWithException<SourceArchive> TryGetSource(T reference);
public bool IsArtifactRestoreRequired(ArtifactReference reference) => this.IsArtifactRestoreRequired(ConvertReference(reference));
public Task<bool> CheckArtifactExists(ArtifactReference reference) => this.CheckArtifactExists(ConvertReference(reference));
public Task PublishModule(ArtifactReference artifactReference, BinaryData compiled, BinaryData? bicepSources, string? documentationUri, string? description)
=> this.PublishModule(ConvertReference(artifactReference), compiled, bicepSources, documentationUri, description);
public Task PublishProvider(ArtifactReference reference, BinaryData typesTgz)
=> this.PublishProvider(ConvertReference(reference), typesTgz);
public Task<IDictionary<ArtifactReference, DiagnosticBuilder.ErrorBuilderDelegate>> RestoreArtifacts(IEnumerable<ArtifactReference> references) =>
this.RestoreArtifacts(references.Select(ConvertReference));
public Task<IDictionary<ArtifactReference, DiagnosticBuilder.ErrorBuilderDelegate>> InvalidateArtifactsCache(IEnumerable<ArtifactReference> references) =>
this.InvalidateArtifactsCache(references.Select(ConvertReference));
public ResultWithDiagnostic<Uri> TryGetLocalArtifactEntryPointUri(ArtifactReference reference) =>
this.TryGetLocalArtifactEntryPointUri(ConvertReference(reference));
public string? GetDocumentationUri(ArtifactReference reference) => this.TryGetDocumentationUri(ConvertReference(reference));
public async Task<string?> TryGetModuleDescription(ModuleSymbol module, ArtifactReference reference) =>
await this.TryGetModuleDescription(module, ConvertReference(reference));
public ResultWithException<SourceArchive> TryGetSource(ArtifactReference reference) => this.TryGetSource(ConvertReference(reference));
public abstract RegistryCapabilities GetCapabilities(T reference);
private static T ConvertReference(ArtifactReference reference) => reference switch
{
T typed => typed,
_ => throw new ArgumentException($"Reference type '{reference.GetType().Name}' is not supported."),
};
}
}