Giter VIP home page Giter VIP logo

figurate-eval's Introduction

Figurate - Evaluation Scripting

An exploration in configuration management DSLs. Primarily focused on support confguration of OSGi constellations, but may apply to a more general context in the future..

Configurable targets:

  • File - create, delete, update file contents and permissions
  • Exec - execute a command
  • Package - package management (via yum, apt, homebrew, etc.)
  • User - user management
  • XML - parse, manipulate, output
  • JSON - parse, generate
  • HTTP - parse and generate requests
  • ...

Pipeline

A pipeline is a chain of evaluations producing a composite result.

Examples:

image('/tmp/map-700-collins-st-melbourne', border: 'shadow') << map << '700 Collins St, Melbourne'
pdf("/tmp/screenshot-${now.dateTime}.pdf") << ['This is a description of the screenshot', screenshot()]

Enclosures

Enclosures wrap an evaluation to provide support for external management of evaluations. Some example enclosures are:

  • timeout(TimeUnit) - support for timeout of long-running evaluations
  • dir(File) - execute in the specified directory
  • parallel(Closure...) - execute multiple evaluations concurrently
  • retry(int) - retry up to limit times
  • waitFor(Closure) - wait for a condition before executing

Concepts:

  • Evaluation - groups an input and a result. e.g. Eval[input: 2 + 2, result: 4]
  • Synonym - an alias for an input template. e.g. Syn[name: 'avg', input: { it.sum() / it.size() }]
  • ...

Usage

The recommended way to use figurate-eval is to fork this project and include your fork in dependent projects using Git submodules. The benefits of this are:

  • You can easily keep the scripts updated
  • Any changes/improvements can be easily fed back to the project using pull requests
  • You maintain your scripts in a central location that avoids duplication across projects

figurate-eval's People

Contributors

benfortuna avatar

Stargazers

Sheena Artrip avatar

Watchers

James Cloos avatar  avatar  avatar

figurate-eval's Issues

Universal build scripting

Many build tools are developing their own DSLs for build orchestration. E.g. Travis-ci, Jenkins pipeline, etc. Bamboo will probably introduce one soon..

A universal DSL won't be as tightly integrated with the platform, but certain concepts are portable enough - especially for JVM-based build tools.

Cloud macros

AWS, Google, digital ocean, etc. Orchestration via API

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.