Pero estoy bastante seguro de que cuando sigo el linting realizado en el plugin, las pruebas de linting fallan en la acción de github.
¡¡¡AJA!!! pnpm i parece ser la magia que me falta. He añadido el ‘pnpm i’ a mi script que actualiza el núcleo de discourse y al que realiza el linting. . .
Así que ahora esto es lo que hace mi script:
if [[ "$ARG" == "eslint" ]]
then
# Ver https://github.com/discourse/.github/blob/main/.github/workflows/discourse-plugin.yml
if [ -f plugin.rb ]
then
echo "Linting directorio actual."
else
echo "No es un plugin. Usando $DEFAULT_PLUGIN"
cd $DEFAULT_PLUGIN
fi
echo "LINTING $(pwd)"
#cd /home/pfaffman/src/literatecomputing/discourse-display-email
# pnpm install
echo "Haciendo `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 no estaba contento -- $exit_code -- intentando arreglar"
pnpm eslint --fix --no-error-on-unmatched-pattern {test,assets,admin/assets}/javascripts
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "eslint seguía sin estar contento -- $exit_code -- se acabó el juego"
exit
fi
fi
echo ESLINT hecho.
## styllint
echo -n STYLELINT . . .
pnpm stylelint --allow-empty-input "assets/**/*.scss"
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "stylelint no está contento. Intentando arreglar . . . "
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 sigue sin estar contento. esto es triste. Se acabó el juego."
exit
fi
echo "¡HECHO!"
## 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 "haciendo 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 hizo algo!!! -- $?"
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 "haciendo 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 hizo algo!!! -- $?"
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 "haciendo 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 hizo algo!!! -- $?"
pnpm prettier --check --loglevel log "test/**/*.{js,gjs}"
fi
fi
echo "Fin con 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 "fin con ember-template-lint --fix --no-error-on-unmatched-pattern assets/javascripts -- con $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 no está contento. Intentando arreglar en 2 segundos . .. "
sleep 2
echo "¡aquí vamos!!!"
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 sigue sin estar contento. esto es triste. Esperando para hacerte más triste"
sleep 15
fi
echo fin con stree
echo "rubocop!"
bundle exec rubocop -A $(find . -name "*.rb"|grep -v gems)
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "fin con rubocop -- $exit_code"
sleep 15
fi
exit
fi
Pero también tengo esto, que creo que funciona casi igual:
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 única diferencia ahora parece ser que el linting del núcleo no está contento con esto (y creo que entiendo por qué el núcleo lo encuentra y el plugin no, y no hay desventaja en arreglar esas deprecaciones antes que después):
/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 problema (1 error, 0 advertencias)
Y si uso bin/lint entonces no tengo que preocuparme de que algo cambie en el linting que requiera actualizar mi script de 54 líneas. ¿Verdad?
Espera. ¿Documentándolos dónde en los repositorios skeleton?
Me encantaría recibir orientación sobre cómo podría desplegar cambios metódicamente, aunque entiendo que mi pequeño conjunto de cosas no es realmente vuestro problema. . . Esto en realidad no pertenece aquí, pero he intentado un par de veces entender mass-pr, pero todavía no he tenido éxito. Normalmente copio periódicamente algunos archivos .whatever de un pull reciente del skeleton y espero lo mejor.
¿Y hay 16 de esos scripts? ¿Debo vigilar el repositorio y luego ejecutarlo cada vez que se actualice alguno de ellos? ¿Y varios temas parecen no clonar los repositorios skeleton, por lo que fallan al copiar los archivos necesarios?
¿Y varios fallan con algo como sed: can’t read s/default.yml/stree-compat.yml/: No such file or directory? ¿porque no clonan los repositorios skeleton? (Iniciar un tema en algún lugar apropiado para eso cuando tenga la oportunidad).