From da9aad15e42edc5cf4c62c6be5a0629d21b8d859 Mon Sep 17 00:00:00 2001 From: "Erik C. Thauvin" Date: Tue, 2 Jan 2018 17:45:11 -0800 Subject: [PATCH] Initial commit --- .circleci/config.yml | 37 + .gitattributes | 5 + .gitignore | 31 + .idea/encodings.xml | 6 + .idea/inspectionProfiles/Project_Default.xml | 53 ++ .idea/kobalt.xml | 19 + .idea/misc.xml | 6 + .idea/modules.xml | 9 + .travis.yml | 19 + LICENSE.TXT | 27 + README.md | 49 ++ clean.sh | 37 + example/kobalt/src/Build.kt | 46 ++ example/kobalt/wrapper/kobalt-wrapper.jar | Bin 0 -> 9230 bytes .../kobalt/wrapper/kobalt-wrapper.properties | 1 + example/kobaltw | 2 + example/kobaltw.bat | 4 + example/pom.xml | 43 ++ example/src/main/kotlin/com/example/Main.kt | 3 + .../src/test/kotlin/com/example/MainTest.kt | 8 + kobalt-pom2xml.iml | 709 ++++++++++++++++++ kobalt/Build.kt.iml | 33 + kobalt/src/Build.kt | 77 ++ kobalt/wrapper/kobalt-wrapper.jar | Bin 0 -> 9230 bytes kobalt/wrapper/kobalt-wrapper.properties | 1 + kobaltw | 2 + kobaltw.bat | 4 + .../kobalt/plugin/pom2xml/Pom2XmlPlugin.kt | 101 +++ src/main/resources/META-INF/kobalt-plugin.xml | 6 + 29 files changed, 1338 insertions(+) create mode 100644 .circleci/config.yml create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/kobalt.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .travis.yml create mode 100644 LICENSE.TXT create mode 100644 README.md create mode 100644 clean.sh create mode 100644 example/kobalt/src/Build.kt create mode 100644 example/kobalt/wrapper/kobalt-wrapper.jar create mode 100644 example/kobalt/wrapper/kobalt-wrapper.properties create mode 100644 example/kobaltw create mode 100644 example/kobaltw.bat create mode 100644 example/pom.xml create mode 100644 example/src/main/kotlin/com/example/Main.kt create mode 100644 example/src/test/kotlin/com/example/MainTest.kt create mode 100644 kobalt-pom2xml.iml create mode 100644 kobalt/Build.kt.iml create mode 100644 kobalt/src/Build.kt create mode 100644 kobalt/wrapper/kobalt-wrapper.jar create mode 100644 kobalt/wrapper/kobalt-wrapper.properties create mode 100644 kobaltw create mode 100644 kobaltw.bat create mode 100644 src/main/kotlin/net/thauvin/erik/kobalt/plugin/pom2xml/Pom2XmlPlugin.kt create mode 100644 src/main/resources/META-INF/kobalt-plugin.xml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 0000000..b59dd67 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,37 @@ +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 & Test + command: ./kobaltw assemble test + + - store_artifacts: + path: kobaltBuild/test-output/ + destination: test-output + - store_test_results: + path: kobaltBuild/test-output/ \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..6ec2ae2 --- /dev/null +++ b/.gitattributes @@ -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 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..fbd6166 --- /dev/null +++ b/.gitignore @@ -0,0 +1,31 @@ +**/.idea/dictionaries +**/.idea/gradle.xml +**/.idea/libraries +**/.idea/tasks.xml +**/.idea/workspace.xml +*.iws +*.sublime-* +.classpath +.DS_Store +.gradle +.kobalt +.nb-gradle +.project +.settings +/bin +/build +/deploy +/dist +/example/libs +/gen +/gradle.properties +/libs +/out +/proguard-project.txt +/project.properties +/target +/test-output +ehthumbs.db +kobaltBuild +local.properties +Thumbs.db \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..97626ba --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..8ff795e --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,53 @@ + + + + \ No newline at end of file diff --git a/.idea/kobalt.xml b/.idea/kobalt.xml new file mode 100644 index 0000000..539392b --- /dev/null +++ b/.idea/kobalt.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..9dea2e2 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..33e190f --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..6b6a336 --- /dev/null +++ b/.travis.yml @@ -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 test diff --git a/LICENSE.TXT b/LICENSE.TXT new file mode 100644 index 0000000..b7ddd7f --- /dev/null +++ b/LICENSE.TXT @@ -0,0 +1,27 @@ +Copyright (c) 2018, 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. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..e6c1825 --- /dev/null +++ b/README.md @@ -0,0 +1,49 @@ +# pom2xml plug-in for [Kobalt](http://beust.com/kobalt/home/index.html) + +[![License (3-Clause BSD)](https://img.shields.io/badge/license-BSD%203--Clause-blue.svg?style=flat-square)](http://opensource.org/licenses/BSD-3-Clause) [![release](http://github-release-version.herokuapp.com/github/ethauvin/kobalt-pom2xml/release.svg?style=flat)](https://github.com/ethauvin/kobalt-pom2xml/releases/latest) [![Build Status](https://travis-ci.org/ethauvin/kobalt-pom2xml.svg?branch=master)](https://travis-ci.org/ethauvin/kobalt-pom2xml) [![Known Vulnerabilities](https://snyk.io/test/github/ethauvin/kobalt-pom2xml/badge.svg)](https://snyk.io/test/github/ethauvin/kobalt-pom2xml) [![CircleCI](https://circleci.com/gh/ethauvin/kobalt-pom2xml/tree/master.svg?style=shield)](https://circleci.com/gh/ethauvin/kobalt-pom2xml/tree/master) [![Download](https://api.bintray.com/packages/ethauvin/maven/kobalt-pom2xml/images/download.svg) ](https://bintray.com/ethauvin/maven/kobalt-pom2xml/_latestVersion) + + +The plug-in will generate a [Project Object Model](https://maven.apache.org/guides/introduction/introduction-to-the-pom.html) (POM) XML file for your project. + +To use the plug-in include the following in `Build.kt` file: + +```kotlin +import net.thauvin.erik.kobalt.plugin.pom2xml.* + +val bs = buildScript { + plugins("net.thauvin.erik:kobalt-pom2xml:") +} + +val p = project { + name = "example" + group = "com.example" + artifactId = name + version = "0.1" + + pom2xml { + + } +} +``` + +The `pom.xml` file will be created in the project's directory. + +[View Example](https://github.com/ethauvin/kobalt-pom2xml/blob/master/example/kobalt/src/Build.kt) + +## Parameters + +The following optional configuration parameters are available. + +Attribute | Description +:---------------|:---------------------------------------------------------------------------------- +`name` | The directory location to save the POM file to, defaults to the project directory. +`loc` | The name of the POM file, defaults to `pom.xml`. + +For example: + +```kotlin + pom2xml { + name = "pom-test.xml" + loc = "foo/bar" + } +``` \ No newline at end of file diff --git a/clean.sh b/clean.sh new file mode 100644 index 0000000..552252d --- /dev/null +++ b/clean.sh @@ -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 \ No newline at end of file diff --git a/example/kobalt/src/Build.kt b/example/kobalt/src/Build.kt new file mode 100644 index 0000000..476d477 --- /dev/null +++ b/example/kobalt/src/Build.kt @@ -0,0 +1,46 @@ +import com.beust.kobalt.* +import com.beust.kobalt.plugin.application.* +import com.beust.kobalt.plugin.packaging.* +import net.thauvin.erik.kobalt.plugin.pom2xml.* + +// ./kobaltw pom2xml + +val bs = buildScript { + repos(localMaven()) + plugins("net.thauvin.erik:kobalt-pom2xml:0.1.0") +} + +val p = project { + + name = "example" + group = "com.example" + artifactId = name + version = "0.1" + + dependencies { + compile("com.beust:jcommander:1.47") + //compile("org.slf4j:slf4j-api:") + compile("ch.qos.logback:logback-core:0.5") + compile("ch.qos.logback:logback-classic:1.1.7") + compile("commons-httpclient:commons-httpclient:3.1") + compile("com.beust:kobalt-plugin-api:0.878") + } + + dependenciesTest { + compile("org.testng:testng:") + } + + assemble { + jar { + } + } + + application { + mainClass = "com.example.MainKt" + } + + pom2xml { + // loc = "foo/bar" + // filename = "pom-example.xml" + } +} \ No newline at end of file diff --git a/example/kobalt/wrapper/kobalt-wrapper.jar b/example/kobalt/wrapper/kobalt-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7c076e6441773971b1a9a1b596ac45c2ba31d14e GIT binary patch literal 9230 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 + + 4.0.0 + com.example + example + 0.1 + example + + + + com.beust + jcommander + 1.47 + + + ch.qos.logback + logback-core + 0.5 + + + ch.qos.logback + logback-classic + 1.1.7 + + + commons-httpclient + commons-httpclient + 3.1 + + + com.beust + kobalt-plugin-api + 0.878 + + + org.testng + testng + (0,] + test + + + diff --git a/example/src/main/kotlin/com/example/Main.kt b/example/src/main/kotlin/com/example/Main.kt new file mode 100644 index 0000000..1df958f --- /dev/null +++ b/example/src/main/kotlin/com/example/Main.kt @@ -0,0 +1,3 @@ +package com.example + +fun main(args: Array) = println("\n\nHello Kotlin world from Kobalt\n\n") \ No newline at end of file diff --git a/example/src/test/kotlin/com/example/MainTest.kt b/example/src/test/kotlin/com/example/MainTest.kt new file mode 100644 index 0000000..96458e9 --- /dev/null +++ b/example/src/test/kotlin/com/example/MainTest.kt @@ -0,0 +1,8 @@ +package com.example + +import org.testng.annotations.Test + +class ExampleTest { + @Test + fun f() = println("Running test") +} \ No newline at end of file diff --git a/kobalt-pom2xml.iml b/kobalt-pom2xml.iml new file mode 100644 index 0000000..f0d4f8e --- /dev/null +++ b/kobalt-pom2xml.iml @@ -0,0 +1,709 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/kobalt/Build.kt.iml b/kobalt/Build.kt.iml new file mode 100644 index 0000000..19c4d31 --- /dev/null +++ b/kobalt/Build.kt.iml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/kobalt/src/Build.kt b/kobalt/src/Build.kt new file mode 100644 index 0000000..ed3a622 --- /dev/null +++ b/kobalt/src/Build.kt @@ -0,0 +1,77 @@ +import com.beust.kobalt.buildScript +import com.beust.kobalt.localMaven +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 org.apache.maven.model.Developer +import org.apache.maven.model.License +import org.apache.maven.model.Model +import org.apache.maven.model.Scm + +val bs = buildScript { + repos(localMaven()) + plugins("net.thauvin.erik:kobalt-maven-local:") +} + +val dev by profile() +val kobaltDependency = if (dev) "kobalt-plugin-api" else "kobalt-plugin-api" + +val p = project { + + name = "kobalt-pom2xml" + group = "net.thauvin.erik" + artifactId = name + version = "0.1.0" + + pom = Model().apply { + description = "pom2xml plug-in for the Kobalt build system." + url = "https://github.com/ethauvin/kobalt-pom2xml" + licenses = listOf(License().apply { + name = "BSD 3-Clause" + url = "https://opensource.org/licenses/BSD-3-Clause" + }) + scm = Scm().apply { + url = "https://github.com/ethauvin/kobalt-pom2xml" + connection = "https://github.com/ethauvin/kobalt-pom2xml.git" + developerConnection = "git@github.com:ethauvin/kobalt-pom2xml.git" + } + developers = listOf(Developer().apply { + id = "ethauvin" + name = "Erik C. Thauvin" + email = "erik@thauvin.net" + }) + } + + dependencies { + compile("com.beust:$kobaltDependency:") + compile("org.jetbrains.kotlin:kotlin-stdlib:1.2.10") + } + + dependenciesTest { + compile("org.testng:testng:6.12") + } + + assemble { + jar { + fatJar = true + } + + mavenJars { + fatJar = true + } + } + + autoGitTag { + enabled = true + push = false + message = "Version $version" + } + + bintray { + publish = true + description = "Release version $version" + vcsTag = version + } +} \ No newline at end of file diff --git a/kobalt/wrapper/kobalt-wrapper.jar b/kobalt/wrapper/kobalt-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..7c076e6441773971b1a9a1b596ac45c2ba31d14e GIT binary patch literal 9230 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, + private val taskContributor: TaskContributor) : + BasePlugin(), ITaskContributor, IConfigActor by configActor { + + // ITaskContributor + override fun tasksFor(project: Project, context: KobaltContext): List = taskContributor.dynamicTasks + + companion object { + const val NAME: String = "pom2xml" + } + + override val name = NAME + + override fun apply(project: Project, context: KobaltContext) { + super.apply(project, context) + taskContributor.addVariantTasks(this, project, context, "pom2xml", group = "publish", + runTask = { pom2xml(project) }) + } + + @Suppress("MemberVisibilityCanPrivate") + @Task(name = "pom2xml", description = "Generate Project Object Model XML file") + fun pom2xml(project: Project): TaskResult { + + // Load configuration + configurationFor(project)?.let { config -> + if (config.name.isNotBlank()) { + val loc = File(config.loc + if (config.loc.endsWith(File.separator)) "" else File.separator) + if (loc.isDirectory) { + // Write POM + File(loc, config.name).writeText(context.generatePom(project)) + } else { + warn("Invalid POM file location: ${loc.absolutePath}") + } + } else { + warn("Invalid POM file name: ${config.name}") + } + } + + return TaskResult() + } +} + +@Directive +class Pom2XmlConfig { + var loc = "." + var name = "pom.xml" +} + +@Suppress("unused") +@Directive +fun Project.pom2xml(init: Pom2XmlConfig.() -> Unit) { + Pom2XmlConfig().let { config -> + config.init() + (Plugins.findPlugin(Pom2XmlPlugin.NAME) as Pom2XmlPlugin).addConfiguration(this, config) + } +} diff --git a/src/main/resources/META-INF/kobalt-plugin.xml b/src/main/resources/META-INF/kobalt-plugin.xml new file mode 100644 index 0000000..c62c3e5 --- /dev/null +++ b/src/main/resources/META-INF/kobalt-plugin.xml @@ -0,0 +1,6 @@ + + pom2xml + + net.thauvin.erik.kobalt.plugin.pom2xml.Pom2XmlPlugin + + \ No newline at end of file