Automatizzare la configurazione del plugin Discourse con la gem `create-discourse-plugin`}

:mega: Questo plugin è ora incluso nel core di Discourse. Non è necessario utilizzare questa gem.
Per creare un nuovo plugin, utilizzare:
rake plugin:create[plugin-name]

Da quando ho iniziato a sviluppare plugin per Discourse, ho sentito che l’impostazione generale poteva essere più semplice. Dovremmo avere una migliore esperienza di sviluppo generale quando creiamo un plugin.

In questo spirito, ho creato nel mio tempo libero questa gem chiamata create-discourse-plugin

Cosa fa?

Clona e crea una copia di discourse-plugin-skeleton sotto il tuo nome utente o organizzazione in base all’opzione scelta. Dopodiché, aggiorna tutti i segnaposto con il nome del tuo plugin. Rendendolo pronto per iniziare lo sviluppo.

Come si usa?

Nello stesso spirito di npx create-next-app o npx meteor

 gem exec create-discourse-plugin <nome-plugin>

Requisiti

  • Avere una GH CLI funzionante

Contribuisci

16 Mi Piace

Grazie! Ci ho pensato ogni volta che ho creato un nuovo plugin negli ultimi due anni! Sembra che tu abbia fatto un lavoro molto migliore di quanto avrei potuto fare io. Non vedo l’ora di provarlo!

6 Mi Piace

È fantastico, quindi quando ti sarai abbastanza annoiato da creare

gem exec create-discourse-theme <nome-tema>

? :wink:

6 Mi Piace

Sarebbe discourse_theme new:wink:


@grubba, cosa ne penseresti di integrare questo nel core come task rake? Tipo

bin/rake plugin:create

Le persone hanno comunque bisogno di un ambiente di sviluppo core funzionante per lavorare sui plugin, quindi sembra una buona soluzione? Renderebbe anche più ‘ufficiale’ e più facile da mantenere per tutto il team.

Mi chiedo se sarebbe meglio renderlo 100% git, invece di fare affidamento sulle persone che usano GitHub (e che hanno la CLI gh)? Alcune persone usano altri servizi per ospitare i loro plugin e potrebbero anche non volere che vengano resi immediatamente pubblici.

In discourse_theme manteniamo una cache locale del tema-skeleton, quindi funziona anche offline!

6 Mi Piace

Doh! Uso solo watch! E penso che quando l’ho provato molto tempo fa, non lo so. Ma me ne sono dimenticato. :exploding_head:

2 Mi Piace

Immagino abbia senso! Le persone lo hanno testato, ho ricevuto alcuni reclami e feedback e ho apportato alcune modifiche. Penso che sia in ottime condizioni per renderlo ufficiale. Lavorerò nei prossimi giorni per aggiungerlo al core.

Concordo sul fatto che l’uso di gh non sia l’ideale e troverò una soluzione. Forse quello che fa discourse_theme new è quello che stavo cercando…

5 Mi Piace

Ho ottime notizie! Ho appena unito questo nuovo rake task nel core:

rake plugin:create[name]

Funziona in modo simile alla gemma, ma non esegue il push su GitHub, dandoti la scelta di cosa fare, esattamente come discourse_theme new

Etichetterò questa gemma come deprecata, poiché abbiamo una soluzione più ufficiale.

10 Mi Piace

MODIFICA: Ho rimosso Gemfile.lock da .gitignore, come diceva. E ora funziona.

Nessun Gemfile.lock consentito in .gitignore
Cloning 'https://github.com/discourse/discourse-plugin-skeleton' to '/home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers'...
Initializing git repository...
Initialized empty Git repository in /home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers/.git/
The following paths are ignored by one of your .gitignore files:
Gemfile.lock
hint: Use -f if you really want to add them.
hint: Turn this message off by running
hint: "git config advice.addIgnoredFile false"
rake aborted!
Command failed with exit 1: git
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:352:in `system'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:352:in `block (2 levels) in <main>'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:344:in `chdir'
/home/pfaffman/src/discourse-repos/discourse/lib/tasks/plugin.rake:344:in `block in <main>'
Tasks: TOP => plugin:create
(See full trace by running task with --trace)

Ho riprovato dopo aver eseguito git config advice.addIgnoredFile false con lo stesso risultato.

E anche

$ gem exec create-discourse-theme discourse-public-bookmark-timers

ERROR:  Could not find a valid gem 'create-discourse-theme' (>= 0) in any repository
ERROR:  Possible alternatives: create-discourse-plugin, discourse_theme, askclass-course-theme, date_discreter, opensource-theme
1 Mi Piace