diff options
Diffstat (limited to 'cli/source/core/scala/com/rockymadden/stringmetric/cli/Command.scala')
-rwxr-xr-x | cli/source/core/scala/com/rockymadden/stringmetric/cli/Command.scala | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/cli/source/core/scala/com/rockymadden/stringmetric/cli/Command.scala b/cli/source/core/scala/com/rockymadden/stringmetric/cli/Command.scala new file mode 100755 index 0000000..fedc0d9 --- /dev/null +++ b/cli/source/core/scala/com/rockymadden/stringmetric/cli/Command.scala @@ -0,0 +1,24 @@ +package com.rockymadden.stringmetric.cli + +/** Defines the traits and provides basic implementations of a command. Commands are always implemented as objects. */ +trait Command { + def help(): Unit + + final def error(error: Throwable, options: OptionMap): Unit = + if (!isUnitTest(options)) { + println(error.getMessage) + sys.exit(1) + } else throw error + + def execute(options: OptionMap): Unit + + final def exit(options: OptionMap): Unit = if (!isUnitTest(options)) sys.exit(0) + + final protected[this] def isDebug(options: OptionMap): Boolean = + (options.contains('d) || (options.contains('debug) && options.get('debug) != "false")) + + final protected[this] def isUnitTest(options: OptionMap): Boolean = + (options.contains('ut) || (options.contains('unitTest) && options.get('unitTest) != "false")) + + def main(args: Array[String]): Unit +} |