2017-08-07 1 views
1

J'essaye de cloner les repères git simultanément dans différents onglets de terminaux Mac car ils prennent beaucoup de temps à cloner.Exécution simultanée du script dans différentes fenêtres d'onglets

J'ai essayé beaucoup de variantes ci-dessous, mais je n'arrive pas à obtenir chaque clone séparé, puis à suivre les commandes dans 3 onglets de terminal séparés, fonctionnant en même temps, des idées sur la façon dont je peux changer pour y arriver sans installer quelque chose d'externe tel que ttab?

cwd=$(pwd) 
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone [email protected]:me/myrepo1.git && cd myrepo1 && git pull && nvm use && npm install &" in selected tab of the front window' & 
osascript -e 'tell application "Terminal" to activate' -e 'tell application "System Events" to tell process "Terminal" to keystroke "t" using command down' -e 'tell application "Terminal" to do script "cd '$cwd' && git clone [email protected]:me/myrepo3.git && cd myrepo2 && git pull && nvm use && npm install" in selected tab of the front window' & 
git clone [email protected]:me/myrepo3.git && cd myrepo3 && git pull && nvm use && npm install 

Répondre

1

Cela va le faire.

#!/bin/bash 

declare -a repos=("myrepo1" "myrepo2" "myrepo3") 
me="[email protected]:me" 

pwd=`pwd` 
for i in "${repos[@]}" 
do 
    osascript -e "tell application \"Terminal\"" -e "tell application \"System Events\" to keystroke \"t\" using {command down}" -e "do script \"cd $pwd; git clone $me/$i.git && cd $i && git pull && nvm use && npm install\" in front window" -e "end tell" > /dev/null 
done 

Notes:

  • Vous ne devriez pas avoir à utiliser git pull après le clonage d'un repo, mais je l'ai gardé dans le script de toute façon, car il ne fait pas de mal.
  • Si vous utilisez nvm use, assurez-vous d'avoir un fichier .nvmrc avec la version de votre noeud spécifié à la racine de chaque projet. Sinon, nvm use ne fonctionnera pas.
    • Vous le savez probablement déjà, mais je voulais le répéter dans si votre script ne fonctionne pas.
+0

Bonne réponse, merci! – JL9

+0

Pas de problème :) Je suis content que ça a aidé. –