
com.atlassian.maven.plugins.aws.it.Uploader.kt Maven / Gradle / Ivy
The newest version!
package com.atlassian.maven.plugins.aws.it
import com.amazonaws.services.s3.AmazonS3
import com.amazonaws.services.s3.AmazonS3ClientBuilder
import org.apache.maven.plugin.logging.Log
import java.io.File
import java.nio.file.Files
class Uploader(
private val log: Log
) {
fun upload(
s3Uploads: List,
stackInfo: StackInfo
) {
s3Uploads.forEach {
upload(it, stackInfo)
}
}
private fun upload(
s3Upload: S3Upload,
stackInfo: StackInfo
) {
val logicalId = s3Upload.bucketLogicalId
val bucket = stackInfo.findBucket(logicalId)
val s3 = AmazonS3ClientBuilder.standard()
.withRegion(stackInfo.awsRegion)
.build()
s3Upload.files.forEach {
upload(it, s3, bucket.physicalResourceId, it.name)
}
}
private fun upload(
file: File,
s3: AmazonS3,
bucketName: String,
key: String
) {
if (file.isDirectory) {
Files.newDirectoryStream(file.toPath()).use {
it.forEach {
upload(it.toFile(), s3, bucketName, "$key/${it.fileName}")
}
}
} else {
log.info("Uploading $file to $bucketName under $key")
s3.putObject(bucketName, key, file)
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy