deno/tools/format.js
2021-05-06 13:22:24 +09:00

65 lines
1.6 KiB
JavaScript
Executable file

#!/usr/bin/env -S deno run --unstable --allow-write --allow-read --allow-run
// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license.
import { getPrebuiltToolPath, getSources, join, ROOT_PATH } from "./util.js";
async function dprint() {
const configFile = join(ROOT_PATH, ".dprint.json");
const execPath = getPrebuiltToolPath("dprint");
console.log("dprint");
const p = Deno.run({
cmd: [execPath, "fmt", "--config=" + configFile],
});
const { success } = await p.status();
if (!success) {
throw new Error("dprint failed");
}
p.close();
}
async function rustfmt() {
const configFile = join(ROOT_PATH, ".rustfmt.toml");
const sourceFiles = await getSources(ROOT_PATH, ["*.rs"]);
if (!sourceFiles.length) {
return;
}
console.log(`rustfmt ${sourceFiles.length} file(s)`);
const p = Deno.run({
cmd: ["rustfmt", "--config-path=" + configFile, "--", ...sourceFiles],
});
const { success } = await p.status();
if (!success) {
throw new Error("rustfmt failed");
}
p.close();
}
async function main() {
await Deno.chdir(ROOT_PATH);
await dprint();
await rustfmt();
if (Deno.args.includes("--check")) {
const git = Deno.run({
cmd: ["git", "status", "-uno", "--porcelain", "--ignore-submodules"],
stdout: "piped",
});
const { success } = await git.status();
if (!success) {
throw new Error("git status failed");
}
const out = new TextDecoder().decode(await git.output());
git.close();
if (out) {
console.log("run tools/format.js");
console.log(out);
Deno.exit(1);
}
}
}
await main();