From 0553adec020f350bb726063a4bf85f587aac673d Mon Sep 17 00:00:00 2001 From: Nish Tahir Date: Mon, 30 Oct 2023 14:46:07 -0400 Subject: [PATCH] Convert scripts to ES Modules (#74) --- package.json | 1 + scripts/build.js | 14 +++++++------- scripts/coverage.js | 25 +++++++++++++++---------- scripts/format.js | 13 +++++++------ scripts/util.js | 20 +++++++++----------- 5 files changed, 39 insertions(+), 34 deletions(-) diff --git a/package.json b/package.json index a6f4185..5442df1 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "author": "Nish Tahir", "license": "Apache-2.0", "homepage": "https://github.com/nishtahir/language-kotlin#readme", + "type": "module", "repository": { "type": "git", "url": "git+https://github.com/nishtahir/language-kotlin.git" diff --git a/scripts/build.js b/scripts/build.js index 3ae6776..9e2f4f1 100644 --- a/scripts/build.js +++ b/scripts/build.js @@ -6,13 +6,13 @@ * - Kotlin.tmLanguage */ -const fs = require("fs"); -const path = require("path"); -const plist = require("plist"); -const json = require("format-json"); -const yaml = require("yamljs"); -const deepmerge = require("deepmerge"); -const { safeWriteFileSync } = require("./util"); +import fs from "fs"; +import path from "path"; +import plist from "plist"; +import json from "format-json"; +import yaml from "yamljs"; +import deepmerge from "deepmerge"; +import { __dirname, safeWriteFileSync } from "./util.js"; const SOURCE_PATH = path.resolve(__dirname, "../", "src/"); const OUTPUT_PATH = path.resolve(__dirname, "../dist/"); diff --git a/scripts/coverage.js b/scripts/coverage.js index c59b1ac..7e23b1c 100644 --- a/scripts/coverage.js +++ b/scripts/coverage.js @@ -9,19 +9,24 @@ * It does not consider the inner structure of the scopes, only that they are hit. */ -const path = require("path"); -const plist = require("plist"); -const { safeWriteFileSync, getAllFilesInDir, readFileSync } = require("./util"); - -const { +import path from "path"; +import plist from "plist"; +import { + __dirname, + safeWriteFileSync, + getAllFilesInDir, + readFileSync, +} from "./util.js"; + +import { parseGrammarTestCase, runGrammarTestCase, -} = require("vscode-tmgrammar-test/dist/unit/index"); -const { createRegistry } = require("vscode-tmgrammar-test/dist/common/index"); +} from "vscode-tmgrammar-test/dist/unit/index.js"; +import { createRegistry } from "vscode-tmgrammar-test/dist/common/index.js"; -const lcovWrite = require("lcov-write"); -const Yaml = require("yaml"); -const YamlSourceMap = require("yaml-source-map"); +import lcovWrite from "lcov-write"; +import Yaml from "yaml"; +import YamlSourceMap from "yaml-source-map"; const distDir = path.resolve(__dirname, "../", "dist/"); const buildDir = path.resolve(__dirname, "../", "build/"); diff --git a/scripts/format.js b/scripts/format.js index 6cc7362..f029e5b 100644 --- a/scripts/format.js +++ b/scripts/format.js @@ -3,18 +3,19 @@ * It is used to ensure a consistent code style. */ -const fs = require("fs"); -const path = require("path"); -const yaml = require("yamljs"); +import path from "path"; +import yaml from "yamljs"; +import { readdirSync, readFileSync, writeFileSync } from "fs"; +import { __dirname } from "./util.js"; const sourceDirPath = path.resolve(__dirname, "../", "src/"); -const sourceFiles = fs.readdirSync(sourceDirPath); +const sourceFiles = readdirSync(sourceDirPath); sourceFiles.forEach((file) => { const filePath = path.resolve(sourceDirPath, file); console.log("Formatting " + filePath); - const source = fs.readFileSync(filePath, "utf8"); + const source = readFileSync(filePath, "utf8"); if (source.trim().length === 0) { return; // skip empty files } @@ -24,5 +25,5 @@ sourceFiles.forEach((file) => { indent: 2, indentSeq: true, }); - fs.writeFileSync(filePath, yamlData); + writeFileSync(filePath, yamlData); }); diff --git a/scripts/util.js b/scripts/util.js index b63ddd7..dabf473 100644 --- a/scripts/util.js +++ b/scripts/util.js @@ -1,11 +1,15 @@ -const fs = require("fs"); -const path = require("path"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +export const __filename = fileURLToPath(import.meta.url); +export const __dirname = path.dirname(__filename); /** * Read a file from a given path * @param {string} path file to read */ -function readFileSync(path) { +export function readFileSync(path) { return fs.readFileSync(path, "utf8"); } @@ -15,7 +19,7 @@ function readFileSync(path) { * @param {string} dest * @param {string} content */ -function safeWriteFileSync(dest, content) { +export function safeWriteFileSync(dest, content) { const dir = dest.substring(0, dest.lastIndexOf("/") + 1); if (!fs.existsSync(dir)) { fs.mkdirSync(dir); @@ -28,7 +32,7 @@ function safeWriteFileSync(dest, content) { * @param {string} dirPath - path to directory * @param {Array} files - files in parent directory */ -function getAllFilesInDir(dirPath, files = []) { +export function getAllFilesInDir(dirPath, files = []) { fs.readdirSync(dirPath).forEach((file) => { if (fs.statSync(dirPath + "/" + file).isDirectory()) { files = getAllFilesInDir(dirPath + "/" + file, files); @@ -38,9 +42,3 @@ function getAllFilesInDir(dirPath, files = []) { }); return files; } - -module.exports = { - safeWriteFileSync, - getAllFilesInDir, - readFileSync, -};