diff --git a/extractor/src/main/java/com/example/extractor/MainLauncher.java b/extractor/src/main/java/com/example/extractor/MainLauncher.java new file mode 100644 index 000000000..5598f9059 --- /dev/null +++ b/extractor/src/main/java/com/example/extractor/MainLauncher.java @@ -0,0 +1,78 @@ +package com.example.extractor; + +import java.nio.file.*; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import java.util.regex.Pattern; +import java.util.regex.Matcher; + +public class MainLauncher { + + public static void main(String[] args) throws Exception { + // Input and output directories + String inputDirectory = ".ci-temp/checkstyle/src/xdocs-examples/resources/com/puppycrawl/tools/checkstyle/checks/naming/abbreviationaswordinname"; + String outputDirectory = "generated/AbbreviationAsWordInName"; + + // Process files in the input directory and save results to the output directory + processFiles(inputDirectory, outputDirectory); + } + + public static void processFiles(String inputDir, String outputDir) throws Exception { + // Pattern to match files named Example#.java + Pattern pattern = Pattern.compile("Example\\d+\\.java"); + + // Collect all Example#.java files in the input directory + System.out.println("Walking through the input directory to collect Example#.java files..."); + try (Stream paths = Files.walk(Paths.get(inputDir))) { + List exampleFiles = paths + .filter(Files::isRegularFile) + .filter(path -> { + Matcher matcher = pattern.matcher(path.getFileName().toString()); + return matcher.matches(); + }) + .map(Path::toString) + .collect(Collectors.toList()); + + System.out.println("Found " + exampleFiles.size() + " Example#.java files."); + + // Determine the template file path relative to the project root + String templateFilePath = "extractor/src/main/resources/config-template-treewalker.xml"; + + // Ensure output directory exists + Path outputPath = Paths.get(outputDir).toAbsolutePath(); + if (!Files.exists(outputPath)) { + System.out.println("Output directory does not exist. Creating: " + outputPath); + Files.createDirectories(outputPath); + } else { + System.out.println("Output directory already exists: " + outputPath); + } + + // Process each file and generate corresponding config + for (String exampleFile : exampleFiles) { + System.out.println("Processing file: " + exampleFile); + String fileContent = new String(Files.readAllBytes(Paths.get(exampleFile))); + System.out.println("File content:\n" + fileContent); + + String generatedContent; + try { + System.out.println("Generating configuration for file: " + exampleFile); + generatedContent = ConfigSerializer.serializeConfigToString(exampleFile, templateFilePath); + System.out.println("Generated configuration:\n" + generatedContent); + } catch (Exception e) { + System.err.println("Failed to process file: " + exampleFile); + e.printStackTrace(); + continue; + } + + String fileName = Paths.get(exampleFile).getFileName().toString().replace(".java", "-config.xml"); + Path outputFilePath = outputPath.resolve(fileName); + System.out.println("Writing generated configuration to: " + outputFilePath); + Files.writeString(outputFilePath, generatedContent); + } + } catch (Exception e) { + System.err.println("Error walking through the input directory or processing files."); + e.printStackTrace(); + } + } +} \ No newline at end of file