mirror of
https://github.com/gitbucket/gitbucket.git
synced 2025-11-08 22:45:51 +01:00
Implemented: Downloading tagged contents as zip file.
This commit is contained in:
32
src/main/scala/util/CompressUtil.scala
Normal file
32
src/main/scala/util/CompressUtil.scala
Normal file
@@ -0,0 +1,32 @@
|
||||
package util
|
||||
|
||||
import java.io.File
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream
|
||||
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry
|
||||
import org.apache.commons.io.FileUtils
|
||||
import org.apache.commons.io.IOUtils
|
||||
|
||||
object CompressUtil {
|
||||
|
||||
def zip(dest: File, dir: File): Unit = {
|
||||
def addDirectoryToZip(out: ZipArchiveOutputStream, dir: File, path: String): Unit = {
|
||||
dir.listFiles.map { file =>
|
||||
if(file.isFile){
|
||||
out.putArchiveEntry(new ZipArchiveEntry(path + "/" + file.getName))
|
||||
out.write(FileUtils.readFileToByteArray(file))
|
||||
out.closeArchiveEntry
|
||||
} else if(file.isDirectory){
|
||||
addDirectoryToZip(out, file, path + "/" + file.getName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
val out = new ZipArchiveOutputStream(dest)
|
||||
try {
|
||||
addDirectoryToZip(out, dir, dir.getName)
|
||||
} finally {
|
||||
IOUtils.closeQuietly(out)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -33,6 +33,12 @@ object Directory {
|
||||
def getRepositoryDir(owner: String, repository: String): File =
|
||||
new File("%s/%s/%s.git".format(RepositoryHome, owner, repository))
|
||||
|
||||
/**
|
||||
* Temporary directory which is used to create an archive to download repository contents.
|
||||
*/
|
||||
def getDownloadWorkDir(owner: String, repository: String, sessionId: String): File =
|
||||
new File("%s/tmp/%s/%s/download/%s".format(GitBucketHome, owner, repository, sessionId))
|
||||
|
||||
/**
|
||||
* Temporary directory which is used in the repository creation.
|
||||
* GiyBucket generates initial repository contents in this directory and push them.
|
||||
|
||||
@@ -44,7 +44,7 @@ object WikiUtil {
|
||||
* Returns the directory of the wiki working directory which is cloned from the wiki repository.
|
||||
*/
|
||||
def getWikiWorkDir(owner: String, repository: String): File =
|
||||
new File("%s/tmp/%s/%s.wiki".format(Directory.RepositoryHome, owner, repository))
|
||||
new File("%s/tmp/%s/%s.wiki".format(Directory.GitBucketHome, owner, repository))
|
||||
|
||||
// TODO synchronized?
|
||||
def createWikiRepository(owner: String, repository: String): Unit = {
|
||||
@@ -81,9 +81,6 @@ object WikiUtil {
|
||||
.sortBy(x => x)
|
||||
}
|
||||
|
||||
// TODO
|
||||
//def getPageHistory(owner: String, repository: String, pageName: String): List[WikiPageHistoryInfo]
|
||||
|
||||
// TODO synchronized
|
||||
/**
|
||||
* Save the wiki page.
|
||||
|
||||
Reference in New Issue
Block a user