Automatizando a configuração do plugin Discourse com a gem `create-discourse-plugin`

:mega: Este plugin agora está incluído no core do Discourse. Não há necessidade de usar esta gem.
Para criar um novo plugin, use:
rake plugin:create[nome-do-plugin]

Desde que comecei a desenvolver plugins para o Discourse, senti que a configuração geral poderia ser mais direta. Deveríamos ter uma melhor experiência geral de desenvolvimento ao criar um plugin.

Nesse espírito, criei em meu tempo livre esta gem chamada create-discourse-plugin

O que faz?

Ele clona e cria uma cópia do discourse-plugin-skeleton sob seu nome de usuário ou organização, com base na opção escolhida. Depois disso, atualiza todos os placeholders com o nome do seu plugin. Tornando-o pronto para iniciar o desenvolvimento.

Como usar?

No mesmo espírito de npx create-next-app ou npx meteor

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

Requisitos

Contribuição

16 curtidas

Obrigado! Pensei em fazer isso toda vez que criei um novo plugin nos últimos anos! Parece que você fez um trabalho muito melhor do que eu teria feito. Mal posso esperar para experimentar!

6 curtidas

Isso é tão incrível, então quando você vai ficar irritado o suficiente para fazer

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

? :wink:

6 curtidas

Isso seria discourse_theme new:wink:


@grubba como você se sentiria em incorporar isso ao core como uma tarefa rake? Como

bin/rake plugin:create

As pessoas precisam ter um ambiente de desenvolvimento core funcional para trabalhar em plugins de qualquer maneira, então parece um bom encaixe? Isso também o tornaria 100% ‘oficial’ e mais fácil para toda a equipe manter.

Eu me pergunto se seria melhor torná-lo 100% git, em vez de depender das pessoas usarem o github (e terem o gh cli)? Algumas pessoas usam outros serviços para hospedar seus plugins e também podem não querer que eles sejam imediatamente tornados públicos.

Em discourse_theme, mantemos um cache local do tema-esqueleto, então ele funciona até offline!

6 curtidas

Doh! Eu só uso watch! E acho que quando tentei há muito tempo, não sei. Mas esqueci disso. :exploding_head:

2 curtidas

Acho que faz sentido! As pessoas testaram, recebi algumas reclamações e feedback e fiz alguns ajustes. Acho que está em boa forma para torná-lo oficial. Trabalharei nos próximos dias para adicioná-lo ao core.

Concordo que usar o gh não é o ideal, e vou encontrar uma solução. Talvez o que discourse_theme new faz seja o que eu estava procurando…

5 curtidas

Tenho ótimas notícias! Acabei de mesclar esta nova tarefa rake ao núcleo:

rake plugin:create[name]

Ela funciona de forma semelhante à gem, mas não envia para o GitHub, dando a você a escolha do que fazer – exatamente como discourse_theme new

Marcarei esta gem como obsoleta, pois temos uma solução mais oficial.

10 curtidas

EDIT: Removi Gemfile.lock de .gitignore, como dizia. E agora funciona.

Gemfile.lock não permitido em .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)

Tentei novamente depois de executar git config advice.addIgnoredFile false com o mesmo resultado.

E também

$ 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 curtida