Command Line Execution Plug-in for the Kobalt build system https://github.com/ethauvin/kobalt-exec
Find a file
2016-08-07 10:40:06 -07:00
.idea Kobalt 0.889 update. 2016-08-04 20:59:17 -07:00
example TravisCI fix. 2016-08-07 10:35:10 -07:00
kobalt Updated to Kobalt 0.890 2016-08-07 10:22:15 -07:00
src Added Fail.NONE 2016-07-13 10:50:00 -07:00
.gitattributes fixup! Added .gitattributes 2016-07-12 18:51:34 -07:00
.gitignore Fixed forEach loops. 2016-07-11 22:27:05 -07:00
.travis.yml Fix for TravisCI. 2016-07-21 09:24:56 -07:00
kobaltw Debugging TravisCI. 2016-08-07 10:40:06 -07:00
kobaltw.bat Trying new Travis build. 2016-07-17 20:06:44 -07:00
LICENSE.txt Added license. 2016-07-13 00:31:22 -07:00
README.md Version 0.6.1 2016-07-21 23:30:20 -07:00

Command Line Execution plug-in for Kobalt

License (3-Clause BSD) Build Status Download

The plug-in allows for the execution of system commands, similarly to the Gradle Exec or Ant Exec tasks.

To use the plug-in include the following in your Build.kt file:

import net.thauvin.erik.kobalt.plugin.exec.*

val pl = plugins("net.thauvin.erik:kobalt-exc:")

val p = project {
    name = "example"
	
    exec {
       commandLine(listOf("echo", "Hello, World!"))
    }
}

View Example

To invoke the exec task:

./kobaltw exec

commandLine Directive

The commandLine directive is used to execute command line(s) during the build process:

exec {
    commandLine(listOf("cmd", "/c", "stop.bat"), dir = "../tomcat/bin", os = setOf(Os.WINDOWS))
    commandLine(listOf("./stop.sh"), dir = "../tomcat/bin", os = setOf(Os.MAC, Os.LINUX))
    commandLine(listOf("/bin/sh", "-c", "ps aux | grep tomcat"), fail = setOf(Fail.EXIT))
}

Parameters

args

The full command line including the executable and all parameters.

exec {
    commandLine(listOf("ls", "-l"))
    commandLine(args = listOf("cmd", "/c", "dir /Q"))
}

dir

The working directory in which the command should be executed. Defaults to the project directory.

exec {
    commandLine(listOf("cmd", "/c", "stop.bat"), dir = "../tomcat/bin")
    commandLine("./stop.sh", dir = "../tomcat/bin")
}

os

List of operating systems on which the command may be executed. If the current OS is contained within the list, the command will be executed.

The following predefined values are available:

Name Operating System
Os.FREEBSD FreeBSD
Os.LINUX Linux
Os.MAC Apple Macintosh / OS X
Os.OPENVMS OpenVMS
Os.OS400 OS/400
Os.SOLARIS Solaris / SunOS
Os.TANDEM Tandem's Non-Stop
Os.WINDOWS Microsoft Windows
Os.ZOS z/OS / OS/390
exec {
    commandLine(listOf("cmd", "/c", "stop.cmd"), os = setOf(Os.WINDOWS))
    commandLine(listOf("./stop.sh"), os = setOf(Os.LINUX, Os.MAC))
}

fail

List of error options to specify whether data returned to the standard streams and/or an abnormal exit value constitute build failure signaling.

The following predefined values are available:

Name Failure When
Fail.EXIT Exit value > 0
Fail.NORMAL Exit value > 0 or any data to the standard error stream (stderr)
Fail.OUTPUT Any data to the standard output stream (stdout) or stderr.
Fail.STDERR Any data to stderr.
Fail.STDOUT Any data to stdout.
Fail.ALL Any of the conditions above.
Fail.NONE Never fails.

Fail.NORMAL is the default value.

exec {
    commandLine(listOf("cmd", "/c", "stop.bat"), fail = setOf(Fail.EXIT))
    commandLine(listOf("./stop.sh"), fail = setOf(Fail.EXIT, Fail.STDOUT))
}

Logging / Debugging

To view the output of the exec task, use:

./kobaltw exec --log 2

You could also redirect the error stream to a file:

exec {
    commandLine(listOf("/bin/sh", "-c", "./stop.sh 2> error.txt"), os = setOf(Os.LINUX))
    commandLine(listOf("cmd", "/c", "stop.bat 2> error.txt"), os = setOf(Os.WINDOWS))
}