diff --git a/package.json b/package.json index dcd3f39..0b5fb6e 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ }, "scripts": { "install": "bash -c '(cd tree-sitter-spicy && tree-sitter generate && TREE_SITTER_LIBDIR=../lib tree-sitter test >/dev/null)'", - "test": "sg test" + "test": "sg test", + "parse": "node parse.js" } } diff --git a/parse.js b/parse.js new file mode 100644 index 0000000..953d38b --- /dev/null +++ b/parse.js @@ -0,0 +1,22 @@ +const path = require("node:path"); +const { spawn } = require("child_process"); + +if (process.argv.length === 2) { + console.error("Expected at least one argument!"); + process.exit(1); +} + +// Since we will cd into the tree-sitter parser directory make the passed path absolute. +const file = path.resolve(process.argv[2]); +process.chdir("./tree-sitter-spicy"); + +const parse = spawn("tree-sitter", ["parse", file]); +parse.stdout.on("data", (data) => { + console.log(`${data}`); +}); +parse.stderr.on("data", (data) => { + console.log(`stderr: ${data}`); +}); +parse.on("error", (error) => { + console.log(`error: ${error.message}`); +});