diff options
Diffstat (limited to 'crashbox-worker/src/main/scala/io/crashbox/ci')
4 files changed, 79 insertions, 0 deletions
diff --git a/crashbox-worker/src/main/scala/io/crashbox/ci/build/Builders.scala b/crashbox-worker/src/main/scala/io/crashbox/ci/build/Builders.scala new file mode 100644 index 0000000..14b43fe --- /dev/null +++ b/crashbox-worker/src/main/scala/io/crashbox/ci/build/Builders.scala @@ -0,0 +1,15 @@ +package io.crashbox.ci +package build + +import java.io.{ File, OutputStream } +import scala.concurrent.Future + +trait Builders { + + def build( + workdir: File, + stdout: OutputStream, + stderr: OutputStream + ): Future[Int] + +} diff --git a/crashbox-worker/src/main/scala/io/crashbox/ci/build/ShellBuilders.scala b/crashbox-worker/src/main/scala/io/crashbox/ci/build/ShellBuilders.scala new file mode 100644 index 0000000..71bd683 --- /dev/null +++ b/crashbox-worker/src/main/scala/io/crashbox/ci/build/ShellBuilders.scala @@ -0,0 +1,33 @@ +package io.crashbox.ci +package build + +import java.io.OutputStream +import scala.concurrent.Future +import scala.sys.process.{ Process, _ } +import java.io.{ File, InputStream } +import scala.concurrent.Future + +trait ShellBuilders extends Builders { + + def pipe(is: InputStream, os: OutputStream) = { + var n = 0 + val buffer = new Array[Byte](1024); + while ({n = is.read(buffer); n > -1}) { + os.write(buffer, 0, n); + } + os.close() + } + + @deprecated("use git-specific execution context", "todo") + implicit private val ec = scala.concurrent.ExecutionContext.global + + override def build(workdir: File, stdout: OutputStream, stderr: OutputStream): Future[Int] = { + def ignore(in: OutputStream): Unit = () + val io = new ProcessIO(ignore, pipe(_, stdout), pipe(_, stderr)) + + Future{ + Process("./crashbox", Some(workdir)).run(io).exitValue() + } + } + +} diff --git a/crashbox-worker/src/main/scala/io/crashbox/ci/source/Fetchers.scala b/crashbox-worker/src/main/scala/io/crashbox/ci/source/Fetchers.scala new file mode 100644 index 0000000..0fd4f38 --- /dev/null +++ b/crashbox-worker/src/main/scala/io/crashbox/ci/source/Fetchers.scala @@ -0,0 +1,12 @@ +package io.crashbox.ci +package source + +import java.io.File +import java.net.URL +import scala.concurrent.Future + +trait Fetchers { + + def fetch(from: URL, to: File): Future[File] + +} diff --git a/crashbox-worker/src/main/scala/io/crashbox/ci/source/GitFetchers.scala b/crashbox-worker/src/main/scala/io/crashbox/ci/source/GitFetchers.scala new file mode 100644 index 0000000..9b603e2 --- /dev/null +++ b/crashbox-worker/src/main/scala/io/crashbox/ci/source/GitFetchers.scala @@ -0,0 +1,19 @@ +package io.crashbox.ci +package source + +import java.io.File +import java.net.URL +import org.eclipse.jgit.api.Git +import scala.concurrent.Future + +trait GitFetchers extends Fetchers { + + @deprecated("use git-specific execution context", "todo") + implicit private val ec = scala.concurrent.ExecutionContext.global + + def fetch(from: URL, to: File): Future[File] = Future { + Git.cloneRepository.setURI(from.toURI.toString).setDirectory(to).call() + to + } + +} |