Faire un script qui se désinstalle proprement
#1
En tout premier lieu et afin de comprendre la suite, vous devriez vous familiariser avec le concept des namespaces.

Fonctionnement :
La procédure de désinstallation est automatiquement appelée si un .rehash est demandé.

Les binds du script sont supprimés, le namespace est détruit et toutes les ressources utilisées par le script sont ainsi libérées, ne laissant aucune trace.

Cela permet de modifier les binds de son script ou de renommer une procédure sans avoir besoin de .restart ensuite (un simple .rehash suffit), de désinstaller totalement un script sans nécessiter de .restart après qu'on l'ait enlevé du démarrage automatique dans eggdrop.conf, de travailler sur un script en cours de développement en s'assurant qu'aucune trace conflictuelle ne reste lorsque vous appliquez vos modifications avec .rehash.

Modèle :
tcl
if {[info commands NomDuNamespace::uninstall] eq "::NomDuNamespace::uninstall"} { NomDuNamespace::uninstall }
 
namespace eval NomDuNamespace {
	# binds divers (pour l'exemple)
	bind pub -|- !commande1 NomDuNamespace::pub_commande1
	bind pub -|- !commande2 NomDuNamespace::pub_commande2

	# bind de désinstallation (important)
	bind evnt - prerehash NomDuNamespace::uninstall

	# procédure de désinstallation
	proc uninstall {args} {
		putlog "Désallocation des ressources de \002NomDuScript...\002"
		# on supprime les binds qu'on a créé
		unbind pub -|- !commande1 NomDuNamespace::pub_commande1
		unbind pub -|- !commande2 NomDuNamespace::pub_commande2
		unbind evnt - prerehash NomDuNamespace::uninstall
		# on détruit le namespace et tout ce qu'il contient (variables et procédures)
		namespace delete ::NomDuNamespace
	}
}

# Procédures exemple :
proc NomDuNamespace::pub_commande1 {nick host handle chan arg} {
	...
}
 
proc NomDuNamespace::pub_commande2 {nick host handle chan arg} {
	...
}


Répondre Avertir


Messages dans ce sujet
Faire un script qui se désinstalle proprement - par MenzAgitat - 08/08/2008, 14:01

Atteindre :


Utilisateur(s) parcourant ce sujet : 2 visiteur(s)
Tchat 100% gratuit -Discutez en toute liberté