@softwareventures/maintain-project
Version:
Automatically create and maintain TypeScript projects with standard settings for Software Ventures Limited
48 lines • 2.3 kB
JavaScript
import { commit } from "../fs-stage/commit.js";
import { emptyDirectory } from "../fs-stage/directory.js";
import { bindAsyncResultFn, chainAsyncResults, throwFailureFn } from "../result/result.js";
import { writeEsLintIgnore } from "../eslint/write.js";
import { gitInit } from "../git/init.js";
import { writeGitIgnore } from "../git/write.js";
import { writeGitHubConfig } from "../github/write.js";
import { writeIdeaProjectFiles } from "../idea/write.js";
import { writeNpmFiles } from "../npm/write.js";
import { writePrettierIgnore } from "../prettier/write.js";
import { writeRenovateConfig } from "../renovate/write.js";
import { writeTypeScriptFiles } from "../typescript/write.js";
import { writeWebpackConfig } from "../webpack/write.js";
import { yarnFix } from "../yarn/fix.js";
import { yarnInstall } from "../yarn/install.js";
import { writeLicense } from "../license/write.js";
import { writeHuskyConfig } from "../husky/write.js";
import { writeCommitlintConfig } from "../commitlint/write.js";
import { yarnSetVersionStable } from "../yarn/set-version-stable.js";
import { setYarnLinkerToNodeModules } from "../yarn/set-linker-to-node-modules.js";
export default async function init(project) {
const fsStage = {
root: emptyDirectory,
overwrite: false
};
return chainAsyncResults(fsStage, [
writeGitHubConfig(project),
writeRenovateConfig(project),
writePrettierIgnore(project),
writeGitIgnore(project),
writeEsLintIgnore(project),
writeHuskyConfig(project),
writeCommitlintConfig(project),
writeTypeScriptFiles(project),
writeWebpackConfig(project),
writeIdeaProjectFiles(project),
writeNpmFiles(project),
writeLicense(project)
])
.then(throwFailureFn("Internal error creating initial file stage"))
.then(async (fsStage) => commit(project.path, fsStage))
.then(bindAsyncResultFn(async () => gitInit(project)))
.then(bindAsyncResultFn(async () => yarnSetVersionStable(project)))
.then(bindAsyncResultFn(async () => setYarnLinkerToNodeModules(project)))
.then(bindAsyncResultFn(async () => yarnInstall(project)))
.then(bindAsyncResultFn(async () => yarnFix(project)));
}
//# sourceMappingURL=init.js.map