harmony-0.1.0.0: README.md
# 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`)
## 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.
## 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")