worktree-status

Par liferay · liferay-portal

Permet de lister les worktrees Liferay avec leurs ports assignés, leur statut d'exécution, leur offset et leur base de données, ou d'afficher le résumé des ports et de la base de données pour un seul worktree.

npx skills add https://github.com/liferay/liferay-portal --skill worktree-status

État des Worktrees

Inspectez les worktrees Liferay et les ports et bases de données qu'ils sont configurés pour utiliser. La skill ne modifie jamais l'état.

Déterminer l'Action

Analysez ${ARGUMENTS} et le contexte de conversation :

  • "list" ou l'utilisateur demande quels worktrees existent ou ce qui s'exécute → Lister Tous
  • "status" ou l'utilisateur demande quels ports un worktree utilise → Vérifier l'État
  • Aucun argument → par défaut, Lister Tous

Valeurs Par Défaut des Ports

L'offset 0 est réservé au worktree principal. Tous les ports se décalent du même offset N : port = default + N.

Service Par défaut Localisation de la Config
Arquillian 32763 <bundles>/osgi/configs/...ArquillianConnector.config
DataGuard 42763 <bundles>/osgi/configs/...DataGuardConnector.config
Elasticsearch Sidecar HTTP 9201 <bundles>/osgi/configs/...ElasticsearchConfiguration.config
Elasticsearch Transport 9301 <bundles>/osgi/configs/...ElasticsearchConfiguration.config
Glowroot 4000 <bundles>/glowroot/admin.json
HTTPS Redirect 8443 <tomcat>/conf/server.xml
JPDA Debug 8000 <tomcat>/bin/setenv.sh
OSGi Console 11311 <tomcat>/webapps/ROOT/WEB-INF/classes/portal-developer.properties
Tomcat AJP 8009 <tomcat>/conf/server.xml
Tomcat HTTP 8080 <tomcat>/conf/server.xml
Tomcat Shutdown 8005 <tomcat>/conf/server.xml

Nommage des Bases de Données

Le nom de la base de données est dérivé du nom du répertoire du worktree, et non de l'offset :

liferay-portal-LPD-12345  →  lportal_lpd_12345
liferay-portal-hotfix     →  lportal_hotfix
liferay-portal            →  lportal (main)

Appliquez cette règle : supprimez le préfixe liferay-portal-, convertissez en minuscules, remplacez les séquences non alphanumériques par _, réduisez les _ consécutifs, tronquez à 56 caractères, puis ajoutez le préfixe lportal_.

Lister Tous

Affiche un tableau récapitulatif de chaque worktree Git avec son port HTTP, son statut d'exécution, son offset et sa base de données.

  1. Exécutez git worktree list --porcelain pour énumérer tous les worktrees.

  2. Pour chaque worktree, résolvez <bundles> en lisant app.server.parent.dir depuis app.server.${USER}.properties à la racine du worktree (retour à app.server.properties en cas d'absence). Remplacez ${project.dir} par le chemin du worktree.

  3. Lisez <bundles>/.worktree-port-offset pour obtenir l'offset, puis dérivez le port HTTP et le nom de la base de données.

  4. Détectez le statut d'exécution en comparant -Dcatalina.base avec le répertoire <tomcat> de chaque worktree. Utilisez la correspondance de processus, pas le scanning de ports — le scanning de ports ne peut pas distinguer quel Tomcat possède quel port.

     ps -eo args | grep --only-matching "\-Dcatalina\.base=[^ ]*" | sed "s/-Dcatalina.base=//"

Rendez la sortie comme ceci :

Worktree                                 Port     Status     Offset    Database
liferay-portal                           -        NO TOMCAT  (none)    -
liferay-portal-LPD-00000                 8081     RUNNING    1         lportal_lpd_00000
liferay-portal-LPD-12345                 8082     STOPPED    2         lportal_lpd_12345

Vérifier l'État

Lisez <bundles>/.worktree-port-offset pour le worktree courant et affichez le tableau complet des ports plus le nom de la base de données dérivée. Ne faites aucune modification.

Skills similaires