diff --git a/README.md b/README.md index 4cb606b..ed89d38 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,14 @@ - `--prefix=[CONTEXTPATH]` - `--host=[HOSTNAME]` - `--gitbucket.home=[DATA_DIR]` +- `--temp_dir=[TEMP_DIR]` + +`TEMP_DIR` is used as the [temporary directory for the jetty application context](https://www.eclipse.org/jetty/documentation/9.3.x/ref-temporary-directories.html). +This is the directory into which the gitbucket.war file is unpacked, the source +files are compiled, etc. +If given this parameter **must** match the path of an existing directory +or the application will quit reporting an error; if not given the path used +will be a `tmp` directory inside the gitbucket home. You can also deploy gitbucket.war to a servlet container which supports Servlet 3.0 (like Jetty, Tomcat, JBoss, etc) diff --git a/src/main/java/JettyLauncher.java b/src/main/java/JettyLauncher.java index 01168e0..d810941 100644 --- a/src/main/java/JettyLauncher.java +++ b/src/main/java/JettyLauncher.java @@ -12,6 +12,7 @@ int port = 8080; InetSocketAddress address = null; String contextPath = "/"; + String tmpDirPath=""; boolean forceHttps = false; for(String arg: args) { @@ -29,6 +30,8 @@ } } else if(dim[0].equals("--gitbucket.home")){ System.setProperty("gitbucket.home", dim[1]); + } else if(dim[0].equals("--temp_dir")){ + tmpDirPath = dim[1]; } } } @@ -53,9 +56,21 @@ WebAppContext context = new WebAppContext(); - File tmpDir = new File(getGitBucketHome(), "tmp"); - if(!tmpDir.exists()){ - tmpDir.mkdirs(); + File tmpDir; + if(tmpDirPath.equals("")){ + tmpDir = new File(getGitBucketHome(), "tmp"); + if(!tmpDir.exists()){ + tmpDir.mkdirs(); + } + } else { + tmpDir = new File(tmpDirPath); + if(!tmpDir.exists()){ + throw new java.io.FileNotFoundException( + String.format("temp_dir \"%s\" not found", tmpDirPath)); + } else if(!tmpDir.isDirectory()) { + throw new IllegalArgumentException( + String.format("temp_dir \"%s\" is not a directory", tmpDirPath)); + } } context.setTempDirectory(tmpDir);