diff --git a/js/pincjsc/package-lock.json b/js/pincjsc/package-lock.json index b19e76b..5620dfb 100644 --- a/js/pincjsc/package-lock.json +++ b/js/pincjsc/package-lock.json @@ -1,13 +1,28 @@ { - "name": "@pinc-official/pincjs", - "version": "0.0.1", + "name": "@pinc-official/pincjsc", + "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@pinc-official/pincjs", - "version": "0.0.1", - "license": "MIT" + "name": "@pinc-official/pincjsc", + "version": "0.0.2", + "license": "MIT", + "dependencies": { + "commander": "^15.0.0" + }, + "bin": { + "pincjsc": "pincjsc-cli.js" + } + }, + "node_modules/commander": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-15.0.0.tgz", + "integrity": "sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==", + "license": "MIT", + "engines": { + "node": ">=22.12.0" + } } } } diff --git a/js/pincjsc/package.json b/js/pincjsc/package.json index a9ef72e..5e0efad 100644 --- a/js/pincjsc/package.json +++ b/js/pincjsc/package.json @@ -1,6 +1,6 @@ { "name": "@pinc-official/pincjsc", - "version": "0.0.1", + "version": "0.0.2", "description": "Provides functions to compile pinc-lang source code to be executable in JavaScript", "homepage": "https://github.com/pinc-official/pinc-lang#readme", "bugs": { @@ -17,7 +17,13 @@ "types": "./pincjsc.d.ts", "files": [ "./compile.bc.js", - "./pincjsc.js" + "./pincjsc.js", + "./pincjsc-cli.js" ], - "dependencies": {} + "bin": { + "pincjsc": "./pincjsc-cli.js" + }, + "dependencies": { + "commander": "^15.0.0" + } } diff --git a/js/pincjsc/pincjsc-cli.js b/js/pincjsc/pincjsc-cli.js new file mode 100755 index 0000000..9c867ee --- /dev/null +++ b/js/pincjsc/pincjsc-cli.js @@ -0,0 +1,15 @@ +#!/usr/bin/env node + +const { Command } = require('commander'); +const { compile } = require('./pincjsc'); + +const program = new Command(); +program + .name('pincjsc') + .description('CLI to compile pinc-lang source code to be executable in JavaScript') + .argument('', 'input directory where .pi source files are located') + .argument('', 'output directory where .pi.js files should be stored in') + .action((inputDir, outDir) => { + compile(inputDir, outDir); + }) + .parse(); diff --git a/js/pincjsc/pincjsc.js b/js/pincjsc/pincjsc.js index b6a14c3..83df218 100644 --- a/js/pincjsc/pincjsc.js +++ b/js/pincjsc/pincjsc.js @@ -1,6 +1,8 @@ +const fs = require('node:fs'); const { compile } = require('./compile.bc'); const compile_wrapper = (inputDir, outDir) => { + fs.mkdirSync(outDir, { recursive: true }); compile(inputDir, outDir); };