package org.angularjs.cli;
import com.intellij.execution.filters.Filter;
import com.intellij.lang.javascript.boilerplate.NpmPackageProjectGenerator;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.ContentEntry;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.util.ArrayUtil;
import icons.AngularJSIcons;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
import javax.swing.*;
import java.io.File;
/**
* @author Dennis.Ushakov
*/
public class AngularCLIProjectGenerator extends NpmPackageProjectGenerator {
public static final String PACKAGE_NAME = "@angular/cli";
@Nls
@NotNull
@Override
public String getName() {
return "Angular CLI";
}
@Override
public String getDescription() {
return "The Angular CLI makes it easy to create an application that already works, right out of the box. It already follows our best practices!";
}
@Override
public Icon getIcon() {
return AngularJSIcons.Angular2;
}
@Override
protected void customizeModule(@NotNull VirtualFile baseDir, ContentEntry entry) {
if (entry != null) {
AngularJSProjectConfigurator.excludeDefault(baseDir, entry);
}
}
@Override
@NotNull
protected String[] generatorArgs(@NotNull Project project, @NotNull VirtualFile baseDir) {
return ArrayUtil.EMPTY_STRING_ARRAY;
}
@Override
@NotNull
protected String[] generatorArgs(@NotNull Project project, @NotNull VirtualFile baseDir, @NotNull Settings settings) {
return new String[]{"new", baseDir.getName(), "--dir=."};
}
@NotNull
@Override
protected Filter[] filters(@NotNull Project project, @NotNull VirtualFile baseDir) {
return new Filter[] {new AngularCLIFilter(project, baseDir.getPath())};
}
@Override
@NotNull
protected String executable(String path) {
return ng(path);
}
@NotNull
public static String ng(String path) {
return path + File.separator + "bin" + File.separator + "ng";
}
@Override
@NotNull
protected String packageName() {
return PACKAGE_NAME;
}
@Override
@NotNull
protected String presentablePackageName() {
return "Angular &CLI:";
}
}