use of org.l2x6.cq.common.CqCatalog.GavCqCatalog in project cq-maven-plugin by l2x6.
the class VersionReportMojo method execute.
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final Path localRepositoryPath = Paths.get(localRepository);
final String delim = "..";
final int delimPos = versions.indexOf(delim);
if (delimPos <= 0) {
throw new IllegalStateException("Expected versions delimited by '..': found '" + versions + "'");
}
final String baselineVersion = versions.substring(0, delimPos);
final String reportVersion = versions.substring(delimPos + delim.length());
final StringBuilder counts = new StringBuilder();
final StringBuilder details = new StringBuilder();
try (GavCqCatalog currentCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camelQuarkus, reportVersion, repositories, repoSystem, repoSession);
GavCqCatalog previousCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camelQuarkus, baselineVersion, repositories, repoSystem, repoSession)) {
CqCatalog.kinds().forEach(kind -> {
final String pluralName = CqUtils.toCapCamelCase(kind.name() + "s");
final AtomicInteger cnt = new AtomicInteger();
final String kindItem = pluralName + ":\n";
details.append(kindItem);
currentCatalog.models(kind).sorted(BaseModel.compareTitle()).forEach(currentModel -> {
if (reportVersion.equals(currentModel.getFirstVersion())) {
/* added in this version */
details.append("• ").append(currentModel.getTitle());
if (!currentModel.isNativeSupported()) {
details.append(" (JVM only)");
}
details.append('\n');
cnt.incrementAndGet();
} else {
/* added earlier */
if (currentModel.isNativeSupported()) {
/* It is native now, check whether was JVM in the previous version */
try {
BaseModel<?> previousModel = previousCatalog.load(kind, currentModel.getName());
if (previousModel != null && !previousModel.isNativeSupported()) {
details.append("• ").append(currentModel.getTitle()).append(" +native").append('\n');
}
} catch (RuntimeException e) {
if (e.getCause().getClass() == NoSuchFileException.class) {
}
}
}
}
});
if (cnt.get() == 0) {
details.delete(details.length() - kindItem.length(), details.length());
} else {
counts.append("• ").append(cnt.get()).append(" new ").append(kind.name()).append("s\n");
}
});
}
getLog().info("Counts:\n\n\n" + counts.toString() + "\n\n");
getLog().info("Report:\n\n\n" + details.toString() + "\n\n");
}
use of org.l2x6.cq.common.CqCatalog.GavCqCatalog in project cq-maven-plugin by l2x6.
the class SyncExtensionListMojo method execute.
/**
* Execute goal.
*
* @throws MojoExecutionException execution of the main class or one of the
* threads it generated failed.
* @throws MojoFailureException something bad happened...
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final Path localRepositoryPath = Paths.get(localRepository);
final String camelVersion = findCamelVersion(localRepositoryPath);
try {
final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();
final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
final List<String> SCOPES = Collections.singletonList(SheetsScopes.SPREADSHEETS);
final Comparator<ArtifactModel<?>> comparator = CqCatalog.compareArtifactId().thenComparing(BaseModel.compareTitle());
final Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT, JSON_FACTORY, SCOPES)).setApplicationName(APPLICATION_NAME).build();
try (GavCqCatalog camelCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camel, camelVersion, repositories, repoSystem, repoSession);
GavCqCatalog camelQuarkusCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camelQuarkus, camelQuarkusVersion, repositories, repoSystem, repoSession)) {
Map<Kind, Map<String, NativeSupport>> nativeSupportsMap = new HashMap<>();
CqCatalog.kinds().forEach(kind -> {
Map<String, NativeSupport> nativeSupports = new HashMap<>();
nativeSupportsMap.put(kind, nativeSupports);
getLog().info("Updating " + CqCommonUtils.humanPlural(kind));
final Set<String> allSchemes = new LinkedHashSet<>();
final Map<String, ArtifactModel<?>> camelModels = new LinkedHashMap<>();
camelCatalog.models(kind).filter(CqCatalog::isFirstScheme).sorted(comparator).forEach(m -> {
camelModels.put(m.getName(), m);
allSchemes.add(m.getName());
});
final Map<String, ArtifactModel<?>> cqModels = new LinkedHashMap<>();
camelQuarkusCatalog.models(kind).filter(CqCatalog::isFirstScheme).sorted(comparator).forEach(m -> {
cqModels.put(m.getName(), m);
allSchemes.add(m.getName());
});
/* Go through extensions available in the spreadsheet and update them */
final Sheet sheet = Sheet.read(service, googleSpreadsheetId, kind, getLog(), Column.artifactModelColumns());
for (String scheme : allSchemes) {
sheet.update(scheme, camelModels.get(scheme), cqModels.get(scheme), nativeSupportsMap);
}
sheet.update(Comparator.comparing(Record::getArtifactIdBase).thenComparing(Record::getScheme));
});
{
final Kind kind = Kind.eip;
getLog().info("Updating " + CqCommonUtils.humanPlural(kind));
final Set<String> allSchemes = new LinkedHashSet<>();
final Map<String, EipModel> camelModels = new LinkedHashMap<>();
camelCatalog.eips().sorted(BaseModel.compareTitle()).forEach(m -> {
camelModels.put(m.getName(), m);
allSchemes.add(m.getName());
});
final Map<String, EipModel> cqModels = new LinkedHashMap<>();
// camelQuarkusCatalog.eips()
// .sorted(BaseModel.compareTitle())
// .forEach(m -> {
// cqModels.put(m.getName(), m);
// allSchemes.add(m.getName());
// });
Map<String, Set<String>> occurrences = findOccurrences(allSchemes, Paths.get("."), getLog());
/* Go through extensions available in the spreadsheet and update them */
final Sheet sheet = Sheet.read(service, googleSpreadsheetId, kind, getLog(), Column.eipColumns());
for (String scheme : allSchemes) {
sheet.updateBase(scheme, camelModels.get(scheme), cqModels.get(scheme), occurrences.get(scheme), nativeSupportsMap);
}
sheet.update(Comparator.comparing(Record::getKind).thenComparing(Record::getScheme));
}
}
} catch (Exception e) {
throw new RuntimeException(e);
}
}
use of org.l2x6.cq.common.CqCatalog.GavCqCatalog in project cq-maven-plugin by l2x6.
the class ExportComponentCsvMojo method execute.
/**
* Execute goal.
*
* @throws MojoExecutionException execution of the main class or one of the
* threads it generated failed.
* @throws MojoFailureException something bad happened...
*/
@Override
public void execute() throws MojoExecutionException, MojoFailureException {
final Path localRepositoryPath = Paths.get(localRepository);
final Path outputPath = outputDir.toPath();
try (GavCqCatalog camelCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camel, camelCatalogVersion, repositories, repoSystem, repoSession);
GavCqCatalog camelQuarkusCatalog = GavCqCatalog.open(localRepositoryPath, Flavor.camelQuarkus, camelQuarkusCatalogVersion, repositories, repoSystem, repoSession)) {
CqCatalog.kinds().forEach(kind -> {
final Path outputFile = outputPath.resolve(kind.name() + "s.csv");
try (Writer out = Files.newBufferedWriter(outputFile, StandardCharsets.UTF_8)) {
out.write("Priority\tGA product target\tTP2 done\tName\tScheme\tartifactId\tKind\tDeprecated\tCQ community\tProduct\tCommunity issue\tIntegration test\tSprint\tComment\n");
camelCatalog.models(kind).filter(CqCatalog::isFirstScheme).sorted(CqCatalog.compareArtifactId().thenComparing(BaseModel.compareTitle())).forEach(model -> {
// prio
try {
// empty prio
out.write("\t");
// empty GA product target
out.write("\t");
// TP2 done
out.write("\t");
out.write(model.getTitle());
out.write('\t');
out.write(model.getName());
out.write('\t');
out.write(model.getArtifactId());
out.write('\t');
out.write(model.getKind());
out.write('\t');
out.write(String.valueOf(model.isDeprecated()));
out.write('\t');
out.write(quarkusCommunitySupport(camelQuarkusCatalog, kind, model));
out.write('\n');
} catch (IOException e) {
throw new RuntimeException("Could not write to " + outputFile, e);
}
});
} catch (IOException e) {
throw new RuntimeException("Could not write to " + outputFile, e);
}
});
}
}
Aggregations