curl
n’est pas disponibleMakefile
db
pour les utilitaires de base de données et db top
db
db
db connections
de sous-commandedb pga
(par exemple pg_activity
)bin/tablet
bin/specs
fournibin/spec -P
Makefile
Makefile
Insignes | Numérisation FOSSA | |
---|---|---|
FOSSSA | ||
Tests CI | ||
Installation de CI | ||
ShellCheck | ||
Gitter |
|
Bashmatic® est un framework BASH, ce qui signifie qu'il s'agit d'un ensemble de fonctions BASH (près de 900 d'entre elles) qui, nous l'espérons, rendront la programmation BASH plus facile, plus agréable et, plus important encore, amusante - en raison de l'objectif de la bibliothèque de fournir au développeur un un retour constant sur ce qui se passe, tandis qu'un script utilisant les assistants de Bashmatic est en cours d'exécution.
Conseil | Nous vous suggérons de vous renseigner sur Bashmatic à partir de la version PDF de ce document qui est bien meilleure pour l'impression.
|
Après avoir installé la bibliothèque (l'emplacement par défaut est ~/.bashmatic
), sachez que vous avez le choix entre :
Recherchez automatiquement la bibliothèque (et toutes les 900+ fonctions) à partir de vos « fichiers dot » de shell comme ~/.bash_profile
en ajoutant cette ligne : source ~/.bashmatic/init.sh
. Sur un ordinateur portable Apple M1 récent, cela ajoute environ 100 ms au total.
OU, vous pouvez l'ignorer lors de l'initialisation de votre connexion et le charger uniquement en haut des scripts qui utilisent la bibliothèque.
Prudence | Les deux approches sont absolument valables et ont leurs avantages et leurs inconvénients. Charger bashmatic dans vos fichiers dot pourrait être un peu risqué. D'une manière ou d'une autre, nous proposerons bientôt des moyens de vérifier que le bashmatic que vous téléchargez est la version sûre et correcte, à chaque fois. |
Tout ce que nous dirons à ce sujet, c'est que nous gérons l'optimisation du sourcing de la bibliothèque. Voici un exemple :
Le style de programmation de Bashmatic® est fortement influencé par les langages DSL de Ruby. Si vous jetez un rapide coup d'œil au script is.sh, il définit un ensemble de fonctions DSL qui peuvent être chaînées avec &&
et ||
pour créer un code compact et auto-documenté comme celui-ci :
[flèche cercle vers le bas]
# An example of a DSL-like function
function bashmatic.auto-update() {
local dir= " ${1 :- " ${BASHMATIC_HOME " }} "
is.a-directory " ${dir} " && {
file.exists-and-newer-than " ${dir} /.last-update " 30 && return 0
(
cd ${BASHMATIC_HOME} &&
git.is-it-time-to-update &&
git.sync-remote
)
}
}
# check if the function is defined and call it
is.a-function.invoke bashmatic.auto-update " $@ "
Pour l'utiliser dans vos propres scripts, vous devrez d'abord étudier les exemples fournis ci-dessous et profiter de chaque module disponible sous lib
.
Remarque finale, - une fois Bashmatic installé et chargé par vos fichiers d'initialisation du shell, vous pouvez taper is.<tab><tab>
pour voir quelles fonctions sont disponibles et commencent par is
. Chaque module sous lib
définit généralement des fonctions publiques commençant par le nom du fichier. Par exemple, les fonctions dans array.sh
commencent généralement par array.<something>.<action>
Bashmatic® offre une vaste gamme de fonctions d'assistance en constante évolution pour l'exécution de commandes, un cadre d'exécution à nouvelle tentative automatique, répétable et mesurant le temps d'exécution avec la fonction clé run
. Il existe des aides pour chaque occasion, du dessin de zones, de lignes, d'en-têtes à l'affichage des barres de progression, à l'obtention des commentaires de l'utilisateur, à l'installation de packages et bien plus encore.
Note | Une bonne partie des assistants de Bashmatic® sont écrits pour OS-X, bien que de nombreuses fonctions utiles fonctionnent également sous Linux. L'intégralité de notre suite de tests fonctionne sur Ubuntu. Un effort est en cours pour convertir les fonctions spécifiques à Homebrew en assistants indépendants du système d'exploitation, tels que package.install , qui fonctionneraient également bien sous Linux. |
Commencez à explorer Bashmatic® ci-dessous avec notre section d'exemples. Lorsque vous êtes prêt, l'ensemble complet des fonctions pubiennes (près de 500 d'entre elles) peut être trouvé dans la page d'index des fonctions.
Et enfin, ne vous inquiétez pas, Bashmatic® est totalement open source et son utilisation et son extension sont gratuites. Nous aimons juste son apparence avec un petit ® :)
BASH version 4+
BASH version 3 (compatibilité partielle, certaines fonctions sont désactivées)
ZSH – depuis une mise à jour récente, Bashmatic est compatible à près de 90 % avec ZSH.
Non pris en charge actuellement
FISH (bien que vous puissiez utiliser Bashmatic via l'assistant de script bin/bashmatic
ou ses exécutables)
Ce projet est né d'une simple réalisation réalisée par plusieurs ingénieurs très expérimentés et très expérimentés, que :
Il est souvent plus facile d'utiliser BASH pour écrire des éléments tels que des installateurs universels, c'est-à-dire des scripts de configuration , des téléchargeurs , des wrappers pour toutes sortes de fonctionnalités, telles que NPM , rbenv , l'installation de gemmes, de rubis, l'utilisation d'AWS, le déploiement de code, etc.
Les valeurs de retour de la fonction BASH se prêtent bien à un DSL compact (langage spécifique à un domaine) où plusieurs fonctions peuvent être chaînées par AND logique &&
et OR ||
pour fournir une logique d’exécution très compacte. Plus important encore, nous pensons que cette logique est extrêmement simple à lire et à comprendre.
Malgré les points ci-dessus, il est également généralement admis que :
De nombreux scripts BASH sont très mal écrits et difficiles à lire et à comprendre.
Il est souvent difficile de comprendre ce qui se passe pendant l'exécution du script, car soit il ne produit rien d'utile, soit il en produit beaucoup trop.
Lorsque des erreurs BASH se produisent, la merde frappe généralement le ventilateur et quelqu'un décide de réécrire le script BASH de 20 lignes en C++ ou Go, parce que, eh bien, c'est un foutu script BASH et il ne fonctionne pas.
Conseil | L'objectif de Bashmatic est de rendre la programmation BASH à la fois amusante, cohérente et de fournir de nombreuses sorties visibles à l'utilisateur afin qu'il n'y ait aucun mystère sur ce qui se passe. |
Le moyen le plus simple d'installer Bashmatic® consiste peut-être à utiliser curl
comme indiqué ci-dessous.
Tout d’abord, assurez-vous que Curl est installé, exécutez which curl
pour voir. Copiez/collez ensuite cette commande dans votre Terminal.
[flèche vers le bas]
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q "
[flèche vers le haut]
Où:
-q signifie « calme » ;
-v pour "verbeux"
Conseil | L'URL https://bashmatic.re1.re redirige vers le HEAD du script bin/bashmatic-install dans le dépôt Github Bashmatic. Nous utilisons cette URL afin de conserver la possibilité de rediriger l'installation vers un autre script à l'avenir, si nécessaire. |
Si vous préférez pouvoir examiner le script avant d'exécuter du code provenant directement d'Internet, je ne vous en veux pas. Vous êtes prudent et intelligent.
Pour les gens comme vous, voici une manière légèrement plus sécurisée de faire la même chose :
export script= " /tmp/install "
curl -fsSL https://bashmatic.re1.re > /tmp/install
chmod 755 /tmp/install
# At this point you can examine /tmp/install
/tmp/install --help
/tmp/install --verbose --debug # install with extra info
Cette méthode vous permet d'examiner le script /tmp/install
avant de l'exécuter.
Ci-dessous quelques explications
Vous pouvez installer une branche ou une balise de Bashmatic en passant le drapeau -b / --git-branch <tag|branch>
.
Vous pouvez transmettre des indicateurs à la fonction bashmatic-install
pour contrôler comment, où Bashmatic est installé et d'où il est téléchargé, notamment :
-v
ou --verbose
pour afficher une sortie supplémentaire, ou l'inverse :
-d
ou --debug
imprimera une sortie de débogage supplémentaire
-f
ou --force
remplacera tout dossier bashmatic existant par le nouveau
-q
ou --quiet
pour aucune sortie
-l
ou --skip-on-login
pour NE PAS installer le hook qui charge Bashmatic lors de la connexion.
Si vous préférez installer Bashmatic dans un emplacement non standard (la valeur par défaut est ~/.bashmatic
), vous pouvez utiliser l'indicateur -H PATH
Par exemple, nous installons ici Bashmatic dans une destination autre que celle par défaut, tout en imprimant des informations détaillées et de débogage supplémentaires, ainsi qu'en utilisant -f
(force) pour éventuellement écraser le dossier de destination (s'il existe déjà) avec une extraction de Bashmatic selon à une balise v2.4.1
:
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ;
bashmatic-install -d -v -f -b v2.4.1 -H ~/workspace/bashmatic "
Si vos clés SSH sont installées localement et que la clé publique a été configurée avec votre compte sur Github, vous souhaiterez peut-être installer Bashmatic en utilisant [email protected]:kigster/bashmatic
origin, au lieu de l'origine https://github.com/kigster/bashmatic
:
Voici la liste complète des options acceptées par l'installateur :
Lorsque vous exécutez bash -c "$(curl -fsSL https://bashmatic.re1.re); bashmatic-install"
, ce qui suit se produit généralement :
curl
télécharge le script bin/bashmatic-install
et le transmet au BASH intégré pour évaluation.
Une fois évaluée, la fonction bashmatic-install
est invoquée, qui effectue réellement l'installation.
C'est la fonction qui accepte les arguments répertoriés ci-dessus.
Le script peut vous demander votre mot de passe pour activer l'accès sudo - cela peut être requis sous OS-X pour installer les outils de développement XCode (qui incluent git
)
Si votre version de BASH est 3 ou antérieure, le script sera téléchargé et construit à partir des sources version 5+ de BASH, et l'installera dans /usr/local/bin/bash
. SUDO peut être requis pour cette étape.
Sous OS-X, le script installera Homebrew sur OS-X, s'il n'est pas déjà là.
Une fois Brew installé, les packages Brew coreutils
et gnu-sed
sont installés, car les deux sont requis et sur lesquels Bashmatic s'appuie.
Le script tentera ensuite de git clone
le dépôt bashmatic dans le dossier personnel de Bashmatic, ou - s'il existe déjà - il git pull
les dernières modifications.
Enfin, à moins que vous ne spécifiiez -l
ou --skip-on-login
, le script vérifiera vos fichiers bash dot et ajoutera le hook pour charger Bashmatic à partir de ~/.bashrc
ou ~/.bash_profile
.
La dernière partie nécessite quelques explications.
Maintenant, vous pouvez ou non vouloir charger Bashmatic lors de la connexion.
En d'autres termes, vous avez quelque chose comme ceci dans votre ~/.bashrc
:
# Let's see if ~/.bashrc mentions Bashmatic:
$ grep bashmatic ~ /.bashrc
[[ -f ~ /.bashmatic/init.sh ]] && source ~ /.bashmatic/init.sh
Accès instantané à plus de 800 fonctions pratiques proposées et assistantes par Bashmatic©. Bashmatic se mettra automatiquement à jour chaque fois qu'il sera chargé depuis la branche principale.
Délai d'environ 134 ms à la connexion et vecteur d'attaque de sécurité potentiel (par exemple, si quelqu'un pirate le dépôt).
Conseil | Nous avons récemment considérablement amélioré le temps de chargement de l'ensemble des fonctions de Bashmatic©. Auparavant, il fallait près de 900 ms, soit presque une seconde complète, pour charger 854 fonctions. Aujourd'hui, ce n'est plus que 180 ms : |
❯ time source init.sh
real 0m0.134s
user 0m0.078s
sys 0m0.074s
Si la commande ci-dessus affiche le résultat que vous voyez ci-dessus, lorsque vous grep votre bashrc
ou zshrc
, alors toutes les fonctions Bashmatic seront chargées dans votre shell. Cela pourrait être très pratique, par exemple,
vous pouvez appeler ruby.install-ruby-with-readline-and-openssl 3.0.1
pour installer Ruby.
Vous pouvez invoquer gem.remote.version sym
pour voir que la dernière version publiée de sym
est 3.0.1
.
Vous pouvez joindre un tableau de valeurs avec with array.join ", " apple pear orange
AVIS : Bashmatic ne prend généralement pas plus de 200 à 300 ms pour se charger. Cela dit, vous ne souhaiterez peut-être pas avoir autant de fonctions shell dans votre environnement, donc dans ce cas, vous pouvez ignorer le hook de connexion en passant -l
ou --skip-on-login
.
Installez-le avec :
bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -l "
Dans ce cas, nous vous suggérons d'ajouter simplement le dossier bin
de Bashmatic au $PATH
.
Par exemple:
# ~/.bashrc
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
export PATH= " ${BASHMATIC_HOME} /bin: ${PATH} "
Ensuite vous aurez accès au script exécutable bashmatic
qui peut être utilisé *comme "passerelle" vers toutes les fonctions bashmatic :
Vous l'utilisez comme ceci : bashmatic <function> <args>
:
Important | Les exemples ci-dessous supposent que vous avez défini le PATH pour inclure ${HOME}/.bashmatic/bin |
# Eg, if as in the previous example you sourced in Bashmatic:
$ bashmatic.version
2.1.2
# If you have not, you can still invoke 'bashmatic.version':
$ bashmatic version
# Or another function, 'array.join' — if you sourced in init.sh:
$ array.join ' | ' hello goodbye
hello | goodbye
# Or using the script:
$ bashmatic array.join ' | ' hello goodbye
hello | goodbye
Si vous obtenez une erreur, peut-être que Bashmatic® n'a pas été installé correctement.
curl
n’est pas disponible Par conséquent, dans les situations où curl
peut ne pas être disponible, proposez la fonction shell suivante qui fonctionne sur les systèmes Linux/Ubuntu et OS-X. Il peut être facilement étendu avec de nouveaux systèmes d’exploitation :
# @description Installs bashmatic dependency into the ~/.bashmatic folder.
function install_bashmatic() {
# install bashmatic using https:// URL instead of git@
command -v curl > /dev/null || {
local OS= $( uname -s )
local code
case ${OS} in
Linux)
apt-get update -yq && apt-get install curl -yqq
code= $?
(( code )) && sudo apt-get update -yq && sudo apt-get install curl -yqq
;;
Darwin)
command -v brew > /dev/null || /bin/bash -c " $( curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh ) "
hash -r
brew install curl
;;
* )
echo " OS ${OS} is not supported. "
;;
esac
}
[[ -d ~ /.bashmatic ]] || bash -c " $( curl -fsSL https://bashmatic.re1.re ) ; bashmatic-install -q -m https "
return 0
}
Pour découvrir l'étendue des fonctions disponibles, tapez la commande suivante pour voir toutes les fonctions shell importées :
# List all functions using 4-column mode; print top 5 lines.
❯ bashmatic functions 4 | head -5
7z.a db.psql.connect.db-set hl.yellow-on-gray run.inspect-variables
7z.install db.psql.connect.db-set hr run.inspect-variables-
7z.unzip db.psql.connect.just-d hr.colored run.inspect.set-skip-f
7z.x db.psql.connect.table- http.servers run.on-error.ask-is-en
7z.zip db.psql.connect.table- https.servers run.print-command
# or, to get the count of all functions, use 1 column output:
$ bashmatic functions 1 | wc -l
773
Pour installer Bashmatic manuellement, suivez ces étapes (n'hésitez pas à modifier BASHMATIC_HOME
si vous le souhaitez) :
export BASHMATIC_HOME= " ${HOME} /.bashmatic "
test -d " ${BASHMATIC_HOME} " ||
git clone https://github.com/kigster/bashmatic.git " ${BASHMATIC_HOME} "
cd " ${BASHMATIC_HOME} " && ./bin/bashmatic-install -v
cd - > /dev/null
Parfois, vous ne pourrez peut-être pas utiliser git
(j'ai vu des problèmes allant de l'incompatibilité des certificats locaux aux anciennes versions de git, et plus encore), mais vous pourrez peut-être télécharger avec curl
. Dans ce cas, vous pouvez rechercher la dernière balise (remplacer « v1.6.0 » ci-dessous par cette balise), puis exécuter cette commande :
export BASHMATIC_TAG= " v2.4.1 "
set -e
cd ${HOME}
curl --insecure -fSsl
https://codeload.github.com/kigster/bashmatic/tar.gz/ ${BASHMATIC_TAG}
-o bashmatic.tar.gz
rm -rf .bashmatic && tar xvzf bashmatic.tar.gz && mv bashmatic- ${BASHMATIC_TAG} .bashmatic
source ~ /.bashmatic/init.sh
cd ${HOME} /.bashmatic && ./bin/bashmatic-install -v
cd ~ > /dev/null
Vous pouvez toujours recharger Bashmatic® avec la fonction bashmatic.reload
. Cela effectue simplement le sourcing de ${BASHMATIC_HOME}/init.sh
.
Lorsque vous installez Bashmatic, il ajoute automatiquement un hook à votre ~/.bash_profile
, mais si vous êtes sur ZSH, vous devrez peut-être l'ajouter manuellement (pour l'instant).
Ajoutez ce qui suit à votre fichier ~/.zshrc
:
[[ -f ~ /.bashmatic/init.sh ]] && source " ~/.bashmatic/init.sh "
Note | L'intégralité de la bibliothèque prend moins de 300 ms à charger sur ZSH et un MacBook Pro récent. |
Makefile
Le Makefile
de niveau supérieur est principalement fourni à titre pratique car il encapsule certaines tâches courantes utilisées dans le développement par les auteurs Bashmatic, ainsi que d'autres utiles à toute personne explorant Bashmatic.
Vous pouvez exécuter make help
et lire les cibles disponibles :
❯ make
help Prints help message auto-generated from the comments.
open-readme Open README.pdf in the system viewer
docker-build Builds the Docker image with the tooling inside
docker-run-bash Drops you into a BASH session with Bashmatic Loaded
docker-run-fish Drops you into a FISH session with Bashmatic Loaded
docker-run-zsh Drops you into a ZSH session with Bashmatic Loaded
docker-run Drops you into a BASH session
file-stats-git Print all files known to ` git ls-files ` command
file-stats-local Print all non-test files and run ` file ` utility on them.
install-dev Installs the Development Tooling using dev-setup script
install-ruby Installs the Bashmatic default Ruby version using rbenv
install install BashMatic Locally in ~ /.bashmatic
release Make a new release named after the latest tag
tag Tag this commit with .version and push to remote
setup Run the comprehensive development setup on this machine
shell-files Lists every single checked in SHELL file in this repo
test Run fully automated test suite based on Bats
test-parallel Run the fully auto-g mated test suite
update-changelog Auto-generate the doc/CHANGELOG (requires GITHUB_TOKEN env var set)
update-functions Auto-generate doc/FUNCTIONS index at doc/FUNCTIONS.adoc/pdf
update-readme Re-generate the PDF version of the README
update-usage Auto-generate doc/USAGE documentation from lib shell files,
to doc/USAGE.adoc/pdf
update Runs all update targets to regenerate all PDF docs and the
Changelog.
J'ai ajouté des espaces autour d'un ensemble de tâches courantes qui pourraient vous être utiles.
Jetons un coup d'œil rapide à ce qui est disponible ici.
Makefile est fourni pour faciliter l'exécution des tâches les plus courantes et pour simplifier l'exécution de certaines tâches plus complexes qui nécessitent la mémorisation de nombreux arguments, telles que make setup
. Vous souhaiterez peut-être utiliser le Makefile pour plusieurs raisons :
make open-readme
Cette tâche ouvre la version PDF du README dans votre visionneuse système PDF.
make install
Cela vous permet d'installer le Bashmatic Framework localement. Il exécute simplement le script bin/bashmatic-install
. Tout au plus, cela ajoutera des hooks à vos fichiers d'initialisation du shell afin que Bashmatic soit chargé lors de la connexion.
make setup
Cette tâche appelle le script bin/dev-setup
sous le capot, afin que vous puissiez configurer la configuration de votre développeur informatique local pour le développement de logiciels.
Désormais, ce script offre une interface CLI très riche, vous pouvez donc soit exécuter le script directement et avoir un contrôle précis sur ce qu'il fait, soit l'exécuter avec les indicateurs par défaut via cette cible make.
Cette cible make particulière exécute le script bin/dev-setup
avec les actions suivantes :
dev, cpp, fonts, gnu, go, java, js, load-balancing, postgres, ruby
make test
et make test-parallel
sont tous deux destinés aux développeurs et contributeurs Bashmatic. Veuillez consulter la section Contribution pour savoir comment exécuter et à quoi s'attendre des tests UNIT.
make update
est la tâche qui doit être exécutée par les contributeurs de la bibliothèque après avoir effectué leurs modifications et souhaitent que la documentation générée automatiquement reflète les nouvelles fonctions ajoutées, etc. Cette tâche génère également l'index des fonctions, régénére les derniers PDF des fichiers README
, USAGE
ou CHANGELOG
.
Note | L’exécution de make update est requise pour soumettre toute demande d’extraction. |
Bashmatic est livré avec un Dockerfile qui peut être utilisé pour exécuter des tests ou simplement valider manuellement diverses fonctionnalités sous Linux, et éventuellement pour expérimenter.
Exécutez make docker-build
pour créer une image docker bashmatic:latest
.
Exécutez make docker-run-bash
(ou …-zsh
ou …-fish
) pour démarrer un conteneur avec votre shell préféré, puis validez si vos fonctions fonctionnent comme prévu.
Notez comment cela m'a déposé directement dans l'invite de l'environnement Linux avec Bashmatic déjà installé.
Pourquoi avons-nous besoin d’un autre framework BASH ?
BASH est connu pour être trop verbeux et peu fiable. Nous ne sommes pas d’accord. C'est pourquoi nous avons voulu commencer ce README avec quelques exemples.
Il suffit de regarder ce petit script de cinq lignes :
#! /usr/bin/env bash
source ${BASHMATIC_HOME} /init.sh
h2 " Installing ruby gem sym and brew package curl... "
" Please standby... "
gem.install " sym " && brew.install.package " curl " &&
success " installed sym ruby gem, version $( gem.version sym ) "
Résultats dans cette sortie ASCII détaillée et, soyons honnêtes, magnifique :
Dites-moi que vous n'êtes pas du tout enthousiaste à l'idée de commencer immédiatement à écrire des flux d'installation complexes dans BASH ?
Non seulement vous obtenez un joli résultat, mais vous pouvez également indiquer chaque commande exécutée, son état de sortie, si elle a réussi (vert/rouge), ainsi que la durée sanglante de chaque commande en millisecondes. Qu'est-ce qu'il ne faut pas aimer ?!?
Toujours pas convaincu ?
Jetez ensuite un œil à un exemple plus complet.
Dans cet exemple, nous allons télécharger et installer les binaires kubectl
et minikube
dans /usr/local/bin
Nous avons fourni un exemple de script dans examples/k8s-installer.sh
. Veuillez cliquer et jeter un oeil à la source.
Voici le résultat de l'exécution de ce script :
Pourquoi pensons-nous que ce type d'installateur est plutôt génial, comparé à un script shell silencieux mais mortel que "Jim-in-the-corner" a écrit et que maintenant personne ne comprend ?
Parce que:
Le script fait tout son possible pour surcommuniquer ce qu'il fait à l'utilisateur.
Il permet et rappelle une escapade propre (Ctrl-C)
Il partage la commande exacte qu'il exécute et ses horaires afin que vous puissiez observer les problèmes tels que les congestions du réseau ou les adresses réseau, etc.
Il affiche en vert le code de sortie '0' de chaque commande. Si l'une des commandes échoue, vous la verrez en rouge.
Son code source est concis, explicite et facile à lire. Il n'y a pas de magie. Juste des fonctions BASH.
Note | Si vous avez besoin de créer un installateur BASH, Bashmatic® offre un gain de temps incroyable. |
Revenons sur Terre et parlons plus en détail de la façon d'installer Bashmatic et de son utilisation juste après.
Ce dernier exemple, le plus riche en fonctionnalités, n'est pas seulement un exemple - c'est un outil fonctionnel qui peut être utilisé pour installer un tas de dépendances de développeur sur votre ordinateur portable Apple .
Note | le script s'appuie sur Homebrew dans les coulisses et ne fonctionnerait donc pas sous Linux ou Windows (à moins que Brew n'y soit porté). |
Il se trouve dans bin/dev-setup
et comporte de nombreux indicateurs CLI :
Dans l'exemple ci-dessous, nous utiliserons le script dev-setup
pour installer les éléments suivants :
Outils de développement
PostgreSQL
Rédis
Memcaché
Rubis 2.7.1
NodeJS/NPM/Yarn
Bien que la liste soit longue, nous pouvons tout installer en une seule commande.
Nous allons l'exécuter à partir d'un dossier dans lequel notre application est installée, car la version Ruby sera alors automatiquement détectée à partir de notre fichier .ruby-version
, et en plus d'installer toutes les dépendances, le script exécutera également bundle install
et npm install
(ou yarn install
). Pas mal, hein ?
${BASHMATIC_HOME} /bin/dev-setup
-g " ruby postgres mysql caching js monitoring "
-r $( cat .ruby-version )
-p 9.5 # use PostgreSQL version 9.5
-m 5.6 # use MySQL version 5.6
Cette ligne de commande compacte installe une tonne de choses, mais ne nous croyez pas sur parole : exécutez-la vous-même. Ou, à tout le moins, profitez de cette capture d'écran extrêmement longue :)
Il s'agit d'un excellent outil qui colorise la sortie de presque tous les autres outils.
Exécutez-le comme ceci :
${BASHMATIC_HOME} /bin/install-grc
Vous devrez peut-être saisir votre mot de passe pour SUDO.
Une fois l'opération terminée, exécutez source ~/.bashrc
(ou le shell que vous utilisez) et tapez quelque chose comme ls -al
ou netstat -rn
ou ping 1.1.1.1
et remarquez à quel point tout ce qui précède est joliment coloré.
db
pour les utilitaires de base de données et db top
Si vous utilisez PostgreSQL, vous avez de la chance ! Bashmatic inclut de nombreuses aides pour l'utilitaire CLI de PostreSQL psql
.
Note | Avant de commencer, nous vous recommandons d'installer le fichier .psqlrc du répertoire conf de Bashmatic dans votre dossier personnel. Bien que cela ne soit pas obligatoire, ce fichier configure votre invite et diverses macros pour PostgreSQL qui s'avéreront très utiles si vous utilisez psql avec régularité. |
De toute façon, qu’est-ce que db top
?
Tout comme avec le top
standard, vous pouvez voir les processus « principaux » consommateurs de ressources en cours d'exécution sur votre système local, avec dbtop
vous pouvez observer un rapport auto-rafraîchissant des requêtes en cours d'exécution actives sur jusqu'à trois serveurs de base de données en même temps.
Voici la capture d'écran pixélisée de dbtop
exécuté sur deux bases de données actives :
Pour que cela fonctionne, vous devez d'abord définir les paramètres de connexion à la base de données dans un fichier YAML situé au PATH suivant : ~/.db/database.yml
.
Voici comment le fichier doit être organisé (si vous avez déjà utilisé Ruby on Rails, le fichier standard config/database.yml
doit être entièrement compatible) :
development :
database : development
username : postgres
host : localhost
password :
staging :
database : staging
username : postgres
host : staging.db.example.com
password :
production :
database : production
username : postgres
host : production.db.example.com
password : " a098098safdaf0998ff79789a798a7sdf "
Compte tenu du fichier ci-dessus, vous devriez pouvoir exécuter la commande suivante pour voir toutes les connexions disponibles (enregistrées dans le fichier YAML ci-dessus) :
$ db connections
development
staging
production
Une fois que cela fonctionne, vous devriez pouvoir exécuter dbtop
: