summaryrefslogtreecommitdiff
path: root/core/src/main/scala/mill/modules/Util.scala
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/main/scala/mill/modules/Util.scala')
-rw-r--r--core/src/main/scala/mill/modules/Util.scala26
1 files changed, 26 insertions, 0 deletions
diff --git a/core/src/main/scala/mill/modules/Util.scala b/core/src/main/scala/mill/modules/Util.scala
new file mode 100644
index 00000000..cd674bad
--- /dev/null
+++ b/core/src/main/scala/mill/modules/Util.scala
@@ -0,0 +1,26 @@
+package mill.modules
+
+import ammonite.ops.RelPath
+import mill.eval.PathRef
+import mill.util.Ctx
+
+object Util {
+ def download(url: String, dest: RelPath)(implicit ctx: Ctx.DestCtx) = {
+ ammonite.ops.mkdir(ctx.dest)
+ val out = ctx.dest / dest
+
+ val website = new java.net.URI(url).toURL
+ val rbc = java.nio.channels.Channels.newChannel(website.openStream)
+ try{
+ val fos = new java.io.FileOutputStream(out.toIO)
+ try{
+ fos.getChannel.transferFrom(rbc, 0, java.lang.Long.MAX_VALUE)
+ PathRef(out)
+ } finally{
+ fos.close()
+ }
+ } finally{
+ rbc.close()
+ }
+ }
+}