Ma sono abbastanza sicuro che quando seguo il linting fatto nel plugin, i test di linting falliscono nell’azione di github.
AHA!!! pnpm i sembra essere la magia che mi manca. Ho aggiunto il ‘pnpm i’ al mio script che aggiorna discourse core e quello che fa il linting. . .
Quindi ecco cosa fa il mio script:
if [[ "$ARG" == "eslint" ]]
then
# Vedi https://github.com/discourse/.github/blob/main/.github/workflows/discourse-plugin.yml
if [ -f plugin.rb ]
then
echo "Linting directory corrente."
else
echo "Non su un plugin. Uso $DEFAULT_PLUGIN"
cd $DEFAULT_PLUGIN
fi
echo "LINTING $(pwd)"
#cd /home/pfaffman/src/literatecomputing/discourse-display-email
# pnpm install
echo "Eseguo `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 non era contento -- $exit_code -- provo a sistemare"
pnpm eslint --fix --no-error-on-unmatched-pattern {test,assets,admin/assets}/javascripts
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "eslint era ancora scontento -- $exit_code -- gioco finito"
exit
fi
fi
echo ESLINT fatto.
## styllint
echo -n STYLELINT . . .
pnpm stylelint --allow-empty-input "assets/**/*.scss"
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "stylelint è scontento. Provo a sistemare . . . "
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 è ancora scontento. questo è triste. Gioco finito."
exit
fi
echo "FATTO!"
## fine 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 "eseguo 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 ha fatto qualcosa!!! -- $?"
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 "eseguo 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 ha fatto qualcosa!!! -- $?"
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 "eseguo 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 ha fatto qualcosa!!! -- $?"
pnpm prettier --check --loglevel log "test/**/*.{js,gjs}"
fi
fi
echo "Fatto 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 "fatto 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 è scontento. Provo a sistemare tra 2 secondi . .. "
sleep 2
echo "ecco qui!!!"
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 è ancora scontento. questo è triste. Aspetto per renderti più triste"
sleep 15
fi
echo fatto con stree
echo "rubocop!"
bundle exec rubocop -A $(find . -name "*.rb"|grep -v gems)
exit_code="?"
if [[ $exit_code -ne 0 ]]
then
echo "fatto con rubocop -- $exit_code"
sleep 15
fi
exit
fi
Ma ho anche questo, che penso funzioni quasi allo stesso modo:
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
L’unica differenza ora sembra essere che il linting del core non è contento di questo (e penso di capire perché il core lo trovi e il plugin no, e non c’è svantaggio nel correggere quelle deprecazioni prima piuttosto che dopo):
/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 errore, 0 avvisi)
E se uso bin/lint allora non devo preoccuparmi che qualcosa cambi nel linting che richieda l’aggiornamento del mio script di 54 righe. Giusto?
Aspetta. Documentandoli dove negli skeleton repository?
Mi piacerebbe avere qualche indicazione su come potrei implementare le modifiche metodicamente, anche se capisco che il mio piccolo insieme di cose non è davvero un vostro problema. . . Questo non appartiene davvero qui, ma ho provato un paio di volte a capire mass-pr, ma non ci sono ancora riuscito. Di solito copio periodicamente alcuni file .whatever da un pull recente dello skeleton e spero per il meglio.
E ci sono 16 di quegli script. Devo monitorare il repository ed eseguirlo ogni volta che uno di essi viene aggiornato? E parecchi temi non clonano gli skeleton quindi falliscono nel copiare i file necessari?
E diversi falliscono con qualcosa come sed: can’t read s/default.yml/stree-compat.yml/: No such file or directory ? perché non clonano gli skeleton repository? (Inizierò un argomento da qualche parte appropriato per questo quando ne avrò l’occasione).