You are here > Forums > Vos créations > À propos des scripts fr

The forum

À propos des scripts

Quelques petites mises au point

New topic  - Reply
Author Replies
Quentin PÂRIS Saturday 26 February 2011 at 20:14 - [Quote]

Rank: Admin

Admin

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.

1 - 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"

2 - 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
La variable $TITLE est automatiquement définie, et contient le nom de votre script
POL_SetupWindow_message "Votre message" "$TITLE"


3 - Raccourcir les en-têtes (recommandé)

À éviter
Presque plus personne n'utilise cette solution, mais je le rappelle quand même
if [ "$PLAYONLINUX" = "" ]then
exit 0
fi


Solution de remplacement
[ "$PLAYONLINUX" = "" ] && exit 0
source "$PLAYONLINUX/lib/sources"

4 - Ordre des arguments (Obligatoire)

Pour que votre script soit compatible sous Mac et BSD, 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

5 - 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_Winetricks some_packages
ou encore (recommandé)
POL_Call POL_Install_package

6 - Ne 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

7 - 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
# Script licence : 
# Program licence :
# Depend :

8 - 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

9 - À 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 comme mp3tag.

10 - Ne pas télécharger les images sur Wikipedia pour les redimensioner 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"

11 - 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/*

12 - Interdiction d'utiliser les fonctions PlayOnLinux v2 (Obligatoire)


13 - Utilisation de $REPERTOIRE (Obligatoire)

À ne pas utiliser
$HOME/.PlayOnLinux

Solution de remplacement
$REPERTOIRE

14 - Utiliser POL_SetupWindow_wait_next_signal avant les grosses commandes (unzip, tar, wine, ...)

- Sinon, le GUI se bloque et l'utilisateur risque de penser à un bug.

15 - Ne pas utiliser cfg_check, ça sert a rien


16 - Prévenir l'utilisateur si le jeu nécessite de passer la protection CD/DVD, sans l'inciter à le faire ! (Tout un art) (Vivement recommandé)

- Interdiction d'inciter au piratage

17 - Ne pas inclure le patch dans le script, sauf s'il est nécessaire à son fonctionnement (recommandé, voire obligatoire suivant les cas)

- Créer un script séparé

18 - Ne pas installer des bibliothèque directement dans un script, utiliser POL_Call (idem)


À partir d'ici, ce sont juste des suggestions que vous pouvez suivre ou non, si l'envie vous prend

19 - Utiliser les fonctions POL_Debug


- Il n'y a aucune documentation pour le moment, donc vous pouvez vous inspirer du script League of Legends (Catégorie Testing) si vous êtes motivé.

20 - Éviter les bizarreries si possible ...

- 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)

21 - Utiliser POL_SetupWindow_auto_shortcut, plutôt que POL_SetupWindow_make_shortcut


22 - Pas besoin d'utiliser POL_LoadVar_PROGRAMFILES


23 - Commenter votre script


24 - Écrire une description, et envoyer les icônes, les miniatures ...

- 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 est de taille 22x22
- L'icône du jeu est de taille minimum 32x32
- La miniature est de taille 200x150

25 - Écrire le script au moins en anglais et/ou en français

- C'est cool si on a la version anglaise quand même

26 - À 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)

27 - 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.

28 - Éviter de détecter la dernière version du logiciel...

... sauf s'il y a un fichier fait exprès sur le site officiel.
On revient à la remarque 20.

Edited by Salvatos

Il n'y a rien à voir ici