Simplifies setting up your Frege project. This container is part of the Frege IDE.
Head over to the Frege IDE docs website.
You need java >= 11
and gradle >= 7
.
git clone https://github.com/tricktron/frege-gradle-plugin.git
./gradlew publishToMavenLocal
build.gradle
:plugins
{
id 'ch.fhnw.thga.frege' version '4.1.0-alpha'
}
frege
{
version = '3.25.84'
release = '3.25alpha'
mainModule = 'examples.HelloFrege' // see runFrege task
replModule = 'examples.HelloFrege' // see replFrege task
}
Then run
gradle initFrege
gradle runFrege
See the Frege Releases for all available versions.
Optional configuration parameters inside build.gradle
:
<projectRoot>/lib
<projectRoot>/src/main/frege
<projectRoot>/build/classes/frege/main
<projectRoot>/build/classes/frege/test
['-O', '-make']
[]
[]
HelloFrege.fr
example file under
mainSourceDir/examples/HelloFrege.fr
. Alternatively, you can specify the location
on the command line with --mainModule=my.mod.HelloFrege
.*.fr
files in mainSourceDir
to outputDir
.
Alternatively, you can also specify the compile items by with the compileItems
property.
Then only the specified compile items and its dependencies get compiled.
E.g.: compileItems = [ 'my.mod.Mod1', my.mod.Mod2' ]
.*.fr
files
in mainSourceDir
to testOutputDir
. Used by the testFrege task.mainModule
. Alternatively you can
also pass the main module by command line, e.g: gradle runFrege --mainModule=my.mod.Name
.testModules
.
You can pass test args on the command line, e.g: gradle testFrege --args="-v -n 1000 -p pred1
.
Run gradle testFrege --args=-h
to see all options.replModule
and prints the command to start the Frege REPL and load the replModule
.
E.g.: (echo :l <path to replModule.fr> && cat) | java -cp <your-correct-classpath-with-all-dependencies> frege.repl.FregeRepl
.
On Unix you can even further automate starting the repl and loading the module
with the following one-liner:
eval $(./gradlew -q replFrege)
.Dependencies can be configured as expected in your build.gradle
file, using the
frege
scope, e.g.:
repositories {
# Add your Frege repo here
}
dependencies {
frege 'org.frege-lang:fregefx:0.8.2-SNAPSHOT'
}
The compileFrege
task supports incremental builds from build cache. Enable the build
cache by setting org.gradle.caching=true
in your gradle.properites
.
Try to add another task, e.g. docFrege
to the
FregePluginFunctionalTest.java
file and try to make the test pass.