передать параметры скрипту bash через npm run - PullRequest
0 голосов
/ 03 сентября 2018

Я новичок в написании сценария bash, и у меня есть пакет npm, который я создал https://www.npmjs.com/package/comgen

Bash

days=3
hours=24
minutes=60
totalNumberOfCommits=3
lenghtOfTime=$((days*hours*minutes))
arrayOfCommits=$(shuf -i 1-$lenghtOfTime -n $totalNumberOfCommits | sort -r -n)

for index in $arrayOfCommits
  do
    randomMessage=$(cat /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w 32 | head -n 1)  
    git commit --allow-empty --date "$(date -d "-$index minutes")" -m "$randomMessage"
  done 
git push origin master

Вы запускаете это так npm run comgen Я хочу, чтобы он работал так:

npm run comgen -days "x number of days" -totalNumberOfCommits "x number of commits"

Package.json

"scripts": {
    "comgen": "commit-generator.sh"
 },

Где количество дней и общее количество принятых коммитов заменит число в переменных, которые у меня есть в скрипте bash.

Я прочитал эти ТАК вопросы перед тем, как опубликовать свои собственные: https://unix.stackexchange.com/questions/32290/pass-command-line-arguments-to-bash-script

1 Ответ

0 голосов
/ 03 сентября 2018

Я не уверен, как именно работает npm, но по своему опыту я предполагаю, что аргументы командной строки передаются непосредственно в вызываемый исполняемый файл (двоичный файл или скрипт). Это означает, что ваш скрипт на самом деле называется как

/path/to/comgen -days "x number of days" -totalNumberOfCommits "x number of commits"

Теперь это чистый Bash для анализа аргументов cmdline. Вы оцениваете опцию и решаете, какое будет следующее значение:

days=3
hours=24
minutes=60
totalNumberOfCommits=3

while [ $# -ne 0 ]; do
  case "$1" in
    "-d"|"-days") days=$2; shift 2;;
    "-tc"|"-totalNumberOfCommits") totalNumberOfCommits=$2; shift 2;;
  # "-x"|"-xx"|"-xxx") : Process another option; shift 2;;
    *) break;;
  esac
done

lenghtOfTime=$((days*hours*minutes))

... rest of the code
...