From 953a1fefa2836a6c7c1c205aefa12e04a6d440f5 Mon Sep 17 00:00:00 2001 From: polsevev Date: Fri, 31 May 2024 16:26:18 +0200 Subject: [PATCH] Finished cleanup --- README.md | 49 +++++++++++++++++++++++++++++++++++++++ bun.lockb | Bin 91190 -> 91684 bytes src/index.ts => index.ts | 35 +++++++++++++++++----------- tsconfig.json | 2 +- 4 files changed, 72 insertions(+), 14 deletions(-) rename src/index.ts => index.ts (67%) diff --git a/README.md b/README.md index 2204472..6b99bc3 100644 --- a/README.md +++ b/README.md @@ -7,3 +7,52 @@ This tool is created to transform JavaScript based on definitions written in a c This is a DSL created to define proposal transformations using templates. A transformation is defined by two templates, a template of what code snippets to search for **applicable to** and a template of how to transform those snippets **transform to**. Examples of definitions for proposals can be found in [dsl_files](./dsl_files/) + +## Running this project + +This project exposes an api in the file [transform/transfrom.ts](./src/transform/transform.ts), which is meant to be used as this library's entry point. + +To run this code as a standalone project, a file [index.ts](./index.ts) exists to facilitate running this project. + +This project is created using TypeScript, and it is recommended to use [Bun](https://bun.sh/) to compile and run it. + +### Building Langium required files + +Firstly, building langium is required, this is done by the following: + +```sh +# cd into JSTQL +cd JSTQL + +# Install dependencies +npm i + +# Build langium generated files +npm run langium:generate + +# Build final JS source +npm run build +``` + +### Running a transformation + +Now we are ready to run this project with the pipeline on a test JS file: + +```sh +# cd into top level +cd .. + +# Install dependencies +bun i + +# Run an example transformation +bun run index.ts dsl_files/pipeline.jstql test_files/test.js +``` + +### Arguments of index.ts + +Arguments + +- First positional is path to JSTQL +- Second positional is path to JS file to transform +- -o is optional output path, if not given path is **./out.js** diff --git a/bun.lockb b/bun.lockb index 03950d9861faead4afe93f2a53cafd818cd91490..b1da9fcbac826873b841ea42527a3c10e2496af7 100755 GIT binary patch delta 13813 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⩔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 diff --git a/src/index.ts b/index.ts similarity index 67% rename from src/index.ts rename to index.ts index e733ca2..bbf1565 100644 --- a/src/index.ts +++ b/index.ts @@ -1,32 +1,40 @@ //import * as babelparser from "../babel/packages/babel-parser"; import * as babelparser from "@babel/parser"; //import core from "../babel/packages/babel-core"; -import { parse_with_plugins } from "./parser/parse"; +import { parse_with_plugins } from "./src/parser/parse"; import { SelfHostedRecipe, TransformRecipe, transform, -} from "./transform/transform"; +} from "./src/transform/transform"; import { readdir } from "node:fs/promises"; -import { parseJSTQL } from "./langium/langiumRunner"; +import { parseJSTQL } from "./src/langium/langiumRunner"; import { parseArgs } from "util"; -const options = { - o: { - type: "string", - }, -}; +const options = {}; const { values: argVals, tokens: positional } = parseArgs({ - options, + options: { + o: { + type: "string", + }, + }, tokens: true, allowPositionals: true, }); const main = async () => { //transform(selfHostedTransformExampleMultiStmt, codeFromFile); console.log(positional); - if (!positional[0] || !positional[0].value.endsWith(".jstql")) { + console.log(argVals); + if (!positional) { + throw new Error("Something is wrong with args"); + } + if ( + !positional[0] && + positional[0].kind === "positional" && + !positional[0].value.endsWith(".jstql") + ) { throw new Error("First positional argument is current JSTQL file"); } if (!positional[1] || !positional[1].value.endsWith(".js")) { @@ -44,12 +52,13 @@ const main = async () => { for (let proposal of parsedJSTQL) { let [resultString, matches] = transform(proposal.cases, codeString); - - let path = "./"; + console.log(resultString); + let path = "./out.js"; if (argVals["o"]) { path = argVals["o"]; } - Bun.write(path, resultString); + console.log(path); + await Bun.write(path, resultString); } }; diff --git a/tsconfig.json b/tsconfig.json index f5dba31..98668a6 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -10,6 +10,6 @@ "moduleResolution": "node", "types": ["bun-types"] }, - "include": ["src"], + "include": ["src", "index.ts"], "exclude": ["babel"] }