Как запустить команду adonis в командном файле ace - PullRequest
0 голосов
/ 18 января 2020

const { Command } = require('@adonisjs/ace')
const util = require('util')
const execSync = util.promisify(require('child_process').execSync)

const defaultSeedOrder = []

class SeedSync extends Command {
  static get signature () {
    return `seed:sync
    {
      order? : Comma separated of seeds
    }`
  }

  static get description () {
    return 'Seeds based on a list instead of running all seeds async.'
  }

  handle (args, options) {
    let seedOrder;

    if (args.order !== null) {
      seedOrder = args.order.split(/=(.+)/)[1].split(',')
    } else {
      seedOrder = defaultSeedOrder
    }

    for (const seed of seedOrder) {
      console.log(seed)
      execSync(`adonis seed --files='${seed}'`, (e, stdout, stderr) => {
        if (!stdout.includes('Seeded database in')) {
          this.error(`${this.icon('error')} Error: `)
        }

        console.log(stdout)
      })
    }
  }
}

module.exports = SeedSync

Я хочу, чтобы команда ace выполнялась последовательно, я скопировал этот код отсюда: Ссылка на исходный код

Но, похоже, она не работает вообще для меня. I just get this when I run it

Любая помощь будет высоко ценится, спасибо

1 Ответ

0 голосов
/ 19 марта 2020

Проблема с этими 2 блоками.

Эта подпись должна быть такой, чтобы она работала и правильно получала переменную порядка:

static get signature () {
    return `
    seed:sync
    { --order=@value: Run only selected files }
    `
  }

AND

const exec = execSync(`adonis seed --files='${seed}' --force`, {stdio: 'inherit'})

Удалите запятые на --files='${seed}', чтобы они читали --files=${seed}

Поскольку на терминале мы вызываем команду, используя adonis seed:sync --order='' (эта единственная запятая передается семени адониса. js и вызывает ошибка "Нечего сеять")

...