diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-05-18 00:36:15 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-05-18 14:22:23 +0200 |
| commit | 689c873ff68b6c8fd66740603dad6efa3bf8ab47 (patch) | |
| tree | ef21ebff0d2cd8ff37208f760c33c9f2ee950f94 /opendc-web/opendc-web-runner/build.gradle.kts | |
| parent | 3c4afb14452f2ae28d66b349f080b5dea8b1366b (diff) | |
refactor(web/runner): Move runner CLI into separate configuration
This change splits the command line interface from the OpenDC web runner
into a separate configuration. We plan to re-use the runner code for a Quarkus
extension that integrates the runner in development mode.
Diffstat (limited to 'opendc-web/opendc-web-runner/build.gradle.kts')
| -rw-r--r-- | opendc-web/opendc-web-runner/build.gradle.kts | 64 |
1 files changed, 52 insertions, 12 deletions
diff --git a/opendc-web/opendc-web-runner/build.gradle.kts b/opendc-web/opendc-web-runner/build.gradle.kts index c1e3b976..a5723994 100644 --- a/opendc-web/opendc-web-runner/build.gradle.kts +++ b/opendc-web/opendc-web-runner/build.gradle.kts @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 AtLarge Research + * Copyright (c) 2022 AtLarge Research * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -24,27 +24,67 @@ description = "Experiment runner for OpenDC" /* Build configuration */ plugins { - `kotlin-conventions` - `testing-conventions` - application + `kotlin-library-conventions` + distribution } -application { - mainClass.set("org.opendc.web.runner.MainKt") +val cli: SourceSet by sourceSets.creating { + compileClasspath += sourceSets["main"].output + runtimeClasspath += sourceSets["main"].output +} + +val cliImplementation: Configuration by configurations.getting { + extendsFrom(configurations["implementation"]) +} +val cliRuntimeOnly: Configuration by configurations.getting +val cliRuntimeClasspath: Configuration by configurations.getting { + extendsFrom(configurations["runtimeClasspath"]) +} + +val cliJar by tasks.creating(Jar::class) { + from(cli.output) + + archiveBaseName.set("${project.name}-cli") } dependencies { + api(projects.opendcWeb.opendcWebClient) implementation(projects.opendcCompute.opendcComputeSimulator) implementation(projects.opendcCompute.opendcComputeWorkload) implementation(projects.opendcSimulator.opendcSimulatorCore) implementation(projects.opendcTrace.opendcTraceApi) - implementation(projects.opendcWeb.opendcWebClient) implementation(libs.kotlin.logging) - implementation(libs.clikt) - implementation(libs.sentry.log4j2) - implementation(kotlin("reflect")) - runtimeOnly(projects.opendcTrace.opendcTraceOpendc) - runtimeOnly(libs.log4j.slf4j) + runtimeOnly(projects.opendcTrace.opendcTraceBitbrains) + + cliImplementation(libs.clikt) + cliImplementation(libs.sentry.log4j2) + + cliRuntimeOnly(projects.opendcTrace.opendcTraceOpendc) + cliRuntimeOnly(libs.log4j.slf4j) +} + +val createCli by tasks.creating(CreateStartScripts::class) { + dependsOn(cliJar) + + applicationName = "opendc-runner" + mainClass.set("org.opendc.web.runner.cli.MainKt") + classpath = cliJar.outputs.files + cliRuntimeClasspath + outputDir = project.buildDir.resolve("scripts") +} + +distributions { + main { + contents { + into("bin") { + from(createCli) + } + + into("lib") { + from(cliJar) + from(cliRuntimeClasspath) // Also includes main classpath + } + } + } } |
