[ https://issues.apache.org/jira/browse/FLINK-2613?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14939509#comment-14939509 ]
ASF GitHub Bot commented on FLINK-2613: --------------------------------------- Github user tillrohrmann commented on a diff in the pull request: https://github.com/apache/flink/pull/1106#discussion_r40890167 --- Diff: flink-staging/flink-scala-shell/src/main/scala/org/apache/flink/api/scala/FlinkShell.scala --- @@ -0,0 +1,148 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you 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. + */ + +package org.apache.flink.api.scala + + +import java.io.{StringWriter, BufferedReader} + +import scala.tools.nsc.Settings + +import org.apache.flink.configuration.Configuration +import org.apache.flink.runtime.minicluster.LocalFlinkMiniCluster + +import scala.tools.nsc.interpreter._ + + +object FlinkShell { + + val LOCAL = 0; + val REMOTE = 1; + val UNDEFINED = -1; + + var bufferedReader: BufferedReader = null; + + def main(args: Array[String]) { + + // scopt, command line arguments + case class Config( + port: Int = -1, + host: String = "none", + externalJars: Option[Array[String]] = None, + flinkShellExecutionMode : Int = UNDEFINED) + + val parser = new scopt.OptionParser[Config]("start-scala-shell.sh") { + head ("Flink Scala Shell") + + cmd("local") action { + (_,c) => c.copy( host = "none", port = -1, flinkShellExecutionMode = LOCAL) + } text("starts Flink scala shell with a local Flink cluster\n") children( + opt[(String)] ("addclasspath") abbr("a") valueName("<path/to/jar>") action { + case (x,c) => + val xArray = x.split(":") + c.copy(externalJars = Option(xArray)) + } text("specifies additional jars to be used in Flink\n") + ) + + cmd("remote") action { (_, c) => + c.copy(flinkShellExecutionMode = REMOTE) + } text("starts Flink scala shell connecting to a remote cluster\n") children( + arg[String]("<host>") action { (h, c) => + c.copy(host = h) } + text("remote host name as string"), + arg[Int]("<port>") action { (p, c) => + c.copy(port = p) } + text("remote port as integer\n"), + opt[(String)] ("addclasspath") abbr("a") valueName("<path/to/jar>") action { + case (x,c) => + val xArray = x.split(":") + c.copy(externalJars = Option(xArray)) + } text("specifies additional jars to be used in Flink") + + ) + help("help") abbr("h") text("prints this usage text\n") + } + + + // parse arguments + parser.parse (args, Config () ) match { + case Some(config) => + startShell(config.host, + config.port, + config.flinkShellExecutionMode, + config.externalJars) + + case _ => println("Could not parse program arguments") + } + } + + + def startShell( + userHost : String, + userPort : Int, + executionMode : Int, + externalJars : Option[Array[String]] = None): Unit ={ + + println("Starting Flink Shell:") + + var cluster: LocalFlinkMiniCluster = null + + // either port or userhost not specified by user, create new minicluster + val (host,port) = if (executionMode == LOCAL) { + cluster = new LocalFlinkMiniCluster(new Configuration, false) + cluster.start() + val port = cluster.getLeaderRPCPort + println(s"\nStarting local Flink cluster (host: localhost, port: $port).\n") + ("localhost",port) + } else if(executionMode == UNDEFINED) { + println("Error: please specify execution mode:") + println("[local | remote <host> <port>]") + return + } else if(userHost == "none" || userPort == -1){ + println("Error: <host> or <port> not specified!") + return + } else { + println(s"\nConnecting to Flink cluster (host: $userHost, port: $userPort).\n") + (userHost, userPort) + } + + + // custom shell + var repl : FlinkILoop = null; --- End diff -- Why `var` and not `val` whose value is the value of the `if-else` expression? > Print usage information for Scala Shell > --------------------------------------- > > Key: FLINK-2613 > URL: https://issues.apache.org/jira/browse/FLINK-2613 > Project: Flink > Issue Type: Improvement > Components: Scala Shell > Affects Versions: 0.10 > Reporter: Maximilian Michels > Assignee: Nikolaas Steenbergen > Priority: Minor > Labels: starter > Fix For: 0.10 > > > The Scala Shell startup script starts a {{FlinkMiniCluster}} by default if > invoked with no arguments. > We should add a {{--help}} or {{-h}} option to make it easier for people to > find out how to configure remote execution. Alternatively, we could print a > notice on the local startup explaining how to start the shell in remote mode. -- This message was sent by Atlassian JIRA (v6.3.4#6332)