Skip to main content

Sharing and testing code with GitHub gists

Running code from gists​

scala-cli lets you run Scala code straight from GitHub gists, without the need to manually download them first. This is done by passing the link to a gist as an argument to scala-cli:

For example, given the gist https://gist.github.com/alexarchambault/7b4ec20c4033690dd750ffd601e540ec, which contains these two files:

Messages.scala
object Messages {
def hello = "Hello"
}
run.sc
println(Messages.hello)

You can run them with scala-cli like this:

scala-cli https://gist.github.com/alexarchambault/7b4ec20c4033690dd750ffd601e540ec

This example prints Hello to the standard output.

note

As shown in this example, the gist isn't limited to just one file. scala-cli downloads the gist's archive and unzips it, so the gist can contain multiple files that depend on each other.

scala-cli also caches the project sources using Coursier's cache.

Sharing code snippets​

Together with the GitHub CLI (gh), it becomes really easy to share Scala code. If you want to share a code file named file.scala, just run this command to create the gist:

gh gist create file.scala

Then you (and others) can run it quickly, using the scala-cli approach shown above.

Resources from gists​

You can also use resources from gists archive. This is done by passing resourceDir in using directives.

For example, given the gist https://gist.github.com/lwronski/7ee12fa4b8b8bac3211841273df82080 which containing Scala code and text file:

Hello.scala
//> using resourceDir "./"
import scala.io.Source

object Hello extends App {
val inputs = Source.fromResource("input").getLines.map(_.toInt).toSeq
println(inputs.mkString(","))
}
input
1
2
3
4

and run them:

scala-cli https://gist.github.com/lwronski/7ee12fa4b8b8bac3211841273df82080
# 1,2,3,4

it will print 1,2,3,4 to the standard output.