NodeJsTask.java
- /*
- * #%L
- * wcm.io
- * %%
- * Copyright (C) 2014 wcm.io
- * %%
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * #L%
- */
- package io.wcm.maven.plugins.nodejs.mojo;
- import java.io.File;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.List;
- import org.apache.maven.plugin.MojoExecutionException;
- import org.apache.maven.plugins.annotations.Parameter;
- import io.wcm.maven.plugins.nodejs.installation.NodeInstallationInformation;
- /**
- * Wrapper around the execution of a nodejs module.
- */
- public class NodeJsTask extends Task {
- /**
- * Name of the nodejs module
- */
- @Parameter
- private String moduleName;
- /**
- * Name of the module executable
- */
- @Parameter
- private String executableName;
- /**
- * Task arguments
- */
- @Parameter
- private String[] arguments;
- @Override
- protected List<String> getCommand(NodeInstallationInformation information) throws MojoExecutionException {
- List<String> commands = new ArrayList<>();
- commands.add(information.getNodeExecutable().getAbsolutePath());
- setNodeModule(commands, information);
- if (arguments != null) {
- commands.addAll(Arrays.asList(arguments));
- }
- return commands;
- }
- private void setNodeModule(List<String> commands, NodeInstallationInformation information) throws MojoExecutionException {
- String modulePath = installModule(information);
- String moduleExecutable = getModuleExecutable(modulePath);
- commands.add(moduleExecutable);
- }
- private String installModule(NodeInstallationInformation information) throws MojoExecutionException {
- String modulePath = "";
- String localInstallationPath = workingDirectory.getAbsolutePath() + File.separator + "node_modules" + File.separator + moduleName;
- File localInstallation = new File(localInstallationPath);
- if (!localInstallation.exists()) {
- String globalInstallationPath = information.getNodeModulesRootPath() + File.separator + "node_modules" + File.separator + moduleName;
- File moduleInstallation = new File(globalInstallationPath);
- if (!moduleInstallation.exists()) {
- NpmInstallTask installTask = new NpmInstallTask();
- installTask.setLog(getLog());
- installTask.setArguments(new String[] {
- "--prefix", information.getNpmPrefixPath(), moduleName
- });
- installTask.execute(information);
- }
- modulePath = globalInstallationPath;
- }
- else {
- modulePath = localInstallationPath;
- }
- return modulePath;
- }
- private String getModuleExecutable(String modulePath) {
- String executable = executableName == null ? moduleName : executableName;
- return modulePath + File.separator + "bin" + File.separator + executable;
- }
- @Override
- protected boolean isWorkingDirectoryMandatory() {
- return true;
- }
- }