{"id":16635794,"url":"https://github.com/ythecombinator/generator-ocaml","last_synced_at":"2025-08-10T15:17:50.152Z","repository":{"id":57248235,"uuid":"48396881","full_name":"ythecombinator/generator-ocaml","owner":"ythecombinator","description":"🐫Yeoman generator to scaffold OCaml modules.","archived":false,"fork":false,"pushed_at":"2018-06-29T05:07:00.000Z","size":118,"stargazers_count":22,"open_issues_count":3,"forks_count":4,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-05-27T06:48:48.139Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/generator-ocaml","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ythecombinator.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-12-21T22:12:37.000Z","updated_at":"2023-09-04T17:09:45.000Z","dependencies_parsed_at":"2022-08-24T16:50:37.074Z","dependency_job_id":null,"html_url":"https://github.com/ythecombinator/generator-ocaml","commit_stats":null,"previous_names":["mabrasil/generator-ocaml"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/ythecombinator/generator-ocaml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ythecombinator%2Fgenerator-ocaml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ythecombinator%2Fgenerator-ocaml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ythecombinator%2Fgenerator-ocaml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ythecombinator%2Fgenerator-ocaml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ythecombinator","download_url":"https://codeload.github.com/ythecombinator/generator-ocaml/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ythecombinator%2Fgenerator-ocaml/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269740634,"owners_count":24467812,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-10T02:00:08.965Z","response_time":71,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-12T06:04:48.527Z","updated_at":"2025-08-10T15:17:50.128Z","avatar_url":"https://github.com/ythecombinator.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\n    \u003cimg alt=\"yo OCaml!\" src=\"logo.png\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  A Yeoman generator that provides a functional boilerplate to easily scaffold OCaml modules.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\n  \u003ca href=\"https://codeship.com/projects/132638\"\u003e\u003cimg alt=\"Build Status\" src=\"https://codeship.com/projects/33492670-b039-0133-9188-565ee1f98c10/status?branch=master\"\u003e\u003c/a\u003e\n\n  \u003ca href=\"https://travis-ci.org/mabrasil/generator-ocaml\"\u003e\u003cimg alt=\"Build Status\" src=\"https://travis-ci.org/mabrasil/generator-ocaml.svg?branch=master\"\u003e\u003c/a\u003e\n\n  \u003ca href=\"https://codeclimate.com/github/mabrasil/generator-ocaml\"\u003e\u003cimg alt=\"Code Climate\" src=\"https://codeclimate.com/github/mabrasil/generator-ocaml/badges/gpa.svg\"/\u003e\u003c/a\u003e\n\n  \u003ca href=\"https://david-dm.org/mabrasil/generator-ocaml\" title=\"Dependency status\"\u003e\u003cimg src=\"https://david-dm.org/mabrasil/generator-ocaml.svg\"/\u003e\u003c/a\u003e\n\n  \u003ca href=\"https://david-dm.org/mabrasil/generator-ocaml#info=devDependencies\" title=\"devDependency status\"\u003e\u003cimg src=\"https://david-dm.org/mabrasil/generator-ocaml/dev-status.svg\"/\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\n## Table of Contents\n\n- [This Project](#this-project)\n  - [Scaffold OCaml modules?](#scaffold-ocaml-modules)\n  - [Getting To Know Yeoman](#getting-to-know-yeoman)\n- [Installation](#installation)\n- [Usage](#usage)\n  - [Getting Started](getting-started)\n  - [Other Options](#other-options)\n- [Development](#development)\n- [Contributing](#contributing)\n- [History](#history)\n- [License](#license)\n- [Credits](#credits)\n\n## This Project\n\n### Scaffold OCaml modules?\n\n\u003cimg src=\"http://i.imgur.com/f6AWgvy.png\" align=\"left\" alt=\"OCaml\"\u003e\n\nOCaml is a general purpose programming language with an emphasis on expressiveness\nand safety which supports both functional, imperative and object-oriented paradigms\nand features a powerful type system, user-definable algebraic data types and\npattern-matching.\n\nThis project is [Yeoman generator](#getting-to-know-yeoman) that provides a\n[OCaml](https://ocaml.org/) project skeleton with the following integrated\nfeatures:\n\n- The [OASIS](http://oasis.forge.ocamlcore.org/) build-system\n- The [OCamlDoc](http://caml.inria.fr/pub/docs/manual-ocaml/ocamldoc.html) automatic documentation generation\n- The [OUnit](http://ounit.forge.ocamlcore.org/) testing framework\n- The [Bisect](http://bisect.x9c.fr/) code coverage framework\n\n### Getting To Know Yeoman\n\n\u003cimg src=\"http://128bitstudios.com/images/logo/yeoman.png\" align=\"right\" alt=\"Yeoman\"\u003e\n\n*Yeoman* is a [node.js](https://nodejs.org/) tool used to scaffold new\napplications. It can create common project assets like stylesheets and JavaScript\nfiles. Basically Yo provides an easy way to create all of the boilerplate code\nyou need to get started on a project.\n\nFeel free to learn more about it [here](http://yeoman.io/).\n\n## Installation\n\nFirst, make sure you have the main dependencies:\n\n- *node.js* dependencies:\n  - [node.js](https://nodejs.org/) \u0026 [npm](https://www.npmjs.com/)\n  - [Yeoman](http://yeoman.io)\n- *OCaml* dependencies:\n  - [OCaml](https://ocaml.org/)\n  - [OPAM](https://opam.ocaml.org/)\n- General\n  - [GNU Make](https://www.gnu.org/software/make/)\n\nThen install the `generator-ocaml`.\n\n```bash\nnpm install -g generator-ocaml\n```\n\n## Usage\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"\"\u003e\n    \u003cimg alt=\"yo OCaml!\" src=\"http://i.imgur.com/qUjy4jZ.png\" width=\"900px\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n### Getting Started\n\n1. Generate your new project:\n\n  ```bash\n  yo ocaml\n  ```\n\n  \u003e You will be asked the following about your project:\n\n  \u003e - *What's the package name?*\n  \u003e - *What's your package all about?*\n  \u003e - *What's the package version?*\n  \u003e - *What's your name?*\n  \u003e - *What's your email?*\n  \u003e - *What's your Github username?*\n  \u003e - *Choose your license type (Use arrow keys)*\n\n  And the you should see the following structure:\n\n  ```bash\n  |-- lib/\n  |   |-- myModule.ml/\n  |-- test/\n  |   |-- myModule_test.ml\n  |-- .gitattributes\n  |-- .gitignore\n  |-- _oasis\n  |-- CHANGELOG.md\n  |-- CONTRIBUTING.md\n  |-- LICENSE.md\n  |-- Makefile\n  |-- README.md\n  ```\n\n1. Install the *OCaml* dependencies:\n\n  ```bash\n  opam init\n  opam install oasis ounit bisect\n  ```\n\n1. Generate the `setup.ml` file - which will handle any high-level operation on\nthe project source.\n\n  ```bash\n  oasis setup\n  ```\n\n1. Configure the build-system:\n\n  ```bash\n  ocaml setup.ml -configure --enable-tests\n  ```\n\n1. Build the project:\n\n  ```bash\n  make\n  ```\n\n### Other Options\n\nTo run the test suite, you just have to:\n\n```bash\nmake tests\n# Or\nocaml setup.ml -tests\n```\n\nGenerating the documentation with *OCamlDoc* is just the same:\n\n```bash\nmake doc\n# Or\nocaml setup.ml -doc\n```\nThese are the commands you have in `setup.ml`:\n\n|       **Command**       |                         **Description**                          |\n|-------------------------|------------------------------------------------------------------|\n| `-configure [options*]` | Configure the whole build process                                |\n| `-build [options*]`     | Build executables and libraries                                  |\n| `-doc [options*]`       | Build documents                                                  |\n| `-test [options*]`      | Run tests                                                        |\n| `-all [options*]`       | Run configure, build, doc and test targets                       |\n| `-install [options*]`   | Install libraries, data, executables and documents               |\n| `-uninstall [options*]` | Uninstall libraries, data, executables and documents             |\n| `-reinstall [options*]` | Uninstall and install libraries, data, executables and documents |\n| `-clean [options*]`     | Clean files generated by a build                                 |\n| `-distclean [options*]` | Clean files generated by a build and configure                   |\n| `-version`              | Display version of OASIS used to generate this setup.ml          |\n| `-no-catch-exn`         | Don't catch exception, useful for debugging                      |\n| `-quiet`                | Run quietly                                                      |\n| `-info`                 | Display information message                                      |\n| `-debug`                | Output debug message                                             |\n| `-ignore-plugins`       | Ignore plugin's field                                            |\n| `-help`, `--help`       | Display this list of options                                     |\n\n## Development\n\nAll the tasks needed for development automation are defined in the\n[`package.json`](package.json) *scripts* property and can be run via:\n\n`npm run \u003ccommand\u003e`\n\nHere is a summary of all the commands:\n\n| **Command** |                                   **Description**                                       |\n|-------------|-----------------------------------------------------------------------------------------|\n| `setup`     | Installs global Node dependencies needed for development                                |\n| `lint`      | Runs [ESLint](http://eslint.org/) as a code linting utility                             |\n| `tests`     | Runs [Mocha](https://mochajs.org/) in BDD mode.                                         |\n| `report`    | Runs [Istanbul](https://github.com/gotwarlost/istanbul) coverage reports on Mocha tests |\n| `test`      | Runs both `lint`, `tests` and `report` commands                                         |\n\n\n## Contributing\n\nContributions are very welcome! If you'd like to contribute, these\n[guidelines](CONTRIBUTING.md) may help you.\n\n## History\n\nCheck the [releases list](https://github.com/mabrasil/generator-ocaml/releases/).\n\n## License\n\n[generator-ocaml](https://github.com/mabrasil/generator-ocaml/) is distributed under the\nMIT License, available in this repository.\n\nAll contributions are assumed to be also licensed under the same.\n\n## Credits\n\nThe templates codebase was originally inspired by these\n[two](https://github.com/yuanqing/ocaml-boilerplate) [projects](https://github.com/perror/ocaml-boilerplate).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fythecombinator%2Fgenerator-ocaml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fythecombinator%2Fgenerator-ocaml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fythecombinator%2Fgenerator-ocaml/lists"}