https://github.com/ythecombinator/generator-ocaml
🐫Yeoman generator to scaffold OCaml modules.
https://github.com/ythecombinator/generator-ocaml
Last synced: 4 months ago
JSON representation
🐫Yeoman generator to scaffold OCaml modules.
- Host: GitHub
- URL: https://github.com/ythecombinator/generator-ocaml
- Owner: ythecombinator
- License: mit
- Created: 2015-12-21T22:12:37.000Z (over 9 years ago)
- Default Branch: master
- Last Pushed: 2018-06-29T05:07:00.000Z (almost 7 years ago)
- Last Synced: 2025-02-10T09:31:03.563Z (5 months ago)
- Language: JavaScript
- Homepage: https://www.npmjs.com/package/generator-ocaml
- Size: 115 KB
- Stars: 22
- Watchers: 7
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE.md
Awesome Lists containing this project
README
A Yeoman generator that provides a functional boilerplate to easily scaffold OCaml modules.## Table of Contents
- [This Project](#this-project)
- [Scaffold OCaml modules?](#scaffold-ocaml-modules)
- [Getting To Know Yeoman](#getting-to-know-yeoman)
- [Installation](#installation)
- [Usage](#usage)
- [Getting Started](getting-started)
- [Other Options](#other-options)
- [Development](#development)
- [Contributing](#contributing)
- [History](#history)
- [License](#license)
- [Credits](#credits)## This Project
### 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](#getting-to-know-yeoman) that provides a
[OCaml](https://ocaml.org/) project skeleton with the following integrated
features:- The [OASIS](http://oasis.forge.ocamlcore.org/) build-system
- The [OCamlDoc](http://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html) automatic documentation generation
- The [OUnit](http://ounit.forge.ocamlcore.org/) testing framework
- The [Bisect](http://bisect.x9c.fr/) code coverage framework### Getting To Know Yeoman
*Yeoman* is a [node.js](https://nodejs.org/) 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](http://yeoman.io/).
## Installation
First, make sure you have the main dependencies:
- *node.js* dependencies:
- [node.js](https://nodejs.org/) & [npm](https://www.npmjs.com/)
- [Yeoman](http://yeoman.io)
- *OCaml* dependencies:
- [OCaml](https://ocaml.org/)
- [OPAM](https://opam.ocaml.org/)
- General
- [GNU Make](https://www.gnu.org/software/make/)Then install the `generator-ocaml`.
```bash
npm install -g generator-ocaml
```## Usage
### Getting Started
1. Generate your new project:
```bash
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:
```bash
|-- lib/
| |-- myModule.ml/
|-- test/
| |-- myModule_test.ml
|-- .gitattributes
|-- .gitignore
|-- _oasis
|-- CHANGELOG.md
|-- CONTRIBUTING.md
|-- LICENSE.md
|-- Makefile
|-- README.md
```1. Install the *OCaml* dependencies:
```bash
opam init
opam install oasis ounit bisect
```1. Generate the `setup.ml` file - which will handle any high-level operation on
the project source.```bash
oasis setup
```1. Configure the build-system:
```bash
ocaml setup.ml -configure --enable-tests
```1. Build the project:
```bash
make
```### Other Options
To run the test suite, you just have to:
```bash
make tests
# Or
ocaml setup.ml -tests
```Generating the documentation with *OCamlDoc* is just the same:
```bash
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 |## Development
All the tasks needed for development automation are defined in the
[`package.json`](package.json) *scripts* property and can be run via:`npm run `
Here is a summary of all the commands:
| **Command** | **Description** |
|-------------|-----------------------------------------------------------------------------------------|
| `setup` | Installs global Node dependencies needed for development |
| `lint` | Runs [ESLint](http://eslint.org/) as a code linting utility |
| `tests` | Runs [Mocha](https://mochajs.org/) in BDD mode. |
| `report` | Runs [Istanbul](https://github.com/gotwarlost/istanbul) coverage reports on Mocha tests |
| `test` | Runs both `lint`, `tests` and `report` commands |## Contributing
Contributions are very welcome! If you'd like to contribute, these
[guidelines](CONTRIBUTING.md) may help you.## History
Check the [releases list](https://github.com/mabrasil/generator-ocaml/releases/).
## License
[generator-ocaml](https://github.com/mabrasil/generator-ocaml/) is distributed under the
MIT License, available in this repository.All contributions are assumed to be also licensed under the same.
## Credits
The templates codebase was originally inspired by these
[two](https://github.com/yuanqing/ocaml-boilerplate) [projects](https://github.com/perror/ocaml-boilerplate).