package com.eslint.utils; import com.intellij.execution.configurations.GeneralCommandLine; import com.intellij.openapi.util.text.StringUtil; import com.wix.nodejs.CLI; import com.wix.nodejs.NodeRunner; import org.jetbrains.annotations.NotNull; final class CliBuilder { public static final String V = "-v"; public static final String RULESDIR = "--rulesdir"; public static final String EXT = "--ext"; public static final String C = "-c"; public static final String FIX = "--fix"; public static final String FORMAT = "--format"; public static final String JSON = "json"; private CliBuilder() { } @NotNull static GeneralCommandLine create(@NotNull ESLintRunner.ESLintSettings settings) { return NodeRunner.createCommandLine(settings.cwd, settings.node, settings.eslintExecutablePath); } @NotNull static GeneralCommandLine createLint(@NotNull ESLintRunner.ESLintSettings settings) { GeneralCommandLine commandLine = create(settings); // TODO validate arguments (file exist etc) commandLine.addParameter(settings.targetFile); CLI.addParamIfNotEmpty(commandLine, C, settings.config); if (StringUtil.isNotEmpty(settings.rules)) { CLI.addParam(commandLine, RULESDIR, "['" + settings.rules + "']"); } if (StringUtil.isNotEmpty(settings.ext)) { CLI.addParam(commandLine, EXT, settings.ext); } CLI.addParam(commandLine, FORMAT, JSON); return commandLine; } @NotNull static GeneralCommandLine createFix(@NotNull ESLintRunner.ESLintSettings settings) { GeneralCommandLine commandLine = createLint(settings); commandLine.addParameter(FIX); return commandLine; } @NotNull static GeneralCommandLine createVersion(@NotNull ESLintRunner.ESLintSettings settings) { GeneralCommandLine commandLine = create(settings); commandLine.addParameter(V); return commandLine; } }