10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
# File 'lib/generators/camaleon_cms/gem_plugin_generator.rb', line 10
def create_initializer_file
plugin_dir = Rails.root.join('apps', 'plugins', get_plugin_name).to_s
plugin_dir_path = "apps/plugins/#{get_plugin_name}"
if behavior == :revoke
FileUtils.rm_r(plugin_dir) if Dir.exist?(plugin_dir)
append_to_file Rails.root.join('Gemfile') do
"\n\ngem '#{get_plugin_name}', path: '#{plugin_dir_path}'"
end
else
plugin_app = File.join($camaleon_engine_dir, 'lib', 'generators', 'camaleon_cms',
"gem_plugin_#{get_plugin_name}")
FileUtils.rm_r(plugin_app) if Dir.exist?(plugin_app)
FileUtils.mkdir_p(plugin_dir)
system("cd #{Rails.root} & rails plugin new apps/plugins/#{get_plugin_name} --full")
FileUtils.cp_r(File.join($camaleon_engine_dir, 'lib', 'generators', 'camaleon_cms', 'gem_plugin_template'),
plugin_app)
helper_path = File.join(plugin_app, 'app', 'helpers', 'plugins', get_plugin_name)
model_path = File.join(plugin_app, 'app', 'models', 'plugins', get_plugin_name)
views_path = File.join(plugin_app, 'app', 'views', 'plugins', get_plugin_name)
controller_path = File.join(plugin_app, 'app', 'controllers', 'plugins', get_plugin_name)
begin
FileUtils.mv(File.join(plugin_app, 'app', 'controllers', 'plugins', 'my_plugin'), controller_path)
rescue StandardError
nil
end
begin
FileUtils.mv(File.join(plugin_app, 'app', 'helpers', 'plugins', 'my_plugin'), helper_path)
rescue StandardError
nil
end
begin
FileUtils.mv(File.join(plugin_app, 'app', 'models', 'plugins', 'my_plugin'), model_path)
rescue StandardError
nil
end
begin
FileUtils.mv(File.join(plugin_app, 'app', 'views', 'plugins', 'my_plugin'), views_path)
rescue StandardError
nil
end
begin
FileUtils.mv(File.join(plugin_app, 'app', 'assets', 'images', 'plugins', 'my_plugin'),
File.join(plugin_app, 'app', 'assets', 'images', 'plugins', get_plugin_name))
rescue StandardError
nil
end
begin
FileUtils.mv(File.join(plugin_app, 'app', 'assets', 'javascripts', 'plugins', 'my_plugin'),
File.join(plugin_app, 'app', 'assets', 'javascripts', 'plugins', get_plugin_name))
rescue StandardError
nil
end
begin
FileUtils.mv(File.join(plugin_app, 'app', 'assets', 'stylesheets', 'plugins', 'my_plugin'),
File.join(plugin_app, 'app', 'assets', 'stylesheets', 'plugins', get_plugin_name))
rescue StandardError
nil
end
t = fix_text(File.read(File.join(plugin_app, 'config', 'camaleon_plugin.json')))
File.open(File.join(plugin_app, 'config', 'camaleon_plugin.json'), 'w') { |f| f << t }
t = fix_text(File.read(File.join(helper_path, 'main_helper.rb')))
File.open(File.join(helper_path, 'main_helper.rb'), 'w') { |f| f << t }
t = fix_text(File.read(File.join(controller_path, 'admin_controller.rb')))
File.open(File.join(controller_path, 'admin_controller.rb'), 'w') { |f| f << t }
t = fix_text(File.read(File.join(controller_path, 'front_controller.rb')))
File.open(File.join(controller_path, 'front_controller.rb'), 'w') { |f| f << t }
model_file = File.join(model_path, 'my_plugin.rb')
t = fix_text(File.read(model_file))
File.open(model_file, 'w') { |f| f << t }
begin
FileUtils.mv(model_file, File.join(File.dirname(model_file), "#{get_plugin_name}.rb"))
rescue StandardError
nil
end
directory(plugin_app, plugin_dir)
gsub_file File.join(plugin_dir, 'config', 'routes.rb'), /.+/ do
"require 'plugin_routes'
require 'camaleon_cms/engine'
Rails.application.routes.draw do
scope PluginRoutes.system_info[\"relative_url_root\"] do
scope '(:locale)', locale: /\#{PluginRoutes.all_locales}/, :defaults => { } do
# frontend
namespace :plugins do
namespace '#{get_plugin_name}' do
get 'index' => 'front#index'
end
end
end
#Admin Panel
scope :admin, as: 'admin', path: PluginRoutes.system_info['admin_path_name'] do
namespace 'plugins' do
namespace '#{get_plugin_name}' do
controller :admin do
get :index
get :settings
post :save_settings
end
end
end
end
# main routes
#scope '#{get_plugin_name}', module: 'plugins/#{get_plugin_name}/', as: '#{get_plugin_name}' do
# Here my routes for main routes
#end
end
end"
end
FileUtils.rm_r(plugin_app)
FileUtils.rm_r(File.join(plugin_dir, 'app', 'assets', 'images', get_plugin_name))
FileUtils.rm_r(File.join(plugin_dir, 'app', 'assets', 'javascripts', get_plugin_name))
FileUtils.rm_r(File.join(plugin_dir, 'app', 'assets', 'stylesheets', get_plugin_name))
gemspec_file = File.join(plugin_dir, "#{get_plugin_name}.gemspec")
t = File.read(gemspec_file).gsub('TODO', '')
t.sub!(/s\.add_dependency "rails".*\n/, "s.add_dependency \"camaleon_cms\", \"~> 2.0\"\n")
File.open(gemspec_file, 'w') { |f| f << t }
end
end
|