Exile on Keyboard St. - Blog sur Linux et Debian

Aller au contenu | Aller au menu | Aller à la recherche

jeudi 31 août 2017

Ajouter un Hook de Pre Commit dans IntelliJ IDEA

La boite de dialogue de commit d'IntelliJ IDEA propose entre autres de faire les actions suivantes avant le commit:

  • Reformatter le code
  • Optimiser les imports
  • Chercher les TODO

....

En revanche rien n'est prévu par défaut dans IntelliJ pour ajouter un script utlisateur de pre commit, qui par exemple va vérifier que vos traces ajoutées à des fins de debug ont bien été enlevées avant le commit.

Pour ajouter un Hook de pre commit, il faut installer un plugin, nommé Pre Commit Hook Plugin, qui va se charger d'éxécuter avant commit un script que vous aurez créé à la racine de votre projet et nommé pre-commit-hook.sh.

Le script sera appelé avec en paramètres les fichiers participant au commit. Il vous suffit donc dans le script de renvoyer le code retour 1 si vous avez oublié des traces de debug.

Ainsi vous éviterez les commits supplémentaires avec le message signficatif: "Oopppps: forgot to remove debug traces" !

Un exemple de script de pre commit:

#!/bin/bash

for file in "$@"; do
    grep -H -n DBG_TRACE "$file" && exit 1
done

exit 0

Le Pre Commit Hook Plugin est hébergé sur GitHub.

vendredi 13 mai 2016

Installer proprement Java sur Debian

Pour installer Java sous Linux, vous avez le choix entre les façons de faire suivantes:

  • Installer un paquet JRE ou JDK de l'OpenJDK fourni par votre système,
  • Télécharger Java sur le site d'Oracle et l'installer à la main

On s'intéressera dans ce billet à la deuxième façon de faire. Si vous utilisez Red Hat, comme Oracle fournit un paquet au format rpm, l'installation sera simple.

En revanche, lorsque vous avez une archive .tar.gz du JDK ou du JRE, c'est le cas si votre système est Debian, deux solutions s'offrent à vous:

  • décompresser la tarball dans le répertoire $HOME de votre utilisateur,
  • le faire dans /opt et avoir ainsi Java disponible pour tous les utilisateurs de votre système

Encore une fois on s'intéressera ici à la deuxième façon de faire, mais on ne se contentera pas de décompresser l'archive à la main.

En effet, il existe dans la section contrib du dépôt Debian un paquet nommé java-package avec lequel on peut fabriquer un paquet au format .deb à partir de la tarball du JRE ou du JDK.

On procédera donc comme suit:

Etape 1: Ajouter la section contrib au fichier /etc/apt/sources.list

deb http://ftp.fr.debian.org/debian/ jessie main contrib
deb-src http://ftp.fr.debian.org/debian/ jessie main contrib

Etape 2: Installer le paquet java-package

sudo apt-get install java-package

Etape 3: Créer un paquet Debian à partir du JDK ou JRE d'Oracle

fakeroot make-jpkg Téléchargements/jdk-8u73-linux-x64.tar.gz

On voit qu'on ne le fait pas en root, on aurait une erreur sinon.

Etape 4: Installer le paquet Debian qu'on vient de générer

dpkg -i oracle-java8-jdk_8u73_amd64.deb

La procédure décrite ici pour installer Java à partir d'un paquet Debian .deb que l'on génère présente les avantages suivants:

  • Java est disponible pour tous les utilisateurs
  • Etant installé via un paquet natif du système, il peut être facilement supprimé
  • On peut très facilement passer d'une version de Java à une autre avec la commande update-java-alternatives

mercredi 2 mars 2016

Passer facilement d'une version de Java à l'autre sous Linux

On a vu dans un billet précédent comment installer Java sur Linux en utilisant les JDK ou JRE fournis par le système.

Par exemple sur Debian Wheezy, j'ai la configuration suivante:

which java | xargs readlink -e
/usr/lib/jvm/java-6-openjdk-amd64/jre/bin/java

Imaginons maintenant que j'ai installé l'OpenJDK en versions 6 et 7 et que je travaille sur deux projets, un en Java 7 et l'autre en Java 6. Je vais avoir besoin de passer facilement d'une version de Java à l'autre.

Le paquet java-common est là pour ça. Ce paquet fournit la commande update-java-alternatives qui permet de:

update-java-alternatives
usage: update-java-alternatives [--jre-headless] [--jre] [--plugin] [ -t|--test|-v|--verbose]
           -l|--list [<jname>]
           -s|--set <jname>
           -a|--auto
           -h|-?|--help

Lister les JDK ou JRE installés sur le système:

update-java-alternatives --list
java-1.6.0-openjdk-amd64 1061 /usr/lib/jvm/java-1.6.0-openjdk-amd64
java-1.7.0-openjdk-amd64 1051 /usr/lib/jvm/java-1.7.0-openjdk-amd64

Changer le JDK ou JRE par défaut du système:

update-java-alternatives -s java-1.7.0-openjdk-amd64

SI vous regardez un petit peu, vous verrez que la commande update-java-alternatives modifie tous les liens dans /etc/alternatives pointant vers un binaire fourni par le JDK ou le JRE.

Dernière chose update-java-alternatives doit être lançée depuis le compte root.

dimanche 15 juin 2014

Vérifier vos scripts shell avec ShellCheck

Sous Linux, quand on veut automatiser quelque chose, le langage de prédilection reste encore bash, à condition de prendre le temps de lire la manpage, et de ne pas considérer que puisque c'est du Shell, peu importe que le code soit propre ou non !

Mais la syntaxe des scripts Shell est parfois obscure et la question de savoir si on doit mettre des doubles quotes dans tel cas ou échapper un caractère dans un autre se pose souvent.

C'est là que nous vient en aide le projet ShellCheck. ShellCheck est un utilitaire en ligne de commande qui vérifie vos scripts Shell un peu à la manière de lint pour le langage C ou des outils comme Sonar pour le Java.

Pour l'installer il faut télécharger la dernière archive sur GitHub: Version 0.3.3 et l'extraire dans un répertoire temporaire.

Après avoir installé cabal-install:

sudo apt-get install cabal-install

On va dans le répertoire des sources lancer les commandes suivantes (en tant qu'utilisateur):

cabal update
cabal --symlink-bindir=~/bin/ install

La commande shellcheck est alors installée dans ~/.cabal/bin/shellcheck avec un lien depuis ~/bin/

On peut aussi installer ShellCheck avec make mais dans ce cas il faut le compilateur Haskell plus une palanquée de dépendances de librairies Haskell, ce qui est assez pénible.

Maintenant vous pouvez vérifier vos scripts en lançant:

shellcheck ~/bin/myscript.sh

ShellCheck existe aussi en ligne à l'adresse ShellCheck.net.

Happy Scripting !

Mise à jour:

Depuis Debian Jessie, ShellCheck est dans le dépôt officiel.

- page 1 de 2