Code Monkey home page Code Monkey logo

foretspaisibles / gasoline Goto Github PK

View Code? Open in Web Editor NEW
16.0 2.0 0.0 801 KB

Gasoline is an OCaml library providing application templates. Applications written with Gasoline are parametrised by the command line, environment or configuration files, they support fine-grained lightweight internationalised diagnostics and handle software component dependencies.

Home Page: http://michipili.github.io/gasoline

License: Other

Shell 1.19% CSS 0.62% Makefile 5.51% OCaml 89.16% M4 3.51%

gasoline's Introduction

Gasoline

The Gasoline project aims at implementing a Unix-ish application development framework for OCaml. The framework provides application templates factoring application components bootstrapping, configuration analyse and common application patterns, such as filter, secure tool or dæmon.

Users of Gasoline should be enabled to:

  • Rapidly develop applications by using application patterns such as “Unix filter”, “tabular data processor” or “compiler”.
  • Write large software suites whose elements offer homogeneous interfaces.
  • Use standardised diagnostic facilities supporting internationalisation.
  • Cleanly distinguish between application components and lower-level software engineering artifacts.
  • Easily bootstrap and shutdown applications consisting of many modules.

Current state

Gasoline is still beta-software, and many features or design elements are susceptible to change before we reach version 1.0. Current features are:

  • Configuration based on files, environment variables and command line arguments.
  • Configuration cascading rules which can be used to let system administrators enforce some settings of installed applications.
  • Software component management which correctly bootstraps and shutdowns the application, exception sent by the guest are caught and an emergency shutdown procedure is triggered.
  • A diagnostic facility similar to printf but better suited to internationalisation and having routing rules.

Applications can take advantage of a simplified interface to the Camomile library and of writer functions, allowing to produce simple SGML or HTML reports.

See the ocamldoc generated documentation of the master branch for more details.

Free software

It is written by Michael Grünewald and is distributed as a free software: copying it and redistributing it is very much welcome under conditions of the CeCILL-B licence agreement, found in the COPYING and COPYING-FR files of the distribution.

Setup guide

It is easy to install Gasoline using opam and its pinning feature. In a shell visiting the repository, say

% opam pin add gasoline .

It is also possible to install Gasoline manually. The installation procedure is based on the portable build system BSD Owl Scripts written for BSD Make.

  1. Verify that prerequisites are installed:

  2. Get the source, either by cloning the repository or by exploding a distribution tarball.

  3. Optionally run autoconf to produce a configuration script. This is only required if the script is not already present.

  4. Run ./configure, you can choose the installation prefix with --prefix.

  5. Run make build.

  6. Optionally run make test to test your build.

  7. Finally run make install.

Depending on how BSD Make is called on your system, you may need to replace make by bsdmake or bmake in steps 5, 6, and 7. The GNU Make program usually give up the ghost, croaking *** missing separator. Stop. when you mistakingly use it instead of BSD Make.

Step 7 requires that you can su - if you are not already root.

Michael Grünewald in Bonn, on October 21, 2014

gasoline's People

Contributors

foretspaisibles avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

gasoline's Issues

Support opam pinning

As we have an opam port, it would be even more useful if it supports pinning.

Getopt prefix is not taken in account

The getopt prefix used by components to register long options does not work in v0.1. For instance the wordgen example fails when it is invoked as follows:

% ./wordgen -A number=5
wordgen: illegal option -- A
Usage: wordgen [-h]
Exit 64

It is instead expected that -A number=5 sets the configuration parameter Wordgen.Component_automaton.Configuration.generate_n to the value 5.

Implement an “automator-like” facility

We want to implement a very high-level reusable component facility which allows to quickly combine high-level operations much like the Unix shell or Apple Automator do.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.