22
33import com .github .jengelman .gradle .plugins .shadow .ShadowPlugin ;
44import lombok .NonNull ;
5+ import net .thebugmc .gradle .sonatypepublisher .CentralPortalExtension ;
6+ import net .thebugmc .gradle .sonatypepublisher .PublishingType ;
7+ import net .thebugmc .gradle .sonatypepublisher .SonatypeCentralPortalPublisherPlugin ;
58import org .gradle .api .Plugin ;
69import org .gradle .api .Project ;
710import org .gradle .api .artifacts .dsl .DependencyHandler ;
1013import org .gradle .api .plugins .JavaLibraryPlugin ;
1114import org .gradle .api .plugins .JavaPluginExtension ;
1215import org .gradle .api .plugins .PluginManager ;
16+ import org .gradle .api .publish .PublishingExtension ;
1317import org .gradle .api .publish .maven .plugins .MavenPublishPlugin ;
18+ import org .gradle .plugins .signing .SigningExtension ;
1419import org .gradle .plugins .signing .SigningPlugin ;
1520import studio .o7 .remora .extensions .RemoraExtension ;
1621import studio .o7 .remora .extensions .framework .FastUtilsExtension ;
1722import studio .o7 .remora .extensions .framework .FrameworkExtension ;
1823import studio .o7 .remora .extensions .framework .LombokExtension ;
24+ import studio .o7 .remora .extensions .publish .SonatypeMavenCentralExtension ;
1925
2026public class RemoraPlugin implements Plugin <Project > {
2127
@@ -33,6 +39,8 @@ public void apply(Project project) {
3339
3440 applyDependencies (logger , project , extension );
3541
42+ applyMavenPublishPluginConfiguration (logger , project , extension );
43+
3644 // todo
3745 // applyPlaceholderConfiguration(logger, project, extension);
3846 }
@@ -98,6 +106,33 @@ public static void applyDependencies(@NonNull Logger logger, @NonNull Project pr
98106 }
99107 }
100108
109+ public static void applyMavenPublishPluginConfiguration (@ NonNull Logger logger , @ NonNull Project project , RemoraExtension extension ) {
110+ SonatypeMavenCentralExtension mavenCentral = extension .getMavenCentral ();
111+ if (!mavenCentral .isEnabled ()) return ;
112+
113+ logger .info ("Applying necessary singing configuration" );
114+
115+ logger .info ("Applying necessary plugin `sonatype-central-publisher`" );
116+ project .getPlugins ().apply (SonatypeCentralPortalPublisherPlugin .class );
117+
118+ logger .info ("Configuring `centralPortal` extension" );
119+ project .getExtensions ().configure (CentralPortalExtension .class , centralPortal -> {
120+ centralPortal .getUsername ().set (System .getenv ("SONATYPE_USERNAME" ));
121+ centralPortal .getPassword ().set (System .getenv ("SONATYPE_PASSWORD" ));
122+ centralPortal .getName ().set (extension .getArtifactId ());
123+ centralPortal .getPublishingType ().set (PublishingType .USER_MANAGED );
124+ });
125+
126+ logger .info ("Configuring `signing` extension" );
127+ project .getExtensions ().configure (SigningExtension .class , signing -> {
128+ signing .useInMemoryPgpKeys (
129+ System .getenv ("GPG_KEY" ),
130+ System .getenv ("GPG_PASSPHRASE" )
131+ );
132+ signing .sign (project .getExtensions ().getByType (PublishingExtension .class ).getPublications ());
133+ });
134+ }
135+
101136 public static void applyPlaceholderConfiguration (@ NonNull Logger logger , @ NonNull Project project , @ NonNull RemoraExtension extension ) {
102137 logger .info ("Applying placeholder replacements" );
103138
0 commit comments