Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/CraigFe/oskel
:skull: Skeleton generator for OCaml projects.
https://github.com/CraigFe/oskel
Last synced: 1 day ago
JSON representation
:skull: Skeleton generator for OCaml projects.
- Host: GitHub
- URL: https://github.com/CraigFe/oskel
- Owner: craigfe
- License: mit
- Created: 2020-01-04T00:39:01.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2021-10-28T18:48:10.000Z (about 3 years ago)
- Last Synced: 2024-11-10T04:10:56.444Z (6 days ago)
- Language: OCaml
- Homepage:
- Size: 183 KB
- Stars: 47
- Watchers: 6
- Forks: 3
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGES.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
- awesome-list - oskel
README
# :skull: oskel: skeleton generator for OCaml projects
[![OCaml-CI Build Status](https://img.shields.io/endpoint?url=https%3A%2F%2Fci.ocamllabs.io%2Fbadge%2FCraigFe%2Foskel%2Fmaster&logo=ocaml)](https://ci.ocamllabs.io/github/CraigFe/oskel)[![asciicast](./.assets/asciicast.gif)](https://asciinema.org/a/298707)
The standard project type is initialised with:
- [`.opam` file autogeneration][dune-opam-files] via `dune-project`;
- [OCamlformat][ocamlformat] config file;
- [Alcotest][alcotest] testing boilerplate, with pre-configured [Logs][logs]
initialisation.
- Git repository with an initial commit;
- OCaml `.gitignore`;
- `README.md` with installation instructions for `opam`.## Choice of project layouts
There are multiple project structures, which can be selected via the `--kind`
flag:- [`library`][example-library] (**default**): library-only package;
- [`executable`][example-executable]: a single binary with minimal
configuration;
- [`binary`][example-binary]: package providing a [Cmdliner][cmdliner] binary in
`bin/`, making use of a tested library in `lib/`.Examples of each layout can be seen in the [`examples/`][examples] directory.
You can also use e.g. `oskel --dry-run --kind executable` to see a preview of
the project structure.## Installation
```
opam install oskel
```If you want to contribute to the project, please read
[CONTRIBUTING.md](CONTRIBUTING.md).## Configuration
`oskel` is very configurable (see [`oskel --help`](./oskel-help.txt) for
details). Most options can be set via environment variables. In particular, you
can set your personal metadata in your shell `.profile`:```
export OSKEL_FULL_NAME="Joe Bloggs"
export OSKEL_EMAIL="[email protected]"
export OSKEL_GITHUB_ORG="JoeBlo"
```[examples]: https://github.com/CraigFe/oskel/tree/master/examples
[example-library]: https://github.com/CraigFe/oskel/tree/master/examples/library
[example-binary]: https://github.com/CraigFe/oskel/tree/master/examples/binary
[example-ppx_deriver]: https://github.com/CraigFe/oskel/tree/master/examples/ppx_deriver
[example-executable]: https://github.com/CraigFe/oskel/tree/master/examples/executable
[dune-opam-files]: https://dune.readthedocs.io/en/stable/opam.html#generating-opam-files
[logs]: https://erratique.ch/software/logs
[cmdliner]: https://erratique.ch/software/cmdliner
[ocamlformat]: https://github.com/ocaml-ppx/ocamlformat/
[alcotest]: https://github.com/mirage/alcotest/
[ppx_deriving]: https://github.com/ocaml-ppx/ppx_deriving
[nathanreb-ppx-blog]: https://tarides.com/blog/2019-05-09-an-introduction-to-ocaml-ppx-ecosystem