package kafka.utils
import joptsimple.{OptionSpec, OptionSet, OptionParser}
import scala.collection.Set
import java.util.Properties
object CommandLineUtils extends Logging {
def checkRequiredArgs(parser: OptionParser, options: OptionSet, required: OptionSpec[_]*) {
for(arg <- required) {
if(!options.has(arg))
printUsageAndDie(parser, "Missing required argument \"" + arg + "\"")
}
}
def checkInvalidArgs(parser: OptionParser, options: OptionSet, usedOption: OptionSpec[_], invalidOptions: Set[OptionSpec[_]]) {
if(options.has(usedOption)) {
for(arg <- invalidOptions) {
if(options.has(arg))
printUsageAndDie(parser, "Option \"" + usedOption + "\" can't be used with option\"" + arg + "\"")
}
}
}
def printUsageAndDie(parser: OptionParser, message: String) {
System.err.println(message)
parser.printHelpOn(System.err)
System.exit(1)
}
def parseKeyValueArgs(args: Iterable[String]): Properties = {
val splits = args.map(_ split "=").filterNot(_.length == 0)
val props = new Properties
for(a <- splits) {
if (a.length == 1) props.put(a(0), "")
else if (a.length == 2) props.put(a(0), a(1))
else {
System.err.println("Invalid command line properties: " + args.mkString(" "))
System.exit(1)
}
}
props
}
}