threepipe
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

utils.mjs 932B

před 2 roky
12345678910111213141516171819202122232425
  1. import path from "node:path";
  2. import fs from "node:fs";
  3. import {execSync} from "node:child_process";
  4. export function loopPluginDirs(callback){
  5. const __dirname = path.dirname(new URL(import.meta.url).pathname);
  6. const pluginsDir = path.join(__dirname, '../plugins')
  7. const pluginFolders = fs.readdirSync(pluginsDir)
  8. for (const pluginFolder of pluginFolders) {
  9. const pluginDir = path.join(pluginsDir, pluginFolder)
  10. const packageJsonPath = path.join(pluginDir, 'package.json')
  11. if (!fs.existsSync(packageJsonPath)) continue;
  12. callback(pluginDir, pluginFolder)
  13. }
  14. }
  15. export function execEachPlugin(command, templates = false){
  16. loopPluginDirs((pluginDir, pluginFolder) => {
  17. if(!templates && pluginFolder.startsWith('plugin-template-')) return;
  18. console.log(`Executing ${command} in ${pluginDir}`)
  19. execSync(command, {cwd: pluginDir, stdio: 'inherit'})
  20. })
  21. }