@softwareventures/maintain-project
Version:
Automatically create and maintain TypeScript projects with standard settings for Software Ventures Limited
38 lines • 3.16 kB
JavaScript
import { mapNullableFn } from "@softwareventures/nullable";
import { excludeNull, only } from "@softwareventures/array";
import { readProjectScript } from "../npm/read-script.js";
import { chainAsyncResults } from "../result/result.js";
import { readProjectRunConfiguration } from "./read-run-configuration.js";
import { writeIdeaRunConfigurationFix, writeIdeaRunConfigurationLint, writeIdeaRunConfigurationStart, writeIdeaRunConfigurationTest } from "./write-run-configurations.js";
export async function addMissingIdeaRunConfigurations(project) {
const lintScript = readProjectScript(project, "lint");
const fixScript = readProjectScript(project, "fix");
const testScript = readProjectScript(project, "test");
const startScript = readProjectScript(project, "start");
const missingLintRunConfiguration = readProjectRunConfiguration(project, "lint").then(result => result.type === "failure" && only(result.reasons)?.type === "file-not-found");
const missingFixRunConfiguration = readProjectRunConfiguration(project, "fix").then(result => result.type === "failure" && only(result.reasons)?.type === "file-not-found");
const missingTestRunConfiguration = readProjectRunConfiguration(project, "test").then(result => result.type === "failure" && only(result.reasons)?.type === "file-not-found");
const missingStartRunConfiguration = readProjectRunConfiguration(project, "start").then(result => result.type === "failure" && only(result.reasons)?.type === "file-not-found");
const needLintRunConfiguration = Promise.all([lintScript, missingLintRunConfiguration]).then(([script, missing]) => script != null && missing);
const needFixRunConfiguration = Promise.all([fixScript, missingFixRunConfiguration]).then(([script, missing]) => script != null && missing);
const needTestRunConfiguration = Promise.all([testScript, missingTestRunConfiguration]).then(([script, missing]) => script != null && missing);
const needStartRunConfiguration = Promise.all([startScript, missingStartRunConfiguration]).then(([script, missing]) => script != null && missing);
const insertLintRunConfiguration = needLintRunConfiguration.then(need => need ? writeIdeaRunConfigurationLint(project) : null);
const insertFixRunConfiguration = needFixRunConfiguration.then(need => need ? writeIdeaRunConfigurationFix(project) : null);
const insertTestRunConfiguration = needTestRunConfiguration.then(need => need ? writeIdeaRunConfigurationTest(project) : null);
const insertStartRunConfiguration = needStartRunConfiguration.then(need => need ? writeIdeaRunConfigurationStart(project) : null);
return Promise.all([
insertLintRunConfiguration,
insertFixRunConfiguration,
insertTestRunConfiguration,
insertStartRunConfiguration
])
.then(excludeNull)
.then(actions => (actions.length === 0 ? null : actions))
.then(mapNullableFn(actions => ({
type: "fs-stage-update",
log: "chore(webstorm): add missing run configurations",
apply: async (stage) => chainAsyncResults(stage, actions)
})));
}
//# sourceMappingURL=add-missing-run-configurations.js.map