Skip to content

Commit

Permalink
Merge pull request #581 from francisdb/master
Browse files Browse the repository at this point in the history
re #577 fix for running the bash file in a path with spaces
  • Loading branch information
muuki88 committed May 27, 2015
2 parents 9a1ad1e + f3e0b08 commit 6cd1c3a
Show file tree
Hide file tree
Showing 8 changed files with 98 additions and 6 deletions.
Expand Up @@ -235,9 +235,9 @@ run() {
fi

if [ -n "$custom_mainclass" ]; then
mainclass="$custom_mainclass"
mainclass=("$custom_mainclass")
else
mainclass="$app_mainclass"
mainclass=("${app_mainclass[@]}")
fi

# Now we check to see if there are any java opts on the environment. These get listed first, with the script able to override them.
Expand All @@ -250,7 +250,7 @@ run() {
${java_opts[@]} \
"${java_args[@]}" \
-cp "$(fix_classpath "$app_classpath")" \
$mainclass \
"${mainclass[@]}" \
"${app_commands[@]}" \
"${residual_args[@]}"

Expand Down
Expand Up @@ -45,7 +45,14 @@ object JavaAppBashScript {
def configFileDefine(configFile: String) =
"declare -r script_conf_file=\"%s\"" format (configFile)

def mainClassDefine(mainClass: String) =
"declare -r app_mainclass=\"%s\"\n" format (mainClass)
def mainClassDefine(mainClass: String) = {
val jarPrefixed = """^\-jar (.*)""".r
val args = mainClass match {
case jarPrefixed(jarName) => Seq("-jar", jarName)
case className => Seq(className)
}
val quotedArgsSpaceSeparated = args.map(s => "\"" + s + "\"").mkString(" ")
"declare -a app_mainclass=(%s)\n" format (quotedArgsSpaceSeparated)
}

}
39 changes: 39 additions & 0 deletions src/sbt-test/jar/launcher-jar with spaces/build.sbt
@@ -0,0 +1,39 @@
enablePlugins(LauncherJarPlugin)

name := "launcher-jar-test"

version := "0.1.0"

// test dependencies sample
libraryDependencies ++= Seq(
"com.typesafe.akka" %% "akka-kernel" % "2.3.4"
)

TaskKey[Unit]("check-classpath") := {
val dir = (stagingDirectory in Universal).value
val bat = IO.read(dir / "bin" / "launcher-jar-test.bat")
assert(bat contains "set \"APP_CLASSPATH=\"", "bat should set APP_CLASSPATH:\n" + bat)
assert(bat contains "set \"APP_MAIN_CLASS=-jar %APP_LIB_DIR%\\launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\"",
"bat should set APP_MAIN_CLASS:\n" + bat)
val bash = IO.read(dir / "bin" / "launcher-jar-test")
assert(bash contains "declare -r app_classpath=\"\"", "bash should declare app_classpath:\n" + bash)
assert(bash contains "declare -a app_mainclass=(\"-jar\" \"$lib_dir/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\")",
"bash should declare app_mainclass:\n" + bash)
val jar = new java.util.jar.JarFile(dir / "lib" / "launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar")
val attributes = jar.getManifest().getMainAttributes()
assert(attributes.getValue("Class-Path").toString() contains "com.typesafe.akka.akka-actor",
"MANIFEST Class-Path should contain akka-actor:\n" + attributes.getValue("Class-Path").toString())
assert(attributes.getValue("Main-Class").toString() contains "test.Test",
"MANIFEST Main-Class should contain test.Test:\n" + attributes.getValue("Main-Class").toString())
jar close
}

TaskKey[Unit]("run-check") := {
val dir = (stagingDirectory in Universal).value
val cmd = if(System.getProperty("os.name").contains("Windows")){
Seq("cmd", "/c", (dir / "bin" / "launcher-jar-test.bat").getAbsolutePath)
}else{
Seq((dir / "bin" / "launcher-jar-test").getAbsolutePath)
}
assert(Process(cmd).!! contains "SUCCESS!")
}
@@ -0,0 +1 @@
addSbtPlugin("com.typesafe.sbt" % "sbt-native-packager" % sys.props("project.version"))
@@ -0,0 +1,19 @@
package test

// use dependency library

import akka.actor._
import akka.routing.RoundRobinRouter

class PrintActor extends Actor{
def receive = {
case msg => println(msg)
}
}

object Test extends App {
val system = ActorSystem("testSystem")
val router = system.actorOf(Props[PrintActor])
router ! "SUCCESS!!"
system.shutdown
}
@@ -0,0 +1,21 @@
@echo off
rem this template is minimal for test independent

@setlocal enabledelayedexpansion
@echo off

set "@@APP_ENV_NAME@@_HOME=%~dp0\\.."

set "APP_LIB_DIR=%@@APP_ENV_NAME@@_HOME%\lib\"

set _JAVACMD=%JAVACMD%

if "%_JAVACMD%"=="" (
if not "%JAVA_HOME%"=="" (
if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
)
)

@@APP_DEFINES@@

"%_JAVACMD%" -cp "%APP_CLASSPATH%" %APP_MAIN_CLASS% %*
5 changes: 5 additions & 0 deletions src/sbt-test/jar/launcher-jar with spaces/test
@@ -0,0 +1,5 @@
# Run the staging and check the script.
> stage
$ exists target/universal/stage/lib/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar
> check-classpath
> run-check
2 changes: 1 addition & 1 deletion src/sbt-test/jar/launcher-jar/build.sbt
Expand Up @@ -17,7 +17,7 @@ TaskKey[Unit]("check-classpath") := {
"bat should set APP_MAIN_CLASS:\n" + bat)
val bash = IO.read(dir / "bin" / "launcher-jar-test")
assert(bash contains "declare -r app_classpath=\"\"", "bash should declare app_classpath:\n" + bash)
assert(bash contains "declare -r app_mainclass=\"-jar $lib_dir/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\"",
assert(bash contains "declare -a app_mainclass=(\"-jar\" \"$lib_dir/launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar\")",
"bash should declare app_mainclass:\n" + bash)
val jar = new java.util.jar.JarFile(dir / "lib" / "launcher-jar-test.launcher-jar-test-0.1.0-launcher.jar")
val attributes = jar.getManifest().getMainAttributes()
Expand Down

0 comments on commit 6cd1c3a

Please sign in to comment.