Integrate clang-format into JS lint steps
This commit is contained in:
@@ -8,7 +8,7 @@
|
||||
*/
|
||||
|
||||
module.exports = {
|
||||
ignorePatterns: ["dist/**"],
|
||||
ignorePatterns: ["dist/**", "**/*.d.ts"],
|
||||
parser: "@babel/eslint-parser",
|
||||
extends: [
|
||||
"eslint:recommended",
|
||||
|
@@ -8,82 +8,58 @@
|
||||
*/
|
||||
|
||||
const {
|
||||
argv,
|
||||
copyTask,
|
||||
eslintTask,
|
||||
logger,
|
||||
jestTask,
|
||||
option,
|
||||
parallel,
|
||||
series,
|
||||
spawn,
|
||||
task,
|
||||
} = require("just-scripts");
|
||||
|
||||
const glob = require("glob");
|
||||
const which = require("which");
|
||||
|
||||
const cmake = which.sync("cmake");
|
||||
const emcmake = which.sync("emcmake");
|
||||
const ninja = which.sync("ninja", { nothrow: true });
|
||||
const node = which.sync("node");
|
||||
const npx = which.sync("npx");
|
||||
const node = process.execPath;
|
||||
|
||||
task("copy-dts", copyTask({ paths: ["./src_js/**/*.d.ts"], dest: "./dist" }));
|
||||
option("fix");
|
||||
|
||||
task("babel", () =>
|
||||
spawn(npx, ["babel", "src_js", "--source-maps", "--out-dir", "dist"])
|
||||
task(
|
||||
"prepare-for-build",
|
||||
parallel(
|
||||
babelTransformTask({ paths: ["src_js"], dest: "dist" }),
|
||||
copyTask({ paths: ["src_js/**/*.d.ts"], dest: "dist" }),
|
||||
emcmakeGenerateTask()
|
||||
)
|
||||
);
|
||||
|
||||
task("cmake-generate", () =>
|
||||
spawn(emcmake, [
|
||||
"cmake",
|
||||
"-S",
|
||||
".",
|
||||
"-B",
|
||||
"build",
|
||||
...(ninja ? ["-G", "Ninja"] : []),
|
||||
])
|
||||
);
|
||||
|
||||
function prepareTask() {
|
||||
return parallel("cmake-generate", "copy-dts", "babel");
|
||||
}
|
||||
|
||||
function runBenchTask() {
|
||||
const files = glob.sync("./tests/Benchmarks/**/*.js");
|
||||
return () =>
|
||||
spawn(node, ["./tests/run-bench.js", ...files], { stdio: "inherit" });
|
||||
}
|
||||
|
||||
function cmakeBuildTask(targets) {
|
||||
return () =>
|
||||
spawn(
|
||||
cmake,
|
||||
["--build", "build", ...(targets ? ["--target", ...targets] : [])],
|
||||
{ stdio: "inherit" }
|
||||
);
|
||||
}
|
||||
|
||||
function buildFlavor(flavor, env) {
|
||||
function defineFlavor(flavor, env) {
|
||||
task(`cmake-build:${flavor}`, cmakeBuildTask([flavor]));
|
||||
task(`jest:${flavor}`, jestTask({ env }));
|
||||
task(
|
||||
`test:${flavor}`,
|
||||
series(prepareTask(), `cmake-build:${flavor}`, `jest:${flavor}`)
|
||||
series("prepare-for-build", `cmake-build:${flavor}`, `jest:${flavor}`)
|
||||
);
|
||||
}
|
||||
|
||||
buildFlavor("asmjs-async", { WASM: 0, SYNC: 0 });
|
||||
buildFlavor("asmjs-sync", { WASM: 0, SYNC: 1 });
|
||||
buildFlavor("wasm-async", { WASM: 1, SYNC: 0 });
|
||||
buildFlavor("wasm-sync", { WASM: 1, SYNC: 1 });
|
||||
defineFlavor("asmjs-async", { WASM: 0, SYNC: 0 });
|
||||
defineFlavor("asmjs-sync", { WASM: 0, SYNC: 1 });
|
||||
defineFlavor("wasm-async", { WASM: 1, SYNC: 0 });
|
||||
defineFlavor("wasm-sync", { WASM: 1, SYNC: 1 });
|
||||
|
||||
task("cmake-build:all", cmakeBuildTask());
|
||||
task("cmake-build:async", cmakeBuildTask(["asmjs-async", "wasm-async"]));
|
||||
task("cmake-build:sync", cmakeBuildTask(["asmjs-sync", "wasm-sync"]));
|
||||
|
||||
task("build", series(prepareTask(), "cmake-build:all"));
|
||||
task("build", series("prepare-for-build", "cmake-build:all"));
|
||||
|
||||
task(
|
||||
"test",
|
||||
series(
|
||||
prepareTask(),
|
||||
"prepare-for-build",
|
||||
series("cmake-build:asmjs-async", "jest:asmjs-async"),
|
||||
series("cmake-build:asmjs-sync", "jest:asmjs-sync"),
|
||||
series("cmake-build:wasm-async", "jest:wasm-async"),
|
||||
@@ -91,4 +67,77 @@ task(
|
||||
)
|
||||
);
|
||||
|
||||
task("benchmark", series(prepareTask(), "cmake-build:sync", runBenchTask()));
|
||||
task(
|
||||
"benchmark",
|
||||
series("prepare-for-build", "cmake-build:sync", runBenchTask())
|
||||
);
|
||||
|
||||
task(
|
||||
"lint",
|
||||
series(eslintTask({ fix: argv().fix }), clangFormatTask({ fix: argv().fix }))
|
||||
);
|
||||
|
||||
function babelTransformTask(opts) {
|
||||
return () => {
|
||||
const args = [...opts.paths, "--source-maps", "--out-dir", opts.dest];
|
||||
logger.info(`Transforming [${opts.paths.join(",")}] to '${opts.dest}'`);
|
||||
|
||||
return spawn(node, [require.resolve("@babel/cli/bin/babel"), ...args]);
|
||||
};
|
||||
}
|
||||
|
||||
function runBenchTask() {
|
||||
return () => {
|
||||
const files = glob.sync("./tests/Benchmarks/**/*.js");
|
||||
const args = ["./tests/run-bench.js", ...files];
|
||||
logger.info(args.join(" "));
|
||||
|
||||
return spawn(node, args, { stdio: "inherit" });
|
||||
};
|
||||
}
|
||||
|
||||
function emcmakeGenerateTask() {
|
||||
return () => {
|
||||
const emcmake = which.sync("emcmake");
|
||||
const ninja = which.sync("ninja", { nothrow: true });
|
||||
const args = [
|
||||
"cmake",
|
||||
"-S",
|
||||
".",
|
||||
"-B",
|
||||
"build",
|
||||
...(ninja ? ["-G", "Ninja"] : []),
|
||||
];
|
||||
logger.info(["encmake", ...args].join(" "));
|
||||
|
||||
return spawn(emcmake, args);
|
||||
};
|
||||
}
|
||||
|
||||
function cmakeBuildTask(targets) {
|
||||
return () => {
|
||||
const cmake = which.sync("cmake");
|
||||
const args = [
|
||||
"--build",
|
||||
"build",
|
||||
...(targets ? ["--target", ...targets] : []),
|
||||
];
|
||||
logger.info(["cmake", ...args].join(" "));
|
||||
|
||||
return spawn(cmake, args, { stdio: "inherit" });
|
||||
};
|
||||
}
|
||||
|
||||
function clangFormatTask(opts) {
|
||||
return () => {
|
||||
const args = [
|
||||
...(opts.fix ? ["-i"] : ["--dry-run", "--Werror"]),
|
||||
...glob.sync("**/*.{h,hh,hpp,c,cpp,cc,m,mm}"),
|
||||
];
|
||||
logger.info(["clang-format", ...args].join(" "));
|
||||
|
||||
return spawn(node, [require.resolve("clang-format"), ...args], {
|
||||
stdio: "inherit",
|
||||
});
|
||||
};
|
||||
}
|
||||
|
@@ -28,8 +28,8 @@
|
||||
"scripts": {
|
||||
"benchmark": "just benchmark",
|
||||
"build": "just build",
|
||||
"lint": "eslint .",
|
||||
"lint:fix": "yarn lint --fix",
|
||||
"lint": "just lint",
|
||||
"lint:fix": "just lint --fix",
|
||||
"test": "just test",
|
||||
"test:asmjs-async": "just test:asmjs-async",
|
||||
"test:asmjs-sync": "just test:asmjs-sync",
|
||||
@@ -41,6 +41,7 @@
|
||||
"@babel/core": "^7.20.7",
|
||||
"@babel/eslint-parser": "^7.19.1",
|
||||
"@babel/preset-env": "^7.20.2",
|
||||
"clang-format": "^1.8.0",
|
||||
"eslint": "^8.30.0",
|
||||
"eslint-config-prettier": "^8.5.0",
|
||||
"eslint-plugin-jest": "^27.1.7",
|
||||
|
@@ -32,11 +32,11 @@ EMSCRIPTEN_BINDINGS(YOGA_LAYOUT) {
|
||||
"setExperimentalFeatureEnabled",
|
||||
&Config::setExperimentalFeatureEnabled)
|
||||
.function("setPointScaleFactor", &Config::setPointScaleFactor)
|
||||
.function("setUseLegacyStretchBehaviour", &Config::setUseLegacyStretchBehaviour)
|
||||
.function(
|
||||
"setUseLegacyStretchBehaviour", &Config::setUseLegacyStretchBehaviour)
|
||||
.function("setUseWebDefaults", &Config::setUseWebDefaults)
|
||||
.function(
|
||||
"isExperimentalFeatureEnabled",
|
||||
&Config::isExperimentalFeatureEnabled)
|
||||
"isExperimentalFeatureEnabled", &Config::isExperimentalFeatureEnabled)
|
||||
.function("useLegacyStretchBehaviour", &Config::useLegacyStretchBehaviour)
|
||||
.function("useWebDefaults", &Config::useWebDefaults);
|
||||
|
||||
|
@@ -1628,6 +1628,11 @@ async-settle@^2.0.0:
|
||||
dependencies:
|
||||
async-done "^2.0.0"
|
||||
|
||||
async@^3.2.3:
|
||||
version "3.2.4"
|
||||
resolved "https://registry.yarnpkg.com/async/-/async-3.2.4.tgz#2d22e00f8cddeb5fde5dd33522b56d1cf569a81c"
|
||||
integrity sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==
|
||||
|
||||
babel-jest@^29.3.1:
|
||||
version "29.3.1"
|
||||
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.3.1.tgz#05c83e0d128cd48c453eea851482a38782249f44"
|
||||
@@ -1870,6 +1875,15 @@ cjs-module-lexer@^1.0.0:
|
||||
resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz#9f84ba3244a512f3a54e5277e8eef4c489864e40"
|
||||
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
|
||||
|
||||
clang-format@^1.8.0:
|
||||
version "1.8.0"
|
||||
resolved "https://registry.yarnpkg.com/clang-format/-/clang-format-1.8.0.tgz#7779df1c5ce1bc8aac1b0b02b4e479191ef21d46"
|
||||
integrity sha512-pK8gzfu55/lHzIpQ1givIbWfn3eXnU7SfxqIwVgnn5jEM6j4ZJYjpFqFs4iSBPNedzRMmfjYjuQhu657WAXHXw==
|
||||
dependencies:
|
||||
async "^3.2.3"
|
||||
glob "^7.0.0"
|
||||
resolve "^1.1.6"
|
||||
|
||||
cli-table3@^0.6.0:
|
||||
version "0.6.3"
|
||||
resolved "https://registry.yarnpkg.com/cli-table3/-/cli-table3-0.6.3.tgz#61ab765aac156b52f222954ffc607a6f01dbeeb2"
|
||||
@@ -2506,7 +2520,7 @@ glob-parent@^6.0.2:
|
||||
dependencies:
|
||||
is-glob "^4.0.3"
|
||||
|
||||
glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
|
||||
glob@^7.0.0, glob@^7.1.3, glob@^7.1.4, glob@^7.2.0:
|
||||
version "7.2.3"
|
||||
resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
|
||||
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
||||
@@ -3798,7 +3812,7 @@ resolve.exports@^1.1.0:
|
||||
resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.0.tgz#5ce842b94b05146c0e03076985d1d0e7e48c90c9"
|
||||
integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
|
||||
|
||||
resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0:
|
||||
resolve@^1.1.6, resolve@^1.14.2, resolve@^1.19.0, resolve@^1.20.0:
|
||||
version "1.22.1"
|
||||
resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
|
||||
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
|
||||
|
Reference in New Issue
Block a user