Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/shonfeder/nomad
OCaml project situation tools: wander freely to find fertile ground
https://github.com/shonfeder/nomad
Last synced: about 1 month ago
JSON representation
OCaml project situation tools: wander freely to find fertile ground
- Host: GitHub
- URL: https://github.com/shonfeder/nomad
- Owner: shonfeder
- Created: 2018-01-09T02:34:06.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2024-02-17T01:19:30.000Z (10 months ago)
- Last Synced: 2024-02-17T02:27:08.233Z (10 months ago)
- Language: OCaml
- Size: 126 KB
- Stars: 10
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.org
- Changelog: CHANGES.md
Awesome Lists containing this project
README
#+TITLE: Nomad: Portable Habitations in OCaml's Dunes
A tiny, minimally-functional project management tool for OCaml.
*NOTE*: nomad is not published on opam and afaik I'm the only user, so it is likely
to be a bit brittle. Contributions to improve and harden the tool would be
welcome.* Goal
=nomad='s goal is to automate repetitive aspects of managing OCaml projects by
coordinating the [[https://github.com/ocaml/dune][dune]] and [[https://opam.ocaml.org/doc/Install.html#Using-your-distribution-39-s-package-system][opam]].* Ethos and comparison
=nomad= differs from [[https://github.com/ocamlpro/drom][drom]] and [[https://github.com/tmattio/spin][spin]] in its narrow focus and minimal ethos. I.e.:
- Just automate the most repetitive flows, but still expect users to use opam
and dune.
- Don't generate boilerplate and templates.
- Don't introduce a bunch of complex features.
- sexp is perfect: don't introduce new abstraction layers in the configuration format of the week.* Install
Assuming you have installed [[https://opam.ocaml.org/doc/Install.html#Using-your-distribution-39-s-package-system][opam]] and [[https://github.com/ocaml/dune#installation][dune]]:
#+begin_src sh
opam pin [email protected]:shonfeder/nomad.git
#+end_src* Usage
** Create a new project to build a binary
If you project's name is =dingus=
#+BEGIN_SRC sh
nomad new dingus
#+END_SRCAnd a scaffold for building the dingus executable will be created in the
directory =./dingus=.** Create a new project to build a library
If you project's name is =dingus=
#+BEGIN_SRC sh
nomad new --lib dingus
#+END_SRCAnd a scaffold for building the dingus library will be created in the
directory =./dingus=.** Add a dependency to your project
Suppose we're building a GUI with [[https://github.com/sanette/bogue][bogue]]. We can add the dependency with:
#+begin_src
nomad add bogue
#+end_src** Then we can sync all the dependencies of a project
From the project root
#+begin_src
nomad sync
#+end_srcAnd the dependencies declared in your project's =dune-project= will be synced
using opam.** Examples
For more examples of usage, see [[file:test/README.org][test/README.org]].
* Plans and ideas
See [[https://github.com/shonfeder/nomad/blob/master/project.org][project.org]].