Mais je suis presque certain que lorsque je suis l’analyse effectuée dans le plugin, les tests d’analyse échouent dans l’action github.
AHA !!! pnpm i semble être la magie qui me manque. J’ai ajouté le ‘pnpm i’ à mon script qui met à jour discourse core et celui qui fait l’analyse. . .
Alors voici ce que fait mon script :
if [[ "$ARG" == "eslint" ]]
then
# Voir https://github.com/discourse/.github/blob/main/.github/workflows/discourse-plugin.yml
if [ -f plugin.rb ]
then
echo "Analyse du répertoire courant."
else
echo "Pas sur un plugin. Utilisation de $DEFAULT_PLUGIN"
cd $DEFAULT_PLUGIN
fi
echo "ANALYSE DE $(pwd)"
#cd /home/pfaffman/src/literatecomputing/discourse-display-email
# pnpm install
echo "Exécution de `pnpm i`"
pnpm -i
echo -n ESLINT . . .
pnpm eslint --no-error-on-unmatched-pattern {test,assets,admin/assets}/javascripts
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "eslint n'était pas content -- $exit_code -- tentative de correction"
pnpm eslint --fix --no-error-on-unmatched-pattern {test,assets,admin/assets}/javascripts
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "eslint n'était toujours pas content -- $exit_code -- fin du jeu"
exit
fi
fi
echo ESLINT terminé.
## styllint
echo -n STYLELINT . . .
pnpm stylelint --allow-empty-input "assets/**/*.scss"
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "stylelint n'est pas content. Tentative de correction . . . "
fi
pnpm stylelint --fix --allow-empty-input "assets/**/*.scss"
pnpm stylelint --allow-empty-input "assets/**/*.scss"
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "stylelint n'est toujours pas content. C'est triste. Fin du jeu."
exit
fi
echo "TERMINÉ !"
## fin stylelint
## PRETTIER
echo -n "Prettier . . . "
if [ -n "$(find assets -type f \( -name "*.scss" -o -name "*.js" -o -name "*.gjs" -o -name "*.hbs" \) 2>/dev/null)" ]; then
#pnpm prettier --write 'assets/**/*.{scss,js,gjs,es6,hbs}'
# echo "exécution de pnpm prettier --write --log-level warn assets/**/*.{scss,js,gjs,es6,hbs}"
pnpm prettier --write --log-level error "assets/**/*.{scss,js,gjs,hbs}"
if [[ $? -ne 0 ]]
then
echo "prettier assets a fait quelque chose!!! -- $?"
sleep 5
fi
fi
if [ -n "$(find admin/assets -type f \( -name "*.scss" -o -name "*.js" -o -name "*.gjs" -o -name "*.hbs" \) 2>/dev/null)" ]; then
#pnpm prettier --write 'assets/**/*.{scss,js,gjs,es6,hbs}'
# echo "exécution de pnpm prettier --write --log-level warn admin/assets/**/*.{scss,js,gjs,hbs}"
pnpm prettier --write --log-level log "assets/**/*.{scss,js,gjs,es6,hbs}"
if [[ $? -ne 0 ]]
then
echo "prettier admin/assets a fait quelque chose!!! -- $?"
pnpm prettier --check --log-level log "assets/**/*.{scss,js,gjs,es6,hbs}"
fi
fi
if [ -n "$(find test -type f \( -name "*.js" -o -name "*.gjs" \) 2>/dev/null)" ]; then
#pnpm prettier --write 'assets/**/*.{scss,js,gjs,es6,hbs}'
# echo "exécution de pnpm prettier --write --log-level warn assets/**/*.{scss,js,gjs,es6,hbs}"
pnpm prettier --write --log-level warn "test/**/*.{js,gjs}"
if [[ $? -ne 0 ]]
then
echo "prettier test a fait quelque chose!!! -- $?"
pnpm prettier --check --loglevel log "test/**/*.{js,gjs}"
fi
fi
echo "Fini avec prettier"
echo "ember-template-lint"
pnpm ember-template-lint --fix --no-error-on-unmatched-pattern assets/javascripts admin/assets/javascripts
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "fini avec ember-template-lint --fix --no-error-on-unmatched-pattern assets/javascripts -- avec $exit_code"
echo sleep 5
sleep 5
fi
#bundle exec stree write Gemfile $(git ls-files '*.rb') $(git ls-files '*.rake') $(git ls-files '*.thor')
bundle exec stree check Gemfile $(git ls-files '*.rb') $(git ls-files '*.rake') $(git ls-files '*.thor')
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "stree n'est pas content. Tentative de correction dans 2 secondes . .. "
sleep 2
echo "c'est parti !!!"
bundle exec stree write Gemfile $(git ls-files '*.rb') $(git ls-files '*.rake') $(git ls-files '*.thor')
fi
bundle exec stree check Gemfile $(git ls-files '*.rb') $(git ls-files '*.rake') $(git ls-files '*.thor')
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "stree n'est toujours pas content. C'est triste. Attente pour vous rendre plus triste"
sleep 15
fi
echo fini avec stree
echo "rubocop !"
bundle exec rubocop -A $(find . -name "*.rb"|grep -v gems)
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "fini avec rubocop -- $exit_code"
sleep 15
fi
exit
fi
Mais j’ai aussi ceci, qui je pense fonctionne presque de la même manière :
if [[ "$ARG" == "lint" ]]
then
cd ~/src/discourse-repos/discourse
find plugins/discourse-pfaffmanager/assets -type f \( -name "*.scss" -o -name "*.js" -o -name "*.gjs" -o -name "*.hbs" -o -name "*.rb" \) -exec ./bin/lint --fix {} +
cd -
fi
La seule différence maintenant semble être que l’analyse du cœur n’est pas contente de ceci (et je pense que je comprends pourquoi le cœur le trouve et le plugin non, et il n’y a aucun inconvénient à corriger ces dépréciations plus tôt que tard) :
/home/pfaffman/src/discourse-repos/discourse/plugins/discourse-pfaffmanager/assets/javascripts/discourse/components/modal/really-delete.gjs
2:8 error Use Glimmer components(@glimmer/component) instead of classic components(@ember/component) ember/no-classic-components
✖ 1 problème (1 erreur, 0 avertissements)
Et si j’utilise bin/lint, alors je n’ai pas à m’inquiéter que quelque chose change dans l’analyse qui nécessite de mettre à jour mon script de 54 lignes. N’est-ce pas ?
Attendez. Les documenter où dans les dépôts squelettes ?
J’aimerais bien avoir des conseils sur la façon dont je pourrais déployer les changements méthodiquement, même si je comprends que mon petit ensemble de choses n’est pas vraiment votre problème. . . Ceci n’appartient pas vraiment ici, mais j’ai essayé à quelques reprises de comprendre mass-pr, mais je n’y suis pas encore parvenu. Je copie généralement périodiquement certains fichiers .whatever à partir d’un pull récent du squelette et j’espère le meilleur.
Et il y a 16 de ces scripts. Dois-je surveiller le dépôt et ensuite l’exécuter chaque fois que l’un d’eux est mis à jour ? Et un tas de thèmes semblent ne pas cloner les dépôts squelettes, ils échouent donc à copier les fichiers requis ?
Et plusieurs semblent échouer avec quelque chose comme sed: can’t read s/default.yml/stree-compat.yml/: No such file or directory ? parce qu’ils ne clonent pas les dépôts squelettes ? (Je vais créer un sujet quelque part approprié pour cela quand j’en aurai l’occasion).