/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.plugin.maven.client.command;
import org.eclipse.che.ide.CommandLine;
/**
* Model of the Maven command line.
*
* @author Artem Zatsarynnyi
*/
class MavenCommandModel {
private String workingDirectory;
private String arguments;
// Note that Closure Compiler doesn't allow to use 'arguments' as a name of a method argument.
MavenCommandModel(String workingDirectory, String args) {
this.workingDirectory = workingDirectory;
this.arguments = args;
}
/** Crates {@link MavenCommandModel} instance from the given command line. */
static MavenCommandModel fromCommandLine(String commandLine) {
final CommandLine cmd = new CommandLine(commandLine);
String workingDirectory = null;
if (cmd.hasArgument("-f")) {
workingDirectory = cmd.getArgument(cmd.indexOf("-f") + 1);
cmd.removeArgument("-f");
cmd.removeArgument(workingDirectory);
}
cmd.removeArgument("mvn");
String arguments = cmd.toString();
return new MavenCommandModel(workingDirectory, arguments);
}
String getWorkingDirectory() {
return workingDirectory;
}
void setWorkingDirectory(String workingDirectory) {
this.workingDirectory = workingDirectory;
}
String getArguments() {
return arguments;
}
/**
* Set command arguments, e.g. {@code [options] [<goal(s)>] [<phase(s)>]}.
* <p>Note that Closure Compiler doesn't allow to use 'arguments' as a name of a method argument.
*/
void setArguments(String args) {
this.arguments = args;
}
String toCommandLine() {
final StringBuilder cmd = new StringBuilder("mvn");
if (!workingDirectory.trim().isEmpty()) {
cmd.append(" -f ").append(workingDirectory.trim());
}
if (!arguments.trim().isEmpty()) {
cmd.append(' ').append(arguments.trim());
}
return cmd.toString();
}
}