Automatisierung der Discourse-Plugin-Installation mit dem `create-discourse-plugin`-Gem

:mega: Dieses Plugin ist jetzt Teil des Discourse-Kerns. Es ist nicht notwendig, dieses Gem zu verwenden.
Um ein neues Plugin zu erstellen, verwenden Sie:
rake plugin:create[plugin-name]

Seit ich angefangen habe, Discourse-Plugins zu entwickeln, hatte ich das Gefühl, dass die allgemeine Einrichtung einfacher sein könnte. Wir sollten eine bessere allgemeine Entwicklererfahrung bei der Erstellung eines Plugins haben.

In diesem Sinne habe ich in meiner Freizeit dieses Gem namens create-discourse-plugin erstellt.

Was macht es?

Es klont und erstellt eine Kopie des discourse-plugin-skeleton unter Ihrem Benutzernamen oder Ihrer Organisation, basierend auf Ihrer gewählten Option. Danach aktualisiert es alle Platzhalter mit dem Namen Ihres Plugins. Damit ist es bereit für die Entwicklung.

Wie benutzt man es?

Im gleichen Sinne wie npx create-next-app oder npx meteor

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

Anforderungen

Mitwirken

16 „Gefällt mir“

Danke! Ich habe darüber nachgedacht, das jedes Mal zu tun, wenn ich in den letzten Jahren ein neues Plugin erstellt habe! Es sieht so aus, als hättest du das viel besser gemacht, als ich es gekonnt hätte. Ich kann es kaum erwarten, es auszuprobieren!

6 „Gefällt mir“

Das ist so genial, wann wirst du dich genug ärgern, um

gem exec create-discourse-theme <theme-name>

zu machen? :wink:

6 „Gefällt mir“

Das wäre discourse_theme new:wink:


@grubba, wie würdest du dazu stehen, dies als Rake-Task in den Core zu integrieren? So wie

bin/rake plugin:create

Leute brauchen sowieso eine funktionierende Core-Dev-Umgebung, um an Plugins zu arbeiten, also scheint es eine gute Lösung zu sein? Es würde es auch “offizieller” machen und dem gesamten Team die Wartung erleichtern.

Ich frage mich, ob es besser wäre, es zu 100 % auf Git zu setzen, anstatt sich darauf zu verlassen, dass Leute GitHub (und die gh CLI) verwenden? Manche Leute nutzen andere Dienste, um ihre Plugins zu hosten, und möchten vielleicht auch nicht, dass sie sofort öffentlich gemacht werden.

In discourse_theme pflegen wir einen lokalen Cache des Theme-Skeletts, sodass es sogar offline funktioniert!

6 „Gefällt mir“

Doh! Ich benutze immer nur watch! Und ich glaube, als ich es vor langer Zeit ausprobiert habe, weiß ich nicht. Aber ich habe es vergessen. :exploding_head:

2 „Gefällt mir“

Ich denke, das ergibt Sinn! Leute haben es getestet, und ich habe ein paar Beschwerden und Rückmeldungen erhalten und einige Anpassungen vorgenommen. Ich denke, es ist in einem ziemlich guten Zustand, um es offiziell zu machen. Ich werde in den nächsten Tagen daran arbeiten, es in den Core aufzunehmen.

Ich stimme zu, dass die Verwendung von gh nicht ideal ist, und ich werde eine Lösung finden. Vielleicht ist das, was discourse_theme new tut, das, wonach ich gesucht habe…

5 „Gefällt mir“

Ich habe tolle Neuigkeiten! Ich habe gerade diesen neuen Rake-Task in den Core integriert:

rake plugin:create[name]

Er funktioniert ähnlich wie das Gem, pusht aber nicht nach GitHub, sodass Sie die Wahl haben, was Sie tun möchten – genau wie discourse_theme new

Ich werde dieses Gem als veraltet markieren, da wir eine offiziellere Lösung haben.

10 „Gefällt mir“

EDIT: Ich habe Gemfile.lock aus .gitignore entfernt, wie es hieß. Und jetzt funktioniert es.

Kein Gemfile.lock in .gitignore erlaubt
Klonen von 'https://github.com/discourse/discourse-plugin-skeleton' nach '/home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers'...
Initialisiere Git-Repository...
Leeres Git-Repository initialisiert in /home/pfaffman/src/discourse-repos/discourse/plugins/discourse-public-bookmark-timers/.git/
Die folgenden Pfade werden von einer Ihrer .gitignore-Dateien ignoriert:
Gemfile.lock
Hinweis: Verwenden Sie -f, wenn Sie sie wirklich hinzufügen möchten.
Hinweis: Schalten Sie diese Meldung aus, indem Sie ausführen
Hinweis: "git config advice.addIgnoredFile false"
rake abgebrochen!
Befehl fehlgeschlagen mit 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
(Vollständige Trace durch Ausführen der Aufgabe mit --trace anzeigen)

Ich habe es nach dem Ausführen von git config advice.addIgnoredFile false erneut versucht, mit demselben Ergebnis.

Und auch

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

FEHLER:  Es konnte kein gültiges Gem 'create-discourse-theme' (>= 0) in einem Repository gefunden werden
FEHLER:  Mögliche Alternativen: create-discourse-plugin, discourse_theme, askclass-course-theme, date_discreter, opensource-theme
1 „Gefällt mir“