A Yeoman generator that provides a functional boilerplate to easily scaffold OCaml modules.
OCaml is a general purpose programming language with an emphasis on expressiveness and safety which supports both functional, imperative and object-oriented paradigms and features a powerful type system, user-definable algebraic data types and pattern-matching.
This project is Yeoman generator that provides a OCaml project skeleton with the following integrated features:
- The OASIS build-system
- The OCamlDoc automatic documentation generation
- The OUnit testing framework
- The Bisect code coverage framework
Yeoman is a node.js tool used to scaffold new applications. It can create common project assets like stylesheets and JavaScript files. Basically Yo provides an easy way to create all of the boilerplate code you need to get started on a project.
Feel free to learn more about it here.
First, make sure you have the main dependencies:
Then install the generator-ocaml
.
npm install -g generator-ocaml
- Generate your new project:
yo ocaml
You will be asked the following about your project:
- What's the package name?
- What's your package all about?
- What's the package version?
- What's your name?
- What's your email?
- What's your Github username?
- Choose your license type (Use arrow keys)
And the you should see the following structure:
|-- lib/
| |-- myModule.ml/
|-- test/
| |-- myModule_test.ml
|-- .gitattributes
|-- .gitignore
|-- _oasis
|-- CHANGELOG.md
|-- CONTRIBUTING.md
|-- LICENSE.md
|-- Makefile
|-- README.md
- Install the OCaml dependencies:
opam init
opam install oasis ounit bisect
- Generate the
setup.ml
file - which will handle any high-level operation on the project source.
oasis setup
- Configure the build-system:
ocaml setup.ml -configure --enable-tests
- Build the project:
make
To run the test suite, you just have to:
make tests
# Or
ocaml setup.ml -tests
Generating the documentation with OCamlDoc is just the same:
make doc
# Or
ocaml setup.ml -doc
These are the commands you have in setup.ml
:
Command | Description |
---|---|
-configure [options*] |
Configure the whole build process |
-build [options*] |
Build executables and libraries |
-doc [options*] |
Build documents |
-test [options*] |
Run tests |
-all [options*] |
Run configure, build, doc and test targets |
-install [options*] |
Install libraries, data, executables and documents |
-uninstall [options*] |
Uninstall libraries, data, executables and documents |
-reinstall [options*] |
Uninstall and install libraries, data, executables and documents |
-clean [options*] |
Clean files generated by a build |
-distclean [options*] |
Clean files generated by a build and configure |
-version |
Display version of OASIS used to generate this setup.ml |
-no-catch-exn |
Don't catch exception, useful for debugging |
-quiet |
Run quietly |
-info |
Display information message |
-debug |
Output debug message |
-ignore-plugins |
Ignore plugin's field |
-help , --help |
Display this list of options |
All the tasks needed for development automation are defined in the
package.json
scripts property and can be run via:
npm run <command>
Here is a summary of all the commands:
Command | Description |
---|---|
setup |
Installs global Node dependencies needed for development |
lint |
Runs ESLint as a code linting utility |
tests |
Runs Mocha in BDD mode. |
report |
Runs Istanbul coverage reports on Mocha tests |
test |
Runs both lint , tests and report commands |
Contributions are very welcome! If you'd like to contribute, these guidelines may help you.
Check the releases list.
generator-ocaml is distributed under the MIT License, available in this repository.
All contributions are assumed to be also licensed under the same.
The templates codebase was originally inspired by these two projects.