DEV: removes plugin generator (#14101)

I don't have the time to maintain this and https://github.com/discourse/discourse-plugin-skeleton is doing 80% of the job very easily.
This commit is contained in:
Joffrey JAFFEUX 2021-08-20 11:29:06 +02:00 committed by GitHub
parent f3f7efd439
commit efbc2481d8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
29 changed files with 0 additions and 355 deletions

View File

@ -1,125 +0,0 @@
# frozen_string_literal: true
require 'rails/generators/named_base'
class PluginGenerator < Rails::Generators::NamedBase
attr_writer :about
attr_writer :github_username
desc 'This generator creates a Discourse plugin skeleton'
source_root File.expand_path('templates', __dir__)
class_option :no_license, type: :boolean, desc: "No license", default: false
def create_plugin
@about ||= ask("What is the purpose of your plugin?")
@github_username ||= ask("Github username?")
readme_file
routes_file
engine_file
plugin_file
controller_file
license_file
stylesheet_file
javascript_file
settings_file
locales_file
end
def controller_file
template 'plugin_controller.rb.erb', File.join('plugins', dasherized_name, "app/controllers/#{underscored_name}/#{underscored_name}_controller.rb")
template 'controller.rb.erb', File.join('plugins', dasherized_name, "app/controllers/#{underscored_name}/actions_controller.rb")
template 'controller_spec.rb.erb', File.join('plugins', dasherized_name, "spec/requests/actions_controller_spec.rb")
end
def readme_file
template 'README.md.erb', File.join('plugins', dasherized_name, "README.md")
end
def license_file
return if @options['no_license']
template 'LICENSE.erb', File.join('plugins', dasherized_name, "LICENSE")
end
def engine_file
template 'engine.rb.erb', File.join('plugins', dasherized_name, "lib", dasherized_name, "engine.rb")
end
def routes_file
template 'routes.rb.erb', File.join('plugins', dasherized_name, "config", "routes.rb")
template 'route_constraint.rb.erb', File.join('plugins', dasherized_name, "lib", "#{underscored_name}_constraint.rb")
end
def plugin_file
template 'plugin.rb.erb', File.join('plugins', dasherized_name, "plugin.rb")
end
def stylesheet_file
template 'stylesheet.scss.erb', File.join('plugins', dasherized_name, 'assets/stylesheets/common', "#{dasherized_name}.scss")
template 'stylesheet.scss.erb', File.join('plugins', dasherized_name, 'assets/stylesheets/desktop', "#{dasherized_name}.scss")
template 'stylesheet.scss.erb', File.join('plugins', dasherized_name, 'assets/stylesheets/mobile', "#{dasherized_name}.scss")
end
def javascript_file
template 'acceptance-test.js.es6.erb', File.join('plugins', dasherized_name, "test/javascripts/acceptance", "#{dasherized_name}-test.js.es6")
template 'javascript.js.es6.erb', File.join('plugins', dasherized_name, 'assets/javascripts/initializers', "#{dasherized_name}.js.es6")
template 'route-map.js.es6.erb', File.join('plugins', dasherized_name, 'assets/javascripts/discourse', "#{dasherized_name}-route-map.js.es6")
folder = 'assets/javascripts/discourse/templates'
template "#{folder}/template.hbs.erb", path(folder, "actions.hbs")
template "#{folder}/template-show.hbs.erb", path(folder, "actions-show.hbs")
template "#{folder}/template-index.hbs.erb", path(folder, "actions-index.hbs")
folder = 'assets/javascripts/discourse/routes'
template "#{folder}/route.js.es6.erb", path(folder, "#{dasherized_name}-actions.js.es6")
template "#{folder}/route-show.js.es6.erb", path(folder, "#{dasherized_name}-actions-show.js.es6")
template "#{folder}/route-index.js.es6.erb", path(folder, "#{dasherized_name}-actions-index.js.es6")
folder = 'assets/javascripts/discourse/controllers'
template "#{folder}/controller.js.es6.erb", path(folder, "actions.js.es6")
template "#{folder}/controller-show.js.es6.erb", path(folder, "actions-show.js.es6")
template "#{folder}/controller-index.js.es6.erb", path(folder, "actions-index.js.es6")
folder = 'assets/javascripts/discourse/models'
template "#{folder}/model.js.es6.erb", path(folder, "action.js.es6")
folder = 'assets/javascripts/discourse/adapters'
template "#{folder}/adapter.js.es6.erb", path(folder, "action.js.es6")
end
def settings_file
template 'settings.yml.erb', File.join('plugins', dasherized_name, 'config', 'settings.yml')
end
def locales_file
template 'client.en.yml.erb', path('config/locales/client.en.yml')
template 'server.en.yml.erb', File.join('plugins', dasherized_name, 'config/locales', 'server.en.yml')
end
def create_gitignore_entry
plugin_entry = "!/plugins/#{dasherized_name}"
unless File.readlines(".gitignore").grep(/#{plugin_entry}/).size > 0
open('.gitignore', 'a') { |f| f.puts "\n#{plugin_entry}" }
end
end
def underscored_name
name.underscore
end
def dasherized_name
underscored_name.dasherize
end
def classified_name
name.tableize.classify
end
def path(*args)
File.join('plugins', dasherized_name, args)
end
end

View File

@ -1,20 +0,0 @@
The MIT License (MIT)
Copyright (c) 2018 <%= @github_username %>.
Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

View File

@ -1,16 +0,0 @@
# <%= name %>
<%= name %> is a plugin for ...
## Installation
Follow [Install a Plugin](https://meta.discourse.org/t/install-a-plugin/19157)
how-to from the official Discourse Meta, using `git clone https://github.com/<%= @github_username %>/<%= dasherized_name %>.git`
as the plugin command.
## Usage
## Feedback
If you have issues or suggestions for the plugin, please bring them up on
[Discourse Meta](https://meta.discourse.org).

View File

@ -1,9 +0,0 @@
import { acceptance } from "discourse/tests/helpers/qunit-helpers";
acceptance("<%= name %>", { loggedIn: true });
test("<%= name %> works", async assert => {
await visit("/admin/plugins/<%= dasherized_name %>");
assert.ok(false, "it shows the <%= name %> button");
});

View File

@ -1,7 +0,0 @@
import RestAdapter from "discourse/adapters/rest";
export default RestAdapter.extend({
basePath() {
return "/<%= dasherized_name %>/";
}
});

View File

@ -1,5 +0,0 @@
import Controller from "@ember/controller";
export default Controller.extend({
actions: {
}
});

View File

@ -1,5 +0,0 @@
import Controller from "@ember/controller";
export default Controller.extend({
actions: {
}
});

View File

@ -1,2 +0,0 @@
import Controller from "@ember/controller";
export default Controller.extend({});

View File

@ -1,3 +0,0 @@
import RestModel from "discourse/models/rest";
export default RestModel.extend({});

View File

@ -1,13 +0,0 @@
import DiscourseRoute from 'discourse/routes/discourse'
export default DiscourseRoute.extend({
controllerName: "actions-index",
model(params) {
return this.store.findAll("action");
},
renderTemplate() {
this.render("actions-index");
}
});

View File

@ -1,13 +0,0 @@
import DiscourseRoute from 'discourse/routes/discourse'
export default DiscourseRoute.extend({
controllerName: "actions-show",
model(params) {
return this.store.find("action", params.id);
},
renderTemplate() {
this.render("actions-show");
}
});

View File

@ -1,9 +0,0 @@
import DiscourseRoute from 'discourse/routes/discourse'
export default DiscourseRoute.extend({
controllerName: "actions",
renderTemplate() {
this.render("actions");
}
});

View File

@ -1 +0,0 @@
controller-show.hbs id: {{model.id}}

View File

@ -1,3 +0,0 @@
en:
js:
<%= underscored_name %>:

View File

@ -1,15 +0,0 @@
module <%= classified_name %>
class ActionsController < ::ApplicationController
requires_plugin <%= classified_name %>
before_action :ensure_logged_in
def index
render_json_dump({ actions: [] })
end
def show
render_json_dump({ action: { id: params[:id] } })
end
end
end

View File

@ -1,13 +0,0 @@
require 'rails_helper'
describe <%= name %>::ActionsController do
before do
Jobs.run_immediately!
end
it 'can list' do
sign_in(Fabricate(:user))
get "/<%= dasherized_name %>/list.json"
expect(response.status).to eq(200)
end
end

View File

@ -1,12 +0,0 @@
module <%= classified_name %>
class Engine < ::Rails::Engine
engine_name "<%= classified_name %>".freeze
isolate_namespace <%= classified_name %>
config.after_initialize do
Discourse::Application.routes.append do
mount ::<%= classified_name %>::Engine, at: "/<%= dasherized_name %>"
end
end
end
end

View File

@ -1,13 +0,0 @@
import { withPluginApi } from "discourse/lib/plugin-api";
function initialize<%= classified_name %>(api) {
// https://github.com/discourse/discourse/blob/main/app/assets/javascripts/discourse/lib/plugin-api.js.es6
}
export default {
name: "<%= dasherized_name %>",
initialize() {
withPluginApi("0.8.31", initialize<%= classified_name %>);
}
};

View File

@ -1,21 +0,0 @@
# frozen_string_literal: true
# name: <%= name %>
# about: <%= @about %>
# version: 0.1
# authors: <%= @github_username %>
# url: https://github.com/<%= @github_username %>
register_asset 'stylesheets/common/<%= dasherized_name %>.scss'
register_asset 'stylesheets/desktop/<%= dasherized_name %>.scss', :desktop
register_asset 'stylesheets/mobile/<%= dasherized_name %>.scss', :mobile
enabled_site_setting :<%= underscored_name %>_enabled
PLUGIN_NAME ||= '<%= classified_name %>'
load File.expand_path('lib/<%= dasherized_name %>/engine.rb', __dir__)
after_initialize do
# https://github.com/discourse/discourse/blob/main/lib/plugin/instance.rb
end

View File

@ -1,10 +0,0 @@
module <%= classified_name %>
class <%= classified_name %>Controller < ::ApplicationController
requires_plugin <%= classified_name %>
before_action :ensure_logged_in
def index
end
end
end

View File

@ -1,7 +0,0 @@
export default function() {
this.route("<%= dasherized_name %>", function() {
this.route("actions", function() {
this.route("show", { path: "/:id" });
});
});
};

View File

@ -1,5 +0,0 @@
class <%= classified_name %>Constraint
def matches?(request)
SiteSetting.<%= underscored_name %>_enabled
end
end

View File

@ -1,7 +0,0 @@
require_dependency "<%= underscored_name %>_constraint"
<%= classified_name %>::Engine.routes.draw do
get "/" => "<%= underscored_name %>#index", constraints: <%= classified_name %>Constraint.new
get "/actions" => "actions#index", constraints: <%= classified_name %>Constraint.new
get "/actions/:id" => "actions#show", constraints: <%= classified_name %>Constraint.new
end

View File

@ -1,8 +0,0 @@
module Jobs
class ::<%= classified_name %>::Check < ::Jobs::Scheduled
every 1.day
def execute(args = nil)
end
end
end

View File

@ -1,3 +0,0 @@
en:
site_settings:
<%= underscored_name %>_enabled: "Enable <%= name %> plugin"

View File

@ -1,4 +0,0 @@
plugins:
<%= underscored_name %>_enabled:
default: true
client: true

View File

@ -1,2 +0,0 @@
.<%= dasherized_name %> {
}