harmony-0.1.0.1: README.md
# Harmony [](https://hackage.haskell.org/package/harmony) [](http://travis-ci.org/SantiMunin/harmony)
Harmony is a web service specification compiler that generates implementation (server and client) and tests.
## Targets supported
+ Server
* Node.js (`-sjs`)
+ Client (and [Hypothesis](https://github.com/DRMacIver/hypothesis) based tests)
+ Python (`-cpython`)
## Installation
+ From Hackage: `cabal install harmony`
+ From source code: `git clone https://www.github.com/SantiMunin/harmony && cd harmony && cabal install`
## Usage
After installing the package (`cabal install`), you will get the `harmony` executable. Afterwards:
Usage: harmony [OPTION...] input_file
-c[CLIENTS] --client[=CLIENTS] Desired output for the client
-s[SERVERS] --server[=SERVERS] Desired output for the server
-o[OUTPUT_DIR] --output_dir[=OUTPUT_DIR] Output path
Check the [Targets supported](#targets-supported) section to figure out the code related to each target. Also, refer to the [wiki](https://github.com/SantiMunin/harmony/wiki) for more information.
## Syntax
The input file should follow the syntax specified in `language_spec/Language.cf`. Example:
service_name: HouseworkService
service_version: 1.0.0
enum Color { RED, BLUE, BLACK }
struct Task {
// Primary key
@PK
name : String,
color : Color
}
struct Person {
name: String,
age: Int,
tasks: [Task]
}
resource Person ("/person")
## Contributing
See the [wiki](https://github.com/SantiMunin/harmony/wiki).