= Frege Gradle Plugin This is the official Gradle plugin to compile Frege projects (https://github.com/Frege/frege). See the example project (https://github.com/mperry/frege-gradle-example) for examples on the usage of this plugin. == Plugin Application The gradle plugin portal page for Frege documents how to apply the Frege plugin (https://plugins.gradle.org/plugin/org.frege-lang). For applying the plugin in all Gradle versions use: ``` buildscript { repositories { maven { url "https://plugins.gradle.org/m2/" } } dependencies { classpath "gradle.plugin.org.frege-lang:frege-gradle-plugin:0.5" } } apply plugin: "org.frege-lang" ``` To apply the plugin using the new incubating, plugin mechanism (since Gradle 2.1), add: ``` plugins { id "org.frege-lang" version "0.7" } apply plugin: "org.frege-lang" ``` == Tasks This plugin creates the following tasks: * fregeRepl * fregeQuickCheck * fregeDoc * fregeNativeGen * compileFrege * compileTestFrege The plugin adds dependencies so that using the `build` task is typically all that is required to invoke the `compileFrege` and `compileTestFrege` tasks. These task dependencies include: * classes -> compileFrege -> compileJava * testClasses -> compileTestFrege -> compileTestJava * test -> fregeQuickCheck -> testClasses == Task Help === Configuring QuickCheck Without any configuration, the `fregeQuickCheck` task (which is triggered as part of the `test` task) automatically executes all tests from the Frege test source set (default: `src/test/frege`). It will pick up all functions as tests that return a value of type `Property`. This is usually achieved by using the factory methods `property` or `once`. Please see more details under http://www.frege-lang.org/doc/frege/test/QuickCheck.html[QuickCheck API doc]. NOTE: Testing fails if no test is found. If your project does not contain any tests, you have to skip testing via `-x test`. You can configure the task in many ways. To see all options, you best ask the help: ``` fregeQuickCheck { help = true } ``` TODO: Add options and descriptions for more tasks from above. == Example See: * Plugin application: https://plugins.gradle.org/plugin/org.frege-lang * Plugin usage: https://github.com/mperry/frege-gradle-example == Continuous Integration The Travis CI build of this repository is at https://travis-ci.org/Frege/frege-gradle-plugin. == Snapshots Snapshot releases are available from the Sonatype repository at https://oss.sonatype.org/content/groups/public/org/frege-lang.