From 0105e16b33c52b1b656b66bb648e6ce3513bc8b9 Mon Sep 17 00:00:00 2001 From: akolomentsev Date: Wed, 4 Apr 2018 17:04:40 -0700 Subject: [PATCH] composition-drawer: refactoring --- gradle.properties | 2 +- libs/composition-drawer/build.gradle | 1 + libs/composition-drawer/readme.md | 82 ++++++++++++++++ libs/composition-drawer/readme.template.md | 91 ++++++++++++++++++ .../GenerateCompositionImageTask.kt | 5 +- .../com/satori/libs/composition/drawer/Lib.kt | 2 +- .../libs/composition/drawer/AppExample.kt | 2 + libs/gtfs/readme.md | 4 +- mods-examples/composition-drawer/build.gradle | 36 ++++++- .../composition-drawer/docs/diagram.png | Bin 7456 -> 7411 bytes .../composition-drawer/docs/diagram2.png | Bin 0 -> 7456 bytes readme.gradle | 9 ++ readme.md | 5 +- readme.template.md | 1 + 14 files changed, 230 insertions(+), 10 deletions(-) create mode 100644 libs/composition-drawer/readme.md create mode 100644 libs/composition-drawer/readme.template.md rename libs/composition-drawer/src/{com/satori/libs/composition/drawer => }/GenerateCompositionImageTask.kt (89%) create mode 100644 mods-examples/composition-drawer/docs/diagram2.png create mode 100644 readme.gradle diff --git a/gradle.properties b/gradle.properties index 4286b35..d1df899 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ group=com.satori -version=0.5.11-SNAPSHOT +version=0.5.12-SNAPSHOT #nexusUsername= #nexusPassword= diff --git a/libs/composition-drawer/build.gradle b/libs/composition-drawer/build.gradle index 7ac2b60..8af33f1 100644 --- a/libs/composition-drawer/build.gradle +++ b/libs/composition-drawer/build.gradle @@ -1,4 +1,5 @@ apply from: rootProject.file('metainfo.gradle') +apply from: rootProject.file('readme.gradle') // main dependencies dependencies { diff --git a/libs/composition-drawer/readme.md b/libs/composition-drawer/readme.md new file mode 100644 index 0000000..60528da --- /dev/null +++ b/libs/composition-drawer/readme.md @@ -0,0 +1,82 @@ +## Composition diagram drawer + + +#### Example using dedicated 'GenerateCompositionDiagram' gradle task +```gradle +buildscript{ + repositories { + mavenCentral() + maven { + url('https://oss.sonatype.org/content/repositories/snapshots/') + } + } + dependencies { + classpath "com.satori:satori-libs-composition-drawer:0.5.12-SNAPSHOT" + } +} + +task generateCompositionDiagram(type: GenerateCompositionDiagramTask) { + group "codegen" + + cfgPath = file("path/to/config.json") + imgPath = file("path/to/diagram.png") + blockWidth = 230 + blockHeight = 45 + + inputs.file("build.gradle") +} +``` + +### Example using 'JavaExec' gradle task +```gradle +repositories { + mavenCentral() + maven { + url('https://oss.sonatype.org/content/repositories/snapshots/') + } +} + +configurations{compositionDrawer} +dependencies { + compositionDrawer "com.satori:satori-libs-composition-drawer:0.5.12-SNAPSHOT" +} + +task generateCompositionDiagram(type: JavaExec) { + group "codegen" + + def cfgPath = file("path/to/config.json") + def imgPath = file("path/to/diagram.png") + + inputs.file(cfgPath) + outputs.file(imgPath) + + classpath = configurations.compositionDrawer + main = 'com.satori.libs.composition.drawer.App' + + args "--cfg-path", cfgPath + args "--img-path", imgPath + args "--block-width", 230 + args "--block-height", 45 + + doFirst { + println "generating composition diagram ...." + println commandLine.join(" ") + } +} +``` + + +### Maven (snapshots) +```xml + + https://oss.sonatype.org/content/repositories/snapshots/ + +``` +```xml + + com.satori + satori-libs-composition-drawer + 0.5.12-SNAPSHOT + +``` + diff --git a/libs/composition-drawer/readme.template.md b/libs/composition-drawer/readme.template.md new file mode 100644 index 0000000..70cad4b --- /dev/null +++ b/libs/composition-drawer/readme.template.md @@ -0,0 +1,91 @@ +## Composition diagram drawer + + +#### Example using dedicated 'GenerateCompositionDiagram' gradle task +```gradle +buildscript{ + repositories { + mavenCentral() + maven { + url('https://oss.sonatype.org/content/repositories/snapshots/') + } + } + dependencies { + classpath "com.satori:satori-libs-composition-drawer:${project.version}" + } +} + +task generateCompositionDiagram(type: GenerateCompositionDiagramTask) { + group "codegen" + + cfgPath = file("path/to/config.json") + imgPath = file("path/to/diagram.png") + blockWidth = 230 + blockHeight = 45 + + inputs.file("build.gradle") +} +``` + +### Example using 'JavaExec' gradle task +```gradle +repositories { + mavenCentral() + maven { + url('https://oss.sonatype.org/content/repositories/snapshots/') + } +} + +configurations{compositionDrawer} +dependencies { + compositionDrawer "com.satori:satori-libs-composition-drawer:${project.version}" +} + +task generateCompositionDiagram(type: JavaExec) { + group "codegen" + + def cfgPath = file("path/to/config.json") + def imgPath = file("path/to/diagram.png") + + inputs.file(cfgPath) + outputs.file(imgPath) + + classpath = configurations.compositionDrawer + main = 'com.satori.libs.composition.drawer.App' + + args "--cfg-path", cfgPath + args "--img-path", imgPath + args "--block-width", 230 + args "--block-height", 45 + + doFirst { + println "generating composition diagram ...." + println commandLine.join(" ") + } +} +``` + +<% if(!project.version.endsWith("-SNAPSHOT")) {%> +### Maven (releases) +```xml + + com.satori + satori-libs-composition-drawer + ${project.version} + +``` +<% } else {%> +### Maven (snapshots) +```xml + + https://oss.sonatype.org/content/repositories/snapshots/ + +``` +```xml + + com.satori + satori-libs-composition-drawer + ${project.version} + +``` +<% }%> diff --git a/libs/composition-drawer/src/com/satori/libs/composition/drawer/GenerateCompositionImageTask.kt b/libs/composition-drawer/src/GenerateCompositionImageTask.kt similarity index 89% rename from libs/composition-drawer/src/com/satori/libs/composition/drawer/GenerateCompositionImageTask.kt rename to libs/composition-drawer/src/GenerateCompositionImageTask.kt index 79e5f16..390b08a 100644 --- a/libs/composition-drawer/src/com/satori/libs/composition/drawer/GenerateCompositionImageTask.kt +++ b/libs/composition-drawer/src/GenerateCompositionImageTask.kt @@ -1,13 +1,12 @@ -package com.satori.libs.composition.drawer - import com.mxgraph.util.* +import com.satori.libs.composition.drawer.* import org.gradle.api.* import org.gradle.api.tasks.* import java.awt.* import java.io.* import javax.imageio.* -open class GenerateCompositionImageTask : DefaultTask() { +open class GenerateCompositionDiagramTask : DefaultTask() { @InputFile var cfgPath: File? = null diff --git a/libs/composition-drawer/src/com/satori/libs/composition/drawer/Lib.kt b/libs/composition-drawer/src/com/satori/libs/composition/drawer/Lib.kt index 59fcbd8..9406989 100644 --- a/libs/composition-drawer/src/com/satori/libs/composition/drawer/Lib.kt +++ b/libs/composition-drawer/src/com/satori/libs/composition/drawer/Lib.kt @@ -73,6 +73,6 @@ fun createGraph(cfgPath: String) = createGraph( ) fun createGraph(cfgPath: String, width: Double, height: Double) = createGraph( - File(cfgPath), CompositionGraphWriter.defaultWidth, CompositionGraphWriter.defaultHeight + File(cfgPath), width, height ) diff --git a/libs/composition-drawer/tests/src/com/satori/libs/composition/drawer/AppExample.kt b/libs/composition-drawer/tests/src/com/satori/libs/composition/drawer/AppExample.kt index 45e64cb..dc2052d 100644 --- a/libs/composition-drawer/tests/src/com/satori/libs/composition/drawer/AppExample.kt +++ b/libs/composition-drawer/tests/src/com/satori/libs/composition/drawer/AppExample.kt @@ -6,6 +6,8 @@ object AppExample { fun main(vararg args: String) { App.main( "--cfg-path", "mods-examples/big-blue-bus/res/com/satori/mods/resources/config.json", + "--block-width", "100", + "--block-height", "100", "--img-path", "big-blue-bus.png" ) } diff --git a/libs/gtfs/readme.md b/libs/gtfs/readme.md index 3b4ca87..96e46f5 100644 --- a/libs/gtfs/readme.md +++ b/libs/gtfs/readme.md @@ -14,13 +14,13 @@ classes are generated based on [gtfs-realtime.proto](https://developers.google.c com.satori satori-libs-gtfs - 0.5.11-SNAPSHOT + 0.5.12-SNAPSHOT ``` ### Download -[satori-libs-gtfs.v0.5.11-SNAPSHOT.zip](https://github.com/satori-com/satori-composer/releases/download/v0.5.11-SNAPSHOT/satori-libs-gtfs.v0.5.11-SNAPSHOT.zip)
+[satori-libs-gtfs.v0.5.12-SNAPSHOT.zip](https://github.com/satori-com/satori-composer/releases/download/v0.5.12-SNAPSHOT/satori-libs-gtfs.v0.5.12-SNAPSHOT.zip)
[or see latest releases](https://github.com/satori-com/satori-composer/releases/latest) ### Examples diff --git a/mods-examples/composition-drawer/build.gradle b/mods-examples/composition-drawer/build.gradle index 032a768..8cb6434 100644 --- a/mods-examples/composition-drawer/build.gradle +++ b/mods-examples/composition-drawer/build.gradle @@ -12,13 +12,47 @@ buildscript{ } } -task generateCompositionImage(type: GenerateCompositionImageTask){ +task generateCompositionImage(type: GenerateCompositionImageTask) { group "codegen" cfgPath = file("res/com/satori/mods/resources/config.json") imgPath = file("docs/diagram.png") + blockWidth = 230 + blockHeight = 45 + inputs.file("build.gradle") } generateCode.dependsOn generateCompositionImage + + +configurations{compositionDrawer} +dependencies { + compositionDrawer "com.satori:satori-libs-composition-drawer:0.5.11-SNAPSHOT" +} + +task generateCompositionImage2(type: JavaExec) { + group 'codegen' + + def cfgPath = file("res/com/satori/mods/resources/config.json") + def imgPath = file("docs/diagram2.png") + + inputs.file(cfgPath) + outputs.file(imgPath) + + classpath = configurations.compositionDrawer + main = 'com.satori.libs.composition.drawer.App' + + args "--cfg-path", cfgPath + args "--img-path", imgPath + args "--block-width", 230 + args "--block-height", 45 + + doFirst { + println "generating composition diagram ...." + println commandLine.join(" ") + } +} +generateCode.dependsOn generateCompositionImage2 + dependencies { testCompile project(':libs-testlib') } \ No newline at end of file diff --git a/mods-examples/composition-drawer/docs/diagram.png b/mods-examples/composition-drawer/docs/diagram.png index 952846807ebf029c0946bf0e7fbafaf0280e9bcd..95fbe59006d895893605a0346af29dae674517a2 100644 GIT binary patch literal 7411 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 DYrlsA diff --git a/mods-examples/composition-drawer/docs/diagram2.png b/mods-examples/composition-drawer/docs/diagram2.png new file mode 100644 index 0000000000000000000000000000000000000000..952846807ebf029c0946bf0e7fbafaf0280e9bcd GIT binary patch literal 7456 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 DYrlsA literal 0 HcmV?d00001 diff --git a/readme.gradle b/readme.gradle new file mode 100644 index 0000000..63f3f98 --- /dev/null +++ b/readme.gradle @@ -0,0 +1,9 @@ + +task generateReadme(type: TransformTask) { + group 'codegen' + + template = file('readme.template.md') + output = file('readme.md') +} + +generateCode.dependsOn generateReadme \ No newline at end of file diff --git a/readme.md b/readme.md index ad759a1..1288e60 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,6 @@ ## Satori Composer (preview) [![Build Status](https://travis-ci.org/satori-com/satori-composer.svg?branch=dev)](https://travis-ci.org/satori-com/satori-composer) -[![Build Status](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-composer.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-composer/0.5.11-SNAPSHOT/) +[![Build Status](https://img.shields.io/nexus/s/https/oss.sonatype.org/com.satori/satori-composer.svg)](https://oss.sonatype.org/content/repositories/snapshots/com/satori/satori-composer/0.5.12-SNAPSHOT/) #### Example ![diagram](docs/files/big-blue-bus-composition.png) @@ -71,6 +71,7 @@ - [Mods Suite](https://www.satori.com/docs/opensource/composer#mods-suite) - [Building and Running](https://www.satori.com/docs/opensource/composer#building-and-running) - [Async support library](docs/async/readme.md) +- [Composition diagram drawer](libs/composition-drawer/readme.md) ### Common Libraries - [Gtfs Library For Real-Time](https://github.com/satori-com/satori-composer/tree/dev/libs/gtfs) @@ -86,7 +87,7 @@ com.satori satori-composer - 0.5.11-SNAPSHOT + 0.5.12-SNAPSHOT ``` diff --git a/readme.template.md b/readme.template.md index 9e56b24..ebf72ca 100644 --- a/readme.template.md +++ b/readme.template.md @@ -14,6 +14,7 @@ - [Mods Suite](https://www.satori.com/docs/opensource/composer#mods-suite) - [Building and Running](https://www.satori.com/docs/opensource/composer#building-and-running) - [Async support library](docs/async/readme.md) +- [Composition diagram drawer](libs/composition-drawer/readme.md) ### Common Libraries - [Gtfs Library For Real-Time](https://github.com/satori-com/satori-composer/tree/dev/libs/gtfs)