Automatizando la configuración del plugin de Discourse con la gema `create-discourse-plugin`

:mega: Este plugin ahora está incluido en el núcleo de Discourse. No es necesario usar esta gema.
Para crear un nuevo plugin, usa:
rake plugin:create[plugin-name]

Desde que comencé a desarrollar plugins de Discourse, sentí que la configuración general podría ser más sencilla. Deberíamos tener una mejor experiencia de desarrollo general al crear un plugin.

En ese espíritu, he creado en mi tiempo libre esta gema llamada create-discourse-plugin

¿Qué hace?

Clona y crea una copia del discourse-plugin-skeleton bajo tu nombre de usuario u organización según la opción que elijas. Después de eso, actualiza todos los marcadores de posición con el nombre de tu plugin. Haciéndolo listo para comenzar el desarrollo.

¿Cómo usarlo?

En el mismo espíritu que npx create-next-app o npx meteor

 gem exec create-discourse-plugin \u003cplugin-name\u003e

Requisitos

Contribuciones

16 Me gusta

¡Gracias! ¡He pensado en hacer esto cada vez que he creado un nuevo plugin en los últimos años! Parece que has hecho un trabajo mucho mejor del que yo habría hecho. ¡Estoy deseando probarlo!

6 Me gusta

Esto es genial, ¿cuándo te vas a cansar lo suficiente como para hacer

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

? :wink:

6 Me gusta

Eso sería discourse_theme new :wink:


@grubba ¿qué te parecería integrar esto en el núcleo como una tarea de rake? Como

bin/rake plugin:create

La gente necesita tener un entorno de desarrollo central funcional para trabajar en plugins de todos modos, así que parece una buena opción. También lo haría más ‘oficial’ y más fácil de mantener para todo el equipo.

Me pregunto si sería mejor hacerlo 100% git, en lugar de depender de que la gente use GitHub (y tenga la CLI gh). Algunas personas usan otros servicios para alojar sus plugins y tampoco quieren que se hagan públicos de inmediato.

En discourse_theme mantenemos una caché local del esqueleto del tema, ¡así que incluso funciona sin conexión!

6 Me gusta

¡Doh! ¡Solo uso watch! Y creo que cuando lo probé hace mucho tiempo, no lo sé. Pero me olvidé de él. :exploding_head:

2 Me gusta

¡Supongo que tiene sentido! La gente lo ha probado, y he recibido algunas quejas y comentarios y he hecho algunos ajustes. Creo que está en muy buena forma para hacerlo oficial. Trabajaré en los próximos días para agregarlo al núcleo.

Estoy de acuerdo en que usar gh no es ideal, y encontraré una solución. Tal vez lo que hace discourse_theme new es lo que estaba buscando…

5 Me gusta

¡Tengo grandes noticias! Acabo de fusionar esta nueva tarea de rake en el núcleo:

rake plugin:create[name]

Funciona de manera similar a la gema, pero no envía a GitHub, dándote la opción de qué hacer, exactamente como discourse_theme new

Etiquetaré esta gema como obsoleta, ya que tenemos una solución más oficial.

10 Me gusta

EDITAR: Eliminé Gemfile.lock de .gitignore, como decía. Y ahora funciona.

No se permite Gemfile.lock en .gitignore
Clonando 'https://github.com/discourse/discourse-plugin-skeleton' a '/home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers'...
Inicializando repositorio git...
Repositorio Git vacío inicializado en /home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers/.git/
Las siguientes rutas son ignoradas por uno de tus archivos .gitignore:
Gemfile.lock
hint: Usa -f si realmente quieres añadirlos.
hint: Desactiva este mensaje ejecutando
hint: "git config advice.addIgnoredFile false"
rake abortado.
Comando fallido con salida 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>'
Tareas: TOP => plugin:create
(Consulta el rastreo completo ejecutando la tarea con --trace)

Lo intenté de nuevo después de ejecutar git config advice.addIgnoredFile false con el mismo resultado.

Y también

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

ERROR:  No se pudo encontrar una gema válida 'create-discourse-theme' (>= 0) en ningún repositorio
ERROR:  Alternativas posibles: create-discourse-plugin, discourse_theme, askclass-course-theme, date_discreter, opensource-theme
1 me gusta