Mise en forme de code: pensez à utiliser les balises [ tcl ] et [ /tcl ] (sans les espaces bien sûr) autour de vos codes tcl afin d'avoir un meilleur rendu et une coloration syntaxique. x


Plugin systeme dans un TCL
#1
Yo!

Voila, j'ai une script TCL pondu de ma culotte !

J'aimerais intégrer un répertoire Plugins/ dedans

Ces plugins seront un plus au codes déjà proposer (le but d'un plug?)

J'aimerais vos avis comment crée un gestionnaire de plugins!

Hook des fonctions existante, ajouts nouveau codes, comment validé les plugins, comment les charger quel vérifications à faire , comment faire un vrai gestionnaire de plugins ? http://fr.wikipedia.org/wiki/Hook_%28informatique%29 / http://fr.wikipedia.org/wiki/Plugins

A vos marques ... PARTEZ !

Pour mes idées de bases :
- Ce doit contenir un namespace du sous projet, avec ::plugin::LePlug (Projet::plugin::LePlug)
- Ce doit être contenue dans le sous répertoire Plugins/ du projet
- ce doit d'avoir l extension .XX?, finissant par P comme .XXP = P comme plugins et XX un nom court du projet, afin que depuis l extension nous sachons que c'est le plug'ins de celui ci (ce projet)
- Ce doit de respecté a des formes d'uninstall (afin des propres) (un load les bind, les namespace)
- autres idées de contrôle/obligation?

Pour moi sa en fais un sujet important, je trouve la question intéressante, et j’espère trouvé à la lecture des choses intéressante!

Vous connaissez des scripts TCL qui gère des plug'ins ? avez vous leurs noms ? vous connaissait leur fonctionnement, si oui une explication svp?

LA la a vos marques ... PARTEZ ! :]
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site  8-)
#2
salut,

tcl gère déjà les librairies avec la commande "package". je ne vois pas trop l’intérêt de ton poste
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#3
Music 
djkenny Wrote:tcl gère déjà les librairies avec la commande "package". je ne vois pas trop l’intérêt de ton poste

Oui, c'est vrai! Mais je ne connais peut-être pas toutes les futilités de package

Je connais surtout :

tcl
package require
package provide


Le premier pour demander de charger un package, sans quoi, le code ne demandera pas.
Et le seconds pour fournir un code de package.

Dans mon cas, j'ai un code existant où j'aimerais rajouté/remplacer des procs par ce que j’appelle des plugins.

Je suppose ne pas être le premier à vouloir faire ceci.

Avec package tu pense à quoi?
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site  8-)
#4
salut,

par exemple tu crées un dossier lib/ dans lequel tu mets tes plugins
dans ce dossier tu places tes librairies en tcl
tu crées un fichier pkgIndex.tcl qui ressemble a ça

tcl
package ifneeded ton-package 0.1 ton-package.tcl
package ifneeded un-autre 2.3 un-autre.tcl


tu ajoutes ton-package.tcl
surtout n'oublies pas le package provide à la fin du tcl
et dans la config de l'eggdrop ajoutes ça:

tcl
set libpath [file join [pwd] lib]
if {[lsearch $::auto_path $libpath]==-1} {lappend ::auto_path $libpath}

ensuite tu n'auras simplement qu'à charger la lib avec
tcl
package require ton-package 0.1

C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#5
Je te remercie de ton idée,

Je vois plusieurs inconvenants toute de même:
Rien déterminer que c'est bien un plug'in a mon soft !
Rien permet de hooks une proc
L'utilisateur doit connaitre le package a avoir et l'avoir, sauf si tout son la, en les settang en ::auto_path

Sauf si je fais erreur:
Ce que j'analyserai au moins la sources avant et je bloquerais le code si il est pas prévu dans libs/ ou comme code additionel au moins

Je cherche peut-être trop loin?

Dans tout les cas déjà merci pour ta réponse!
Au pire des cas, seras le mieux des cas que j'utiliserai ... je trouve bien
Mais ce qui m'agace c'est que sa semble trop 'simple' pour un codeur TCL basic, mais je désire une solution plus pro, porté pour monsieur tout le monde.

Dans d'autres langages le hook/plugin existe alors quel sont les techniques finalement qu'ils utilisent? Et comment appliqué a un code d'appli qui ce désire totalement personnalisable ?
Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site  8-)
#6
salut,
avec un peut d'ingéniosité il est possible de tout faire avec ma solution,
de même qu'il est possible d'ajouter n'importe quel dossier à auto_path.
en codant correctement ta lib, tu peux remplacer n'importe quelle proc ou même recoder/modifier un namespace
regardes ici
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away
#7
Merci pour ta réponse,
je trouve Très intéressante le lien!

Une question dans le cas que je veux recoder/modifier tu un proc (d'un namespace), c'est comme renommer une commande ??


tcl
rename proc_orig ""
rename proc_lib proc_orig

Retrouvez les dernières modifications de mes scripts TCL (versions Alpha/Bêta) ainsi que d'autres de mes réalisations sur ma page GitHub et les versions stables dans la section scripts de ce site  8-)
#8
il faut utiliser le chemin complet du namespace et je te conseil de garder la proc_orig en la renommant _proc_orig par exemple
C'est en reconnaissant ses erreurs que l'on progresse ;)
Away


Possibly Related Threads…
Thread Author Replies Views Last Post
  Système de bannissement d'utilisateur qui idle trop longtemps sur un salon d'aide mecmec 4 2,795 15/08/2019, 00:38
Last Post: CrazyCat
Smile [Bug] Probleme de lancement plugin. deejay-wilo 4 6,024 06/10/2017, 17:58
Last Post: MenzAgitat
  Petit système à améliorer alanfollow 5 3,875 09/12/2010, 22:04
Last Post: alanfollow
Money_euro Système de plainte BlackNight 9 6,388 26/06/2009, 16:18
Last Post: Merwin

Forum Jump:


Users browsing this thread: 1 Guest(s)