Newer
Older
gitbucket_jkp / src / main / scala / util / Directory.scala
  1. package util
  2.  
  3. import java.io.File
  4. import util.ControlUtil._
  5.  
  6. /**
  7. * Provides directories used by GitBucket.
  8. */
  9. object Directory {
  10.  
  11. val GitBucketHome = (scala.util.Properties.envOrNone("GITBUCKET_HOME") match {
  12. case Some(env) => new File(env)
  13. case None => new File(System.getProperty("user.home"), "gitbucket")
  14. }).getAbsolutePath
  15.  
  16. val GitBucketConf = new File(GitBucketHome, "gitbucket.conf")
  17. val RepositoryHome = s"${GitBucketHome}/repositories"
  18.  
  19. val DatabaseHome = s"${GitBucketHome}/data"
  20. /**
  21. * Repository names of the specified user.
  22. */
  23. def getRepositories(owner: String): List[String] =
  24. defining(new File(s"${RepositoryHome}/${owner}")){ dir =>
  25. if(dir.exists){
  26. dir.listFiles.filter { file =>
  27. file.isDirectory && !file.getName.endsWith(".wiki.git")
  28. }.map(_.getName.replaceFirst("\\.git$", "")).toList
  29. } else {
  30. Nil
  31. }
  32. }
  33.  
  34. /**
  35. * Substance directory of the repository.
  36. */
  37. def getRepositoryDir(owner: String, repository: String): File =
  38. new File(s"${RepositoryHome}/${owner}/${repository}.git")
  39.  
  40. /**
  41. * Directory for uploaded files by the specified user.
  42. */
  43. def getUserUploadDir(userName: String): File = new File(s"${GitBucketHome}/data/${userName}/files")
  44.  
  45. /**
  46. * Root of temporary directories for the specified repository.
  47. */
  48. def getTemporaryDir(owner: String, repository: String): File =
  49. new File(s"${GitBucketHome}/tmp/${owner}/${repository}")
  50.  
  51. /**
  52. * Temporary directory which is used to create an archive to download repository contents.
  53. */
  54. def getDownloadWorkDir(owner: String, repository: String, sessionId: String): File =
  55. new File(getTemporaryDir(owner, repository), s"download/${sessionId}")
  56. /**
  57. * Temporary directory which is used in the repository creation.
  58. *
  59. * GitBucket generates initial repository contents in this directory and push them.
  60. * This directory is removed after the repository creation.
  61. */
  62. def getInitRepositoryDir(owner: String, repository: String): File =
  63. new File(getTemporaryDir(owner, repository), "init")
  64. /**
  65. * Substance directory of the wiki repository.
  66. */
  67. def getWikiRepositoryDir(owner: String, repository: String): File =
  68. new File(s"${RepositoryHome}/${owner}/${repository}.wiki.git")
  69. /**
  70. * Wiki working directory which is cloned from the wiki repository.
  71. */
  72. def getWikiWorkDir(owner: String, repository: String): File =
  73. new File(getTemporaryDir(owner, repository), "wiki")
  74.  
  75. }