gs-weblang-cli
v2.0.2
Published
CLI for Gobstones
Downloads
9
Readme
gs-weblang-cli
CLI for the Gobstones interpreter
Install
# requires node > 4
sudo npm install -g gs-weblang-cli
Run tests
npm test
Building wrapper
The cli can be wrapped as an executable using nexe: npm install nexe -g
.
git clone https://github.com/gobstones/gs-weblang-cli
cd gs-weblang-cli
nexe -i src/index.js -o gs-weblang-cli
Usage
gs-weblang-cli --help
Run
passed
echo "program {\n Poner(Rojo)\n }" > /tmp/gobs.gbs
gs-weblang-cli /tmp/gobs.gbs -f gbb
{
"status": "passed",
"result": {
"x": 0,
"y": 0,
"sizeX": 9,
"sizeY": 9,
"table": "GBB/1.0\r\nsize 9 9\r\ncell 0 0 Azul 0 Negro 0 Rojo 1 Verde 0\r\nhead 0 0\r\n"
}
}
compilation_error
echo "programita {\n Poner(Rojo)\n }" > /tmp/gobs.gbs
gs-weblang-cli /tmp/gobs.gbs
{
"status": "compilation_error",
"result": {
"on": {
"range": {
"start": {
"row": 0,
"column": 1
},
"end": {
"row": 0,
"column": 10
}
},
"value": "programita",
"arity": "name"
},
"message": "Se esperaba una definición de programa, función o procedimiento."
}
}
runtime_error
echo "program {\n Ponerrrrr(Rojo)\n }" > /tmp/gobs.gbs
gs-weblang-cli /tmp/gobs.gbs
{
"status": "runtime_error",
"result": {
"on": ...
},
"message": 'El procedimiento "Ponerrrrr" no se encuentra definido.',
"reason": {
"code": "undefined_procedure",
"detail": { name: "Ponerrrrr" }
}
}
}
all_is_broken_error
This one shouldn't happen very often, but for now... :sweat_smile:
echo "" > /tmp/gobs.gbs
gs-weblang-cli /tmp/gobs.gbs
{
"status": "all_is_broken_error",
"message": "Something has gone very wrong",
"detail": {},
"moreDetail": "Cannot read property 'range' of null"
}
Batch run
request.json
:
[
{
"initialBoard": "GBB...",
"code": "program {\n ..."
},
{
"initialBoard": "GBB...",
"code": "program {\n ..."
},
]
gs-weblang-cli --batch request.json
# returns an array with the responses
Generate AST
echo "program {\n Poner(Azul)\n }" | gs-weblang-cli --ast --from_stdin
{
"alias": "program",
"body": [
{
"arity": "statement",
"alias": "Drop",
"parameters": [
{
"value": 0,
"alias": "Blue"
}
]
}
]
}