Skip to content

Commit

Permalink
feat(packagers): Specify additional properties in repositories
Browse files Browse the repository at this point in the history
Closes #1621
  • Loading branch information
aalmiray committed Mar 13, 2024
1 parent 8dd315d commit 67838bb
Show file tree
Hide file tree
Showing 20 changed files with 143 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,14 @@

import org.jreleaser.model.api.common.Activatable;
import org.jreleaser.model.api.common.Domain;
import org.jreleaser.model.api.common.ExtraProperties;
import org.jreleaser.model.api.common.OwnerAware;

/**
* @author Andres Almiray
* @since 0.1.0
*/
public interface PackagerRepository extends Domain, OwnerAware, Activatable {
public interface PackagerRepository extends Domain, OwnerAware, Activatable, ExtraProperties {
String getBasename();

String getCanonicalRepoName();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,8 @@ private void publishToRepository(Path prepareDirectory, TemplateContext props) t
Repository repository = context.getReleaser().maybeCreateRepository(
article.getRepository().getOwner(),
article.getRepository().getResolvedName(),
resolveGitToken(releaser));
resolveGitToken(releaser),
article.getRepository().asImmutable());

UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(
resolveGitUsername(releaser),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,20 +66,23 @@ protected void doPublishDistribution(Distribution distribution, TemplateContext
}

BaseReleaser<?, ?> releaser = context.getModel().getRelease().getReleaser();
String target = tap.getCanonicalRepoName();

try {
// get the repository
context.getLogger().debug(RB.$("repository.locate"), tap.getCanonicalRepoName());
Repository repository = context.getReleaser().maybeCreateRepository(
tap.getOwner(),
tap.getResolvedName(),
resolveGitToken(releaser));
resolveGitToken(releaser),
tap.asImmutable());

UsernamePasswordCredentialsProvider credentialsProvider = new UsernamePasswordCredentialsProvider(
resolveGitUsername(releaser),
resolveGitToken(releaser));

// clone the repository
target = repository.getHttpUrl();
context.getLogger().debug(RB.$("repository.clone"), repository.getHttpUrl());
Path directory = Files.createTempDirectory("jreleaser-" + tap.getResolvedName());

Expand Down Expand Up @@ -159,7 +162,7 @@ protected void doPublishDistribution(Distribution distribution, TemplateContext
.setForceUpdate(true)
.call();

context.getLogger().info(RB.$("repository.push"), tap.getCanonicalRepoName());
context.getLogger().info(RB.$("repository.push"), target);
// push commit
context.getLogger().debug(RB.$("repository.commit.push"));
git.push()
Expand All @@ -169,7 +172,7 @@ protected void doPublishDistribution(Distribution distribution, TemplateContext
.setPushTags()
.call();
} catch (Exception e) {
throw new PackagerProcessingException(RB.$("ERROR_unexpected_repository_update", tap.getCanonicalRepoName()), e);
throw new PackagerProcessingException(RB.$("ERROR_unexpected_repository_update", target), e);
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -206,11 +206,11 @@ protected void asMap(boolean full, Map<String, Object> props) {
}

public static final class Repository extends AbstractRepositoryTap<Repository> {
private static final long serialVersionUID = -1923514428336002946L;
private static final long serialVersionUID = -5607361534766759517L;

@JsonIgnore
private final org.jreleaser.model.api.announce.ArticleAnnouncer.Repository immutable = new org.jreleaser.model.api.announce.ArticleAnnouncer.Repository() {
private static final long serialVersionUID = 8958590109555034736L;
private static final long serialVersionUID = -5856312198018701678L;

@Override
public String getBasename() {
Expand Down Expand Up @@ -276,14 +276,29 @@ public Map<String, Object> asMap(boolean full) {
public String getOwner() {
return Repository.this.getOwner();
}

@Override
public String getPrefix() {
return Repository.this.prefix();
}

@Override
public Map<String, Object> getExtraProperties() {
return unmodifiableMap(Repository.this.getExtraProperties());
}
};

public Repository() {
super("article", "article");
}

private org.jreleaser.model.api.announce.ArticleAnnouncer.Repository asImmutable() {
public org.jreleaser.model.api.announce.ArticleAnnouncer.Repository asImmutable() {
return immutable;
}

@Override
public String prefix() {
return "repository";
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,9 @@
* @since 0.1.0
*/
public abstract class AbstractRepositoryTap<S extends AbstractRepositoryTap<S>> extends AbstractActivatable<S> implements RepositoryTap {
private static final long serialVersionUID = -5502324290729964526L;
private static final long serialVersionUID = 8737648708964053648L;

private final Map<String, Object> extraProperties = new LinkedHashMap<>();
@JsonIgnore
private final String basename;
@JsonIgnore
Expand Down Expand Up @@ -78,6 +79,7 @@ public void merge(S source) {
this.username = merge(this.username, source.getUsername());
this.token = merge(this.token, source.getToken());
this.commitMessage = merge(this.commitMessage, source.getCommitMessage());
setExtraProperties(merge(this.extraProperties, source.getExtraProperties()));
}

@Override
Expand Down Expand Up @@ -183,6 +185,22 @@ public void setCommitMessage(String commitMessage) {
this.commitMessage = commitMessage;
}

@Override
public Map<String, Object> getExtraProperties() {
return extraProperties;
}

@Override
public void setExtraProperties(Map<String, Object> extraProperties) {
this.extraProperties.clear();
this.extraProperties.putAll(extraProperties);
}

@Override
public void addExtraProperties(Map<String, Object> extraProperties) {
this.extraProperties.putAll(extraProperties);
}

@Override
public Map<String, Object> asMap(boolean full) {
Map<String, Object> map = new LinkedHashMap<>();
Expand All @@ -196,6 +214,7 @@ public Map<String, Object> asMap(boolean full) {
map.put("username", username);
map.put("token", isNotBlank(token) ? HIDE : UNSET);
map.put("commitMessage", commitMessage);
map.put("extraProperties", getExtraProperties());
return map;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -444,13 +444,13 @@ public DockerRepository getPackagerRepository() {
}

public static final class DockerRepository extends AbstractRepositoryTap<DockerRepository> implements Domain {
private static final long serialVersionUID = -3428854203388975153L;
private static final long serialVersionUID = 6677470182457638257L;

private Boolean versionedSubfolders;

@JsonIgnore
private final org.jreleaser.model.api.packagers.DockerPackager.DockerRepository immutable = new org.jreleaser.model.api.packagers.DockerPackager.DockerRepository() {
private static final long serialVersionUID = 7279929782283595739L;
private static final long serialVersionUID = 1452104357672519L;

@Override
public boolean isVersionedSubfolders() {
Expand Down Expand Up @@ -521,6 +521,16 @@ public Map<String, Object> asMap(boolean full) {
public String getOwner() {
return DockerRepository.this.getOwner();
}

@Override
public String getPrefix() {
return DockerRepository.this.prefix();
}

@Override
public Map<String, Object> getExtraProperties() {
return unmodifiableMap(DockerRepository.this.getExtraProperties());
}
};

public DockerRepository() {
Expand All @@ -537,6 +547,11 @@ public void merge(DockerRepository source) {
this.versionedSubfolders = this.merge(this.versionedSubfolders, source.versionedSubfolders);
}

@Override
public String prefix() {
return "repository";
}

public boolean isVersionedSubfolders() {
return null != versionedSubfolders && versionedSubfolders;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -470,13 +470,13 @@ public JibRepository getPackagerRepository() {
}

public static final class JibRepository extends AbstractRepositoryTap<JibRepository> implements Domain {
private static final long serialVersionUID = 897211659819449100L;
private static final long serialVersionUID = 695045361878174791L;

private Boolean versionedSubfolders;

@JsonIgnore
private final org.jreleaser.model.api.packagers.JibPackager.JibRepository immutable = new org.jreleaser.model.api.packagers.JibPackager.JibRepository() {
private static final long serialVersionUID = 1437723373911221392L;
private static final long serialVersionUID = -8630728744390799997L;

@Override
public boolean isVersionedSubfolders() {
Expand Down Expand Up @@ -547,6 +547,16 @@ public Map<String, Object> asMap(boolean full) {
public String getOwner() {
return JibRepository.this.getOwner();
}

@Override
public String getPrefix() {
return JibRepository.this.prefix();
}

@Override
public Map<String, Object> getExtraProperties() {
return unmodifiableMap(JibRepository.this.getExtraProperties());
}
};

public JibRepository() {
Expand All @@ -563,6 +573,11 @@ public void merge(JibRepository source) {
this.versionedSubfolders = this.merge(this.versionedSubfolders, source.versionedSubfolders);
}

@Override
public String prefix() {
return "repository";
}

public boolean isVersionedSubfolders() {
return null != versionedSubfolders && versionedSubfolders;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,11 +29,11 @@
* @since 0.1.0
*/
public class PackagerRepository extends AbstractRepositoryTap<PackagerRepository> {
private static final long serialVersionUID = -3486962328445966652L;
private static final long serialVersionUID = 2883013964120856725L;

@JsonIgnore
private final org.jreleaser.model.api.packagers.PackagerRepository immutable = new org.jreleaser.model.api.packagers.PackagerRepository() {
private static final long serialVersionUID = 9016477371123655393L;
private static final long serialVersionUID = -7091986811979877948L;

@Override
public String getBasename() {
Expand Down Expand Up @@ -99,6 +99,16 @@ public Map<String, Object> asMap(boolean full) {
public String getOwner() {
return PackagerRepository.this.getOwner();
}

@Override
public String getPrefix() {
return PackagerRepository.this.prefix();
}

@Override
public Map<String, Object> getExtraProperties() {
return unmodifiableMap(PackagerRepository.this.getExtraProperties());
}
};

public PackagerRepository(String basename, String tapName) {
Expand All @@ -108,4 +118,9 @@ public PackagerRepository(String basename, String tapName) {
public org.jreleaser.model.api.packagers.PackagerRepository asImmutable() {
return immutable;
}

@Override
public String prefix() {
return "repository";
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@

import org.jreleaser.model.internal.common.Activatable;
import org.jreleaser.model.internal.common.Domain;
import org.jreleaser.model.internal.common.ExtraProperties;
import org.jreleaser.model.internal.common.OwnerAware;
import org.jreleaser.mustache.TemplateContext;

/**
* @author Andres Almiray
* @since 0.1.0
*/
public interface RepositoryTap extends Domain, OwnerAware, Activatable {
public interface RepositoryTap extends Domain, OwnerAware, Activatable, ExtraProperties {
String getBasename();

String getCanonicalRepoName();
Expand Down Expand Up @@ -64,4 +65,6 @@ public interface RepositoryTap extends Domain, OwnerAware, Activatable {
String getResolvedCommitMessage(TemplateContext props);

String getResolvedTagName(TemplateContext props);

<T extends org.jreleaser.model.api.packagers.PackagerRepository> T asImmutable();
}
Original file line number Diff line number Diff line change
Expand Up @@ -330,7 +330,7 @@ public String getSignatureExtension() {
}

public static class Command extends AbstractModelObject<Command> implements Domain {
private static final long serialVersionUID = 6761158529249184059L;
private static final long serialVersionUID = -6208172775388448492L;

private final List<String> args = new ArrayList<>();

Expand Down Expand Up @@ -380,7 +380,7 @@ public Map<String, Object> asMap(boolean full) {
}
};

private org.jreleaser.model.api.signing.Signing.Command asImmutable() {
public org.jreleaser.model.api.signing.Signing.Command asImmutable() {
return immutable;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
*/
package org.jreleaser.model.spi.release;

import org.jreleaser.model.api.common.ExtraProperties;

import java.io.IOException;
import java.io.Serializable;
import java.util.List;
Expand All @@ -29,7 +31,7 @@
public interface Releaser<A extends org.jreleaser.model.api.release.Releaser> extends Serializable {
void release() throws ReleaseException;

Repository maybeCreateRepository(String owner, String repo, String password) throws IOException;
Repository maybeCreateRepository(String owner, String repo, String password, ExtraProperties extraProperties) throws IOException;

Optional<User> findUser(String email, String name);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,15 @@ package org.jreleaser.gradle.plugin.dsl.packagers
import groovy.transform.CompileStatic
import org.gradle.api.provider.Property
import org.jreleaser.gradle.plugin.dsl.common.Activatable
import org.jreleaser.gradle.plugin.dsl.common.ExtraProperties

/**
*
* @author Andres Almiray
* @since 0.1.0
*/
@CompileStatic
interface Tap extends Activatable {
interface Tap extends Activatable, ExtraProperties {
Property<String> getRepoOwner()

Property<String> getName()
Expand Down

0 comments on commit 67838bb

Please sign in to comment.