Arrivée de la stable V4 (migration facile v3 à v4)

Bonsoir,

Je n’arrive pas à comprendre comment une fonction qui n’est pas encore installée puisqu’elle est dans le zip du plugin qui n’est pas encore téléchargé peut être exécutée.

La chronologie d’appel des fonctions dans update::doUpdate est:

  1. preInstallUpdate qui va exécuter la fonction pre_update si elle existe
  2. téléchargement et dezippage du plugin qui contient la pre_update qu’il faudrait exécuter
  3. postInstallUpdate qui fait le nettoyage des anciens fichiers

Salut @jpty,

J’ai eu l’occasion de tester sur le plugin pimp my Jeedom et la fonction pre_update() est bien appelée avant toute intervention du core sur le plugin. Par contre effectivement il faut qu’elle soit présente dans la version actuelle avant mise à jour.

Tu peux écrire un log dans ‹ update › pour vérifier qu’il est bien pris en compte :

function template_pre_update() {
  log::add('update', 'alert', __('Test de la fonction pre_update()', __FILE__));
}

Bonsoir @Salvialf

Oui c’est le seul problème. Pour moi il manque une fonction appelée après l’install du plugin et avant le nettoyage.

C’est quoi exactement le problème que tu a avec le nettoyage sur ton plugin ?

Elle est bien appelée avant nettoyage.

En gros j’ai été confronté au problème avec Pimp my Jeedom qui doit télécharger les widgets et les placer impérativement dans le dossier plugins/pimpJeedom/core/template/dashboard (ou mobile) pour être pris en compte par le core.

Fichiers qui se sont trouvés supprimés lors du nettoyage.

J’ai ajouté une intervention dans la fonction pimpJeedom_pre_update() qui prévient le nettoyage de ces fichiers.

Effectivement, la correction ne fonctionnera pas lors de la mise à jour contenant la correction mais elle sera par contre fonctionnelle dès la mise à jour suivante.

@Alexandre tu ne parle pas du fichier /plugin_info/packages.json
Faut pas encore le prendre en compte

Non pour l’instant cette partie est en pause par manque de temps

Ok, tant mieux je manque de temps aussi

Bonjour @Alexandre

Je n’ai pas de problème de suppression de fichier avec mon plugin.
Je dis juste que pre_update n’est pas la solution pour que les fichiers nécessaires à un plugin ne soient pas supprimés lors d’un update de plugin.
Comme l’a écrit @Salvialf au-dessus pre_update ne fonctionne qu’après la 1ère update d’un plugin.
A la 1ère update, il y peut y avoir suppression de fichiers utiles au plugin.

je ne vois pas vraiment beaucoup de plugin qui pourrait avoir des soucis de suppression de fichier en faite. si les fichiers sont present sur ton git ils ne seront pas supprimé. et avec le custom. et data on devrait pas vraiment avoir de souci. :wink:

qu’en est-il pour les qrcodes ? comme dans mobile, il est téléchargé du net…

Il y aura toujours des cas particuliers.

Mais un plugins de gestion de sa voiture qui télécharge chaque image de chaque modèle depuis le net à chaque fois qu’on va sur la page équipements, non … :thinking:

Sur ce cas précis je ne vois pas le problème, au contraire, c’est un peu le principe du cdn…
Pour un truc non critique comme une image de voiture, autant renvoyer le lien externe en src de l’image plutôt que de tout dupliquer en local (ce qui va augmenter considérablement la taille du backup)
ps: note que je n’ai pas fait cela sur plugin-myaudi, il télécharge l’image en local mais c’est parce qu’il faut être authentifier pour l’avoir et la récupérer via l’api)

Autant je comprend pour les images statiques du plugins: on ne doit pas créer un site ou un dépôt externe nous appartenant (le dev) sur lequel on va chercher les fichiers depuis jeedom, ca c’est logique et c’est comme ca que j’avais compris ce point.
Mais s’il y a des images fournies par un services tiers avec des url dynamiques en fonction d’un équipement, qui sera donc de toute façon dépendant du cloud, je ne comprend pas pq dupliquer en local

Bonjour Alexandre,

J’ai encore unproblème avec la publication sur le site de doc:

  • j’ai ajouté jeedom-market sur plusieurs repo (privé) malgré qu’il y avait déjà le token d’accès donc en fait je ne vois pas a quoi ca sert d’en plus donner l’accès à un utilisateur; c’est génant car:
    • on a droit qu’à 3 collaborateurs sur un repo prive avec compte gratuit
    • c’est plus de boulot pour tout le monde (alors que mettre le token dans ma config market je le fais moi même en créant le plugin sur le market):
      • passer sur tous les repos pour vous rajouter,
      • vous mettez du temps pour accepter (normal, process manuel, c’est du boulot);
  • j’ai coché partout la case pour afficher le plugin sur le site de doc

malgré cela:

  • seul mes plugins avec repo public apparaissent sur le site de doc
  • certains plugins privés dont l’ajout de collaborateur a été fait il y a des jours voir des semaines sont en attentes d’une action chez vous (donc normal qu’il n’apparaissent pas)
  • certain autres j’ai fait l’ajout aujourd’hui (donc normal aussi)
  • et les derniers, vous avez accepté l’invitation il y a plusieurs jours ou semaines et la doc n’est toujours pas visible

donc en résumé aucun de mes plugins avec repo privé ne s’affichent sur le site de doc alors qu’il y a :

  • la case cochée
  • le token d’accès
  • l’utilisateur jeedom-market ajouté (et il a accepté) (j’ai supprimé zoic21 partout)
  • toutes ces actions réalisées il y a plusieurs jours donc le robot a eu le temps de passer

Qu’est-ce que j’ai loupé? car je vois sur le site de doc d’autres plugins privés eux aussi… donc ca fonctionne…

Bonjour,
Pour la procedure il faut voir avec un de tes copain dev qui ma tanné pendant 6 mois pour qu’il ne mette pas de clef api mais que ca passe par l’utilisateur market a qui vous donnez accès (la clef api donne accès a tout les repos pas l’utilisateur market). Perso je suis absolument pas pour cette nouvelle procedure et je lui ai expliqué mais il a insisté. Je fais juste ce qu’on me demande vu que de toute facon quand je donne mon avis et que je dis non vous insistez quand meme. Donc maintenant je dis plus rien vous demandez je fais ca va pas vous vous arrangez entre vous je veux rien savoir.

Pour le soucis de donc c’est un probleme connu nous travaillons dessus.

Sinon une solution de facilité,
Tu crée une Organisation sur github, tu déplace tout tes repository dedans. Et en temps que membre de l’organisation tu rajoute le user du market.

Cela fait que ton user a accès a tout tes repo et que quand tu en crée un, tu a plus le problème de devoir invitée le compte sur chaque repo.
De plus, tu ne perd plus une place sur ton repo.

Cordialement
Thibaut

1 « J'aime »

Je comprend que tu sois saoulé parfois.
Après je pense pas qu’on soit là avec des mauvaises intentions ni pour t’embêter, tout comme toi.
Les devs sont généralement des personnes expertes dans leur domaine, assez sur de ce qu’il raconte (même quand ils ont tord) et leur communication n’est pas leur meilleur atout… après faut pas s’étonner qu’on se prend la tête parfois :grin:

Pour revenir au sujet, je n’ai aucun problème de synchro avec le market, ca fonctionne bien ca donc je pense que le market a accès comme il doit (via la clé api en plus, pas via l’utilisateur) mais je vais chercher le sujet avec cette histoire d’api.

Et je fais la même config sur tous les plugins sauf que seul ceux ayant un repo public sont sur le site de doc, c’est le seul problème que j’ai.
et je suppose que tu as voulu écrire doc et pas donc

donc j’attends et j’arrête de chercher de mon coté

Ok je vais regarder ca, merci pour l’idée

Hello,
je ne comprend pas ces deux points, je ne trouve pas de quoi il s’agit, quelqu’un peut m’éclairer?

Hello @Mips,

Ce sont les classes à utiliser pour des widgets perso dans le plugin.

J’ai pas vérifié mais à relire:

  • pour une info il faut mettre la classe state dans un span.
  • pour une action c’est la classe action dans une balise a.

Ceci dans un souci d’harmonie avec le core.

@+

1 « J'aime »