package pl.touk.sputnik.connector;
import org.apache.commons.lang3.math.NumberUtils;
import org.jetbrains.annotations.NotNull;
import pl.touk.sputnik.configuration.CliOption;
import pl.touk.sputnik.configuration.Configuration;
import pl.touk.sputnik.configuration.GeneralOption;
import pl.touk.sputnik.configuration.Provider;
import static org.apache.commons.lang3.Validate.isTrue;
import static org.apache.commons.lang3.Validate.notBlank;
import static org.apache.commons.lang3.Validate.notNull;
public final class PatchsetBuilder {
private PatchsetBuilder() { }
@NotNull
public static Patchset build(Configuration configuration) {
String pullRequestId = configuration.getProperty(CliOption.PULL_REQUEST_ID);
String project = configuration.getProperty(GeneralOption.PROJECT);
String repository = configuration.getProperty(GeneralOption.REPOSITORY);
Provider provider = Provider.from(configuration.getProperty(CliOption.PROVIDER));
notBlank(pullRequestId, "You must provide non blank pull request id");
isTrue(NumberUtils.isNumber(pullRequestId), "Integer value as pull request id required");
notBlank(project, "You must provide non blank project key");
notBlank(repository, "You must provide non blank repository slug");
notNull(provider, "You must provide non blank SCM provider");
return new Patchset(Integer.parseInt(pullRequestId), String.format("%s/%s", project, repository), provider);
}
}