FrontendUtils { public static String commandToString(String baseDir, List<String> command) { StringBuilder retval = new StringBuilder("\n"); StringBuilder curLine = new StringBuilder(); for (String fragment : command) { if (curLine.length() + fragment.length() > 55) { retval.append(curLine.toString()); retval.append("\\ \n"); curLine = new StringBuilder(" "); } curLine.append(fragment.replace(baseDir, ".")); curLine.append(" "); } retval.append(curLine.toString()); retval.append("\n"); return retval.toString(); } private  FrontendUtils(); static String getOsName(); static boolean isWindows(); static String streamToString(InputStream inputStream); static ProcessBuilder createProcessBuilder(List<String> command); static String getStatsContent(VaadinService service); static String getIndexHtmlContent(VaadinService service); static String getStatsHash(VaadinService service); static String getStatsAssetsByChunkName(VaadinService service); static String getProjectFrontendDir(
            DeploymentConfiguration configuration); static boolean isWebpackConfigFile(File file); static String getUnixRelativePath(Path source, Path target); static String getUnixPath(Path source); static FallbackChunk readFallbackChunk(JsonObject object); static FrontendVersion parseFrontendVersion(String versionString); static File getVaadinHomeDirectory(); static String commandToString(String baseDir, List<String> command); @SuppressWarnings("squid:S106") static void console(String format, Object message); static final String PROJECT_BASEDIR; static final String DEFAULT_NODE_DIR; static final String NODE_MODULES; static final String FRONTEND; static final String DEFAULT_FRONTEND_DIR; static final String WEBPACK_CONFIG; static final String WEBPACK_GENERATED; static final String TARGET; static final String FLOW_NPM_PACKAGE_NAME; static final String FORM_NPM_PACKAGE_NAME; static final String DEFAULT_FLOW_RESOURCES_FOLDER; @Deprecated
    static final String DEAULT_FLOW_RESOURCES_FOLDER; static final String DEFAULT_GENERATED_DIR; static final String IMPORTS_NAME; static final String IMPORTS_D_TS_NAME; static final String INDEX_HTML; static final String INDEX_TS; static final String INDEX_JS; static final String DEFAULT_CONNECT_JAVA_SOURCE_FOLDER; static final String DEFAULT_CONNECT_APPLICATION_PROPERTIES; static final String DEFAULT_CONNECT_OPENAPI_JSON_FILE; static final String DEFAULT_CONNECT_GENERATED_TS_DIR; static final String FALLBACK_IMPORTS_NAME; static final String PARAM_GENERATED_DIR; static final String PARAM_FRONTEND_DIR; static final String PARAM_IGNORE_VERSION_CHECKS; static final String WEBPACK_PREFIX_ALIAS; static final String TOKEN_FILE; static final String CHUNKS; static final String FALLBACK; static final String EXPORT_CHUNK; static final String CSS_IMPORTS; static final String JS_MODULES; static final String PARAM_TOKEN_FILE; static final String INSTALL_NODE_LOCALLY; static final String DISABLE_CHECK; static final String YELLOW; static final String RED; static final String GREEN; static final String BRIGHT_BLUE; }
@Test public void commandToString_longCommand_resultIsWrapped() { List<String> command = Arrays.asList("./node/node", "./node_modules/webpack-dev-server/bin/webpack-dev-server.js", "--config", "./webpack.config.js", "--port 57799", "--watchDogPort=57798", "-d", "--inline=false"); String wrappedCommand = FrontendUtils.commandToString(".", command); Assert.assertEquals("\n" + "./node/node \\ \n" + " ./node_modules/webpack-dev-server/bin/webpack-dev-server.js \\ \n" + " --config ./webpack.config.js --port 57799 \\ \n" + " --watchDogPort=57798 -d --inline=false \n", wrappedCommand); }
@Test public void commandToString_commandContainsBaseDir_baseDirIsReplaced() { List<String> command = Arrays.asList("./node/node", "/somewhere/not/disclosable/node_modules/webpack-dev-server/bin/webpack-dev-server.js"); String wrappedCommand = FrontendUtils .commandToString("/somewhere/not/disclosable", command); Assert.assertEquals("\n" + "./node/node \\ \n" + " ./node_modules/webpack-dev-server/bin/webpack-dev-server.js \n", wrappedCommand); }