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

net.jhorstmann.i18n.mojo.InitMojo Maven / Gradle / Ivy

package net.jhorstmann.i18n.mojo;

import java.io.File;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.codehaus.plexus.util.cli.CommandLineException;
import org.codehaus.plexus.util.cli.CommandLineUtils;
import org.codehaus.plexus.util.cli.Commandline;
import org.codehaus.plexus.util.cli.StreamConsumer;

/**
 * Invokes the msginit tool to create a new po file.
 * 
 * @author Jörn Horstmann
 * @goal init
 */
public class InitMojo extends AbstractGettextMojo {

    /**
     * The msginit command.
     * 
     * @parameter expression="${msginitCmd}" default-value="msginit"
     * @required
     */
    String msginitCmd;
    /**
     * @parameter expression="${locale}"
     * @required
     */
    String locale;

    @Override
    public void execute() throws MojoExecutionException, MojoFailureException {
        Commandline cl = new Commandline();
        cl.setExecutable(msginitCmd);
        cl.createArg().setValue("-i");
        cl.createArg().setFile(keysFile);
        cl.createArg().setValue("-l");
        cl.createArg().setValue(locale);
        cl.createArg().setValue("-o");
        File poFile = new File(poDirectory, locale + ".po");
        cl.createArg().setFile(poFile);
        cl.createArg().setValue("--no-translator");
        StreamConsumer out = new LoggerStreamConsumer(getLog(), LoggerStreamConsumer.INFO);
        StreamConsumer err = new LoggerStreamConsumer(getLog(), LoggerStreamConsumer.WARN);
        try {
            CommandLineUtils.executeCommandLine(cl, out, err);
            if (poFile.exists() && buildContext != null) {
                buildContext.refresh(poFile);
            }
        } catch (CommandLineException e) {
            throw new MojoExecutionException("Could not execute " + msginitCmd, e);
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy