Skip to content

Commit 19fc826

Browse files
Make generated shebang in jar file platform-dependent (#857)
Fixes #16 - hopefully at least! I verified this works on Ubuntu 24.04 and Windows 11. I did not verify it works on WSL or macOS, but I would assume so.
1 parent 4ec1a86 commit 19fc826

File tree

1 file changed

+12
-1
lines changed

1 file changed

+12
-1
lines changed

build.sbt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,18 @@ lazy val effekt: CrossProject = crossProject(JSPlatform, JVMPlatform).in(file("e
139139
// prepend shebang to make jar file executable
140140
val binary = (ThisBuild / baseDirectory).value / "bin" / "effekt"
141141
IO.delete(binary)
142-
IO.append(binary, "#! /usr/bin/env java -jar\n")
142+
143+
// On Windows, the -S flag to env is not supported.
144+
// Hence we conditionally change the shebang based on the OS.
145+
// See https://github.com/effekt-lang/effekt/issues/16
146+
val osName = System.getProperty("os.name").toLowerCase
147+
val shebang =
148+
if (osName.contains("win"))
149+
"#! /usr/bin/env java -jar\n"
150+
else
151+
"#! /usr/bin/env -S java -jar\n"
152+
153+
IO.write(binary, shebang)
143154
IO.append(binary, IO.readBytes(jarfile))
144155
},
145156

0 commit comments

Comments
 (0)