package be.billington.rob; import org.apache.maven.plugin.AbstractMojo; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugins.annotations.Component; import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.slf4j.impl.StaticLoggerBinder; import org.sonatype.plexus.components.cipher.PlexusCipher; import org.sonatype.plexus.components.sec.dispatcher.SecDispatcher; import org.sonatype.plexus.components.sec.dispatcher.SecDispatcherException; import java.io.File; /** * Rob logger * */ @Mojo( name = "logs", requiresProject = false) public class RobLogsMojo extends AbstractMojo { @Parameter(property = "rob.repo", required = true) private String repository; @Parameter(property = "rob.api", required = true, defaultValue = "Bitbucket") private String api; @Parameter(property = "rob.owner", required = true, defaultValue = "afrogleap") private String owner; @Parameter(property = "rob.prefix") private String prefix; @Parameter(property = "rob.rules") private String rulesFile; @Parameter(property = "rob.from.date") private String startDateStr; @Parameter(property = "rob.to.date") private String endDateStr; @Parameter(property = "rob.branch", defaultValue = "development") private String branch; @Parameter(property = "rob.file", defaultValue = "./changelog.txt") private String filePath; @Parameter(property = "rob.key") private String key; @Parameter(property = "rob.secret") private String secret; @Parameter(property = "rob.github.token") private String token; @Parameter(property = "rob.bitbucket.username") private String username; @Parameter(property = "rob.bitbucket.password") private String password; @Parameter(property = "rob.failOnError", defaultValue = "true") private boolean failOnError = false; @Parameter(readonly = true, defaultValue = "${project.build.directory}") protected File targetDirectory; /** * @since 3.3.0 */ @Component( role = org.sonatype.plexus.components.sec.dispatcher.SecDispatcher.class, hint = "default" ) private SecDispatcher securityDispatcher; public void execute() throws MojoExecutionException { StaticLoggerBinder.getSingleton().setMavenLog(this.getLog()); getLog().info( "Robbing..." ); try { Configuration conf = new Configuration.ConfigurationBuilder(StaticLoggerBinder.getSingleton().getLoggerFactory().getLogger(""), api, repository, owner) .branch(branch).prefix(prefix).filePath(filePath).fromDate(startDateStr).toDate(endDateStr) .token(token).key(key).secret(secret).username(username).password(decrypt(password)).outputDir(targetDirectory).build(); Rob.logs(conf); } catch (Exception e) { getLog().error( "Error: " + e.getMessage(), e); } getLog().info( "Robbed." ); } protected String decrypt(String encoded) throws MojoExecutionException { try { return securityDispatcher.decrypt( encoded ); } catch ( SecDispatcherException e ) { getLog().error( "error using security dispatcher: " + e.getMessage(), e ); throw new MojoExecutionException( "error using security dispatcher: " + e.getMessage(), e ); } } }