Clay is an abstract system model store to automate various kind of operations. It provides some APIs to access the system model store.
- Loam
- The basic models and functions work on Clay
- Pottery
- A simple GUI module works with Loam on Clay
$ cd $GOPATH/src/github.com/qb0C80aE/clay
$ go build
$ ./clay
The server runs at http://localhost:8080 by default.
You can give the environmental variables to Clay.
Key | Description | Options | Default |
---|---|---|---|
HOST | The host to listen. | - | localhost |
PORT | The port to listen. | - | 8080 |
DB_MODE | The indentifier how the db is managed. | memory/file | memory |
DB_FILE_PATH | The path where the db file is located. This value is used if DB_MODE=file is set. | - | clay.db |
Due to mattn/go-sqlite3
, mingw gcc is required.
- Install msys2 https://msys2.github.io/
- Run msys2 shell. i.e.
C:\mingw64\msys2.exe
$ pacman -S mingw-w64-x86_64-gcc
$ cd $GOPATH/src/github.com/qb0C80aE/clay
$ go build
$ ./clay
Powershell
PS> C:\msys64\usr\bin\pacman -S mingw-w64-x86_64-gcc
PS> cd $env:GOPATH/src/github.com/qb0C80aE/clay
PS> powershell { $env:PATH+=";C:\msys64\mingw64\bin"; go build }
PS> .\clay.exe
Creating go-sqlite3 build archive makes rebuild time shorter.
PS> powershell { $env:PATH+=";C:\msys64\mingw64\bin"; go install github.com/mattn/go-sqlite3 }
You'll see $GOPATH\pkg\windows_amd64\github.com\mattn\go-sqlite3.a
.
You can import and export the models you created through design
resource.
Clay is designed as a standalone modeling tool, and the created design should be stored as human-readable text files in versioning repositories like git to make it easier to realize infrastructure-as-code.
$ # Export the design
$ curl -X GET 'localhost:8080/v1/designs/present?pretty' > design.json
$ # Import and overwrite the design
$ curl -X PUT 'localhost:8080/v1/designs/present' -H 'Content-Type: application/json' -d @design.json
You can register some text templates and generate something using the models in clay.
$ # register template and external parameters
$ curl -X POST "localhost:8080/v1/templates" -H "Content-Type: multipart/form-data" -F name=terraform -F template_content=@examples/sample.template
$ curl -X POST "localhost:8080/v1/template_external_parameters" -H "Content-Type: application/json" -d '{"template_id": 1, "name": "test", "value": "100"}'
$ # show generated template
$ curl -X GET "localhost:8080/v1/templates/1"
$ # Geenrate a text from the tempalte
$ curl -X PATCH "localhost:8080/v1/templates/1"
Simple Rest API using gin(framework) & gorm(orm)
GET /<version>/designs/present
PUT /<version>/designs/present
DELETE /<version>/designs/present
GET /<version>/template_external_parameters
GET /<version>/template_external_parameters/:id
POST /<version>/template_external_parameters
PUT /<version>/template_external_parameters/:id
DELETE /<version>/template_external_parameters/:id
PATCH /<version>/template_external_parameters/:id
GET /<version>/templates
GET /<version>/templates/:id
POST /<version>/templates
PUT /<version>/templates/:id
DELETE /<version>/templates/:id
PATCH /<version>/templates/:id
- Clay was partially generated by https://github.com/wantedly/apig