Compare commits
78 commits
0.5.0-beta
...
master
Author | SHA1 | Date | |
---|---|---|---|
acb492b30e | |||
a2bbaf9f0f | |||
38d7714f22 | |||
49a01d2586 | |||
9d5b969dd9 | |||
dc99641c3e | |||
b0e025206b | |||
182b975b85 | |||
0531a8a139 | |||
5672ad96b0 | |||
a55d7f34eb | |||
43d55803a9 | |||
6530e8f7be | |||
3007041be4 | |||
9fb31c09e5 | |||
395fa127b9 | |||
d990c6d598 | |||
079d8877f1 | |||
a52cdc7079 | |||
c132f817b4 | |||
a89860e944 | |||
5f896dc03e | |||
d56671160c | |||
663dcb637f | |||
b04b7a9acb | |||
2601320749 | |||
60f4a09815 | |||
8788ee4658 | |||
ece42cb69f | |||
816dcd8843 | |||
4171f5bb39 | |||
f823f3be8c | |||
c4a59b86c3 | |||
91f5d23bc0 | |||
6013d9cfdf | |||
a4a3b24a7b | |||
53e80b18e7 | |||
572ddd0a9f | |||
47ad7ed59e | |||
fe121bb645 | |||
0fe3515faf | |||
87b38723ab | |||
eec696d1ea | |||
50a6ba34af | |||
063f869468 | |||
13f2ff6e50 | |||
39dc771930 | |||
ca0e2b2949 | |||
159f96c1d6 | |||
ef73af3fbf | |||
f2a2ad9c04 | |||
cd08c52ce5 | |||
bb15076c61 | |||
eed5f8798a | |||
fee2a46527 | |||
c06ca1c60c | |||
b5bc218d7f | |||
27bccf5a8c | |||
407ae4d3a5 | |||
0450b596e2 | |||
ae46193054 | |||
f2cf1d2b99 | |||
bf42e81afb | |||
0ab03b67b2 | |||
51110488b5 | |||
adbfa2b2dd | |||
796343ee7b | |||
6ab9efe714 | |||
0dfaf8fe46 | |||
84f64f5437 | |||
f2ff209389 | |||
5f4faa88a0 | |||
10d4ac75b7 | |||
abacf3dd8d | |||
2f54f85294 | |||
0063848981 | |||
47beeb1510 | |||
0e1d0a3833 |
33 changed files with 1297 additions and 231 deletions
31
.circleci/config.yml
Normal file
31
.circleci/config.yml
Normal file
|
@ -0,0 +1,31 @@
|
|||
version: 2
|
||||
jobs:
|
||||
build:
|
||||
docker:
|
||||
- image: circleci/openjdk:8-jdk
|
||||
|
||||
working_directory: ~/repo
|
||||
|
||||
environment:
|
||||
JVM_OPTS: -Xmx3200m
|
||||
TERM: dumb
|
||||
|
||||
steps:
|
||||
- checkout
|
||||
- restore_cache:
|
||||
keys:
|
||||
- kobalt-dependencies-{{ checksum "kobalt/src/Build.kt" }}
|
||||
# fallback to using the latest cache if no exact match is found
|
||||
- kobalt-dependencies-
|
||||
|
||||
- run:
|
||||
name: Check Versions
|
||||
command: ./kobaltw checkVersions
|
||||
|
||||
- save_cache:
|
||||
paths: ~/.kobalt
|
||||
key: kobalt-dependencies-{{ checksum "kobalt/src/Build.kt" }}
|
||||
|
||||
- run:
|
||||
name: Assemble
|
||||
command: ./kobaltw assemble
|
5
.gitattributes
vendored
Normal file
5
.gitattributes
vendored
Normal file
|
@ -0,0 +1,5 @@
|
|||
# Set the default behavior, in case people don't have core.autocrlf set.
|
||||
* text=auto
|
||||
|
||||
# batch files are specific to windows and always crlf
|
||||
*.bat eol=crlf
|
8
.gitignore
vendored
8
.gitignore
vendored
|
@ -4,8 +4,9 @@
|
|||
**/.idea/tasks.xml
|
||||
**/.idea/workspace.xml
|
||||
*.iws
|
||||
.DS_Store
|
||||
*.sublime-*
|
||||
.classpath
|
||||
.DS_Store
|
||||
.gradle
|
||||
.kobalt
|
||||
.nb-gradle
|
||||
|
@ -15,8 +16,10 @@
|
|||
/build
|
||||
/deploy
|
||||
/dist
|
||||
/example/libs/
|
||||
/gen
|
||||
/gradle.properties
|
||||
/lib
|
||||
/libs
|
||||
/local.properties
|
||||
/out
|
||||
|
@ -24,7 +27,6 @@
|
|||
/project.properties
|
||||
/target
|
||||
/test-output
|
||||
Thumbs.db
|
||||
ehthumbs.db
|
||||
kobaltBuild
|
||||
/example/libs/
|
||||
Thumbs.db
|
9
.idea/codeStyleSettings.xml
generated
Normal file
9
.idea/codeStyleSettings.xml
generated
Normal file
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectCodeStyleSettingsManager">
|
||||
<option name="PER_PROJECT_SETTINGS">
|
||||
<value />
|
||||
</option>
|
||||
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Erik's Code Style" />
|
||||
</component>
|
||||
</project>
|
23
.idea/compiler.xml
generated
23
.idea/compiler.xml
generated
|
@ -1,23 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<option name="DEFAULT_COMPILER" value="Javac" />
|
||||
<resourceExtensions />
|
||||
<wildcardResourcePatterns>
|
||||
<entry name="!?*.java" />
|
||||
<entry name="!?*.form" />
|
||||
<entry name="!?*.class" />
|
||||
<entry name="!?*.groovy" />
|
||||
<entry name="!?*.scala" />
|
||||
<entry name="!?*.flex" />
|
||||
<entry name="!?*.kt" />
|
||||
<entry name="!?*.clj" />
|
||||
<entry name="!?*.aj" />
|
||||
</wildcardResourcePatterns>
|
||||
<annotationProcessing>
|
||||
<profile default="true" name="Default" enabled="false">
|
||||
<processorPath useClasspath="true" />
|
||||
</profile>
|
||||
</annotationProcessing>
|
||||
</component>
|
||||
</project>
|
2
.idea/copyright/Erik_s_Copyright_Notice.xml
generated
2
.idea/copyright/Erik_s_Copyright_Notice.xml
generated
|
@ -1,6 +1,6 @@
|
|||
<component name="CopyrightManager">
|
||||
<copyright>
|
||||
<option name="myName" value="Erik's Copyright Notice" />
|
||||
<option name="notice" value="&#36;file.fileName Copyright (c) &#36;today.year, Erik C. Thauvin (erik@thauvin.net) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of this project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
|
||||
<option name="notice" value="&#36;file.fileName Copyright (c) 2016-&#36;today.year, Erik C. Thauvin (erik@thauvin.net) All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. Neither the name of this project nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." />
|
||||
</copyright>
|
||||
</component>
|
2
.idea/copyright/profiles_settings.xml
generated
2
.idea/copyright/profiles_settings.xml
generated
|
@ -1,5 +1,5 @@
|
|||
<component name="CopyrightManager">
|
||||
<settings default="">
|
||||
<settings default="Erik's Copyright Notice">
|
||||
<module2copyright>
|
||||
<element module="Source" copyright="Erik's Copyright Notice" />
|
||||
</module2copyright>
|
||||
|
|
7
.idea/inspectionProfiles/profiles_settings.xml
generated
7
.idea/inspectionProfiles/profiles_settings.xml
generated
|
@ -1,7 +0,0 @@
|
|||
<component name="InspectionProjectProfileManager">
|
||||
<settings>
|
||||
<option name="PROJECT_PROFILE" value="Project Default" />
|
||||
<option name="USE_PROJECT_PROFILE" value="true" />
|
||||
<version value="1.0" />
|
||||
</settings>
|
||||
</component>
|
10
.idea/kobalt.xml
generated
10
.idea/kobalt.xml
generated
|
@ -4,9 +4,15 @@
|
|||
<option name="linkedExternalProjectsSettings">
|
||||
<KobaltProjectSettings>
|
||||
<option name="autoDownloadKobalt" value="true" />
|
||||
<option name="downloadSources" value="false" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="kobaltHome" value="$USER_HOME$/.kobalt/wrapper/dist/kobalt-0.847" />
|
||||
<option name="useAutoImport" value="true" />
|
||||
<option name="kobaltHome" value="$USER_HOME$/.kobalt/wrapper/dist/kobalt-1.0.82" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="profiles" value="" />
|
||||
</KobaltProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
|
|
42
.idea/misc.xml
generated
42
.idea/misc.xml
generated
|
@ -38,27 +38,29 @@
|
|||
<property name="caretWidth" class="java.lang.Integer" />
|
||||
</properties>
|
||||
</component>
|
||||
<component name="EntryPointsManager">
|
||||
<entry_points version="2.0" />
|
||||
<component name="ProjectInspectionProfilesVisibleTreeState">
|
||||
<entry key="Project Default">
|
||||
<profile-state>
|
||||
<expanded-state>
|
||||
<State>
|
||||
<id />
|
||||
</State>
|
||||
<State>
|
||||
<id>Java</id>
|
||||
</State>
|
||||
<State>
|
||||
<id>Portability issuesJava</id>
|
||||
</State>
|
||||
</expanded-state>
|
||||
<selected-state>
|
||||
<State>
|
||||
<id>Android</id>
|
||||
</State>
|
||||
</selected-state>
|
||||
</profile-state>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="MavenImportPreferences">
|
||||
<option name="generalSettings">
|
||||
<MavenGeneralSettings>
|
||||
<option name="mavenHome" value="Bundled (Maven 3)" />
|
||||
</MavenGeneralSettings>
|
||||
</option>
|
||||
</component>
|
||||
<component name="ProjectLevelVcsManager" settingsEditedManually="false">
|
||||
<OptionsSetting value="true" id="Add" />
|
||||
<OptionsSetting value="true" id="Remove" />
|
||||
<OptionsSetting value="true" id="Checkout" />
|
||||
<OptionsSetting value="true" id="Update" />
|
||||
<OptionsSetting value="true" id="Status" />
|
||||
<OptionsSetting value="true" id="Edit" />
|
||||
<ConfirmationsSetting value="0" id="Add" />
|
||||
<ConfirmationsSetting value="0" id="Remove" />
|
||||
</component>
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.8.x" project-jdk-type="JavaSDK">
|
||||
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8.x" project-jdk-type="JavaSDK">
|
||||
<output url="file://$PROJECT_DIR$/kobaltBuild/classes" />
|
||||
</component>
|
||||
</project>
|
1
.idea/modules.xml
generated
1
.idea/modules.xml
generated
|
@ -3,6 +3,7 @@
|
|||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/kobalt/Build.kt.iml" filepath="$PROJECT_DIR$/kobalt/Build.kt.iml" />
|
||||
<module fileurl="file://$PROJECT_DIR$/kobalt-exec.iml" filepath="$PROJECT_DIR$/kobalt-exec.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
3
.idea/scopes/Copyright.xml
generated
Normal file
3
.idea/scopes/Copyright.xml
generated
Normal file
|
@ -0,0 +1,3 @@
|
|||
<component name="DependencyValidationManager">
|
||||
<scope name="Copyright" pattern="file[kobalt-exec]:src/main/kotlin//*.kt" />
|
||||
</component>
|
3
.idea/scopes/Source.xml
generated
3
.idea/scopes/Source.xml
generated
|
@ -1,3 +0,0 @@
|
|||
<component name="DependencyValidationManager">
|
||||
<scope name="Source" pattern="file[kobalt-exec]:src/main/kotlin//**kt" />
|
||||
</component>
|
19
.travis.yml
Normal file
19
.travis.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
language: java
|
||||
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
|
||||
before_install:
|
||||
- chmod +x kobaltw
|
||||
|
||||
install: true
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.m2
|
||||
- $HOME/.kobalt
|
||||
|
||||
before_cache:
|
||||
- rm -rf .kobalt/*
|
||||
|
||||
script: ./kobaltw clean assemble
|
27
LICENSE.txt
Normal file
27
LICENSE.txt
Normal file
|
@ -0,0 +1,27 @@
|
|||
Copyright (c) 2016-2017, Erik C. Thauvin (erik@thauvin.net)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
* Neither the name of this project nor the names of its contributors may be
|
||||
used to endorse or promote products derived from this software without
|
||||
specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
172
README.md
Normal file
172
README.md
Normal file
|
@ -0,0 +1,172 @@
|
|||
# Command Line Execution plug-in for [Kobalt](http://beust.com/kobalt/home/index.html)
|
||||
|
||||
[](http://opensource.org/licenses/BSD-3-Clause) [](https://github.com/ethauvin/kobalt-exec/releases/latest) [](https://travis-ci.org/ethauvin/kobalt-exec) [](https://circleci.com/gh/ethauvin/kobalt-exec/tree/master) [](https://bintray.com/ethauvin/maven/kobalt-exec/_latestVersion)
|
||||
|
||||
The plug-in allows for the execution of system commands, similarly to the [Gradle Exec](https://docs.gradle.org/current/dsl/org.gradle.api.tasks.Exec.html) or [Ant Exec](https://ant.apache.org/manual/Tasks/exec.html) tasks.
|
||||
|
||||
To use the plug-in include the following in your `Build.kt` file:
|
||||
|
||||
```kotlin
|
||||
import net.thauvin.erik.kobalt.plugin.exec.*
|
||||
|
||||
val bs = buildScript {
|
||||
plugins("net.thauvin.erik:kobalt-exc:")
|
||||
}
|
||||
|
||||
val p = project {
|
||||
name = "example"
|
||||
|
||||
exec {
|
||||
commandLine("echo", "Hello, World!")
|
||||
}
|
||||
}
|
||||
```
|
||||
[View Example](https://github.com/ethauvin/kobalt-exec/blob/master/example/kobalt/src/Build.kt)
|
||||
|
||||
To invoke the `exec` task:
|
||||
|
||||
```sh
|
||||
./kobaltw exec
|
||||
```
|
||||
|
||||
## `commandLine` Directive
|
||||
|
||||
The `commandLine` directive is used to execute command line(s) during the build process:
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
commandLine("cmd", "/c", "stop.bat", dir = "../tomcat/bin", os = setOf(Os.WINDOWS))
|
||||
commandLine("./stop.sh", dir = "../tomcat/bin", os = setOf(Os.MAC, Os.LINUX))
|
||||
commandLine("sh", "-c", "ps aux | grep tomcat", os = setOf(Os.MAC, Os.LINUX), fail = setOf(Fail.EXIT))
|
||||
commandLine("cmd", "/c", "tasklist | find \"tomcat\"", os = setOf(Os.WINDOWS), fail = setOf(Fail.EXIT))
|
||||
}
|
||||
```
|
||||
|
||||
## Parameters
|
||||
|
||||
### `args`
|
||||
|
||||
The full command line including the executable and all arguments.
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
commandLine(args = "ls")
|
||||
commandLine("ls", "-l")
|
||||
commandLine("cmd", "/c", "dir /Q")
|
||||
}
|
||||
```
|
||||
|
||||
### `dir`
|
||||
|
||||
The working directory in which the command should be executed. Defaults to the project directory.
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
commandLine("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.CYGWIN` | Cygwin for Windows
|
||||
`Os.FREEBSD` | FreeBSD
|
||||
`Os.LINUX` | Linux
|
||||
`Os.MAC` | Apple Macintosh / OS X
|
||||
`Os.MINGW` | Minimalist GNU for Windows
|
||||
`OS.MSYS` | MinGW Minimal System
|
||||
`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
|
||||
|
||||
<sub>* Excluding Cygwin, MinGW and MSYS.</sub>
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
commandLine("cmd", "/c", "stop.bat", os = setOf(Os.WINDOWS))
|
||||
commandLine("./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.
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
commandLine("cmd", "/c", "stop.bat", fail = setOf(Fail.EXIT))
|
||||
commandLine("./stop.sh", fail = setOf(Fail.EXIT, Fail.STDOUT))
|
||||
}
|
||||
```
|
||||
|
||||
## taskName
|
||||
|
||||
Additionally, you can specify a task name to easily identify multiple `exec` tasks.
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
taskName = "start"
|
||||
commandLine("./start.sh", os = setOf(Os.LINUX, Os.MAC))
|
||||
}
|
||||
|
||||
exec {
|
||||
taskName = "stop"
|
||||
commandLine("./stop.sh", os = setOf(Os.LINUX, Os.MAC))
|
||||
}
|
||||
```
|
||||
|
||||
```sh
|
||||
./kobaltw start
|
||||
./kobaltw stop
|
||||
```
|
||||
|
||||
## dependsOn
|
||||
|
||||
|
||||
By default the `exec` task depends on `assemble`, use the `dependsOn` parameter to change the dependencies:
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
dependsOn = listOf("assemble", "run")
|
||||
commandLine("cmd", "/c", "start.bat", fail = setOf(Fail.EXIT))
|
||||
}
|
||||
```
|
||||
|
||||
## Logging / Debugging
|
||||
|
||||
To view the output of the `exec` task, use:
|
||||
|
||||
```sh
|
||||
./kobaltw exec --log 2
|
||||
```
|
||||
You could also redirect the error stream to a file:
|
||||
|
||||
```kotlin
|
||||
exec {
|
||||
commandLine("sh", "-c", "./stop.sh 2> error.txt", os = setOf(Os.LINUX))
|
||||
commandLine("cmd", "/c", "stop.bat 2> error.txt", os = setOf(Os.WINDOWS))
|
||||
}
|
||||
```
|
37
clean.sh
Normal file
37
clean.sh
Normal file
|
@ -0,0 +1,37 @@
|
|||
#!/bin/bash
|
||||
|
||||
DEBUG=false
|
||||
|
||||
rm="rm -rf"
|
||||
|
||||
if [ "$DEBUG" = true ]; then
|
||||
rm="echo rm -rf"
|
||||
fi
|
||||
|
||||
buildkt="kobalt/src/Build.kt"
|
||||
|
||||
name=$(cat $buildkt | grep -m 1 "name = " | cut -d"\"" -f 2)
|
||||
group=$(cat $buildkt | grep -m 1 "group = " | cut -d"\"" -f 2)
|
||||
|
||||
if [ -z "$1" ]; then
|
||||
version=$(cat $buildkt | grep -m 1 "version = " | cut -d"\"" -f 2)
|
||||
else
|
||||
version="$1"
|
||||
fi
|
||||
|
||||
maven="/k/maven/repository/${group//.//}/${name}/${version}"
|
||||
kobalt="$HOME/.kobalt/cache/${group//.//}/${name}/${version}"
|
||||
localRepo="$HOME/.kobalt/localMavenRepo/${group//.//}/${name}/${version}"
|
||||
|
||||
read -p "Delete version ${version}? " -n 1 -r
|
||||
echo
|
||||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||||
for dir in "$kobalt" "$maven" "$localRepo"; do
|
||||
if [ -d "$dir" ]; then
|
||||
echo -e "Deleting : \e[32;1m$dir\e[0m"
|
||||
$rm "$dir"
|
||||
else
|
||||
echo -e "Not Found: \e[31;1m$dir\e[0m"
|
||||
fi
|
||||
done
|
||||
fi
|
|
@ -1,32 +1,25 @@
|
|||
import com.beust.kobalt.*
|
||||
import com.beust.kobalt.plugin.packaging.*
|
||||
import com.beust.kobalt.plugin.application.*
|
||||
import com.beust.kobalt.plugin.java.*
|
||||
import com.beust.kobalt.plugin.packaging.*
|
||||
import net.thauvin.erik.kobalt.plugin.exec.*
|
||||
|
||||
val pl = plugins(file("../kobaltBuild/libs/kobalt-exec-0.1.jar"))
|
||||
// ./kobaltw exec echo ps --log 2
|
||||
// ./kobaltw exec --log 2
|
||||
// ./kobaltw echo --log 2
|
||||
// ./kobaltw ps --log 2
|
||||
|
||||
val p = project {
|
||||
val bs = buildScript {
|
||||
repos(localMaven())
|
||||
plugins("net.thauvin.erik:kobalt-exec:")
|
||||
}
|
||||
|
||||
val example = project {
|
||||
|
||||
name = "example"
|
||||
group = "com.example"
|
||||
artifactId = name
|
||||
version = "0.1"
|
||||
|
||||
sourceDirectories {
|
||||
path("src/main/java")
|
||||
}
|
||||
|
||||
sourceDirectoriesTest {
|
||||
path("src/test/java")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
}
|
||||
|
||||
dependenciesTest {
|
||||
}
|
||||
|
||||
assemble {
|
||||
jar {
|
||||
}
|
||||
|
@ -37,7 +30,23 @@ val p = project {
|
|||
}
|
||||
|
||||
exec {
|
||||
commandLine(args = listOf("ls", "-l"), dir = "../libs", fail = setOf(Fail.NORMAL))
|
||||
commandLine(listOf("cmd", "/c", "echo", "Test"), os = listOf("Win", "Windows"), fail = setOf(Fail.NORMAL))
|
||||
commandLine("ls", "-l", dir = "../kobalt/wrapper", os = setOf(Os.LINUX, Os.MINGW, Os.CYGWIN))
|
||||
commandLine("cmd", "/c", "dir /Q", dir = "../kobalt/wrapper", os = setOf(Os.WINDOWS))
|
||||
}
|
||||
|
||||
exec {
|
||||
taskName = "echo"
|
||||
dependsOn = listOf("exec", "run")
|
||||
|
||||
val echo = arrayOf("echo", "Test", "Example")
|
||||
commandLine(*echo, os = setOf(Os.LINUX, Os.MINGW, Os.CYGWIN))
|
||||
commandLine("cmd", "/c", *echo, os = setOf(Os.WINDOWS))
|
||||
}
|
||||
|
||||
exec {
|
||||
taskName = "ps"
|
||||
dependsOn = listOf() // no dependencies
|
||||
commandLine("sh", "-c", "ps aux | grep bash", os = setOf(Os.LINUX, Os.MINGW, Os.CYGWIN))
|
||||
commandLine("cmd", "/c", "tasklist | find \"cmd.exe\"", os = setOf(Os.WINDOWS), fail = setOf(Fail.EXIT))
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -1 +1 @@
|
|||
kobalt.version=0.846
|
||||
kobalt.version=1.0.90
|
||||
|
|
3
example/kobaltw
Normal file → Executable file
3
example/kobaltw
Normal file → Executable file
|
@ -1 +1,2 @@
|
|||
java -jar $(dirname $0)/kobalt/wrapper/kobalt-wrapper.jar $*
|
||||
#!/usr/bin/env sh
|
||||
java -jar "`dirname "$0"`/kobalt/wrapper/kobalt-wrapper.jar" $*
|
||||
|
|
4
example/kobaltw.bat
Normal file
4
example/kobaltw.bat
Normal file
|
@ -0,0 +1,4 @@
|
|||
@echo off
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
java -jar "%DIRNAME%/kobalt/wrapper/kobalt-wrapper.jar" %*
|
682
kobalt-exec.iml
Normal file
682
kobalt-exec.iml
Normal file
|
@ -0,0 +1,682 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="kobalt-exec" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="KOBALT" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/kobaltBuild/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/kobaltBuild/test-classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/kotlin" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/test/kotlin" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/kobaltBuild" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: org.yaml:snakeyaml:jar:1.17">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: org.jetbrains:annotations:jar:13.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: org.jetbrains.kotlin:kotlin-stdlib:jar:1.1.2-2">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/jetbrains/kotlin/kotlin-stdlib/1.1.2-2/kotlin-stdlib-1.1.2-2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.jetbrains:annotations:jar:13.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/jetbrains/annotations/13.0/annotations-13.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: org.jetbrains.kotlin:kotlin-test:jar:1.1.2-2">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/jetbrains/kotlin/kotlin-test/1.1.2-2/kotlin-test-1.1.2-2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.jetbrains.kotlin:kotlin-stdlib:jar:1.1.2-2">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/jetbrains/kotlin/kotlin-stdlib/1.1.2-2/kotlin-stdlib-1.1.2-2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: com.beust:jcommander:jar:1.64">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/beust/jcommander/1.64/jcommander-1.64.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library" scope="TEST">
|
||||
<library name="Kobalt: org.testng:testng:jar:(0,]">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/testng/testng/6.11/testng-6.11.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.beust:kobalt-plugin-api:jar:(0,]">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/beust/kobalt-plugin-api/1.0.68/kobalt-plugin-api-1.0.68.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.google.inject:guice:jar:4.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/google/inject/guice/4.0/guice-4.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.google.inject.extensions:guice-assistedinject:jar:4.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/google/inject/extensions/guice-assistedinject/4.0/guice-assistedinject-4.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.google.guava:guava:jar:19.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/google/guava/guava/19.0/guava-19.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven:maven-model:jar:3.3.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/maven-model/3.3.9/maven-model-3.3.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: io.reactivex:rxjava:jar:1.1.5">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/io/reactivex/rxjava/1.1.5/rxjava-1.1.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.squareup.retrofit2:retrofit:jar:2.1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/squareup/retrofit2/retrofit/2.1.0/retrofit-2.1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.squareup.retrofit2:converter-gson:jar:2.1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/squareup/retrofit2/converter-gson/2.1.0/converter-gson-2.1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.eclipse.jgit:org.eclipse.jgit:jar:4.5.0.201609210915-r">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/eclipse/jgit/org.eclipse.jgit/4.5.0.201609210915-r/org.eclipse.jgit-4.5.0.201609210915-r.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.slf4j:slf4j-simple:jar:1.7.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/slf4j/slf4j-simple/1.7.3/slf4j-simple-1.7.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.resolver:maven-resolver-api:jar:1.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/resolver/maven-resolver-api/1.0.3/maven-resolver-api-1.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.resolver:maven-resolver-spi:jar:1.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/resolver/maven-resolver-spi/1.0.3/maven-resolver-spi-1.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.resolver:maven-resolver-util:jar:1.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/resolver/maven-resolver-util/1.0.3/maven-resolver-util-1.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.resolver:maven-resolver-impl:jar:1.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/resolver/maven-resolver-impl/1.0.3/maven-resolver-impl-1.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.resolver:maven-resolver-connector-basic:jar:1.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/resolver/maven-resolver-connector-basic/1.0.3/maven-resolver-connector-basic-1.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.resolver:maven-resolver-transport-http:jar:1.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/resolver/maven-resolver-transport-http/1.0.3/maven-resolver-transport-http-1.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.resolver:maven-resolver-transport-file:jar:1.0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/resolver/maven-resolver-transport-file/1.0.3/maven-resolver-transport-file-1.0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven:maven-aether-provider:jar:3.3.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/maven-aether-provider/3.3.9/maven-aether-provider-3.3.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.testng.testng-remote:testng-remote:jar:1.3.2">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/testng/testng-remote/testng-remote/1.3.2/testng-remote-1.3.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: commons-io:commons-io:jar:2.5">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/commons-io/commons-io/2.5/commons-io-2.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.platform:junit-platform-surefire-provider:jar:1.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/platform/junit-platform-surefire-provider/1.0.0-M4/junit-platform-surefire-provider-1.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.platform:junit-platform-runner:jar:1.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/platform/junit-platform-runner/1.0.0-M4/junit-platform-runner-1.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.platform:junit-platform-console:jar:1.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/platform/junit-platform-console/1.0.0-M4/junit-platform-console-1.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.jupiter:junit-jupiter-engine:jar:5.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/jupiter/junit-jupiter-engine/5.0.0-M4/junit-jupiter-engine-5.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.vintage:junit-vintage-engine:jar:4.12.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/vintage/junit-vintage-engine/4.12.0-M4/junit-vintage-engine-4.12.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.commons:commons-compress:jar:1.13">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/commons/commons-compress/1.13/commons-compress-1.13.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: javax.inject:javax.inject:jar:1">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/javax/inject/javax.inject/1/javax.inject-1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: aopalliance:aopalliance:jar:1.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/aopalliance/aopalliance/1.0/aopalliance-1.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.codehaus.plexus:plexus-utils:jar:3.0.22">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/codehaus/plexus/plexus-utils/3.0.22/plexus-utils-3.0.22.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.commons:commons-lang3:jar:3.4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/commons/commons-lang3/3.4/commons-lang3-3.4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.squareup.okhttp3:okhttp:jar:3.3.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/squareup/okhttp3/okhttp/3.3.0/okhttp-3.3.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.google.code.gson:gson:jar:2.7">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/google/code/gson/gson/2.7/gson-2.7.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.jcraft:jsch:jar:0.1.53">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/jcraft/jsch/0.1.53/jsch-0.1.53.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.googlecode.javaewah:JavaEWAH:jar:0.7.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/googlecode/javaewah/JavaEWAH/0.7.9/JavaEWAH-0.7.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.httpcomponents:httpclient:jar:4.3.6">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/httpcomponents/httpclient/4.3.6/httpclient-4.3.6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.slf4j:slf4j-api:jar:1.7.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/slf4j/slf4j-api/1.7.3/slf4j-api-1.7.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.slf4j:jcl-over-slf4j:jar:1.6.2">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/slf4j/jcl-over-slf4j/1.6.2/jcl-over-slf4j-1.6.2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven:maven-model-builder:jar:3.3.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/maven-model-builder/3.3.9/maven-model-builder-3.3.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven:maven-repository-metadata:jar:3.3.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/maven-repository-metadata/3.3.9/maven-repository-metadata-3.3.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.eclipse.aether:aether-api:jar:1.0.2.v20150114">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/eclipse/aether/aether-api/1.0.2.v20150114/aether-api-1.0.2.v20150114.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.eclipse.aether:aether-spi:jar:1.0.2.v20150114">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/eclipse/aether/aether-spi/1.0.2.v20150114/aether-spi-1.0.2.v20150114.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.eclipse.aether:aether-util:jar:1.0.2.v20150114">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/eclipse/aether/aether-util/1.0.2.v20150114/aether-util-1.0.2.v20150114.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.eclipse.aether:aether-impl:jar:1.0.2.v20150114">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/eclipse/aether/aether-impl/1.0.2.v20150114/aether-impl-1.0.2.v20150114.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.google.auto.service:auto-service:jar:1.0-rc3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/google/auto/service/auto-service/1.0-rc3/auto-service-1.0-rc3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.testng:testng:jar:6.11">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/testng/testng/6.11/testng-6.11.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.platform:junit-platform-launcher:jar:1.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/platform/junit-platform-launcher/1.0.0-M4/junit-platform-launcher-1.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.surefire:surefire-api:jar:2.19.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/surefire/surefire-api/2.19.1/surefire-api-2.19.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven.surefire:common-java5:jar:2.19.1">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/surefire/common-java5/2.19.1/common-java5-2.19.1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.platform:junit-platform-suite-api:jar:1.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/platform/junit-platform-suite-api/1.0.0-M4/junit-platform-suite-api-1.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: junit:junit:jar:4.12">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/junit/junit/4.12/junit-4.12.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.jupiter:junit-jupiter-api:jar:5.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/jupiter/junit-jupiter-api/5.0.0-M4/junit-jupiter-api-5.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.squareup.okio:okio:jar:1.8.0">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/squareup/okio/okio/1.8.0/okio-1.8.0.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.httpcomponents:httpcore:jar:4.3.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/httpcomponents/httpcore/4.3.3/httpcore-4.3.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: commons-logging:commons-logging:jar:1.1.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/commons-logging/commons-logging/1.1.3/commons-logging-1.1.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: commons-codec:commons-codec:jar:1.6">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/commons-codec/commons-codec/1.6/commons-codec-1.6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.codehaus.plexus:plexus-interpolation:jar:1.21">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/codehaus/plexus/plexus-interpolation/1.21/plexus-interpolation-1.21.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.codehaus.plexus:plexus-component-annotations:jar:1.6">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/codehaus/plexus/plexus-component-annotations/1.6/plexus-component-annotations-1.6.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven:maven-artifact:jar:3.3.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/maven-artifact/3.3.9/maven-artifact-3.3.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.apache.maven:maven-builder-support:jar:3.3.9">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/apache/maven/maven-builder-support/3.3.9/maven-builder-support-3.3.9.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.google.auto:auto-common:jar:0.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/google/auto/auto-common/0.3/auto-common-0.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.beust:jcommander:jar:1.64">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/com/beust/jcommander/1.64/jcommander-1.64.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.yaml:snakeyaml:jar:1.17">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/yaml/snakeyaml/1.17/snakeyaml-1.17.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.platform:junit-platform-engine:jar:1.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/platform/junit-platform-engine/1.0.0-M4/junit-platform-engine-1.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.hamcrest:hamcrest-core:jar:1.3">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/hamcrest/hamcrest-core/1.3/hamcrest-core-1.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.junit.platform:junit-platform-commons:jar:1.0.0-M4">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/junit/platform/junit-platform-commons/1.0.0-M4/junit-platform-commons-1.0.0-M4.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: org.opentest4j:opentest4j:jar:1.0.0-M2">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/org/opentest4j/opentest4j/1.0.0-M2/opentest4j-1.0.0-M2.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
</module>
|
|
@ -1,12 +1,42 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager" inherit-compiler-output="true">
|
||||
<module external.linked.project.id="Build.kt" external.linked.project.path="$MODULE_DIR$/.." external.root.project.path="$MODULE_DIR$/.." external.system.id="KOBALT" type="JAVA_MODULE" version="4">
|
||||
<component name="NewModuleRootManager">
|
||||
<output url="file://$MODULE_DIR$/out/classes" />
|
||||
<output-test url="file://$MODULE_DIR$/out/test-classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" name="kobalt.jar" level="project" />
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: kobalt-versioneye-0.4.5.jar">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/net/thauvin/erik/kobalt-versioneye/0.4.5/kobalt-versioneye-0.4.5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: kobalt-maven-local-0.5.3.jar">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/cache/net/thauvin/erik/kobalt-maven-local/0.5.3/kobalt-maven-local-0.5.3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library name="Kobalt: com.beust.kobalt:kobalt:jar:1.0.82">
|
||||
<CLASSES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/wrapper/dist/kobalt-1.0.82/kobalt/wrapper/kobalt-1.0.82.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES>
|
||||
<root url="jar://$USER_HOME$/.kobalt/wrapper/dist/kobalt-1.0.82/kobalt/wrapper/kobalt-1.0.82-sources.jar!/" />
|
||||
</SOURCES>
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
</module>
|
|
@ -1,15 +1,23 @@
|
|||
import com.beust.kobalt.buildScript
|
||||
import com.beust.kobalt.localMaven
|
||||
import com.beust.kobalt.file
|
||||
import com.beust.kobalt.plugin.packaging.assemble
|
||||
import com.beust.kobalt.plugin.publish.autoGitTag
|
||||
import com.beust.kobalt.plugin.publish.bintray
|
||||
import com.beust.kobalt.profile
|
||||
import com.beust.kobalt.project
|
||||
import com.beust.kobalt.repos
|
||||
import net.thauvin.erik.kobalt.plugin.versioneye.versionEye
|
||||
import org.apache.maven.model.Developer
|
||||
import org.apache.maven.model.License
|
||||
import org.apache.maven.model.Model
|
||||
import org.apache.maven.model.Scm
|
||||
|
||||
val repos = repos()
|
||||
val bs = buildScript {
|
||||
repos(localMaven())
|
||||
plugins("net.thauvin.erik:kobalt-versioneye:", "net.thauvin.erik:kobalt-maven-local:")
|
||||
}
|
||||
|
||||
val dev = false
|
||||
val dev by profile()
|
||||
val kobaltDependency = if (dev) "kobalt" else "kobalt-plugin-api"
|
||||
|
||||
val p = project {
|
||||
|
@ -17,11 +25,10 @@ val p = project {
|
|||
name = "kobalt-exec"
|
||||
group = "net.thauvin.erik"
|
||||
artifactId = name
|
||||
version = "0.5.0-beta"
|
||||
version = "0.7.0"
|
||||
|
||||
pom = Model().apply {
|
||||
name = project.name
|
||||
description = "Command line execution plugin for the Kobalt build system"
|
||||
description = "Command Line Execution plug-in for the Kobalt build system."
|
||||
url = "https://github.com/ethauvin/kobalt-exec"
|
||||
licenses = listOf(License().apply {
|
||||
name = "BSD 3-Clause"
|
||||
|
@ -39,28 +46,36 @@ val p = project {
|
|||
})
|
||||
}
|
||||
|
||||
sourceDirectories {
|
||||
path("src/main/kotlin")
|
||||
}
|
||||
|
||||
sourceDirectoriesTest {
|
||||
path("src/test/kotlin")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compile("com.beust:$kobaltDependency:0.842")
|
||||
compile("com.beust:$kobaltDependency:")
|
||||
compile("org.jetbrains.kotlin:kotlin-stdlib:1.1.51")
|
||||
}
|
||||
|
||||
dependenciesTest {
|
||||
compile("org.testng:testng:")
|
||||
|
||||
compile("org.testng:testng:6.12")
|
||||
compile("org.jetbrains.kotlin:kotlin-test:1.1.51")
|
||||
}
|
||||
|
||||
assemble {
|
||||
mavenJars {}
|
||||
mavenJars {
|
||||
fatJar = true
|
||||
}
|
||||
}
|
||||
|
||||
autoGitTag {
|
||||
enabled = true
|
||||
push = false
|
||||
message = "Version $version"
|
||||
}
|
||||
|
||||
bintray {
|
||||
publish = false
|
||||
publish = true
|
||||
description = "Release version $version"
|
||||
vcsTag = version
|
||||
}
|
||||
|
||||
versionEye {
|
||||
org = "Thauvin"
|
||||
team = "Owners"
|
||||
}
|
||||
}
|
Binary file not shown.
|
@ -1 +1 @@
|
|||
kobalt.version=0.847
|
||||
kobalt.version=1.0.90
|
||||
|
|
3
kobaltw
Normal file → Executable file
3
kobaltw
Normal file → Executable file
|
@ -1 +1,2 @@
|
|||
java -jar $(dirname $0)/kobalt/wrapper/kobalt-wrapper.jar $*
|
||||
#!/usr/bin/env sh
|
||||
java -jar "`dirname "$0"`/kobalt/wrapper/kobalt-wrapper.jar" $*
|
||||
|
|
4
kobaltw.bat
Normal file
4
kobaltw.bat
Normal file
|
@ -0,0 +1,4 @@
|
|||
@echo off
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
java -jar "%DIRNAME%/kobalt/wrapper/kobalt-wrapper.jar" %*
|
|
@ -1,7 +1,7 @@
|
|||
/*
|
||||
* ExecPlugin.kt
|
||||
*
|
||||
* Copyright (c) 2016, Erik C. Thauvin (erik@thauvin.net)
|
||||
* Copyright (c) 2016-2017, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
|
@ -31,18 +31,21 @@
|
|||
*/
|
||||
package net.thauvin.erik.kobalt.plugin.exec
|
||||
|
||||
import com.beust.kobalt.Plugins
|
||||
import com.beust.kobalt.TaskResult
|
||||
import com.beust.kobalt.api.*
|
||||
import com.beust.kobalt.api.annotation.Directive
|
||||
import com.beust.kobalt.api.annotation.Task
|
||||
import com.beust.kobalt.misc.log
|
||||
import java.io.BufferedReader
|
||||
import java.io.File
|
||||
import java.io.InputStream
|
||||
import java.io.InputStreamReader
|
||||
import com.google.inject.Inject
|
||||
import com.google.inject.Singleton
|
||||
import java.io.*
|
||||
import java.util.*
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
||||
class ExecPlugin : BasePlugin(), ITaskContributor {
|
||||
@Singleton
|
||||
class ExecPlugin @Inject constructor(val taskContributor: TaskContributor, val configActor: ConfigsActor<ExecConfig>) :
|
||||
BasePlugin(), ITaskContributor, IConfigsActor<ExecConfig> by configActor {
|
||||
// ITaskContributor
|
||||
override fun tasksFor(project: Project, context: KobaltContext): List<DynamicTask> {
|
||||
return emptyList()
|
||||
|
@ -54,76 +57,144 @@ class ExecPlugin : BasePlugin(), ITaskContributor {
|
|||
|
||||
override val name = NAME
|
||||
|
||||
@Task(name = "exec", description = "Execute a command line process.")
|
||||
fun taskExec(project: Project): TaskResult {
|
||||
return executeCommands(project)
|
||||
override fun apply(project: Project, context: KobaltContext) {
|
||||
configurationFor(project)?.let { configs ->
|
||||
configs.forEach { config ->
|
||||
taskManager.addTask(this, project, config.taskName,
|
||||
description = "Execute a command line process.",
|
||||
group = "Other",
|
||||
dependsOn = config.dependsOn,
|
||||
task = { executeCommands(project, config) })
|
||||
taskContributor.addVariantTasks(this, project, context, config.taskName,
|
||||
dependsOn = config.dependsOn,
|
||||
runTask = { executeCommands(project, config) })
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun executeCommands(project: Project): TaskResult {
|
||||
var success = true
|
||||
val config = configs[project.name]
|
||||
val errorMessage = StringBuilder()
|
||||
private fun isCygwin(): Boolean {
|
||||
val path: String? = System.getenv("ORIGINAL_PATH")
|
||||
return path?.contains("/cygdrive/") ?: false
|
||||
}
|
||||
|
||||
if (config != null) {
|
||||
for ((args, dir, os, fail) in config.commandLines) {
|
||||
val wrkDir = File(if (dir.isNullOrBlank()) project.directory else dir)
|
||||
if (wrkDir.isDirectory) {
|
||||
var execute = (os.size == 0)
|
||||
if (!execute) {
|
||||
val curOs: String = System.getProperty("os.name")
|
||||
for (name in os) {
|
||||
execute = curOs.startsWith(name, true)
|
||||
if (execute) break
|
||||
}
|
||||
}
|
||||
if (execute) {
|
||||
log(2, "> " + args.joinToString(" "))
|
||||
val pb = ProcessBuilder().command(args.toList())
|
||||
pb.directory(wrkDir)
|
||||
val proc = pb.start()
|
||||
val err = proc.waitFor(30, TimeUnit.SECONDS)
|
||||
val stdout = if (proc.inputStream.available() > 0) fromStream(proc.inputStream) else emptyList()
|
||||
val stderr = if (proc.errorStream.available() > 0) fromStream(proc.errorStream) else emptyList()
|
||||
val cmdInfo = "Program \"" + args.joinToString(" ") + "\" (in directory \"${wrkDir.path}\"): "
|
||||
private fun isMinGW(os: Os = Os.MINGW, any: Boolean = false): Boolean {
|
||||
val msys: String? = System.getenv("MSYSTEM")
|
||||
|
||||
if (err == false) {
|
||||
errorMessage.append(cmdInfo).append("TIMEOUT")
|
||||
success = false
|
||||
} else if (fail.isNotEmpty()) {
|
||||
val all = fail.contains(Fail.ALL)
|
||||
val output = fail.contains(Fail.OUTPUT)
|
||||
if ((all || fail.contains(Fail.EXIT) || fail.contains(Fail.NORMAL)) && proc.exitValue() > 0) {
|
||||
errorMessage.append(cmdInfo).append("EXIT ${proc.exitValue()}")
|
||||
if (stderr.isNotEmpty()) errorMessage.append(", STDERR: ").append(stderr[0])
|
||||
success = false
|
||||
} else if ((all || output || fail.contains(Fail.STDERR) || fail.contains(Fail.NORMAL))
|
||||
&& stderr.isNotEmpty()) {
|
||||
errorMessage.append(cmdInfo).append("STDERR, ").append(stderr[0])
|
||||
success = false
|
||||
} else if ((all || output || fail.contains(Fail.STDOUT)) && stdout.isNotEmpty()) {
|
||||
errorMessage.append(cmdInfo).append("STDOUT, ").append(stdout[0])
|
||||
success = false
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
errorMessage.append("Invalid working directory: \"${wrkDir.canonicalPath}\"")
|
||||
success = false
|
||||
}
|
||||
|
||||
if (!success) break
|
||||
if (!msys.isNullOrBlank()) {
|
||||
if (any) {
|
||||
return true
|
||||
} else if (os.equals(Os.MSYS)) {
|
||||
return msys!!.startsWith("MSYS")
|
||||
} else if (os.equals(Os.MINGW)) {
|
||||
return msys!!.startsWith("MINGW")
|
||||
}
|
||||
}
|
||||
|
||||
//@TODO until cedric fixes it.
|
||||
if (!success) error(errorMessage)
|
||||
|
||||
return TaskResult(success, errorMessage.toString())
|
||||
return false
|
||||
}
|
||||
|
||||
private val configs = hashMapOf<String, ExecConfig>()
|
||||
fun addExecConfig(projectName: String, config: ExecConfig) {
|
||||
configs.put(projectName, config)
|
||||
private fun matchOs(os: Os): Boolean {
|
||||
val curOs: String = System.getProperty("os.name").toLowerCase(Locale.US)
|
||||
when (os) {
|
||||
Os.WINDOWS -> {
|
||||
if (!isMinGW(any = true) && !isCygwin()) {
|
||||
return curOs.contains("windows")
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
Os.MAC -> {
|
||||
return (curOs.contains("mac") || curOs.contains("darwin") || curOs.contains("osx"))
|
||||
}
|
||||
Os.LINUX -> {
|
||||
return curOs.contains("linux")
|
||||
}
|
||||
Os.FREEBSD -> {
|
||||
return curOs.contains("freebsd")
|
||||
}
|
||||
Os.SOLARIS -> {
|
||||
return (curOs.contains("sunos") || curOs.contains("solaris"))
|
||||
}
|
||||
Os.OPENVMS -> {
|
||||
return curOs.contains("openvms")
|
||||
}
|
||||
Os.ZOS -> {
|
||||
return (curOs.contains("z/os") || curOs.contains("os/390"))
|
||||
}
|
||||
Os.TANDEM -> {
|
||||
return curOs.contains("nonstop_kernel")
|
||||
}
|
||||
Os.OS400 -> {
|
||||
return curOs.contains("os/400")
|
||||
}
|
||||
Os.CYGWIN -> {
|
||||
return isCygwin()
|
||||
}
|
||||
Os.MINGW -> {
|
||||
return isMinGW()
|
||||
}
|
||||
Os.MSYS -> {
|
||||
return isMinGW(Os.MSYS)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun executeCommands(project: Project, config: ExecConfig): TaskResult {
|
||||
var success = true
|
||||
val errorMessage = StringBuilder()
|
||||
|
||||
for ((args, dir, os, fail) in config.commandLines) {
|
||||
val wrkDir = File(if (dir.isNullOrBlank()) project.directory else dir)
|
||||
if (wrkDir.isDirectory) {
|
||||
var execute = (os.isEmpty())
|
||||
if (!execute) {
|
||||
for (name in os) {
|
||||
execute = matchOs(name)
|
||||
if (execute) break
|
||||
}
|
||||
}
|
||||
if (execute) {
|
||||
log(2, (if (!wrkDir.name.equals(".")) wrkDir.name else "") + "> " + args.joinToString(" "))
|
||||
val pb = ProcessBuilder().command(args.toList())
|
||||
pb.directory(wrkDir)
|
||||
val proc = pb.start()
|
||||
val err = proc.waitFor(30, TimeUnit.SECONDS)
|
||||
val stdout = if (proc.inputStream.available() > 0) fromStream(proc.inputStream) else emptyList()
|
||||
val stderr = if (proc.errorStream.available() > 0) fromStream(proc.errorStream) else emptyList()
|
||||
val cmdInfo = "Program \"" + args.joinToString(" ") + "\" (in directory \"${wrkDir.path}\"): "
|
||||
|
||||
if (!err) {
|
||||
errorMessage.append(cmdInfo).append("TIMEOUT")
|
||||
success = false
|
||||
} else if (!fail.contains(Fail.NONE)) {
|
||||
val all = fail.contains(Fail.ALL)
|
||||
val output = fail.contains(Fail.OUTPUT)
|
||||
if ((all || fail.contains(Fail.EXIT) || fail.contains(Fail.NORMAL)) && proc.exitValue() > 0) {
|
||||
errorMessage.append(cmdInfo).append("EXIT ${proc.exitValue()}")
|
||||
if (stderr.isNotEmpty()) errorMessage.append(", STDERR: ").append(stderr[0])
|
||||
success = false
|
||||
} else if ((all || output || fail.contains(Fail.STDERR) || fail.contains(Fail.NORMAL))
|
||||
&& stderr.isNotEmpty()) {
|
||||
errorMessage.append(cmdInfo).append("STDERR, ").append(stderr[0])
|
||||
success = false
|
||||
} else if ((all || output || fail.contains(Fail.STDOUT)) && stdout.isNotEmpty()) {
|
||||
errorMessage.append(cmdInfo).append("STDOUT, ").append(stdout[0])
|
||||
success = false
|
||||
}
|
||||
}
|
||||
}
|
||||
} else {
|
||||
errorMessage.append("Invalid working directory: \"${wrkDir.canonicalPath}\"")
|
||||
success = false
|
||||
}
|
||||
|
||||
if (!success) break
|
||||
}
|
||||
|
||||
//@TODO until Cedric fixes it.
|
||||
if (!success) error(errorMessage)
|
||||
|
||||
return TaskResult(success)
|
||||
}
|
||||
|
||||
private fun fromStream(ins: InputStream): List<String> {
|
||||
|
@ -142,27 +213,35 @@ class ExecPlugin : BasePlugin(), ITaskContributor {
|
|||
}
|
||||
}
|
||||
|
||||
enum class Fail() {
|
||||
ALL, NORMAL, STDERR, STDOUT, OUTPUT, EXIT
|
||||
enum class Fail {
|
||||
ALL, EXIT, NONE, NORMAL, OUTPUT, STDERR, STDOUT
|
||||
}
|
||||
|
||||
data class CommandLine(var args: List<String> = emptyList(), var dir: String = "",
|
||||
var os: List<String> = emptyList(), var fail: Set<Fail> = emptySet())
|
||||
|
||||
data class ExecConfig(val project: Project) {
|
||||
val commandLines = arrayListOf<CommandLine>()
|
||||
|
||||
@Directive fun commandLine(args: List<String> = emptyList(), dir: String = "", os: List<String> = emptyList(),
|
||||
fail: Set<Fail> = emptySet()) {
|
||||
if (args.size > 0) commandLines.add(CommandLine(args, dir, os, fail))
|
||||
}
|
||||
enum class Os {
|
||||
CYGWIN, FREEBSD, LINUX, MAC, MINGW, MSYS, OPENVMS, OS400, SOLARIS, TANDEM, WINDOWS, ZOS
|
||||
}
|
||||
|
||||
data class CommandLine(var args: List<String> = emptyList(), var dir: String = "", var os: Set<Os> = emptySet(),
|
||||
var fail: Set<Fail> = setOf(Fail.NORMAL))
|
||||
|
||||
@Directive
|
||||
fun Project.exec(init: ExecConfig.() -> Unit): ExecConfig {
|
||||
with(ExecConfig(this)) {
|
||||
init()
|
||||
(Kobalt.findPlugin(ExecPlugin.NAME) as ExecPlugin).addExecConfig(name, this)
|
||||
return this
|
||||
class ExecConfig {
|
||||
var taskName: String = "exec"
|
||||
val commandLines = arrayListOf<CommandLine>()
|
||||
var dependsOn = listOf("assemble")
|
||||
|
||||
@Suppress("unused")
|
||||
fun commandLine(vararg args: String, dir: String = "", os: Set<Os> = emptySet(),
|
||||
fail: Set<Fail> = setOf(Fail.NORMAL)) {
|
||||
if (args.isNotEmpty()) commandLines.add(CommandLine(listOf(*args), dir, os, fail))
|
||||
}
|
||||
}
|
||||
|
||||
@Suppress("unused")
|
||||
@Directive
|
||||
fun Project.exec(init: ExecConfig.() -> Unit) {
|
||||
ExecConfig().let { config ->
|
||||
config.init()
|
||||
(Plugins.findPlugin(ExecPlugin.NAME) as ExecPlugin).addConfiguration(this, config)
|
||||
}
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
/*
|
||||
* MainTest.kt
|
||||
*
|
||||
* Copyright (c) 2016, Erik C. Thauvin (erik@thauvin.net)
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions are met:
|
||||
*
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
* list of conditions and the following disclaimer.
|
||||
*
|
||||
* Redistributions in binary form must reproduce the above copyright notice,
|
||||
* this list of conditions and the following disclaimer in the documentation
|
||||
* and/or other materials provided with the distribution.
|
||||
*
|
||||
* Neither the name of this project nor the names of its contributors may be
|
||||
* used to endorse or promote products derived from this software without
|
||||
* specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
package com.example
|
||||
|
||||
import org.testng.annotations.Test
|
||||
|
||||
class ExampleTest {
|
||||
@Test
|
||||
fun f() = println("Running test")
|
||||
}
|
Binary file not shown.
|
@ -1 +0,0 @@
|
|||
kobalt.version=0.843
|
Loading…
Add table
Add a link
Reference in a new issue