1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.eclipse.aether.generator.sigstore;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.util.Collection;
26
27 import org.eclipse.aether.RepositorySystemSession;
28 import org.eclipse.aether.artifact.Artifact;
29 import org.eclipse.aether.deployment.DeployRequest;
30 import org.eclipse.aether.installation.InstallRequest;
31 import org.eclipse.aether.spi.artifact.ArtifactPredicateFactory;
32 import org.eclipse.aether.spi.artifact.generator.ArtifactGenerator;
33 import org.eclipse.aether.spi.artifact.generator.ArtifactGeneratorFactory;
34 import org.eclipse.aether.spi.io.PathProcessor;
35 import org.eclipse.aether.util.ConfigUtils;
36
37 @Singleton
38 @Named(SigstoreSignatureArtifactGeneratorFactory.NAME)
39 public final class SigstoreSignatureArtifactGeneratorFactory implements ArtifactGeneratorFactory {
40
41 public static final String NAME = "sigstore";
42
43 private final ArtifactPredicateFactory artifactPredicateFactory;
44 private final PathProcessor pathProcessor;
45
46 @Inject
47 public SigstoreSignatureArtifactGeneratorFactory(
48 ArtifactPredicateFactory artifactPredicateFactory, PathProcessor pathProcessor) {
49 this.artifactPredicateFactory = artifactPredicateFactory;
50 this.pathProcessor = pathProcessor;
51 }
52
53 @Override
54 public ArtifactGenerator newInstance(RepositorySystemSession session, InstallRequest request) {
55 return null;
56 }
57
58 @Override
59 public ArtifactGenerator newInstance(RepositorySystemSession session, DeployRequest request) {
60 return newInstance(session, request.getArtifacts());
61 }
62
63 private ArtifactGenerator newInstance(RepositorySystemSession session, Collection<Artifact> artifacts) {
64 final boolean enabled = ConfigUtils.getBoolean(
65 session, SigstoreConfigurationKeys.DEFAULT_ENABLED, SigstoreConfigurationKeys.CONFIG_PROP_ENABLED);
66 if (!enabled) {
67 return null;
68 }
69 final boolean publicStaging = ConfigUtils.getBoolean(
70 session,
71 SigstoreConfigurationKeys.DEFAULT_PUBLIC_STAGING,
72 SigstoreConfigurationKeys.CONFIG_PROP_PUBLIC_STAGING);
73
74 return new SigstoreSignatureArtifactGenerator(
75 pathProcessor, artifacts, artifactPredicateFactory.newInstance(session)::hasChecksums, publicStaging);
76 }
77
78 @Override
79 public float getPriority() {
80 return 150;
81 }
82 }