Skip to content

Commit d081367

Browse files
Add --resources option
To add a directory as resource directory
1 parent 1d6bad3 commit d081367

File tree

3 files changed

+40
-0
lines changed

3 files changed

+40
-0
lines changed

modules/cli/src/main/scala/scala/cli/commands/SharedOptions.scala

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ final case class SharedOptions(
7474
@Name("extraSourceJar")
7575
extraSourceJars: List[String] = Nil,
7676

77+
@Group("Java")
78+
@HelpMessage("Add resource directory")
79+
@ValueDescription("paths")
80+
@Name("resource")
81+
resources: List[String] = Nil,
82+
7783
@Hidden
7884
classWrap: Boolean = false,
7985

@@ -188,6 +194,9 @@ final case class SharedOptions(
188194
.left.map(_.describe)
189195
.map(f => os.read.bytes(os.Path(f, Os.pwd)))
190196
}
197+
val resourceInputs = resources
198+
.map(os.Path(_, Os.pwd))
199+
.map(Inputs.ResourceDirectory(_))
191200
val inputs = Inputs(
192201
args.remaining,
193202
Os.pwd,
@@ -206,6 +215,7 @@ final case class SharedOptions(
206215
(if (defaultForbiddenDirectories) SharedOptions.defaultForbiddenDirectories else Nil) ++
207216
forbid.filter(_.trim.nonEmpty).map(os.Path(_, Os.pwd))
208217
inputs
218+
.add(resourceInputs)
209219
.checkAttributes(directories.directories)
210220
.avoid(forbiddenDirs, directories.directories)
211221
}

modules/integration/src/test/scala/scala/cli/integration/RunTestDefinitions.scala

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -980,4 +980,28 @@ abstract class RunTestDefinitions(val scalaVersionOpt: Option[String])
980980
forbiddenDirTest()
981981
}
982982

983+
private val resourcesInputs = {
984+
val resourceContent = "Hello from resources"
985+
TestInputs(
986+
Seq(
987+
os.rel / "resources" / "test" / "data" -> resourceContent,
988+
os.rel / "Test.scala" ->
989+
s"""object Test {
990+
| def main(args: Array[String]): Unit = {
991+
| val cl = Thread.currentThread().getContextClassLoader
992+
| val is = cl.getResourceAsStream("test/data")
993+
| val content = scala.io.Source.fromInputStream(is)(scala.io.Codec.UTF8).mkString
994+
| assert(content == "$resourceContent")
995+
| }
996+
|}
997+
|""".stripMargin
998+
)
999+
)
1000+
}
1001+
test("resources") {
1002+
resourcesInputs.fromRoot { root =>
1003+
os.proc(TestUtil.cli, "run", ".", "--resources", "./resources").call(cwd = root)
1004+
}
1005+
}
1006+
9831007
}

website/docs/reference/cli-options.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,12 @@ Aliases: `--source-jar`, `--source-jars`, `--extra-source-jar`
829829

830830
Add extra source JARs
831831

832+
#### `--resources`
833+
834+
Aliases: `--resource`
835+
836+
Add resource directory
837+
832838
#### `--class-wrap`
833839

834840
#### `--scala-library`

0 commit comments

Comments
 (0)