plutonium 0.11.2 → 0.12.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/views/application/_resource_header.html copy.erb +287 -0
- data/app/views/application/_resource_header.html.erb +0 -249
- data/app/views/components/table/table_component.rb +2 -2
- data/lib/generators/pu/core/install/install_generator.rb +7 -7
- data/lib/generators/pu/eject/layout/layout_generator.rb +44 -0
- data/lib/generators/pu/eject/shell/shell_generator.rb +44 -0
- data/lib/generators/pu/lib/plutonium_generators/generator.rb +1 -1
- data/lib/generators/pu/lib/plutonium_generators/{model_generator.rb → model_generator_base.rb} +8 -8
- data/lib/generators/pu/pkg/app/app_generator.rb +4 -0
- data/lib/generators/pu/res/conn/conn_generator.rb +1 -1
- data/lib/generators/pu/res/model/model_generator.rb +1 -1
- data/lib/generators/pu/res/scaffold/scaffold_generator.rb +7 -1
- data/lib/generators/pu/rodauth/account_generator.rb +4 -0
- data/lib/generators/pu/rodauth/install_generator.rb +5 -0
- data/lib/generators/pu/rodauth/templates/app/models/account.rb.tt +1 -1
- data/lib/plutonium/resource/query_object.rb +5 -5
- data/lib/plutonium/version.rb +1 -1
- metadata +5 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b2d283bb447f847e5572c33aa15dafa3dd859314e49beeebcd6d4ed43eb0fe15
|
4
|
+
data.tar.gz: c93d18374cb47f049bd8218d43c46fe66df9a83d7e10595f30f58715fee28274
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 178c4d95219eade116c333efbe8bbde980176ce4e4d93d1641ccae7e9a19ad1e7d1aa4394513f3466c7f7f9491a48bc4009c8ce3032a04d7a9bda27dde56c07a
|
7
|
+
data.tar.gz: db5b8b26c501faa4c25e7508775673f5553f567a67c78a7930a3d68b8354d7a4734fff6b9996dd2ed53a31e4f955c73b921f91ec5c360ede2b4469372d6cbe94
|
@@ -0,0 +1,287 @@
|
|
1
|
+
<%# locals: (sidebar_toggle:) %>
|
2
|
+
|
3
|
+
<%= render_component :resource_header, sidebar_toggle: do |header| %>
|
4
|
+
<% header.with_action do %>
|
5
|
+
<%=
|
6
|
+
render_component :nav_grid_menu, label: "Apps" do |menu|
|
7
|
+
menu.with_item url: "#", name: "Sales", icon: "outline/sale-percent"
|
8
|
+
menu.with_item url: "#", name: "Users", icon: "outline/users"
|
9
|
+
end
|
10
|
+
%>
|
11
|
+
<% end %>
|
12
|
+
|
13
|
+
<% header.with_action do %>
|
14
|
+
<%= render_component :nav_user, email: current_user.email, logout_url: try(:logout_url) do |nav_user| %>
|
15
|
+
<% nav_user.with_section do |section| %>
|
16
|
+
<% section.with_link url: "#", label: "My profile" %>
|
17
|
+
<% section.with_link url: "#", label: "Account settings" %>
|
18
|
+
<% end %>
|
19
|
+
|
20
|
+
<% nav_user.with_section do |section| %>
|
21
|
+
<% section.with_link url: "#", label: "My likes" do |link| %>
|
22
|
+
<% link.with_leading do %>
|
23
|
+
<%= render_icon "outline/heart", classname: "mr-2 text-gray-400" %>
|
24
|
+
<% end %>
|
25
|
+
<% end %>
|
26
|
+
|
27
|
+
<% section.with_link url: "#", label: "Pro version" do |link| %>
|
28
|
+
<% link.with_leading do %>
|
29
|
+
<%= render_icon "outline/fire", classname: "mr-2 text-primary-600 dark:text-primary-500" %>
|
30
|
+
<% end %>
|
31
|
+
<% link.with_trailing do %>
|
32
|
+
<%= render_icon "outline/angle-right", size: :sm %>
|
33
|
+
<% end %>
|
34
|
+
<% end %>
|
35
|
+
<% end %>
|
36
|
+
<% end %>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<%#
|
40
|
+
|
41
|
+
<!-- Notifications -->
|
42
|
+
<div data-controller="resource-drop-down">
|
43
|
+
<button
|
44
|
+
type="button"
|
45
|
+
data-resource-drop-down-target="trigger"
|
46
|
+
class="p-2 mr-1 text-gray-500 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600">
|
47
|
+
<span class="sr-only">View notifications</span>
|
48
|
+
<!-- Bell icon -->
|
49
|
+
<svg
|
50
|
+
aria-hidden="true"
|
51
|
+
class="w-6 h-6"
|
52
|
+
fill="currentColor"
|
53
|
+
viewBox="0 0 20 20"
|
54
|
+
xmlns="http://www.w3.org/2000/svg">
|
55
|
+
<path
|
56
|
+
d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"></path>
|
57
|
+
</svg>
|
58
|
+
</button>
|
59
|
+
<!-- Dropdown menu -->
|
60
|
+
<div
|
61
|
+
data-resource-drop-down-target="menu"
|
62
|
+
class="hidden overflow-hidden z-50 my-4 max-w-sm text-base list-none bg-white divide-y divide-gray-100 shadow-lg dark:divide-gray-600 dark:bg-gray-700 rounded-xl">
|
63
|
+
<div
|
64
|
+
class="block py-2 px-4 text-base font-medium text-center text-gray-700 bg-gray-50 dark:bg-gray-600 dark:text-gray-300">
|
65
|
+
Notifications
|
66
|
+
</div>
|
67
|
+
<div>
|
68
|
+
<a
|
69
|
+
href="#"
|
70
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
71
|
+
<div class="shrink-0">
|
72
|
+
<img
|
73
|
+
class="w-11 h-11 rounded-full"
|
74
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/bonnie-green.png"
|
75
|
+
alt="Bonnie Green avatar"
|
76
|
+
/>
|
77
|
+
<div
|
78
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 rounded-full border border-white bg-primary-700 dark:border-gray-700">
|
79
|
+
<svg
|
80
|
+
aria-hidden="true"
|
81
|
+
class="w-3 h-3 text-white"
|
82
|
+
fill="currentColor"
|
83
|
+
viewBox="0 0 20 20"
|
84
|
+
xmlns="http://www.w3.org/2000/svg">
|
85
|
+
<path
|
86
|
+
d="M8.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l2-2a1 1 0 00-1.414-1.414L11 7.586V3a1 1 0 10-2 0v4.586l-.293-.293z"></path>
|
87
|
+
<path
|
88
|
+
d="M3 5a2 2 0 012-2h1a1 1 0 010 2H5v7h2l1 2h4l1-2h2V5h-1a1 1 0 110-2h1a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V5z"></path>
|
89
|
+
</svg>
|
90
|
+
</div>
|
91
|
+
</div>
|
92
|
+
<div class="pl-3 w-full">
|
93
|
+
<div
|
94
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
95
|
+
New message from
|
96
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
97
|
+
>Bonnie Green</span
|
98
|
+
>: "Hey, what's up? All set for the presentation?"
|
99
|
+
</div>
|
100
|
+
<div
|
101
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
102
|
+
a few moments ago
|
103
|
+
</div>
|
104
|
+
</div>
|
105
|
+
</a>
|
106
|
+
<a
|
107
|
+
href="#"
|
108
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
109
|
+
<div class="shrink-0">
|
110
|
+
<img
|
111
|
+
class="w-11 h-11 rounded-full"
|
112
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png"
|
113
|
+
alt="Jese Leos avatar"
|
114
|
+
/>
|
115
|
+
<div
|
116
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-gray-900 rounded-full border border-white dark:border-gray-700">
|
117
|
+
<svg
|
118
|
+
aria-hidden="true"
|
119
|
+
class="w-3 h-3 text-white"
|
120
|
+
fill="currentColor"
|
121
|
+
viewBox="0 0 20 20"
|
122
|
+
xmlns="http://www.w3.org/2000/svg">
|
123
|
+
<path
|
124
|
+
d="M8 9a3 3 0 100-6 3 3 0 000 6zM8 11a6 6 0 016 6H2a6 6 0 016-6zM16 7a1 1 0 10-2 0v1h-1a1 1 0 100 2h1v1a1 1 0 102 0v-1h1a1 1 0 100-2h-1V7z"></path>
|
125
|
+
</svg>
|
126
|
+
</div>
|
127
|
+
</div>
|
128
|
+
<div class="pl-3 w-full">
|
129
|
+
<div
|
130
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
131
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
132
|
+
>Jese leos</span>
|
133
|
+
and
|
134
|
+
<span class="font-medium text-gray-900 dark:text-white"
|
135
|
+
>5 others</span>
|
136
|
+
started following you.
|
137
|
+
</div>
|
138
|
+
<div
|
139
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
140
|
+
10 minutes ago
|
141
|
+
</div>
|
142
|
+
</div>
|
143
|
+
</a>
|
144
|
+
<a
|
145
|
+
href="#"
|
146
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
147
|
+
<div class="shrink-0">
|
148
|
+
<img
|
149
|
+
class="w-11 h-11 rounded-full"
|
150
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/joseph-mcfall.png"
|
151
|
+
alt="Joseph McFall avatar"
|
152
|
+
/>
|
153
|
+
<div
|
154
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-red-600 rounded-full border border-white dark:border-gray-700">
|
155
|
+
<svg
|
156
|
+
aria-hidden="true"
|
157
|
+
class="w-3 h-3 text-white"
|
158
|
+
fill="currentColor"
|
159
|
+
viewBox="0 0 20 20"
|
160
|
+
xmlns="http://www.w3.org/2000/svg">
|
161
|
+
<path
|
162
|
+
fill-rule="evenodd"
|
163
|
+
d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z"
|
164
|
+
clip-rule="evenodd"
|
165
|
+
></path>
|
166
|
+
</svg>
|
167
|
+
</div>
|
168
|
+
</div>
|
169
|
+
<div class="pl-3 w-full">
|
170
|
+
<div
|
171
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
172
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
173
|
+
>Joseph Mcfall</span>
|
174
|
+
and
|
175
|
+
<span class="font-medium text-gray-900 dark:text-white"
|
176
|
+
>141 others</span>
|
177
|
+
love your story. See it and view more stories.
|
178
|
+
</div>
|
179
|
+
<div
|
180
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
181
|
+
44 minutes ago
|
182
|
+
</div>
|
183
|
+
</div>
|
184
|
+
</a>
|
185
|
+
<a
|
186
|
+
href="#"
|
187
|
+
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
188
|
+
<div class="shrink-0">
|
189
|
+
<img
|
190
|
+
class="w-11 h-11 rounded-full"
|
191
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/roberta-casas.png"
|
192
|
+
alt="Roberta Casas image"
|
193
|
+
/>
|
194
|
+
<div
|
195
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-green-400 rounded-full border border-white dark:border-gray-700">
|
196
|
+
<svg
|
197
|
+
aria-hidden="true"
|
198
|
+
class="w-3 h-3 text-white"
|
199
|
+
fill="currentColor"
|
200
|
+
viewBox="0 0 20 20"
|
201
|
+
xmlns="http://www.w3.org/2000/svg">
|
202
|
+
<path
|
203
|
+
fill-rule="evenodd"
|
204
|
+
d="M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z"
|
205
|
+
clip-rule="evenodd"></path>
|
206
|
+
</svg>
|
207
|
+
</div>
|
208
|
+
</div>
|
209
|
+
<div class="pl-3 w-full">
|
210
|
+
<div
|
211
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
212
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
213
|
+
>Leslie Livingston</span>
|
214
|
+
mentioned you in a comment:
|
215
|
+
<span
|
216
|
+
class="font-medium text-primary-600 dark:text-primary-500"
|
217
|
+
>@bonnie.green</span>
|
218
|
+
what do you say?
|
219
|
+
</div>
|
220
|
+
<div
|
221
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
222
|
+
1 hour ago
|
223
|
+
</div>
|
224
|
+
</div>
|
225
|
+
</a>
|
226
|
+
<a
|
227
|
+
href="#"
|
228
|
+
class="flex py-3 px-4 hover:bg-gray-100 dark:hover:bg-gray-600">
|
229
|
+
<div class="shrink-0">
|
230
|
+
<img
|
231
|
+
class="w-11 h-11 rounded-full"
|
232
|
+
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/robert-brown.png"
|
233
|
+
alt="Robert image"
|
234
|
+
/>
|
235
|
+
<div
|
236
|
+
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-purple-500 rounded-full border border-white dark:border-gray-700">
|
237
|
+
<svg
|
238
|
+
aria-hidden="true"
|
239
|
+
class="w-3 h-3 text-white"
|
240
|
+
fill="currentColor"
|
241
|
+
viewBox="0 0 20 20"
|
242
|
+
xmlns="http://www.w3.org/2000/svg">
|
243
|
+
<path
|
244
|
+
d="M2 6a2 2 0 012-2h6a2 2 0 012 2v8a2 2 0 01-2 2H4a2 2 0 01-2-2V6zM14.553 7.106A1 1 0 0014 8v4a1 1 0 00.553.894l2 1A1 1 0 0018 13V7a1 1 0 00-1.447-.894l-2 1z"
|
245
|
+
></path>
|
246
|
+
</svg>
|
247
|
+
</div>
|
248
|
+
</div>
|
249
|
+
<div class="pl-3 w-full">
|
250
|
+
<div
|
251
|
+
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
252
|
+
<span class="font-semibold text-gray-900 dark:text-white"
|
253
|
+
>Robert Brown</span>
|
254
|
+
posted a new video: Glassmorphism - learn how to implement
|
255
|
+
the new design trend.
|
256
|
+
</div>
|
257
|
+
<div
|
258
|
+
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
259
|
+
3 hours ago
|
260
|
+
</div>
|
261
|
+
</div>
|
262
|
+
</a>
|
263
|
+
</div>
|
264
|
+
<a
|
265
|
+
href="#"
|
266
|
+
class="block py-2 text-md font-medium text-center text-gray-900 bg-gray-50 hover:bg-gray-100 dark:bg-gray-600 dark:text-white dark:hover:underline">
|
267
|
+
<div class="inline-flex items-center">
|
268
|
+
<svg
|
269
|
+
aria-hidden="true"
|
270
|
+
class="mr-2 w-4 h-4 text-gray-500 dark:text-gray-200"
|
271
|
+
fill="currentColor"
|
272
|
+
viewBox="0 0 20 20"
|
273
|
+
xmlns="http://www.w3.org/2000/svg">
|
274
|
+
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
|
275
|
+
<path
|
276
|
+
fill-rule="evenodd"
|
277
|
+
d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z"
|
278
|
+
clip-rule="evenodd"></path>
|
279
|
+
</svg>
|
280
|
+
View all
|
281
|
+
</div>
|
282
|
+
</a>
|
283
|
+
</div>
|
284
|
+
</div>
|
285
|
+
|
286
|
+
%>
|
287
|
+
<% end %>
|
@@ -35,253 +35,4 @@
|
|
35
35
|
<% end %>
|
36
36
|
<% end %>
|
37
37
|
<% end %>
|
38
|
-
|
39
|
-
<%#
|
40
|
-
|
41
|
-
<!-- Notifications -->
|
42
|
-
<div data-controller="resource-drop-down">
|
43
|
-
<button
|
44
|
-
type="button"
|
45
|
-
data-resource-drop-down-target="trigger"
|
46
|
-
class="p-2 mr-1 text-gray-500 rounded-lg hover:text-gray-900 hover:bg-gray-100 dark:text-gray-200 dark:hover:text-white dark:hover:bg-gray-700 focus:ring-4 focus:ring-gray-300 dark:focus:ring-gray-600">
|
47
|
-
<span class="sr-only">View notifications</span>
|
48
|
-
<!-- Bell icon -->
|
49
|
-
<svg
|
50
|
-
aria-hidden="true"
|
51
|
-
class="w-6 h-6"
|
52
|
-
fill="currentColor"
|
53
|
-
viewBox="0 0 20 20"
|
54
|
-
xmlns="http://www.w3.org/2000/svg">
|
55
|
-
<path
|
56
|
-
d="M10 2a6 6 0 00-6 6v3.586l-.707.707A1 1 0 004 14h12a1 1 0 00.707-1.707L16 11.586V8a6 6 0 00-6-6zM10 18a3 3 0 01-3-3h6a3 3 0 01-3 3z"></path>
|
57
|
-
</svg>
|
58
|
-
</button>
|
59
|
-
<!-- Dropdown menu -->
|
60
|
-
<div
|
61
|
-
data-resource-drop-down-target="menu"
|
62
|
-
class="hidden overflow-hidden z-50 my-4 max-w-sm text-base list-none bg-white divide-y divide-gray-100 shadow-lg dark:divide-gray-600 dark:bg-gray-700 rounded-xl">
|
63
|
-
<div
|
64
|
-
class="block py-2 px-4 text-base font-medium text-center text-gray-700 bg-gray-50 dark:bg-gray-600 dark:text-gray-300">
|
65
|
-
Notifications
|
66
|
-
</div>
|
67
|
-
<div>
|
68
|
-
<a
|
69
|
-
href="#"
|
70
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
71
|
-
<div class="shrink-0">
|
72
|
-
<img
|
73
|
-
class="w-11 h-11 rounded-full"
|
74
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/bonnie-green.png"
|
75
|
-
alt="Bonnie Green avatar"
|
76
|
-
/>
|
77
|
-
<div
|
78
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 rounded-full border border-white bg-primary-700 dark:border-gray-700">
|
79
|
-
<svg
|
80
|
-
aria-hidden="true"
|
81
|
-
class="w-3 h-3 text-white"
|
82
|
-
fill="currentColor"
|
83
|
-
viewBox="0 0 20 20"
|
84
|
-
xmlns="http://www.w3.org/2000/svg">
|
85
|
-
<path
|
86
|
-
d="M8.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l2-2a1 1 0 00-1.414-1.414L11 7.586V3a1 1 0 10-2 0v4.586l-.293-.293z"></path>
|
87
|
-
<path
|
88
|
-
d="M3 5a2 2 0 012-2h1a1 1 0 010 2H5v7h2l1 2h4l1-2h2V5h-1a1 1 0 110-2h1a2 2 0 012 2v10a2 2 0 01-2 2H5a2 2 0 01-2-2V5z"></path>
|
89
|
-
</svg>
|
90
|
-
</div>
|
91
|
-
</div>
|
92
|
-
<div class="pl-3 w-full">
|
93
|
-
<div
|
94
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
95
|
-
New message from
|
96
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
97
|
-
>Bonnie Green</span
|
98
|
-
>: "Hey, what's up? All set for the presentation?"
|
99
|
-
</div>
|
100
|
-
<div
|
101
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
102
|
-
a few moments ago
|
103
|
-
</div>
|
104
|
-
</div>
|
105
|
-
</a>
|
106
|
-
<a
|
107
|
-
href="#"
|
108
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
109
|
-
<div class="shrink-0">
|
110
|
-
<img
|
111
|
-
class="w-11 h-11 rounded-full"
|
112
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/jese-leos.png"
|
113
|
-
alt="Jese Leos avatar"
|
114
|
-
/>
|
115
|
-
<div
|
116
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-gray-900 rounded-full border border-white dark:border-gray-700">
|
117
|
-
<svg
|
118
|
-
aria-hidden="true"
|
119
|
-
class="w-3 h-3 text-white"
|
120
|
-
fill="currentColor"
|
121
|
-
viewBox="0 0 20 20"
|
122
|
-
xmlns="http://www.w3.org/2000/svg">
|
123
|
-
<path
|
124
|
-
d="M8 9a3 3 0 100-6 3 3 0 000 6zM8 11a6 6 0 016 6H2a6 6 0 016-6zM16 7a1 1 0 10-2 0v1h-1a1 1 0 100 2h1v1a1 1 0 102 0v-1h1a1 1 0 100-2h-1V7z"></path>
|
125
|
-
</svg>
|
126
|
-
</div>
|
127
|
-
</div>
|
128
|
-
<div class="pl-3 w-full">
|
129
|
-
<div
|
130
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
131
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
132
|
-
>Jese leos</span>
|
133
|
-
and
|
134
|
-
<span class="font-medium text-gray-900 dark:text-white"
|
135
|
-
>5 others</span>
|
136
|
-
started following you.
|
137
|
-
</div>
|
138
|
-
<div
|
139
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
140
|
-
10 minutes ago
|
141
|
-
</div>
|
142
|
-
</div>
|
143
|
-
</a>
|
144
|
-
<a
|
145
|
-
href="#"
|
146
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
147
|
-
<div class="shrink-0">
|
148
|
-
<img
|
149
|
-
class="w-11 h-11 rounded-full"
|
150
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/joseph-mcfall.png"
|
151
|
-
alt="Joseph McFall avatar"
|
152
|
-
/>
|
153
|
-
<div
|
154
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-red-600 rounded-full border border-white dark:border-gray-700">
|
155
|
-
<svg
|
156
|
-
aria-hidden="true"
|
157
|
-
class="w-3 h-3 text-white"
|
158
|
-
fill="currentColor"
|
159
|
-
viewBox="0 0 20 20"
|
160
|
-
xmlns="http://www.w3.org/2000/svg">
|
161
|
-
<path
|
162
|
-
fill-rule="evenodd"
|
163
|
-
d="M3.172 5.172a4 4 0 015.656 0L10 6.343l1.172-1.171a4 4 0 115.656 5.656L10 17.657l-6.828-6.829a4 4 0 010-5.656z"
|
164
|
-
clip-rule="evenodd"
|
165
|
-
></path>
|
166
|
-
</svg>
|
167
|
-
</div>
|
168
|
-
</div>
|
169
|
-
<div class="pl-3 w-full">
|
170
|
-
<div
|
171
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
172
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
173
|
-
>Joseph Mcfall</span>
|
174
|
-
and
|
175
|
-
<span class="font-medium text-gray-900 dark:text-white"
|
176
|
-
>141 others</span>
|
177
|
-
love your story. See it and view more stories.
|
178
|
-
</div>
|
179
|
-
<div
|
180
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
181
|
-
44 minutes ago
|
182
|
-
</div>
|
183
|
-
</div>
|
184
|
-
</a>
|
185
|
-
<a
|
186
|
-
href="#"
|
187
|
-
class="flex py-3 px-4 border-b hover:bg-gray-100 dark:hover:bg-gray-600 dark:border-gray-600">
|
188
|
-
<div class="shrink-0">
|
189
|
-
<img
|
190
|
-
class="w-11 h-11 rounded-full"
|
191
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/roberta-casas.png"
|
192
|
-
alt="Roberta Casas image"
|
193
|
-
/>
|
194
|
-
<div
|
195
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-green-400 rounded-full border border-white dark:border-gray-700">
|
196
|
-
<svg
|
197
|
-
aria-hidden="true"
|
198
|
-
class="w-3 h-3 text-white"
|
199
|
-
fill="currentColor"
|
200
|
-
viewBox="0 0 20 20"
|
201
|
-
xmlns="http://www.w3.org/2000/svg">
|
202
|
-
<path
|
203
|
-
fill-rule="evenodd"
|
204
|
-
d="M18 13V5a2 2 0 00-2-2H4a2 2 0 00-2 2v8a2 2 0 002 2h3l3 3 3-3h3a2 2 0 002-2zM5 7a1 1 0 011-1h8a1 1 0 110 2H6a1 1 0 01-1-1zm1 3a1 1 0 100 2h3a1 1 0 100-2H6z"
|
205
|
-
clip-rule="evenodd"></path>
|
206
|
-
</svg>
|
207
|
-
</div>
|
208
|
-
</div>
|
209
|
-
<div class="pl-3 w-full">
|
210
|
-
<div
|
211
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
212
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
213
|
-
>Leslie Livingston</span>
|
214
|
-
mentioned you in a comment:
|
215
|
-
<span
|
216
|
-
class="font-medium text-primary-600 dark:text-primary-500"
|
217
|
-
>@bonnie.green</span>
|
218
|
-
what do you say?
|
219
|
-
</div>
|
220
|
-
<div
|
221
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
222
|
-
1 hour ago
|
223
|
-
</div>
|
224
|
-
</div>
|
225
|
-
</a>
|
226
|
-
<a
|
227
|
-
href="#"
|
228
|
-
class="flex py-3 px-4 hover:bg-gray-100 dark:hover:bg-gray-600">
|
229
|
-
<div class="shrink-0">
|
230
|
-
<img
|
231
|
-
class="w-11 h-11 rounded-full"
|
232
|
-
src="https://flowbite.s3.amazonaws.com/blocks/marketing-ui/avatars/robert-brown.png"
|
233
|
-
alt="Robert image"
|
234
|
-
/>
|
235
|
-
<div
|
236
|
-
class="flex absolute justify-center items-center ml-6 -mt-5 w-5 h-5 bg-purple-500 rounded-full border border-white dark:border-gray-700">
|
237
|
-
<svg
|
238
|
-
aria-hidden="true"
|
239
|
-
class="w-3 h-3 text-white"
|
240
|
-
fill="currentColor"
|
241
|
-
viewBox="0 0 20 20"
|
242
|
-
xmlns="http://www.w3.org/2000/svg">
|
243
|
-
<path
|
244
|
-
d="M2 6a2 2 0 012-2h6a2 2 0 012 2v8a2 2 0 01-2 2H4a2 2 0 01-2-2V6zM14.553 7.106A1 1 0 0014 8v4a1 1 0 00.553.894l2 1A1 1 0 0018 13V7a1 1 0 00-1.447-.894l-2 1z"
|
245
|
-
></path>
|
246
|
-
</svg>
|
247
|
-
</div>
|
248
|
-
</div>
|
249
|
-
<div class="pl-3 w-full">
|
250
|
-
<div
|
251
|
-
class="text-gray-500 font-normal text-sm mb-1.5 dark:text-gray-200">
|
252
|
-
<span class="font-semibold text-gray-900 dark:text-white"
|
253
|
-
>Robert Brown</span>
|
254
|
-
posted a new video: Glassmorphism - learn how to implement
|
255
|
-
the new design trend.
|
256
|
-
</div>
|
257
|
-
<div
|
258
|
-
class="text-xs font-medium text-primary-600 dark:text-primary-500">
|
259
|
-
3 hours ago
|
260
|
-
</div>
|
261
|
-
</div>
|
262
|
-
</a>
|
263
|
-
</div>
|
264
|
-
<a
|
265
|
-
href="#"
|
266
|
-
class="block py-2 text-md font-medium text-center text-gray-900 bg-gray-50 hover:bg-gray-100 dark:bg-gray-600 dark:text-white dark:hover:underline">
|
267
|
-
<div class="inline-flex items-center">
|
268
|
-
<svg
|
269
|
-
aria-hidden="true"
|
270
|
-
class="mr-2 w-4 h-4 text-gray-500 dark:text-gray-200"
|
271
|
-
fill="currentColor"
|
272
|
-
viewBox="0 0 20 20"
|
273
|
-
xmlns="http://www.w3.org/2000/svg">
|
274
|
-
<path d="M10 12a2 2 0 100-4 2 2 0 000 4z"></path>
|
275
|
-
<path
|
276
|
-
fill-rule="evenodd"
|
277
|
-
d="M.458 10C1.732 5.943 5.522 3 10 3s8.268 2.943 9.542 7c-1.274 4.057-5.064 7-9.542 7S1.732 14.057.458 10zM14 10a4 4 0 11-8 0 4 4 0 018 0z"
|
278
|
-
clip-rule="evenodd"></path>
|
279
|
-
</svg>
|
280
|
-
View all
|
281
|
-
</div>
|
282
|
-
</a>
|
283
|
-
</div>
|
284
|
-
</div>
|
285
|
-
|
286
|
-
%>
|
287
38
|
<% end %>
|
@@ -19,9 +19,9 @@ module PlutoniumUi
|
|
19
19
|
# @param label [String] The label of the column.
|
20
20
|
# @param search_object [Object] The search object associated with the column.
|
21
21
|
# @param block [Proc] An optional block for additional column customization.
|
22
|
-
def column(name:, label:, search_object:, &
|
22
|
+
def column(name:, label:, search_object:, &)
|
23
23
|
@columns ||= []
|
24
|
-
@columns << Column.new(name:, label:, search_object:, &
|
24
|
+
@columns << Column.new(name:, label:, search_object:, &)
|
25
25
|
end
|
26
26
|
|
27
27
|
# Returns the base attributes for the table.
|
@@ -12,16 +12,16 @@ module Pu
|
|
12
12
|
desc "Set up the base requirements for Plutonium"
|
13
13
|
|
14
14
|
def start
|
15
|
-
|
16
|
-
install_required_gems
|
15
|
+
setup_packages
|
17
16
|
setup_app
|
17
|
+
eject_views
|
18
18
|
rescue => e
|
19
19
|
exception "#{self.class} failed:", e
|
20
20
|
end
|
21
21
|
|
22
22
|
private
|
23
23
|
|
24
|
-
def
|
24
|
+
def setup_packages
|
25
25
|
copy_file "config/packages.rb"
|
26
26
|
create_file "packages/.keep"
|
27
27
|
insert_into_file "config/application.rb", "\nrequire_relative \"packages\"\n", after: /Bundler\.require.*\n/
|
@@ -36,10 +36,10 @@ module Pu
|
|
36
36
|
environment "# config.plutonium.assets.logo = \"logo.png\""
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
|
39
|
+
def eject_views
|
40
|
+
invoke "pu:eject:layout", [], dest: "main_app",
|
41
|
+
force: options[:force],
|
42
|
+
skip: options[:skip]
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../lib/plutonium_generators"
|
4
|
+
|
5
|
+
module Pu
|
6
|
+
module Eject
|
7
|
+
class LayoutGenerator < Rails::Generators::Base
|
8
|
+
include PlutoniumGenerators::Generator
|
9
|
+
|
10
|
+
source_root File.expand_path("templates", __dir__)
|
11
|
+
|
12
|
+
desc "Eject layout views into your own project"
|
13
|
+
|
14
|
+
class_option :dest, type: :string
|
15
|
+
class_option :rodauth, type: :boolean
|
16
|
+
|
17
|
+
def start
|
18
|
+
destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
|
19
|
+
[
|
20
|
+
"layouts/resource.html.erb"
|
21
|
+
].each do |file|
|
22
|
+
copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
|
23
|
+
end
|
24
|
+
rescue => e
|
25
|
+
exception "#{self.class} failed:", e
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def destination_app
|
31
|
+
@destination_app || select_app(options[:dest], msg: "Select destination app")
|
32
|
+
end
|
33
|
+
|
34
|
+
def copy_file(source_path, destination_path)
|
35
|
+
if File.exist?(source_path)
|
36
|
+
FileUtils.cp(source_path, destination_path)
|
37
|
+
say_status("info", "Copied #{source_path} to #{destination_path}", :green)
|
38
|
+
else
|
39
|
+
say_status("error", "Source file #{source_path} does not exist", :red)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative "../../lib/plutonium_generators"
|
4
|
+
|
5
|
+
module Pu
|
6
|
+
module Eject
|
7
|
+
class ShellGenerator < Rails::Generators::Base
|
8
|
+
include PlutoniumGenerators::Generator
|
9
|
+
|
10
|
+
source_root File.expand_path("templates", __dir__)
|
11
|
+
|
12
|
+
desc "Eject layout shell (i.e header, sidebar) into your own project"
|
13
|
+
|
14
|
+
class_option :dest, type: :string
|
15
|
+
|
16
|
+
def start
|
17
|
+
destination_dir = (destination_app == "main_app") ? "app/views/" : "packages/#{destination_app}/app/views/#{destination_app}"
|
18
|
+
[
|
19
|
+
"application/_resource_header.html.erb",
|
20
|
+
"application/_resource_sidebar.html.erb"
|
21
|
+
].each do |file|
|
22
|
+
copy_file Plutonium.root.join("app", "views", file), Rails.root.join(destination_dir)
|
23
|
+
end
|
24
|
+
rescue => e
|
25
|
+
exception "#{self.class} failed:", e
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
def destination_app
|
31
|
+
@destination_app || select_app(options[:dest], msg: "Select destination app")
|
32
|
+
end
|
33
|
+
|
34
|
+
def copy_file(source_path, destination_path)
|
35
|
+
if File.exist?(source_path)
|
36
|
+
FileUtils.cp(source_path, destination_path)
|
37
|
+
say_status("info", "Copied #{source_path} to #{destination_path}", :green)
|
38
|
+
else
|
39
|
+
say_status("error", "Source file #{source_path} does not exist", :red)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -34,7 +34,7 @@ module PlutoniumGenerators
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def available_apps
|
37
|
-
@available_apps ||= available_packages.select { |pkg| pkg.ends_with? "_app" }
|
37
|
+
@available_apps ||= ["main_app"] + available_packages.select { |pkg| pkg.ends_with? "_app" }
|
38
38
|
end
|
39
39
|
|
40
40
|
def available_features
|
data/lib/generators/pu/lib/plutonium_generators/{model_generator.rb → model_generator_base.rb}
RENAMED
@@ -4,7 +4,7 @@ require "rails/generators"
|
|
4
4
|
require "rails/generators/active_record/model/model_generator"
|
5
5
|
|
6
6
|
module PlutoniumGenerators
|
7
|
-
class
|
7
|
+
class ModelGeneratorBase < ActiveRecord::Generators::ModelGenerator
|
8
8
|
include PlutoniumGenerators::Generator
|
9
9
|
|
10
10
|
remove_hook_for :test_framework
|
@@ -41,27 +41,27 @@ module PlutoniumGenerators
|
|
41
41
|
def name
|
42
42
|
@pu_name ||= begin
|
43
43
|
@original_name = @name
|
44
|
-
@
|
45
|
-
@name = [main_app? ? nil :
|
44
|
+
@selected_destination_feature = select_feature selected_destination_feature, msg: "Select destination feature"
|
45
|
+
@name = [main_app? ? nil : selected_destination_feature.underscore, super.singularize.underscore].compact.join "/"
|
46
46
|
set_destination_root!
|
47
47
|
@name
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
def feature_package_name
|
52
|
-
main_app? ? nil :
|
52
|
+
main_app? ? nil : selected_destination_feature.camelize
|
53
53
|
end
|
54
54
|
|
55
55
|
def main_app?
|
56
|
-
|
56
|
+
selected_destination_feature == "main_app"
|
57
57
|
end
|
58
58
|
|
59
|
-
def
|
60
|
-
@
|
59
|
+
def selected_destination_feature
|
60
|
+
@selected_destination_feature || options[:dest]
|
61
61
|
end
|
62
62
|
|
63
63
|
def set_destination_root!
|
64
|
-
@destination_stack = [File.join(Rails.root, main_app? ? "" : "packages/#{
|
64
|
+
@destination_stack = [File.join(Rails.root, main_app? ? "" : "packages/#{selected_destination_feature.underscore}")]
|
65
65
|
end
|
66
66
|
|
67
67
|
# https://github.com/rails/rails/blob/main/railties/lib/rails/generators/generated_attribute.rb#L7
|
@@ -42,6 +42,10 @@ module Pu
|
|
42
42
|
directory "app/#{dir}", "packages/#{package_namespace}/app/#{dir}/#{package_namespace}"
|
43
43
|
end
|
44
44
|
create_file "packages/#{package_namespace}/app/views/#{package_namespace}/.keep"
|
45
|
+
|
46
|
+
invoke "pu:eject:shell", [], dest: package_namespace,
|
47
|
+
force: options[:force],
|
48
|
+
skip: options[:skip]
|
45
49
|
rescue => e
|
46
50
|
exception "#{self.class} failed:", e
|
47
51
|
end
|
@@ -14,7 +14,7 @@ module Pu
|
|
14
14
|
# argument :name
|
15
15
|
|
16
16
|
def start
|
17
|
-
source_feature = select_feature
|
17
|
+
source_feature = select_feature msg: "Select source feature"
|
18
18
|
source_module = (source_feature == "main_app") ? "ResourceRecord" : "#{source_feature.classify}::ResourceRecord"
|
19
19
|
|
20
20
|
Plutonium.eager_load_rails!
|
@@ -4,7 +4,7 @@ require_relative "../../lib/plutonium_generators"
|
|
4
4
|
|
5
5
|
module Pu
|
6
6
|
module Res
|
7
|
-
class ModelGenerator < PlutoniumGenerators::
|
7
|
+
class ModelGenerator < PlutoniumGenerators::ModelGeneratorBase
|
8
8
|
source_root File.expand_path("templates", __dir__)
|
9
9
|
|
10
10
|
def run_create_module
|
@@ -4,14 +4,18 @@ require_relative "../../lib/plutonium_generators"
|
|
4
4
|
|
5
5
|
module Pu
|
6
6
|
module Res
|
7
|
-
class ScaffoldGenerator < PlutoniumGenerators::
|
7
|
+
class ScaffoldGenerator < PlutoniumGenerators::ModelGeneratorBase
|
8
8
|
include PlutoniumGenerators::Generator
|
9
9
|
|
10
10
|
source_root File.expand_path("templates", __dir__)
|
11
11
|
|
12
12
|
desc "Scaffold a resource"
|
13
13
|
|
14
|
+
class_option :model, type: :boolean, default: true
|
15
|
+
|
14
16
|
def setup
|
17
|
+
return unless options[:model]
|
18
|
+
|
15
19
|
model_class = class_name.safe_constantize
|
16
20
|
if model_class.present? && attributes.empty? && prompt.yes?("Existing model class found. Do you want to import its attributes?")
|
17
21
|
attributes_str = model_class.content_columns.map { |col| "#{col.name}:#{col.type}" }
|
@@ -20,6 +24,8 @@ module Pu
|
|
20
24
|
end
|
21
25
|
|
22
26
|
def create_model
|
27
|
+
return unless options[:model]
|
28
|
+
|
23
29
|
invoke "pu:res:model", [@original_name, *@original_attributes], dest: selected_feature, **options
|
24
30
|
end
|
25
31
|
|
@@ -89,6 +89,10 @@ module Pu
|
|
89
89
|
return unless base?
|
90
90
|
|
91
91
|
template "app/models/account.rb", "app/models/#{account_path}.rb"
|
92
|
+
invoke "pu:res:scaffold", [table, "email:string", "status:integer"], dest: "main_app",
|
93
|
+
model: false,
|
94
|
+
force: true,
|
95
|
+
skip: options[:skip]
|
92
96
|
end
|
93
97
|
|
94
98
|
def create_mailer
|
@@ -48,6 +48,11 @@ module Pu
|
|
48
48
|
migration_template "db/migrate/install_rodauth.rb", "db/migrate/install_rodauth.rb" # , File.join(db_migrate_path, "#{migration_name}.rb")
|
49
49
|
end
|
50
50
|
|
51
|
+
def eject_layout
|
52
|
+
file = "app/views/layouts/rodauth.html.erb"
|
53
|
+
FileUtils.cp Plutonium.root.join(file), Rails.root.join(file)
|
54
|
+
end
|
55
|
+
|
51
56
|
def show_instructions
|
52
57
|
readme "INSTRUCTIONS" if behavior == :invoke
|
53
58
|
end
|
@@ -190,9 +190,9 @@ module Plutonium
|
|
190
190
|
#
|
191
191
|
# @param name [Symbol] The name of the filter.
|
192
192
|
# @param body [Proc, nil] The body of the filter.
|
193
|
-
def define_filter(name, body = nil, &
|
193
|
+
def define_filter(name, body = nil, &)
|
194
194
|
body ||= name
|
195
|
-
filter_definitions[name] = build_query(body, &
|
195
|
+
filter_definitions[name] = build_query(body, &)
|
196
196
|
end
|
197
197
|
|
198
198
|
# Defines a scope with the given name and body.
|
@@ -251,14 +251,14 @@ module Plutonium
|
|
251
251
|
# @param body [Proc, Symbol] The body of the query.
|
252
252
|
# @yieldparam query [Query] The query object.
|
253
253
|
# @return [Query] The constructed query object.
|
254
|
-
def build_query(body, &
|
254
|
+
def build_query(body, &)
|
255
255
|
case body
|
256
256
|
when Symbol
|
257
257
|
raise "Cannot find scope :#{body} on #{resource_class}" unless resource_class.respond_to?(body)
|
258
258
|
|
259
|
-
ScopeQuery.new(body, &
|
259
|
+
ScopeQuery.new(body, &)
|
260
260
|
else
|
261
|
-
BlockQuery.new(body, &
|
261
|
+
BlockQuery.new(body, &)
|
262
262
|
end
|
263
263
|
end
|
264
264
|
|
data/lib/plutonium/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: plutonium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stefan Froelich
|
@@ -720,6 +720,7 @@ files:
|
|
720
720
|
- app/views/application/_flash.html.erb
|
721
721
|
- app/views/application/_flash_alerts.html.erb
|
722
722
|
- app/views/application/_flash_toasts.html.erb
|
723
|
+
- app/views/application/_resource_header.html copy.erb
|
723
724
|
- app/views/application/_resource_header.html.erb
|
724
725
|
- app/views/application/_resource_sidebar.html.erb
|
725
726
|
- app/views/components/action_button/action_button_component.html.erb
|
@@ -874,6 +875,8 @@ files:
|
|
874
875
|
- lib/generators/pu/docker/install/templates/bin/restart
|
875
876
|
- lib/generators/pu/docker/install/templates/bin/shell
|
876
877
|
- lib/generators/pu/docker/install/templates/docker-compose.yml
|
878
|
+
- lib/generators/pu/eject/layout/layout_generator.rb
|
879
|
+
- lib/generators/pu/eject/shell/shell_generator.rb
|
877
880
|
- lib/generators/pu/gem/dotenv/dotenv_generator.rb
|
878
881
|
- lib/generators/pu/gem/dotenv/templates/.env
|
879
882
|
- lib/generators/pu/gem/dotenv/templates/.env.local
|
@@ -897,7 +900,7 @@ files:
|
|
897
900
|
- lib/generators/pu/lib/plutonium_generators/concerns/serializer.rb
|
898
901
|
- lib/generators/pu/lib/plutonium_generators/generator.rb
|
899
902
|
- lib/generators/pu/lib/plutonium_generators/installer.rb
|
900
|
-
- lib/generators/pu/lib/plutonium_generators/
|
903
|
+
- lib/generators/pu/lib/plutonium_generators/model_generator_base.rb
|
901
904
|
- lib/generators/pu/pkg/app/app_generator.rb
|
902
905
|
- lib/generators/pu/pkg/app/templates/app/controllers/concerns/controller.rb.tt
|
903
906
|
- lib/generators/pu/pkg/app/templates/app/controllers/controller.rb.tt
|