Bonjour,
Vous êtes de plus en plus nombreux à écrire des scripts, et nous vous remercions pour cette aide !
Lors de la validation, on voit de plus en plus de petites choses qui nous embêtent un peu. Ainsi, pour que nous puissions valider vos scripts plus rapidement, je prends le temps d'écrire ce message pour expliquer les choses à éviter.
Certaines règles étant indispensables pour le bon fonctionnement du script, elles sont obligatoires. Les autre sont recommandées. Si je ne précise rien, c'est que votre script ne sera pas refusé à la validation s'il ne respecte pas cette règle.
Certains scripts déjà validés n'obéissent pas à ces règles. Ils sont corrigés au fur et à mesure, mais nous ne pouvons pas non plus tout faire d'un coup.
Pas d'utilisation de sudo ! (Obligatoire)
À ne pas faire :Pour des raisons de sécurité évidentes, il ne faut pas utiliser la commande sudo, gksudo, kdesu, ...
Solution de remplacement :Si néanmoins vous avez
absolument besoin de la commande sudo dans votre script, il faut demander à l'utilisateur de taper cette commande. Pour cela, vous pouvez utiliser la commande suivante :
POL_Call POL_Function_RootCommand "Commande root ; exit"
Définir la variable $TITLE (obligatoire)
À utiliser :La variable $TITLE doit contenir le nom du programme.
Elle est indispensable pour le bon fonctionnement du script avec certains outils comme les rapports de bugs.
TITLE="le nom du programme"
Utiliser la variable $TITLE (recommandé)
À éviter :Mettre un titre différent dans chaque fenêtre. Ça risque de perdre l'utilisateur
POL_SetupWindow_message "Votre message" "Un titre bidon"
Solution de remplacement :Utiliser la variable $TITLE.
POL_SetupWindow_message "Votre message" "$TITLE"
Raccourcir les en-têtes (recommandé)
À éviter :Presque plus personne n'utilise cette solution, mais je la rappelle quand même
if [ "$PLAYONLINUX" = "" ]
then
exit 0
fi
Solution de remplacement :[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"
Ordre des arguments (Obligatoire)
Pour que votre script soit compatible sous Mac, il faut respecter l'ordre des arguments dans certaines commandes.
À bannir :rm dossier -rf
mkdir dossier -p
cp dossier -r
Solution de remplacement :rm -rf dossier
mkdir -p dossier
cp -r dossier
Ne pas utiliser wget pour télécharger un script externe (obligatoire)
À bannir :wget http://winezeug.googlecode.com/svn/trunk/winetricks --output-document=winetricks
bash winetricks -q some_packages
Solution de remplacement :POL_Call POL_Install_package
Liste des paquets disponibles sur la page suivante :
http://www.playonmac.com/fr/supported_apps-100-0.htmlNe pas utiliser plein de fois echo pour écrire dans un fichier (obligatoire)
À ne pas utiliser :echo "ligne 1" > mon_fichier
echo "ligne 2" >> mon fichier
...
Solution de remplacement :cat << EOF > mon_fichier
ligne 1
ligne 2
...
EOF
En-tête du script (recommandé)
À utiliser :#!/bin/bash
# Date : (2009-05-30 17-30)
# Last revision : (2009-05-30 17-30)
# Wine version used :
# Distribution used to test :
# Author : Your name/pseudo
# Script licence :
Utiliser exit en fin de script (obligatoire)
- La signature GPG est insérée à la fin de votre script. Si vous n'écrivez pas exit, votre script ne pourra pas être signé sans que bash essaie d'interpréter la signature.
À utiliser :POL_SetupWindow_Close
exit
À propos des versions de Wine
- Il est possible de fixer votre programme à une version de Wine avec laquelle il fonctionne si celui-ci est assez complexe (pour tous les jeux donc). Par contre, nous vous déconseillons d'utiliser cette méthode pour les petits programmes.
Ne pas télécharger les images sur Wikipedia pour les redimensionner avec convert (Obligatoire)
À bannir :wget http://www.google.com/images/logos/sketchup_logo.png --output-document="$REPERTOIRE/tmp/leftnotrotated.png"
convert "$REPERTOIRE/tmp/leftnotrotated.png" -rotate 270 "$REPERTOIRE/tmp/leftnotscaled.png"
convert "$REPERTOIRE/tmp/leftnotscaled.png" -scale 150x356\\! "$REPERTOIRE/tmp/left.png"
POL_SetupWindow_Init "" "$REPERTOIRE/tmp/left.png"
Faire attention à ce qu'on fait après un cd ! (Obligatoire)
À ne pas utiliser :cd $WINEPREFIX/windows/tmp
rm ./*
# Si la commande cd échoue, on ne sait pas ce qui va être supprimé
Solution de remplacement :- En règle générale, éviter d'utiliser rm, mais sinon :
rm "$WINEPREFIX"/windows/tmp/*
Utilisation de $POL_USER_ROOT (Obligatoire)
À ne pas utiliser :$HOME/.PlayOnLinux
Solution de remplacement :$POL_USER_ROOT
Utiliser POL_SetupWindow_wait avant les grosses commandes (unzip, tar, ...)
- Sinon, la fenêtre se bloque et l'utilisateur risque de penser à un bug.
Prévenir l'utilisateur si le jeu nécessite de passer la protection CD/DVD, sans l'inciter à le faire ! (Tout un art) (obligatoire)
- Interdiction d'inciter au piratage
Méthode simple :POL_Call POL_Function_NoCDWarning
Ne pas inclure le patch dans le script, sauf s'il est nécessaire à son fonctionnement (obligatoire)
- Créer un script séparé
Ne pas installer des bibliothèque directement dans un script, utiliser POL_Call (obligatoire)
Éviter les bizarreries... si possible (recommandé)
- Si on a du mal à comprendre un script, il sera refusé. On déconseille donc les ligne awk et sed qui peuvent faire des kilomètres (et qui risquent de foirer sur un autre système comme Mac, par la même occasion)
- Sauf si c'est absolument nécessaire pour que le programme fonctionne.
- Éviter de détecter la dernière version d'un logiciel, sauf si cela est absolument indispensable.
Écrire une description, et envoyer les icônes, les miniatures... (souhaitable)
- La case description permet d'écrire une description du logiciel et non pas du script en lui même.
- Le BBCode est autorisé
- L'icône d'installation (l'icône dans la liste des programmes installables) est de taille 22x22
- L'icône du jeu est de taille minimum 32x32
- Des captures d'écrans peuvent être ajoutées.
À propos des signatures
- Même si vous ne voulez pas que votre script soit accessible à tous les utilisateur de PlayOnLinux, vous pouvez nous demander une signature pour que PlayOnLinux ne râle pas à l'ouverture de celui-ci. (Si vous voulez installer un programme perso sur un grand nombre d'ordinateurs).
En général, les petits programmes marchent sous Mac. Donc si votre script est bien écrit, vous pouvez cocher la case PlayOnMac
- Attention avec les jeux.
Edited by SuperPlumus