From d6909d35be82056b25bf0dfe22d272a490312d1a Mon Sep 17 00:00:00 2001 From: Oliver Schneider Date: Fri, 8 May 2020 20:17:12 +0200 Subject: [PATCH] Add addApp function to align with bash version --- .../packager/archetypes/scripts/ash-template | 7 +++++- src/sbt-test/ash/add-app-settings/build.sbt | 23 +++++++++++++++++++ .../ash/add-app-settings/project/plugins.sbt | 1 + .../src/main/scala/MainApp.scala | 3 +++ src/sbt-test/ash/add-app-settings/test | 5 ++++ 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 src/sbt-test/ash/add-app-settings/build.sbt create mode 100644 src/sbt-test/ash/add-app-settings/project/plugins.sbt create mode 100644 src/sbt-test/ash/add-app-settings/src/main/scala/MainApp.scala create mode 100644 src/sbt-test/ash/add-app-settings/test diff --git a/src/main/resources/com/typesafe/sbt/packager/archetypes/scripts/ash-template b/src/main/resources/com/typesafe/sbt/packager/archetypes/scripts/ash-template index 729d4c3f7..58969d9e2 100644 --- a/src/main/resources/com/typesafe/sbt/packager/archetypes/scripts/ash-template +++ b/src/main/resources/com/typesafe/sbt/packager/archetypes/scripts/ash-template @@ -32,6 +32,10 @@ addJava () { java_opts="$java_opts $1" } +addApp () { + app_commands="$app_commands $1" +} + addResidual () { residual_args="$residual_args \"$1\"" } @@ -91,6 +95,7 @@ process_args () { fi } +app_commands="" residual_args="" real_script_path="$(realpath "$0")" app_home="$(realpath "$(dirname "$real_script_path")")" @@ -107,4 +112,4 @@ java_cmd="$(get_java_cmd)" # If a configuration file exist, read the contents to $opts [ -f "$script_conf_file" ] && opts=$(loadConfigFile "$script_conf_file") -eval "exec $java_cmd $java_opts -classpath $app_classpath $opts $app_mainclass $residual_args" +eval "exec $java_cmd $java_opts -classpath $app_classpath $opts $app_mainclass $app_commands $residual_args" diff --git a/src/sbt-test/ash/add-app-settings/build.sbt b/src/sbt-test/ash/add-app-settings/build.sbt new file mode 100644 index 000000000..43bb6ff4a --- /dev/null +++ b/src/sbt-test/ash/add-app-settings/build.sbt @@ -0,0 +1,23 @@ +enablePlugins(JavaAppPackaging, AshScriptPlugin) + +name := "simple-app" + +version := "0.1.0" + +bashScriptExtraDefines ++= Seq("""addApp "info"""", """addApp "help"""") + +TaskKey[Unit]("scriptCheck") := { + val startScript = (stagingDirectory in Universal).value / "bin" / executableScriptName.value + val options = IO.read(startScript) + assert(options contains """addApp "info"""", "Script doesn't contain app setting:\n" + options) + assert(options contains """addApp "help"""", "Script doesn't contain app setting:\n" + options) +} + +TaskKey[Unit]("runCheck") := { + val cwd = (stagingDirectory in Universal).value + val cmd = Seq((cwd / "bin" / packageName.value).getAbsolutePath) + val output = (sys.process.Process(cmd, cwd).!!).replaceAll("\n", "") + + assert(output.contains("info"), s"Application did not receive residual arg 'info'") + assert(output.contains("help"), s"Application did not receive residual arg 'help'") +} diff --git a/src/sbt-test/ash/add-app-settings/project/plugins.sbt b/src/sbt-test/ash/add-app-settings/project/plugins.sbt new file mode 100644 index 000000000..b53de154c --- /dev/null +++ b/src/sbt-test/ash/add-app-settings/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("project.version")) diff --git a/src/sbt-test/ash/add-app-settings/src/main/scala/MainApp.scala b/src/sbt-test/ash/add-app-settings/src/main/scala/MainApp.scala new file mode 100644 index 000000000..e224d63f6 --- /dev/null +++ b/src/sbt-test/ash/add-app-settings/src/main/scala/MainApp.scala @@ -0,0 +1,3 @@ +object MainApp extends App { + println(args.mkString("|")) +} diff --git a/src/sbt-test/ash/add-app-settings/test b/src/sbt-test/ash/add-app-settings/test new file mode 100644 index 000000000..b2923955e --- /dev/null +++ b/src/sbt-test/ash/add-app-settings/test @@ -0,0 +1,5 @@ +# Run the staging and check the script. +> stage +$ exists target/universal/stage/bin/simple-app +> scriptCheck +> runCheck \ No newline at end of file