All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.harishb2k.FileEdit Maven / Gradle / Ivy

package com.harishb2k;


import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Option;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.filefilter.TrueFileFilter;

import java.io.File;
import java.io.IOException;
import java.nio.charset.Charset;
import java.util.Objects;

public class FileEdit {
    private static String dir;
    private static String pack;
    private static String groupId;
    private static String artifactId;
    private static String version;
    private static String project;

    public static void main(String[] args) {
        Options options = new Options();
        Option dir = new Option("d", "dir", true, "dir to process");
        dir.setRequired(true);
        options.addOption(dir);
        Option pack = new Option("p", "package", true, "package");
        pack.setRequired(true);
        options.addOption(pack);
        Option artifactId = new Option("a", "artifactId", true, "artifactId");
        artifactId.setRequired(true);
        options.addOption(artifactId);
        Option groupId = new Option("g", "groupId", true, "groupId");
        groupId.setRequired(true);
        options.addOption(groupId);
        Option project = new Option("pr", "project", true, "project");
        project.setRequired(true);
        options.addOption(project);
        Option version = new Option("v", "version", true, "version");
        version.setRequired(true);
        options.addOption(version);
        CommandLineParser parser = new DefaultParser();
        HelpFormatter formatter = new HelpFormatter();
        CommandLine cmd = null;
        try {
            cmd = parser.parse(options, args);
        } catch (ParseException e) {
            System.out.println(e.getMessage());
            formatter.printHelp("utility-name", options);
            System.exit(1);
        }
        FileEdit.dir = cmd.getOptionValue("d");
        FileEdit.pack = cmd.getOptionValue("p");
        FileEdit.artifactId = cmd.getOptionValue("a");
        FileEdit.groupId = cmd.getOptionValue("g");
        FileEdit.project = cmd.getOptionValue("pr");
        FileEdit.version = cmd.getOptionValue("v");


        FileEdit app = new FileEdit();
        app.iterate(FileEdit.dir, new FileProcessor() {
            @Override
            public void process(File file) {
                if (file.getName().endsWith("pom.xml")) {
                    app.processPomFile(file);
                } else {
                    app.processJavaFile(file);
                }
            }
        });
    }

    public void iterate(String dir, FileProcessor fileProcessor) {
        FileUtils.listFiles(new File(dir), TrueFileFilter.INSTANCE, TrueFileFilter.INSTANCE).forEach(file -> {
            if (!file.isFile()) return;
            String fileName = file.getName();
            if (Objects.equals("pom.xml", fileName) || fileName.endsWith(".java") || fileName.endsWith(".proto")) {
                fileProcessor.process(file);
            }
        });
    }

    private void processPomFile(File file) {
        try {
            String content = IOUtils.toString(file.toURI(), Charset.defaultCharset());
            content = content.replace("" + FileEdit.groupId + "", "${groupId}");
            content = content.replace("" + FileEdit.version + "", "${version}");
            if (content.contains("modules")) {
                content = content.replace("" + FileEdit.artifactId + "", "${artifactId}");
                content = content.replace("" + FileEdit.pack + ".app.RestApplication", "${groupId}.app.Application");
            } else {
                content = content.replace("" + FileEdit.artifactId + "", "${rootArtifactId}");
            }
            rewriteFile(file, content);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private void processJavaFile(File file) {
        try {
            String content = IOUtils.toString(file.toURI(), Charset.defaultCharset());
            content = content.replace(FileEdit.pack, "${package}");
            rewriteFile(file, content);
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    private void rewriteFile(File file, String content) throws IOException {
        FileUtils.write(file, content, Charset.defaultCharset());
    }

    interface FileProcessor {
        void process(File file);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy