diff --git a/install.sh b/install.sh index 8f3f4a0..9a7777f 100755 --- a/install.sh +++ b/install.sh @@ -28,6 +28,7 @@ SYMLINKS=( irbrc peco powconfig + prettierrc.js pryrc reek.yml rspec diff --git a/prettierrc.js b/prettierrc.js new file mode 100644 index 0000000..b6d00e3 --- /dev/null +++ b/prettierrc.js @@ -0,0 +1,50 @@ +const homedir = require('os').homedir(); +const fs = require("fs"); + +function voltaPrettierSearchDirs(voltaDir) { + const packagesDir = `${voltaDir}/tools/image/packages`; + + let paths = [] + let parents = []; + + fs.readdirSync(packagesDir).forEach((item) => { + if (/^prettier-plugin-[^/]+$/.test(item)) { + paths.push(`${packagesDir}/${item}/lib`); + } + + if (item == '@prettier') { + paths = paths.concat( + findDirs(`${packagesDir}/@prettier`, /^plugin-[^/]+$/, "lib") + ); + } else if (/^@[^/]+$/.test(item)) { + parents.push(`${packagesDir}/${item}`); + } + + return []; + }) + + parents.forEach((parent) => { + paths = paths.concat(findDirs(parent, /^prettier-plugin-[^/]+$/, "lib")); + }) + + return paths; +} + +function findDirs(parent, pattern, suffix) { + return fs.readdirSync(parent).flatMap((item) => { + const fp = `${parent}/${item}`; + if (pattern.test(item) && fs.statSync(fp).isDirectory()) { + if (suffix) { + return `${fp}/${suffix}`; + } + return fp; + } + + return []; + }); + +} + +module.exports = { + pluginSearchDirs: voltaPrettierSearchDirs(`${homedir}/.volta`), +};