public Integer call()

in maven-resolver-tools/src/main/java/org/eclipse/aether/tools/CollectConfiguration.java [100:150]


    public Integer call() {
        try {
            rootDirectory = rootDirectory.toAbsolutePath().normalize();
            outputDirectory = outputDirectory.toAbsolutePath().normalize();

            ArrayList<Map<String, String>> discoveredKeys = new ArrayList<>();
            try (Stream<Path> stream = Files.walk(rootDirectory)) {
                if (mode == Mode.maven) {
                    System.out.println("Processing Maven sources from " + rootDirectory);
                    stream.map(Path::toAbsolutePath)
                            .filter(p -> p.getFileName().toString().endsWith(".class"))
                            .filter(p -> p.toString().contains("/target/classes/"))
                            .forEach(p -> {
                                processMavenClass(p, discoveredKeys);
                            });
                } else if (mode == Mode.resolver) {
                    System.out.println("Processing Resolver sources from " + rootDirectory);
                    stream.map(Path::toAbsolutePath)
                            .filter(p -> p.getFileName().toString().endsWith(".java"))
                            .filter(p -> p.toString().contains("/src/main/java/"))
                            .filter(p -> !p.toString().endsWith("/module-info.java"))
                            .forEach(p -> processResolverClass(p, discoveredKeys));
                } else {
                    throw new IllegalStateException("Unsupported mode " + mode);
                }
            }

            discoveredKeys.sort(Comparator.comparing(e -> e.get(KEY)));

            Properties properties = new Properties();
            properties.setProperty("resource.loaders", "classpath");
            properties.setProperty("resource.loader.classpath.class", ClasspathResourceLoader.class.getName());
            VelocityEngine velocityEngine = new VelocityEngine();
            velocityEngine.init(properties);

            VelocityContext context = new VelocityContext();
            context.put("keys", discoveredKeys);

            for (String template : templates) {
                Path output = outputDirectory.resolve(template);
                System.out.println("Writing out to " + output);
                try (Writer fileWriter = new CachingWriter(output, StandardCharsets.UTF_8)) {
                    velocityEngine.getTemplate(template + ".vm").merge(context, fileWriter);
                }
            }
            return 0;
        } catch (Exception e) {
            e.printStackTrace(System.err);
            return 1;
        }
    }