Skip to content

Commit

Permalink
Merge pull request #106 from MisteliEvooq/main
Browse files Browse the repository at this point in the history
Add output parameter to export
  • Loading branch information
jakzal authored Oct 17, 2023
2 parents 8b058be + 34ce889 commit 7e57c3a
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,6 @@

# Ignore Gradle build output directory
build

# Ignore settings for IntelliJ IDEA
.idea
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,27 @@ class ExportFunctionalTest : FunctionalTest {
assertTrue(File("${projectDir.absolutePath}/structurizr-SystemContext.puml").exists())
}

@Test
fun `it exports the workspace to a specified output dir`(@TempDir projectDir: File) {
givenWorkspace(projectDir, "workspace.dsl")
givenConfiguration(projectDir, """
plugins {
id 'pl.zalas.structurizr-cli'
}
structurizrCli {
export {
format = "plantuml"
workspace = "${projectDir.absolutePath}/workspace.dsl"
output = "${projectDir.absolutePath}/output"
}
}
""")

execute(projectDir, "structurizrCliExport")

assertTrue(File("${projectDir.absolutePath}/output/structurizr-SystemContext.puml").exists())
}

@Test
fun `it exports multiple workspaces`(@TempDir projectDir: File, @TempDir workspaceDir1: File, @TempDir workspaceDir2: File) {
givenWorkspace(workspaceDir1, "workspace1.dsl")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ class StructurizrCliPlugin : Plugin<Project> {
task.dependsOn("structurizrCliExtract")
task.workspace.set(layout.projectDirectory.file(export.workspace))
task.format.set(export.format)
task.output.set(outputDirectory(export))
task.structurizrCliJar.set(extract.flatMap { it.structurizrCliJar })
task.structurizrCliDirectory.set(structurizrDirectory(extension))
extension.exports.getOrNull(index-1)?.also { precedingExport ->
Expand Down Expand Up @@ -96,6 +97,11 @@ class StructurizrCliPlugin : Plugin<Project> {
layout.projectDirectory.dir(it)
} ?: layout.buildDirectory.dir("downloads").get()

private fun Project.outputDirectory(export: StructurizrCliPluginExtension.Export): Directory? =
export.output?.let {
layout.projectDirectory.dir(it)
}

private fun Project.structurizrDirectory(extension: StructurizrCliPluginExtension): Directory =
extension.extract.directory?.let {
layout.projectDirectory.dir(it)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ open class StructurizrCliPluginExtension {
data class Export(
var format: String = "plantuml",
var workspace: String = "workspace.dsl",
var output: String? = null,
var name: String = ""
)

Expand Down
11 changes: 10 additions & 1 deletion src/main/kotlin/pl/zalas/gradle/structurizrcli/tasks/Export.kt
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import org.gradle.api.file.RegularFileProperty
import org.gradle.api.provider.Property
import org.gradle.api.tasks.Input
import org.gradle.api.tasks.InputFile
import org.gradle.api.tasks.Optional
import org.gradle.api.tasks.OutputDirectory
import org.gradle.api.tasks.TaskAction

Expand All @@ -32,6 +33,10 @@ open class Export : DefaultTask() {
@Input
val format: Property<String> = project.objects.property(String::class.java)

@OutputDirectory
@Optional
val output: DirectoryProperty = project.objects.directoryProperty()

@InputFile
val structurizrCliJar: RegularFileProperty = project.objects.fileProperty()

Expand All @@ -49,7 +54,11 @@ open class Export : DefaultTask() {
spec.workingDir(project.layout.projectDirectory)
spec.classpath(structurizrCliDirectory.dir("lib/*"))
spec.mainClass.set("com.structurizr.cli.StructurizrCliApplication")
spec.args("export", "-workspace", workspace.get(), "-format", format.get())
spec.args(args())
}
}


private fun args() = listOf("export", "-workspace", workspace.get(), "-format", format.get()) +
if (output.isPresent) listOf("-output", output.get()) else emptyList()
}

0 comments on commit 7e57c3a

Please sign in to comment.