2016-10-16 3 views
0

У меня есть встроенная проверка, чтобы обнаружить установку пакетов cli, чтобы сэкономить время на установку существующего пакета, но я нашел, что это утомительно, а не то, что доступно для этих длинного списка.функция для обнаружения установки cli

Например:

which -s redis-cli || brew install redis 
which -s java || brew cask install java 
which -s yarn || npm install -g yarn 

Есть ли функция, чтобы сделать его приятно смотреть? Например:

function npmInstall(name) { 
    if (which -s name) { 
     return; 
    } 

    npm install -g name; 
} 

Большое спасибо!

ответ

1

Вы можете передавать клиентские пакеты в качестве параметров.

Пример, script.sh:

for cli in [email protected]; do 
    which "$cli" || npm install -g "$cli" 
done 

вызывается с ./script.sh java yarn

Update:

В именах пакетов может отличается от исполняемых имен, вы можете обрабатывать эти различия, используя Баш ассоциативный массив. Имя пакета, переданное как параметр сценарию, будет использоваться только в том случае, если в массиве для этого пакета не найдено значения:

for pkg in [email protected]; do 
    declare -A exe 
    exe=([redis]="redis-cli" [otherpkg]="otherpkg-cli") 
    package=${exe[$pkg]:-$pkg} 
    which "$package" || npm install -g "$package" 
done 
Смежные вопросы