Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tmattio/spin

OCaml project generator.
https://github.com/tmattio/spin

dune esy ocaml reason spin template

Last synced: 4 days ago
JSON representation

OCaml project generator.

Awesome Lists containing this project

README

        


Logo



OCaml project generator.



Build Status


npm version


Features
Installation
Templates
Usage
Roadmap
Contributing
License
Acknowledgements


Demo

## Features

🚀 Quickly start new projects that are ready for the real world.

❤️ Have a great developer experience when developing with OCaml.

🏄 Be as productive as Ruby-on-Rails or Elixir's Mix users.

🔌 Establish a convention for projects organizations to make it easy to get into new projects.

## Installation

### Using Homebrew (macOS)

```bash
brew install tmattio/tap/spin
```

### Using Opam

```bash
opam install spin
```

### Using a script

```bash
curl -fsSL https://github.com/tmattio/spin/raw/main/script/install.sh | bash
```

## Templates

You can generate a new project using a template with `spin new`. For instance:

```bash
spin new bin my_app
```

Will create a new binary application in the directory `./my_app/`

Anyone can create new Spin templates, but we provide official templates for a lot of use cases.

### Official templates

The official Spin templates templates are the following:

- **bin** - Native project containing a binary.
- **cli** - Command Line Interface releasable on Opam.
- **lib** - Library releasable on Opam.
- **ppx** - PPX library.
- **c-bindings** - Bindings to a C library.
- **js** - Js application with Js_of_ocaml.

If you'd like to add an official template, don't hesitate to open a PR!

### Other OCaml templates

You can find community Spin templates for various projects here: [https://github.com/ocaml-templates](https://github.com/ocaml-templates)

Here are some non-official Spin templates that you can use:

- [**spin-sihl**](https://github.com/oxidizing/spin-sihl) - Spin template for [Sihl](https://github.com/oxidizing/sihl) applications

### Other non-OCaml templates

Although the focus of Spin is to offer a great project generator for the OCaml ecosystem, it can also be used to generate non-OCaml templates. Here are a few examples:

- [**spin-python-cli**](https://github.com/tmattio/spin-python-cli) - Spin template for Python CLIs

## Usage

For a detailed documentation of Spin's CLI, run `spin --help`, or refer to the [CLI documentation](https://github.com/tmattio/spin/tree/main/doc/cli.md).

### `spin new TEMPLATE [PATH] [--default] [--ignore-config]`

Create a new ReasonML/Ocaml project from a template.

`PATH` defaults to the current working directory.

When `--default` is passed, the user will not be prompted for configurations that have a default value.

When `--ignore-config` is passed, the configuration file will be ignored and the user will be prompted for all the configurations.

### `spin ls`

List the official Spin templates.

### `spin config`

Prompt the user for values that can be saved in the configuration file.

If a value is present in the configuration file, it will not be prompted when generating a new project.

## Roadmap

See our [development board](https://github.com/tmattio/spin/projects/1) for a list of selected features and issues.

Here are some of the improvements we'll be working on as well in for next releases:

- [ ] Support windows
- [ ] Support CLI options/args for configurations
- [ ] Minimal `hello` template
- [ ] Generators for `lib/bin/test` for all templates

## Contributing

We'd love your help improving Spin!

Take a look at our [Contributing Guide](CONTRIBUTING.md) to get started.

## License

Distributed under the ISC License. See [LICENSE](LICENSE) for more information.

## Acknowledgements

Thanks to everyone who [contributed](https://github.com/tmattio/spin/graphs/contributors) to Spin!

Special thanks to [@wesoudshoorn](https://github.com/wesoudshoorn) for creating Spin's logo.