@Override
protected void invoke(Diagnostic result) throws Exception {
Collection<File> moduleRoots = findModuleRoots();
if(moduleRoots.isEmpty()) {
result.addChild(new Diagnostic(ERROR, PACKAGE, "No modules found in repository"));
return;
}
File buildDir = getBuildDir();
buildDir.mkdirs();
if(moduleRoots.size() == 1) {
MavenProject project = getProject();
File moduleRoot = moduleRoots.iterator().next();
Metadata[] resultingMetadata = new Metadata[1];
byte[][] resultingMD5 = new byte[1][];
project.getArtifact().setFile(buildForge(moduleRoot, buildDir, resultingMetadata, resultingMD5, result));
Artifact pmriArtifact = repositorySystem.createArtifact(
project.getGroupId(), project.getArtifactId(), project.getVersion(), "compile", "pmri");
PuppetModuleReleaseInfo pmri = new PuppetModuleReleaseInfo();
pmri.setMetadata(resultingMetadata[0]);
pmri.populate(moduleRoot);
File pmriFile = new File(buildDir, "release.pmri");
OutputStream out = new FileOutputStream(pmriFile);
try {
Writer writer = new BufferedWriter(new OutputStreamWriter(out, Charsets.UTF_8));
getGson().toJson(pmri, writer);
writer.flush();
}
finally {
out.close();
}
pmriArtifact.setFile(pmriFile);
pmriArtifact.setResolved(true);
project.addAttachedArtifact(pmriArtifact);
}
else {
File builtModules = new File(buildDir, "builtModules");
if(!(builtModules.mkdir() || builtModules.isDirectory())) {
result.addChild(new Diagnostic(ERROR, PACKAGE, "Unable to create directory" + builtModules.getPath()));
return;
}
for(File moduleRoot : moduleRoots)
buildForge(moduleRoot, builtModules, null, null, result);
}