How does conscript work? 

Conscript does less than you think, because the sbt launcher does more than you think. What?


What conscript does:

What sbt launcher does:

So conscript just assumes a convention and helps you adhere to it. Suppose you’ve configured $CONSCRIPT_HOME to $HOME/.conscript.

Then $CONSCRIPT_HOME/boot is used as a boot directory for all. App launchconfigs are stored according to the GitHub project name and the script name, such as:

$CONSCRIPT_HOME/foundweekends/conscript/cs/launchconfig

And finally, shell scripts are created in $CONSCRIPT_BIN (default: $CONSCRIPT_HOME/bin) that reference launchconfigs, for example, ~/.conscript/bin/cs. This is how the shell script looks like on Mac:

#!/bin/sh
java -jar /Users/foo/.conscript/sbt-launch.jar \
  @/Users/foo/.conscript/foundweekends/conscript/cs/launchconfig "$@"

Once the shell script is created, now it’s up to the sbt launcher to carry out the actual work of fetching artifacts and running the app.