rails_app_generator 0.0.8 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 41476a3a9b133970991c3fbf3562c102ba8249f5b682233f20d84884fb8af678
4
- data.tar.gz: 3a9cf1a5878bbee17e0cfff3c6facac2c8af128bd940ce5bdc6bd5894b6c8cf3
3
+ metadata.gz: 41a84055790db563fd9b1ea21dc26deb01da792e5a9e120c5170a3aefaf8364b
4
+ data.tar.gz: b2b0244b7b5cc66a0cfdc7b9719ba4846869a49cf57fac40cf94f4c3369cd844
5
5
  SHA512:
6
- metadata.gz: 5c88ba2a2ea096fd88795844acd1437af6cc87398f63002ad34dfe99576284ef8ede1e6f34c57b1fe7be9b4fccf174d25211a9084ee8691004c7ed243bc6c061
7
- data.tar.gz: 0a16711784c631424eea1d80174697b1e04df33d8803b0963e23b76f70c625ceaa05815b665c81ea78c6958872676632187d487e160e1781e90b914d93a1ef00
6
+ metadata.gz: 92ee6c983495db38ba71ea1ef5c74d4185dff934d216fcd345bacec453349cfd45f355b188945ab348528c3a9181a4ceb5243896bd2655005e8bce708e96060d
7
+ data.tar.gz: 83d283c3c0dbf92f0eb20f807a11e9ae6dda055a86e20be5a9466ce159262897cfe7bc98a273fad2139fe692de09e18d1ce313b077af58df6f61d5e61d622ee9
data/.builders/boot.rb CHANGED
@@ -23,6 +23,7 @@ KConfig.configure(CONFIG_KEY) do |config|
23
23
  config.template_folders.add(:template , File.expand_path('.templates', Dir.pwd))
24
24
 
25
25
  config.target_folders.add(:app , base_folder)
26
+ config.target_folders.add(:docs , :app, 'docs')
26
27
  config.target_folders.add(:builder , builder_folder)
27
28
  end
28
29
 
@@ -0,0 +1,45 @@
1
+ KManager.action :project_plan do
2
+ action do
3
+
4
+ DrawioDsl::Drawio
5
+ .init(k_builder, on_exist: :write, on_action: :execute)
6
+ .diagram(rounded: 1, glass: 1)
7
+ .page('In progress', theme: :style_03, margin_left: 0, margin_top: 0) do
8
+ h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
9
+ # p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan - In progress')
10
+
11
+ grid_layout(y: 90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
12
+
13
+ todo(title: 'add diff tool open in vscode option')
14
+ end
15
+ .page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
16
+
17
+ # h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
18
+ # p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan')
19
+
20
+ todo(title: 'cli support for diff')
21
+ todo(title: 'cli support for profile')
22
+ todo(title: 'cli support for rails new (rag new should work like rails new) - buggy, need to work through')
23
+ todo(title: 'need an option for deleting target project path') # FileUtils.rm_rf(instance.target_path)
24
+
25
+ grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
26
+
27
+ end
28
+ .page('Done', theme: :style_06, margin_left: 0, margin_top: 0) do
29
+
30
+ # h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
31
+ # p(x: 350, y: 40, w: 400, h: 80, title: 'Done')
32
+
33
+ todo(title: 'add diff tool supporting lhs only, rhs only, same and different')
34
+ todo(title: 'add project plan to do list')
35
+
36
+ grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
37
+
38
+ end
39
+ .cd(:docs)
40
+ .save('project-plan/project.drawio')
41
+ .export_svg('project-plan/project_in_progress', page: 1)
42
+ .export_svg('project-plan/project_todo' , page: 2)
43
+ .export_svg('project-plan/project_done' , page: 3)
44
+ end
45
+ end
data/CHANGELOG.md CHANGED
@@ -1,3 +1,27 @@
1
+ ## [0.0.10](https://github.com/klueless-io/rails_app_generator/compare/v0.0.9...v0.0.10) (2022-07-25)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add diff processor ([edd86a3](https://github.com/klueless-io/rails_app_generator/commit/edd86a3657ec83c566f84cd965820d780a2a1c43))
7
+ * fix gha specs ([6ae95de](https://github.com/klueless-io/rails_app_generator/commit/6ae95de2e53e77590375c3a9863a78744b38fa30))
8
+ * fix gha specs ([c7504f9](https://github.com/klueless-io/rails_app_generator/commit/c7504f97ddf25011a887b7b6ec4b0235e6dbd16d))
9
+
10
+ ## [0.0.9](https://github.com/klueless-io/rails_app_generator/compare/v0.0.8...v0.0.9) (2022-07-24)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * add project plan ([1c47e0f](https://github.com/klueless-io/rails_app_generator/commit/1c47e0fa82b7b184d63fab8c2363416587d4c66d))
16
+
17
+ ## [0.0.8](https://github.com/klueless-io/rails_app_generator/compare/v0.0.7...v0.0.8) (2022-07-24)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * add support for bootstrap profile ([f70d17d](https://github.com/klueless-io/rails_app_generator/commit/f70d17d28cae3f7758c62360bd3d97ca27bf06b5))
23
+ * add support for bootstrap profile ([a114339](https://github.com/klueless-io/rails_app_generator/commit/a1143391166c10fc802800e2e1236f69aeda9091))
24
+
1
25
  ## [0.0.7](https://github.com/klueless-io/rails_app_generator/compare/v0.0.6...v0.0.7) (2022-07-22)
2
26
 
3
27
 
@@ -0,0 +1,17 @@
1
+ <!-- This example requires Tailwind CSS v2.0+ -->
2
+ <div class="bg-gray-50">
3
+ <div class="max-w-7xl mx-auto py-12 px-4 sm:px-6 lg:py-16 lg:px-8 lg:flex lg:items-center lg:justify-between">
4
+ <h2 class="text-3xl font-extrabold tracking-tight text-gray-900 sm:text-4xl">
5
+ <span class="block">Ready to dive in?</span>
6
+ <span class="block text-indigo-600">Start your free trial today.</span>
7
+ </h2>
8
+ <div class="mt-8 flex lg:mt-0 lg:flex-shrink-0">
9
+ <div class="inline-flex rounded-md shadow">
10
+ <a href="#" class="inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-white bg-indigo-600 hover:bg-indigo-700"> Get started </a>
11
+ </div>
12
+ <div class="ml-3 inline-flex rounded-md shadow">
13
+ <a href="#" class="inline-flex items-center justify-center px-5 py-3 border border-transparent text-base font-medium rounded-md text-indigo-600 bg-white hover:bg-indigo-50"> Learn more </a>
14
+ </div>
15
+ </div>
16
+ </div>
17
+ </div>
@@ -0,0 +1,151 @@
1
+ <section class="bg-white dark:bg-gray-900">
2
+ <div class="container px-6 py-12 mx-auto">
3
+ <h1 class="text-2xl font-semibold text-gray-800 lg:text-4xl dark:text-white">Frequently asked questions.</h1>
4
+
5
+ <div class="grid grid-cols-1 gap-8 mt-8 lg:mt-16 md:grid-cols-2 xl:grid-cols-3">
6
+ <div>
7
+ <div class="inline-block p-3 text-white bg-blue-600 rounded-lg">
8
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
9
+ <path
10
+ stroke-linecap="round"
11
+ stroke-linejoin="round"
12
+ stroke-width="2"
13
+ d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
14
+ />
15
+ </svg>
16
+ </div>
17
+
18
+ <div>
19
+ <h1 class="text-xl font-semibold text-gray-700 dark:text-white">
20
+ What can i expect at my first consultation?
21
+ </h1>
22
+
23
+ <p class="mt-2 text-sm text-gray-500 dark:text-gray-300">
24
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident placeat, consequatur eveniet veritatis
25
+ quos dignissimos beatae dolores exercitationem laboriosam officia magnam atque blanditiis illum doloremque
26
+ magni ex corrupti tempora quis.
27
+ </p>
28
+ </div>
29
+ </div>
30
+
31
+ <div>
32
+ <div class="inline-block p-3 text-white bg-blue-600 rounded-lg">
33
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
34
+ <path
35
+ stroke-linecap="round"
36
+ stroke-linejoin="round"
37
+ stroke-width="2"
38
+ d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
39
+ />
40
+ </svg>
41
+ </div>
42
+
43
+ <div>
44
+ <h1 class="text-xl font-semibold text-gray-700 dark:text-white">What are your opening house?</h1>
45
+
46
+ <p class="mt-2 text-sm text-gray-500 dark:text-gray-300">
47
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident placeat, consequatur eveniet veritatis
48
+ quos dignissimos beatae dolores exercitationem laboriosam officia magnam atque blanditiis illum doloremque
49
+ magni ex corrupti tempora quis.
50
+ </p>
51
+ </div>
52
+ </div>
53
+
54
+ <div>
55
+ <div class="inline-block p-3 text-white bg-blue-600 rounded-lg">
56
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
57
+ <path
58
+ stroke-linecap="round"
59
+ stroke-linejoin="round"
60
+ stroke-width="2"
61
+ d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
62
+ />
63
+ </svg>
64
+ </div>
65
+
66
+ <div>
67
+ <h1 class="text-xl font-semibold text-gray-700 dark:text-white">Do i need a referral?</h1>
68
+
69
+ <p class="mt-2 text-sm text-gray-500 dark:text-gray-300">
70
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident placeat, consequatur eveniet veritatis
71
+ quos dignissimos beatae dolores exercitationem laboriosam officia magnam atque blanditiis illum doloremque
72
+ magni ex corrupti tempora quis.
73
+ </p>
74
+ </div>
75
+ </div>
76
+
77
+ <div>
78
+ <div class="inline-block p-3 text-white bg-blue-600 rounded-lg">
79
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
80
+ <path
81
+ stroke-linecap="round"
82
+ stroke-linejoin="round"
83
+ stroke-width="2"
84
+ d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
85
+ />
86
+ </svg>
87
+ </div>
88
+
89
+ <div>
90
+ <h1 class="text-xl font-semibold text-gray-700 dark:text-white">
91
+ Is the cost of the appoinment covered by private health insurance?
92
+ </h1>
93
+
94
+ <p class="mt-2 text-sm text-gray-500 dark:text-gray-300">
95
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident placeat, consequatur eveniet veritatis
96
+ quos dignissimos beatae dolores exercitationem laboriosam officia magnam atque blanditiis illum doloremque
97
+ magni ex corrupti tempora quis.
98
+ </p>
99
+ </div>
100
+ </div>
101
+
102
+ <div>
103
+ <div class="inline-block p-3 text-white bg-blue-600 rounded-lg">
104
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
105
+ <path
106
+ stroke-linecap="round"
107
+ stroke-linejoin="round"
108
+ stroke-width="2"
109
+ d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
110
+ />
111
+ </svg>
112
+ </div>
113
+
114
+ <div>
115
+ <h1 class="text-xl font-semibold text-gray-700 dark:text-white">What is your cancellation policy?</h1>
116
+
117
+ <p class="mt-2 text-sm text-gray-500 dark:text-gray-300">
118
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident placeat, consequatur eveniet veritatis
119
+ quos dignissimos beatae dolores exercitationem laboriosam officia magnam atque blanditiis illum doloremque
120
+ magni ex corrupti tempora quis.
121
+ </p>
122
+ </div>
123
+ </div>
124
+
125
+ <div>
126
+ <div class="inline-block p-3 text-white bg-blue-600 rounded-lg">
127
+ <svg xmlns="http://www.w3.org/2000/svg" class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
128
+ <path
129
+ stroke-linecap="round"
130
+ stroke-linejoin="round"
131
+ stroke-width="2"
132
+ d="M8.228 9c.549-1.165 2.03-2 3.772-2 2.21 0 4 1.343 4 3 0 1.4-1.278 2.575-3.006 2.907-.542.104-.994.54-.994 1.093m0 3h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
133
+ />
134
+ </svg>
135
+ </div>
136
+
137
+ <div>
138
+ <h1 class="text-xl font-semibold text-gray-700 dark:text-white">
139
+ What are the parking and public transport options?
140
+ </h1>
141
+
142
+ <p class="mt-2 text-sm text-gray-500 dark:text-gray-300">
143
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Provident placeat, consequatur eveniet veritatis
144
+ quos dignissimos beatae dolores exercitationem laboriosam officia magnam atque blanditiis illum doloremque
145
+ magni ex corrupti tempora quis.
146
+ </p>
147
+ </div>
148
+ </div>
149
+ </div>
150
+ </div>
151
+ </section>
@@ -0,0 +1,73 @@
1
+
2
+ <footer class="p-4 bg-white sm:p-6 dark:bg-gray-900">
3
+ <div class="md:flex md:justify-between">
4
+ <div class="mb-6 md:mb-0">
5
+ <a href="https://flowbite.com/" class="flex items-center">
6
+ <img src="https://flowbite.com/docs/images/logo.svg" class="mr-3 h-8" alt="FlowBite Logo">
7
+ <span class="self-center text-2xl font-semibold whitespace-nowrap dark:text-white">Flowbite</span>
8
+ </a>
9
+ </div>
10
+ <div class="grid grid-cols-2 gap-8 sm:gap-6 sm:grid-cols-3">
11
+ <div>
12
+ <h2 class="mb-6 text-sm font-semibold text-gray-900 uppercase dark:text-white">Resources</h2>
13
+ <ul class="text-gray-600 dark:text-gray-400">
14
+ <li class="mb-4">
15
+ <a href="https://flowbite.com/" class="hover:underline">Flowbite</a>
16
+ </li>
17
+ <li>
18
+ <a href="https://tailwindcss.com/" class="hover:underline">Tailwind CSS</a>
19
+ </li>
20
+ </ul>
21
+ </div>
22
+ <div>
23
+ <h2 class="mb-6 text-sm font-semibold text-gray-900 uppercase dark:text-white">Follow us</h2>
24
+ <ul class="text-gray-600 dark:text-gray-400">
25
+ <li class="mb-4">
26
+ <a href="https://github.com/themesberg/flowbite" class="hover:underline ">Github</a>
27
+ </li>
28
+ <li>
29
+ <a href="https://discord.gg/4eeurUVvTy" class="hover:underline">Discord</a>
30
+ </li>
31
+ </ul>
32
+ </div>
33
+ <div>
34
+ <h2 class="mb-6 text-sm font-semibold text-gray-900 uppercase dark:text-white">Legal</h2>
35
+ <ul class="text-gray-600 dark:text-gray-400">
36
+ <li class="mb-4">
37
+ <a href="#" class="hover:underline">Privacy Policy</a>
38
+ </li>
39
+ <li>
40
+ <a href="#" class="hover:underline">Terms &amp; Conditions</a>
41
+ </li>
42
+ </ul>
43
+ </div>
44
+ </div>
45
+ </div>
46
+ <hr class="my-6 border-gray-200 sm:mx-auto dark:border-gray-700 lg:my-8">
47
+ <div class="sm:flex sm:items-center sm:justify-between">
48
+ <span class="text-sm text-gray-500 sm:text-center dark:text-gray-400">© 2022 <a href="https://flowbite.com/" class="hover:underline">Flowbite™</a>. All Rights Reserved.
49
+ </span>
50
+ <div class="flex mt-4 space-x-6 sm:justify-center sm:mt-0">
51
+ <a href="#" class="text-gray-500 hover:text-gray-900 dark:hover:text-white">
52
+ <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M22 12c0-5.523-4.477-10-10-10S2 6.477 2 12c0 4.991 3.657 9.128 8.438 9.878v-6.987h-2.54V12h2.54V9.797c0-2.506 1.492-3.89 3.777-3.89 1.094 0 2.238.195 2.238.195v2.46h-1.26c-1.243 0-1.63.771-1.63 1.562V12h2.773l-.443 2.89h-2.33v6.988C18.343 21.128 22 16.991 22 12z" clip-rule="evenodd"></path></svg>
53
+ <span class="sr-only">Facebook page</span>
54
+ </a>
55
+ <a href="#" class="text-gray-500 hover:text-gray-900 dark:hover:text-white">
56
+ <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M12.315 2c2.43 0 2.784.013 3.808.06 1.064.049 1.791.218 2.427.465a4.902 4.902 0 011.772 1.153 4.902 4.902 0 011.153 1.772c.247.636.416 1.363.465 2.427.048 1.067.06 1.407.06 4.123v.08c0 2.643-.012 2.987-.06 4.043-.049 1.064-.218 1.791-.465 2.427a4.902 4.902 0 01-1.153 1.772 4.902 4.902 0 01-1.772 1.153c-.636.247-1.363.416-2.427.465-1.067.048-1.407.06-4.123.06h-.08c-2.643 0-2.987-.012-4.043-.06-1.064-.049-1.791-.218-2.427-.465a4.902 4.902 0 01-1.772-1.153 4.902 4.902 0 01-1.153-1.772c-.247-.636-.416-1.363-.465-2.427-.047-1.024-.06-1.379-.06-3.808v-.63c0-2.43.013-2.784.06-3.808.049-1.064.218-1.791.465-2.427a4.902 4.902 0 011.153-1.772A4.902 4.902 0 015.45 2.525c.636-.247 1.363-.416 2.427-.465C8.901 2.013 9.256 2 11.685 2h.63zm-.081 1.802h-.468c-2.456 0-2.784.011-3.807.058-.975.045-1.504.207-1.857.344-.467.182-.8.398-1.15.748-.35.35-.566.683-.748 1.15-.137.353-.3.882-.344 1.857-.047 1.023-.058 1.351-.058 3.807v.468c0 2.456.011 2.784.058 3.807.045.975.207 1.504.344 1.857.182.466.399.8.748 1.15.35.35.683.566 1.15.748.353.137.882.3 1.857.344 1.054.048 1.37.058 4.041.058h.08c2.597 0 2.917-.01 3.96-.058.976-.045 1.505-.207 1.858-.344.466-.182.8-.398 1.15-.748.35-.35.566-.683.748-1.15.137-.353.3-.882.344-1.857.048-1.055.058-1.37.058-4.041v-.08c0-2.597-.01-2.917-.058-3.96-.045-.976-.207-1.505-.344-1.858a3.097 3.097 0 00-.748-1.15 3.098 3.098 0 00-1.15-.748c-.353-.137-.882-.3-1.857-.344-1.023-.047-1.351-.058-3.807-.058zM12 6.865a5.135 5.135 0 110 10.27 5.135 5.135 0 010-10.27zm0 1.802a3.333 3.333 0 100 6.666 3.333 3.333 0 000-6.666zm5.338-3.205a1.2 1.2 0 110 2.4 1.2 1.2 0 010-2.4z" clip-rule="evenodd"></path></svg>
57
+ <span class="sr-only">Instagram page</span>
58
+ </a>
59
+ <a href="#" class="text-gray-500 hover:text-gray-900 dark:hover:text-white">
60
+ <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path d="M8.29 20.251c7.547 0 11.675-6.253 11.675-11.675 0-.178 0-.355-.012-.53A8.348 8.348 0 0022 5.92a8.19 8.19 0 01-2.357.646 4.118 4.118 0 001.804-2.27 8.224 8.224 0 01-2.605.996 4.107 4.107 0 00-6.993 3.743 11.65 11.65 0 01-8.457-4.287 4.106 4.106 0 001.27 5.477A4.072 4.072 0 012.8 9.713v.052a4.105 4.105 0 003.292 4.022 4.095 4.095 0 01-1.853.07 4.108 4.108 0 003.834 2.85A8.233 8.233 0 012 18.407a11.616 11.616 0 006.29 1.84"></path></svg>
61
+ <span class="sr-only">Twitter page</span>
62
+ </a>
63
+ <a href="#" class="text-gray-500 hover:text-gray-900 dark:hover:text-white">
64
+ <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z" clip-rule="evenodd"></path></svg>
65
+ <span class="sr-only">GitHub account</span>
66
+ </a>
67
+ <a href="#" class="text-gray-500 hover:text-gray-900 dark:hover:text-white">
68
+ <svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"><path fill-rule="evenodd" d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10c5.51 0 10-4.48 10-10S17.51 2 12 2zm6.605 4.61a8.502 8.502 0 011.93 5.314c-.281-.054-3.101-.629-5.943-.271-.065-.141-.12-.293-.184-.445a25.416 25.416 0 00-.564-1.236c3.145-1.28 4.577-3.124 4.761-3.362zM12 3.475c2.17 0 4.154.813 5.662 2.148-.152.216-1.443 1.941-4.48 3.08-1.399-2.57-2.95-4.675-3.189-5A8.687 8.687 0 0112 3.475zm-3.633.803a53.896 53.896 0 013.167 4.935c-3.992 1.063-7.517 1.04-7.896 1.04a8.581 8.581 0 014.729-5.975zM3.453 12.01v-.26c.37.01 4.512.065 8.775-1.215.25.477.477.965.694 1.453-.109.033-.228.065-.336.098-4.404 1.42-6.747 5.303-6.942 5.629a8.522 8.522 0 01-2.19-5.705zM12 20.547a8.482 8.482 0 01-5.239-1.8c.152-.315 1.888-3.656 6.703-5.337.022-.01.033-.01.054-.022a35.318 35.318 0 011.823 6.475 8.4 8.4 0 01-3.341.684zm4.761-1.465c-.086-.52-.542-3.015-1.659-6.084 2.679-.423 5.022.271 5.314.369a8.468 8.468 0 01-3.655 5.715z" clip-rule="evenodd"></path></svg>
69
+ <span class="sr-only">Dribbbel account</span>
70
+ </a>
71
+ </div>
72
+ </div>
73
+ </footer>
@@ -0,0 +1,25 @@
1
+ <section class="text-gray-700 body-font">
2
+ <div class="container px-8 pt-48 pb-24 mx-auto lg:px-4">
3
+ <div class="flex flex-col w-full mb-12 text-left lg:text-center">
4
+ <h2
5
+ class="mb-1 text-xs font-semibold tracking-widest text-blue-600 uppercase title-font">
6
+ a great
7
+ header right here
8
+ </h2>
9
+ <h1
10
+ class="mb-6 text-2xl font-semibold tracking-tighter sm:text-5xl title-font bg-clip-text text-transparent bg-gradient-to-r from-green-400 to-blue-500">
11
+ A centered medium lenght display headline.
12
+ </h1>
13
+ <p
14
+ class="mx-auto text-base font-medium leading-relaxed text-gray-700 lg:w-2/3">
15
+ Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do
16
+ eiusmod tempor incididunt ut labore et incididunt ut labore et
17
+ incididunt ut labore et dolore magna aliqua.
18
+ </p>
19
+ </div>
20
+ <div class="flex lg:justify-center">
21
+ <button
22
+ class="inline-flex px-4 py-2 font-semibold text-white transition duration-500 ease-in-out transform rounded-lg shadow-xl bg-gradient-to-r from-blue-700 hover:from-blue-600 to-blue-600 hover:to-blue-700 focus:shadow-outline focus:outline-none">Button</button>
23
+ </div>
24
+ </div>
25
+ </section>
@@ -0,0 +1,101 @@
1
+ <!-- This example requires Tailwind CSS v2.0+ -->
2
+ <nav class="bg-gray-800">
3
+ <div class="max-w-7xl mx-auto px-2 sm:px-6 lg:px-8">
4
+ <div class="relative flex items-center justify-between h-16">
5
+ <div class="absolute inset-y-0 left-0 flex items-center sm:hidden">
6
+ <!-- Mobile menu button-->
7
+ <button type="button" class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-white" aria-controls="mobile-menu" aria-expanded="false">
8
+ <span class="sr-only">Open main menu</span>
9
+ <!--
10
+ Icon when menu is closed.
11
+
12
+ Heroicon name: outline/menu
13
+
14
+ Menu open: "hidden", Menu closed: "block"
15
+ -->
16
+ <svg class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
17
+ <path stroke-linecap="round" stroke-linejoin="round" d="M4 6h16M4 12h16M4 18h16" />
18
+ </svg>
19
+ <!--
20
+ Icon when menu is open.
21
+
22
+ Heroicon name: outline/x
23
+
24
+ Menu open: "block", Menu closed: "hidden"
25
+ -->
26
+ <svg class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
27
+ <path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
28
+ </svg>
29
+ </button>
30
+ </div>
31
+ <div class="flex-1 flex items-center justify-center sm:items-stretch sm:justify-start">
32
+ <div class="flex-shrink-0 flex items-center">
33
+ <img class="block lg:hidden h-8 w-auto" src="https://tailwindui.com/img/logos/workflow-mark-indigo-500.svg" alt="Workflow">
34
+ <img class="hidden lg:block h-8 w-auto" src="https://tailwindui.com/img/logos/workflow-logo-indigo-500-mark-white-text.svg" alt="Workflow">
35
+ </div>
36
+ <div class="hidden sm:block sm:ml-6">
37
+ <div class="flex space-x-4">
38
+ <!-- Current: "bg-gray-900 text-white", Default: "text-gray-300 hover:bg-gray-700 hover:text-white" -->
39
+ <a href="#" class="bg-gray-900 text-white px-3 py-2 rounded-md text-sm font-medium" aria-current="page">Dashboard</a>
40
+
41
+ <a href="#" class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Team</a>
42
+
43
+ <a href="#" class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Projects</a>
44
+
45
+ <a href="#" class="text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md text-sm font-medium">Calendar</a>
46
+ </div>
47
+ </div>
48
+ </div>
49
+ <div class="absolute inset-y-0 right-0 flex items-center pr-2 sm:static sm:inset-auto sm:ml-6 sm:pr-0">
50
+ <button type="button" class="bg-gray-800 p-1 rounded-full text-gray-400 hover:text-white focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-800 focus:ring-white">
51
+ <span class="sr-only">View notifications</span>
52
+ <!-- Heroicon name: outline/bell -->
53
+ <svg class="h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="2" stroke="currentColor" aria-hidden="true">
54
+ <path stroke-linecap="round" stroke-linejoin="round" d="M15 17h5l-1.405-1.405A2.032 2.032 0 0118 14.158V11a6.002 6.002 0 00-4-5.659V5a2 2 0 10-4 0v.341C7.67 6.165 6 8.388 6 11v3.159c0 .538-.214 1.055-.595 1.436L4 17h5m6 0v1a3 3 0 11-6 0v-1m6 0H9" />
55
+ </svg>
56
+ </button>
57
+
58
+ <!-- Profile dropdown -->
59
+ <div class="ml-3 relative">
60
+ <div>
61
+ <button type="button" class="bg-gray-800 flex text-sm rounded-full focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-800 focus:ring-white" id="user-menu-button" aria-expanded="false" aria-haspopup="true">
62
+ <span class="sr-only">Open user menu</span>
63
+ <img class="h-8 w-8 rounded-full" src="https://images.unsplash.com/photo-1472099645785-5658abf4ff4e?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80" alt="">
64
+ </button>
65
+ </div>
66
+
67
+ <!--
68
+ Dropdown menu, show/hide based on menu state.
69
+
70
+ Entering: "transition ease-out duration-100"
71
+ From: "transform opacity-0 scale-95"
72
+ To: "transform opacity-100 scale-100"
73
+ Leaving: "transition ease-in duration-75"
74
+ From: "transform opacity-100 scale-100"
75
+ To: "transform opacity-0 scale-95"
76
+ -->
77
+ <div class="origin-top-right absolute right-0 mt-2 w-48 rounded-md shadow-lg py-1 bg-white ring-1 ring-black ring-opacity-5 focus:outline-none" role="menu" aria-orientation="vertical" aria-labelledby="user-menu-button" tabindex="-1">
78
+ <!-- Active: "bg-gray-100", Not Active: "" -->
79
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1" id="user-menu-item-0">Your Profile</a>
80
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1" id="user-menu-item-1">Settings</a>
81
+ <a href="#" class="block px-4 py-2 text-sm text-gray-700" role="menuitem" tabindex="-1" id="user-menu-item-2">Sign out</a>
82
+ </div>
83
+ </div>
84
+ </div>
85
+ </div>
86
+ </div>
87
+
88
+ <!-- Mobile menu, show/hide based on menu state. -->
89
+ <div class="sm:hidden" id="mobile-menu">
90
+ <div class="px-2 pt-2 pb-3 space-y-1">
91
+ <!-- Current: "bg-gray-900 text-white", Default: "text-gray-300 hover:bg-gray-700 hover:text-white" -->
92
+ <a href="#" class="bg-gray-900 text-white block px-3 py-2 rounded-md text-base font-medium" aria-current="page">Dashboard</a>
93
+
94
+ <a href="#" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Team</a>
95
+
96
+ <a href="#" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Projects</a>
97
+
98
+ <a href="#" class="text-gray-300 hover:bg-gray-700 hover:text-white block px-3 py-2 rounded-md text-base font-medium">Calendar</a>
99
+ </div>
100
+ </div>
101
+ </nav>
@@ -8,23 +8,26 @@
8
8
 
9
9
  require 'pry'
10
10
 
11
- self.local_template_path = File.join(File.dirname(__FILE__), 'rag_bootstrap')
11
+ self.local_template_path = File.join(File.dirname(__FILE__), 'rag_tailwind')
12
12
 
13
13
  gac 'base rails 7 image created'
14
14
 
15
15
  add_controller('home', 'index', 'about')
16
16
  route("root 'home#index'")
17
17
 
18
- # # need a join template method
19
- # index_content = join_templates(
20
- # 'component-nav.html',
21
- # 'component-hero.html',
22
- # 'component-cards-fancy.html',
23
- # 'component-cards-staff.html',
24
- # 'component-cards-styled.html',
25
- # 'component-modal.html',
26
- # 'component-footer.html',
27
- # )
18
+ index_content = join_templates(
19
+ 'component-section-begin.html',
20
+ 'component-nav.html',
21
+ 'component-hero.html',
22
+ 'component-cta.html',
23
+ 'component-faq.html',
24
+ 'component-cta.html',
25
+ 'component-footer.html',
26
+ 'component-section-end.html'
27
+ )
28
+ # join: "</section>\n\n<section>\n"
29
+
30
+ create_file 'app/views/home/index.html.erb', index_content, force: true
28
31
 
29
32
  # move the nav bar into
30
33
  # 'app/views/shared/_navbar.html.erb'
@@ -32,11 +35,10 @@ route("root 'home#index'")
32
35
  # 'app/views/layouts/application.html.erb'
33
36
  # <%= render partial: 'shared/navbar' %>
34
37
 
35
- # create_file 'app/views/home/index.html.erb', index_content, force: true
36
-
37
38
  # gem 'sassc-rails'
38
39
 
39
40
  after_bundle do
41
+ gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mx-auto px-5'
40
42
  # add_css_customizations
41
43
 
42
44
  # add_crud_people
@@ -0,0 +1,50 @@
1
+ <mxfile host="x0A">
2
+ <diagram id="Oq8" name="In progress">
3
+ <mxGraphModel dx="0" dy="0" background="#FFFAFA" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
4
+ <root>
5
+ <mxCell id="page_root_Oq8" parent="Oq8"/>
6
+ <mxCell id="node_root_Oq8" parent="page_root_Oq8"/>
7
+ <mxCell id="Oq8-1" value="DrawIO DSL" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fontColor=#1F2D3D;text;fontSize=28;fontStyle=1;fillColor=none" vertex="1" parent="node_root_Oq8">
8
+ <mxGeometry x="300" y="0" width="400" height="80" as="geometry"/>
9
+ </mxCell>
10
+ <mxCell id="Oq8-3" value="add diff tool open in vscode option" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_Oq8">
11
+ <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
12
+ </mxCell>
13
+ </root>
14
+ </mxGraphModel>
15
+ </diagram>
16
+ <diagram id="Ip4" name="To Do">
17
+ <mxGraphModel dx="0" dy="0" background="#FFFAFA" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
18
+ <root>
19
+ <mxCell id="page_root_Ip4" parent="Ip4"/>
20
+ <mxCell id="node_root_Ip4" parent="page_root_Ip4"/>
21
+ <mxCell id="Ip4-1" value="cli support for diff" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_Ip4">
22
+ <mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
23
+ </mxCell>
24
+ <mxCell id="Ip4-2" value="cli support for profile" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_Ip4">
25
+ <mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
26
+ </mxCell>
27
+ <mxCell id="Ip4-3" value="cli support for rails new (rag new should work like rails new) - buggy, need to work through" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_Ip4">
28
+ <mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
29
+ </mxCell>
30
+ <mxCell id="Ip4-4" value="need an option for deleting target project path" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_Ip4">
31
+ <mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
32
+ </mxCell>
33
+ </root>
34
+ </mxGraphModel>
35
+ </diagram>
36
+ <diagram id="YZE" name="Done">
37
+ <mxGraphModel dx="0" dy="0" background="#FFFAFA" grid="0" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1169" pageHeight="827" math="0" shadow="0">
38
+ <root>
39
+ <mxCell id="page_root_YZE" parent="YZE"/>
40
+ <mxCell id="node_root_YZE" parent="page_root_YZE"/>
41
+ <mxCell id="YZE-1" value="add diff tool supporting lhs only, rhs only, same and different" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_YZE">
42
+ <mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
43
+ </mxCell>
44
+ <mxCell id="YZE-2" value="add project plan to do list" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_YZE">
45
+ <mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
46
+ </mxCell>
47
+ </root>
48
+ </mxGraphModel>
49
+ </diagram>
50
+ </mxfile>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="302px" height="62px" viewBox="-0.5 -0.5 302 62"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">add diff tool supporting lhs only, rhs only, same and different</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add diff tool supporting lhs only, rhs only, same...</text></switch></g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">add project plan to do list</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add project plan to do list</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="692px" height="82px" viewBox="-0.5 -0.5 692 82"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><rect x="290" y="0" width="400" height="80" rx="12" ry="12" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe flex-start; justify-content: unsafe flex-start; width: 398px; height: 1px; padding-top: 7px; margin-left: 292px;"><div data-drawio-colors="color: #1F2D3D; " style="box-sizing: border-box; font-size: 0px; text-align: left;"><div style="display: inline-block; font-size: 28px; font-family: Helvetica; color: rgb(31, 45, 61); line-height: 1.2; pointer-events: all; font-weight: bold; white-space: normal; overflow-wrap: normal;">DrawIO DSL</div></div></div></foreignObject><text x="292" y="35" fill="#1F2D3D" font-family="Helvetica" font-size="28px" font-weight="bold">DrawIO DSL</text></switch></g><rect x="0" y="10" width="300" height="60" rx="9" ry="9" fill="#d5e8d4" stroke="#82b366" pointer-events="all"/><path d="M 10.15 9 Q -1 9 -1 20.15 L -1 34 Q 150 52 301 34 L 301 20.15 Q 301 9 289.85 9 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 40px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">add diff tool open in vscode option</div></div></div></foreignObject><text x="150" y="44" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add diff tool open in vscode option</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
@@ -0,0 +1,3 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="302px" height="62px" viewBox="-0.5 -0.5 302 62"><defs><linearGradient x1="0%" y1="0%" x2="0%" y2="100%" id="mx-gradient-ffffff-0.9-ffffff-0.1-s-0"><stop offset="0%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.9;"/><stop offset="100%" style="stop-color: rgb(255, 255, 255); stop-opacity: 0.1;"/></linearGradient></defs><g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">cli support for diff</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">cli support for diff</text></switch></g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">cli support for profile</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">cli support for profile</text></switch></g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">cli support for rails new (rag new should work like rails new) - buggy, need to work through</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">cli support for rails new (rag new should work lik...</text></switch></g><rect x="0" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 -1 Q -1 -1 -1 10.15 L -1 24 Q 150 42 301 24 L 301 10.15 Q 301 -1 289.85 -1 Z" fill="url(#mx-gradient-ffffff-0.9-ffffff-0.1-s-0)" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 298px; height: 1px; padding-top: 30px; margin-left: 1px;"><div data-drawio-colors="color: #333333; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(51, 51, 51); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">need an option for deleting target project path</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">need an option for deleting target project path</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
@@ -0,0 +1,24 @@
1
+ # Drawio Dsl - Project Plan
2
+
3
+ ## In Progress
4
+
5
+ The next ticket to work on
6
+
7
+ ![](project-plan/project_in_progress.svg)
8
+
9
+ ## To Do
10
+
11
+ List of tickets to do
12
+
13
+ ![](project-plan/project_todo.svg)
14
+
15
+ ## Complete
16
+
17
+ List of completed tickets
18
+
19
+ ![](project-plan/project_done.svg)
20
+
21
+
22
+ ## Copyright
23
+
24
+ Copyright (c) David Cruwys. See [MIT License](LICENSE.txt) for further details.
data/exe/rag CHANGED
@@ -19,23 +19,52 @@ elsif %w[-v --version].include? ARGV[0]
19
19
  exit 0
20
20
  end
21
21
 
22
- profile_path = File.expand_path("#{Pathname.new(__FILE__).dirname}/../profiles")
23
- profile_name = ARGV[0]
24
- profile_name += '.json' unless profile_name.end_with?('.json')
25
- profile_file = File.join(profile_path, profile_name)
26
-
27
- if File.exist?(profile_file)
28
- puts "Using profile #{profile_file}"
29
-
30
- profile = JSON.parse(File.read(profile_file), symbolize_names: true)
31
- args = profile[:args]
32
- opts = profile[:opts]
33
- rails_options = RailsAppGenerator::RailsOptions.new(opts)
34
-
35
- instance = RailsAppGenerator::Starter.new(args)
36
- FileUtils.rm_rf(instance.target_path)
37
- instance.start(rails_options)
38
- else
39
- puts "Profile #{profile_file} not found"
40
- exit 1
41
- end
22
+ RailsAppGenerator::Cli.start(ARGV)
23
+
24
+ exit 0
25
+
26
+ # # Use RAG with in the same way as the Rails generator (the following commands should be equivalent)
27
+ # # rails new args
28
+ # # rag new args
29
+ # if ARGV.first == 'new'
30
+ # # NOTE: This is not yet working
31
+ # RailsAppGenerator::Cli::Standard.start ARGV[1..]
32
+ # exit 0
33
+ # elsif ARGV.first == 'diff'
34
+ # # args, opts = Thor::Arguments.split(ARGV[1..])
35
+ # RailsAppGenerator::Cli::Diff.start(ARGV[1..]) # , { lhs: true, rhs: true, compare: true } )
36
+ # exit 0
37
+ # elsif ARGV.first == 'diff_lhs'
38
+ # RailsAppGenerator::Cli::Diff.start(ARGV[1..], { lhs: true })
39
+ # exit 0
40
+ # elsif ARGV.first == 'diff_rhs'
41
+ # RailsAppGenerator::Cli::Diff.start(ARGV[1..], { rhs: true })
42
+ # exit 0
43
+ # elsif ARGV.first == 'diff_compare'
44
+ # RailsAppGenerator::Cli::Diff.start(ARGV[1..], { compare: true })
45
+ # exit 0
46
+ # elsif !ARGV.first.nil?
47
+ # profile_path = File.expand_path("#{Pathname.new(__FILE__).dirname}/../profiles")
48
+ # profile_name = ARGV[0]
49
+ # profile_name += '.json' unless profile_name.end_with?('.json')
50
+ # profile_file = File.join(profile_path, profile_name)
51
+
52
+ # RailsAppGenerator::Cli::Profile.start(profile_file)
53
+
54
+ # exit 0
55
+ # end
56
+
57
+ # if File.exist?(profile_file)
58
+ # puts "Using profile #{profile_file}"
59
+
60
+ # profile = JSON.parse(File.read(profile_file), symbolize_names: true)
61
+ # args = profile[:args]
62
+ # opts = profile[:opts]
63
+ # rails_options = RailsAppGenerator::RailsOptions.new(opts)
64
+
65
+ # instance = RailsAppGenerator::Starter.new(args)
66
+ # FileUtils.rm_rf(instance.target_path)
67
+ # instance.start(rails_options)
68
+ # else
69
+ # puts "Profile #{profile_file} not found"
70
+ # exit 1
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Thor CLI
5
+ class Cli < Thor
6
+ desc 'diff lhs_folder rhs_folder [options]', 'Diff two different rails folders'
7
+ option :lhs , type: :boolean
8
+ option :rhs , type: :boolean
9
+ option :compare , type: :boolean
10
+
11
+ def diff(lhs_folder, rhs_folder)
12
+ # puts "Diffing #{lhs_folder} and #{rhs_folder}"
13
+ # puts JSON.pretty_generate(options)
14
+ processor = RailsAppGenerator::Diff::Processor.new(lhs_folder, rhs_folder)
15
+ compare_info = processor.compare
16
+
17
+ compare_info.debug
18
+
19
+ # report = RailsAppGenerator::Diff::Report.new(compare_info)
20
+ # report.display
21
+ end
22
+
23
+ # def initialize(profile_file)
24
+ # @profile_file = profile_file
25
+ # end
26
+
27
+ # def run
28
+ # puts "Using profile #{profile_file}"
29
+
30
+ # profile = JSON.parse(File.read(profile_file), symbolize_names: true)
31
+ # args = profile[:args]
32
+ # opts = profile[:opts]
33
+ # rails_options = RailsAppGenerator::RailsOptions.new(opts)
34
+
35
+ # instance = RailsAppGenerator::Starter.new(args)
36
+ # FileUtils.rm_rf(instance.target_path)
37
+ # instance.start(rails_options)
38
+ # end
39
+ end
40
+ end
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ module Diff
5
+ # CompareInfo stores LHS and RHS file information in segments
6
+ class CompareInfo
7
+ attr_reader :lhs_path
8
+ attr_reader :lhs_files
9
+
10
+ attr_reader :rhs_path
11
+ attr_reader :rhs_files
12
+
13
+ # File segments
14
+ attr_reader :lhs_only
15
+ attr_reader :rhs_only
16
+ attr_reader :diff
17
+ attr_reader :same
18
+
19
+ def initialize(lhs_path, lhs_files, rhs_path, rhs_files)
20
+ @lhs_path = lhs_path
21
+ @lhs_files = lhs_files
22
+
23
+ @rhs_path = rhs_path
24
+ @rhs_files = rhs_files
25
+
26
+ @lhs_only = []
27
+ @rhs_only = []
28
+ @diff = []
29
+ @same = []
30
+
31
+ segment_files(lhs_path, lhs_files, rhs_path, rhs_files)
32
+ end
33
+
34
+ def lhs_file_info(type)
35
+ case type
36
+ when :lhs_only
37
+ rel_abs_file(lhs_path, lhs_only)
38
+ when :rhs_only
39
+ [] # there should be no right hand side files for the left hand path
40
+ when :same
41
+ rel_abs_file(lhs_path, same)
42
+ when :diff
43
+ rel_abs_file(lhs_path, diff)
44
+ end
45
+ end
46
+
47
+ def rhs_file_info(type)
48
+ case type
49
+ when :lhs_only
50
+ [] # there should be no left hand side files for the right hand path
51
+ when :rhs_only
52
+ rel_abs_file(rhs_path, rhs_only)
53
+ when :same
54
+ rel_abs_file(rhs_path, same)
55
+ when :diff
56
+ rel_abs_file(rhs_path, diff)
57
+ end
58
+ end
59
+
60
+ def debug
61
+ debug_stats
62
+ debug_files('left only' , lhs_only)
63
+ debug_files('right only' , rhs_only)
64
+ debug_files('same' , same)
65
+ debug_files('diff' , diff)
66
+ end
67
+
68
+ private
69
+
70
+ # rubocop:disable Metrics/AbcSize
71
+ def segment_files(lhs_path, lhs_files, rhs_path, rhs_files)
72
+ lhs_only = lhs_files - rhs_files
73
+ rhs_only = rhs_files - lhs_files
74
+ matching_files = lhs_files & rhs_files
75
+
76
+ @lhs_only = lhs_only.map { |file| FilePair.new(file, lhs_absolute_file: File.join(lhs_path, file)) }
77
+ @rhs_only = rhs_only.map { |file| FilePair.new(file, rhs_absolute_file: File.join(rhs_path, file)) }
78
+
79
+ matching_files.each do |file|
80
+ file_pair = FilePair.new(
81
+ file,
82
+ lhs_absolute_file: File.join(lhs_path, file),
83
+ rhs_absolute_file: File.join(rhs_path, file)
84
+ )
85
+
86
+ if FileUtils.compare_file(File.join(lhs_path, file), File.join(rhs_path, file))
87
+ @same << file_pair
88
+ else
89
+ @diff << file_pair
90
+ end
91
+ end
92
+ end
93
+ # rubocop:enable Metrics/AbcSize
94
+
95
+ def rel_abs_file(path, files)
96
+ files.map { |file| FilePair.new(file, File.join(path, file)) }
97
+ end
98
+
99
+ # rubocop:disable Metrics/AbcSize
100
+ def debug_stats
101
+ Util.kv('left path' , lhs_path)
102
+ Util.kv('right path' , rhs_path)
103
+
104
+ Util.kv('file count - left' , lhs_files.count)
105
+ Util.kv('file count - right' , rhs_files.count)
106
+
107
+ Util.kv('file count - left only' , lhs_only.count)
108
+ Util.kv('file count - right only' , rhs_only.count)
109
+
110
+ Util.kv('file count - same' , same.count)
111
+ Util.kv('file count - different' , diff.count)
112
+ end
113
+ # rubocop:enable Metrics/AbcSize
114
+
115
+ def debug_files(heading, files)
116
+ Util.line(heading)
117
+ puts files.any? ? files : 'NO FILES'
118
+ end
119
+ end
120
+ end
121
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ module Diff
5
+ # FilePair stores the relative file path, plus the absolute file for both Left and Right site
6
+ class FilePair
7
+ attr_reader :file
8
+ attr_reader :lhs_absolute_file
9
+ attr_reader :rhs_absolute_file
10
+
11
+ def initialize(file, lhs_absolute_file: nil, rhs_absolute_file: nil)
12
+ @file = file
13
+ @lhs_absolute_file = lhs_absolute_file
14
+ @rhs_absolute_file = rhs_absolute_file
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # module RailsAppGenerator
4
+ # module Diff
5
+ # # Diff Report
6
+ # class OpenInEditor
7
+ # attr_reader :info
8
+
9
+ # attr_reader :open_left_only
10
+ # attr_reader :open_right_only
11
+ # attr_reader :open_same
12
+ # attr_reader :open_different
13
+
14
+ # def initialize(compare_info, **opts)
15
+ # @info = compare_info
16
+
17
+ # @open_left_only = opts[:open_left_only].nil? ? false : opts[:open_left_only]
18
+ # @open_right_only = opts[:open_right_only].nil? ? true : opts[:open_right_only]
19
+ # @open_same = opts[:open_same].nil? ? false : opts[:open_same]
20
+ # @open_different = opts[:open_different].nil? ? true : opts[:open_different]
21
+ # end
22
+
23
+ # def open
24
+ # open_files('Files only in source folder' , info.lhs_only) if open_left_only
25
+ # open_files('Files only in target folder' , info.rhs_only) if open_right_only
26
+ # open_files('Files in both folders' , info.same_list) if open_same
27
+ # open_files('Files that are different' , info.diff_list) if open_different
28
+ # end
29
+
30
+ # private
31
+
32
+ # def open_files(heading, files)
33
+ # puts files.any? ? files.map { |f| f } : 'NO FILES'
34
+ # end
35
+
36
+ # def vscode_compare_files
37
+ # files_that_are_different.map do |file|
38
+ # system("code --diff #{File.join(lhs_path, file)} #{File.join(rhs_path, file)}")
39
+ # end
40
+ # end
41
+
42
+ # end
43
+ # end
44
+ # end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ module Diff
5
+ # Diff Processor
6
+ class Processor
7
+ attr_reader :lhs_path
8
+ attr_reader :rhs_path
9
+
10
+ DEFAULT_EXCLUSION = lambda do |_file, relative_file|
11
+ relative_file.start_with?('tmp') || relative_file.start_with?('node_modules')
12
+ end
13
+
14
+ def initialize(lhs_path, rhs_path)
15
+ @lhs_path = lhs_path
16
+ @rhs_path = rhs_path
17
+ end
18
+
19
+ attr_writer :exclusion_handler
20
+
21
+ def compare
22
+ @info ||= RailsAppGenerator::Diff::CompareInfo.new(
23
+ lhs_path, file_list(lhs_path),
24
+ rhs_path, file_list(rhs_path)
25
+ )
26
+ end
27
+
28
+ def debug
29
+ compare.debug
30
+ end
31
+
32
+ private
33
+
34
+ def exclusion_handler
35
+ @exclusion_handler ||= DEFAULT_EXCLUSION
36
+ end
37
+
38
+ def file_list(path)
39
+ prefix_path = path.end_with?('/') ? path : "#{path}/"
40
+
41
+ Dir.glob("#{path}/**/*")
42
+ .reject { |file| File.directory?(file) || exclusion_handler.call(file, file.delete_prefix(prefix_path)) }
43
+ .map { |file| file.delete_prefix(prefix_path) }
44
+ end
45
+
46
+ # def diff_exclusions(file)
47
+ # file.include?('config/credentials.yml.enc') ||
48
+ # file.include?('master.key')
49
+ # end
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ module Diff
5
+ # Diff Report
6
+ class Report
7
+ attr_reader :info
8
+
9
+ attr_reader :show_left_only
10
+ attr_reader :show_right_only
11
+ attr_reader :show_same
12
+ attr_reader :show_different
13
+
14
+ def initialize(compare_info, **opts)
15
+ @info = compare_info
16
+
17
+ @show_left_only = opts[:show_left_only].nil? ? false : opts[:show_left_only]
18
+ @show_right_only = opts[:show_right_only].nil? ? true : opts[:show_right_only]
19
+ @show_same = opts[:show_same].nil? ? false : opts[:show_same]
20
+ @show_different = opts[:show_different].nil? ? true : opts[:show_different]
21
+ end
22
+
23
+ def display
24
+ display_files('Files only in source folder' , info.lhs_only) if show_left_only
25
+ display_files('Files only in target folder' , info.rhs_only) if show_right_only
26
+ display_files('Files in both folders' , info.same) if show_same
27
+ display_files('Files that are different' , info.diff) if show_different
28
+ end
29
+
30
+ private
31
+
32
+ def display_files(heading, files)
33
+ Util.line(heading)
34
+ puts files.any? ? files.map(&:file) : 'NO FILES'
35
+ end
36
+ end
37
+ end
38
+ end
@@ -74,6 +74,20 @@ create tmp/cache
74
74
  create tmp/cache/assets
75
75
  create vendor
76
76
  create vendor/.keep
77
+ create test/fixtures/files
78
+ create test/fixtures/files/.keep
79
+ create test/controllers
80
+ create test/controllers/.keep
81
+ create test/mailers
82
+ create test/mailers/.keep
83
+ create test/models
84
+ create test/models/.keep
85
+ create test/helpers
86
+ create test/helpers/.keep
87
+ create test/integration
88
+ create test/integration/.keep
89
+ create test/channels/application_cable/connection_test.rb
90
+ create test/test_helper.rb
77
91
  create test/system
78
92
  create test/system/.keep
79
93
  create test/application_system_test_case.rb
@@ -4,17 +4,6 @@ require 'rails'
4
4
 
5
5
  require 'rails/generators'
6
6
  require 'rails/generators/rails/app/app_generator'
7
- # require 'active_model/railtie'
8
- # active_record/railtie
9
- # active_storage/engine
10
- # action_controller/railtie
11
- # action_view/railtie
12
- # action_mailer/railtie
13
- # active_job/railtie
14
- # action_cable/engine
15
- # action_mailbox/engine
16
- # action_text/engine
17
- # rails/test_unit/railtie
18
7
 
19
8
  module RailsAppGenerator
20
9
  # Starter is a wrapper for Rails::AppGenerator
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ # Utility methods
5
+ class Util
6
+ class << self
7
+ # Log KeyValue pair
8
+ #
9
+ # @example
10
+ # Util.kv(:key, :value)
11
+ def kv(label, value, len = 35)
12
+ return ' ' * len if label.nil?
13
+
14
+ label = label.to_s if label.is_a?(Symbol)
15
+ label = label.length > len ? label.slice(0..len) : label.ljust(len, ' ')
16
+
17
+ puts "#{label}: #{value}"
18
+ end
19
+
20
+ def line(heading, len = 80)
21
+ heading = "- [ #{heading} ]"
22
+ puts heading.length > len ? heading : heading.ljust(len, '-')
23
+ end
24
+ end
25
+ end
26
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.0.8'
4
+ VERSION = '0.0.11'
5
5
  end
@@ -1,7 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # require 'k_log'
4
-
5
3
  require 'rails/command/base'
6
4
  require 'rails/generators/app_base'
7
5
  require 'rails/generators'
@@ -10,6 +8,13 @@ require 'rails/generators/rails/app/app_generator'
10
8
  require 'bundler'
11
9
 
12
10
  require 'rails_app_generator/version'
11
+ require 'rails_app_generator/cli'
12
+ require 'rails_app_generator/util'
13
+ require 'rails_app_generator/diff/file_pair'
14
+ require 'rails_app_generator/diff/compare_info'
15
+ require 'rails_app_generator/diff/processor'
16
+ require 'rails_app_generator/diff/report'
17
+ require 'rails_app_generator/diff/open_in_editor'
13
18
  require 'rails_app_generator/options/base_map_option'
14
19
  require 'rails_app_generator/options/map_option_ignore'
15
20
  require 'rails_app_generator/options/map_option_string'
@@ -25,15 +30,9 @@ require 'rails_app_generator/app_builder'
25
30
  require 'rails_app_generator/app_generator'
26
31
  require 'rails_app_generator/starter'
27
32
 
28
- # require "rails_app_generator/generators/base"
29
- # require "rails_app_generator/generators/foo_generator"
30
- # require "rails_app_generator/generators/advisories_generator"
31
-
32
33
  module RailsAppGenerator
33
34
  # raise RailsAppGenerator::Error, 'Sample message'
34
35
  Error = Class.new(StandardError)
35
-
36
- # Your code goes here...
37
36
  end
38
37
 
39
38
  if ENV.fetch('KLUE_DEBUG', 'false').downcase == 'true'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.0.8",
3
+ "version": "0.0.11",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.0.8",
9
+ "version": "0.0.11",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.0.8",
3
+ "version": "0.0.11",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_app_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.11
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-24 00:00:00.000000000 Z
11
+ date: 2022-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bootsnap
@@ -133,6 +133,7 @@ files:
133
133
  - ".builders/_.rb"
134
134
  - ".builders/boot.rb"
135
135
  - ".builders/generators/01-bootstrap.rb"
136
+ - ".builders/generators/project-plan.rb"
136
137
  - ".releaserc.json"
137
138
  - ".rspec"
138
139
  - ".rubocop.yml"
@@ -164,8 +165,20 @@ files:
164
165
  - after_templates/rag_bootstrap/manifest.js
165
166
  - after_templates/rag_simple.rb
166
167
  - after_templates/rag_tailwind.rb
168
+ - after_templates/rag_tailwind/component-cta.html
169
+ - after_templates/rag_tailwind/component-faq.html
170
+ - after_templates/rag_tailwind/component-footer.html
171
+ - after_templates/rag_tailwind/component-hero.html
172
+ - after_templates/rag_tailwind/component-nav.html
173
+ - after_templates/rag_tailwind/component-section-begin.html
174
+ - after_templates/rag_tailwind/component-section-end.html
167
175
  - bin/console
168
176
  - bin/setup
177
+ - docs/project-plan.md
178
+ - docs/project-plan/project.drawio
179
+ - docs/project-plan/project_done.svg
180
+ - docs/project-plan/project_in_progress.svg
181
+ - docs/project-plan/project_todo.svg
169
182
  - exe/rag
170
183
  - lib/rails_app_generator.rb
171
184
  - lib/rails_app_generator/add_on.rb
@@ -194,8 +207,14 @@ files:
194
207
  - lib/rails_app_generator/addons/views.rb
195
208
  - lib/rails_app_generator/app_builder.rb
196
209
  - lib/rails_app_generator/app_generator.rb
210
+ - lib/rails_app_generator/cli.rb
197
211
  - lib/rails_app_generator/context.rb
198
212
  - lib/rails_app_generator/dependencies.rb
213
+ - lib/rails_app_generator/diff/compare_info.rb
214
+ - lib/rails_app_generator/diff/file_pair.rb
215
+ - lib/rails_app_generator/diff/open_in_editor.rb
216
+ - lib/rails_app_generator/diff/processor.rb
217
+ - lib/rails_app_generator/diff/report.rb
199
218
  - lib/rails_app_generator/generators/advisories_generator.rb
200
219
  - lib/rails_app_generator/generators/base.rb
201
220
  - lib/rails_app_generator/generators/foo_generator.rb
@@ -218,6 +237,7 @@ files:
218
237
  - lib/rails_app_generator/options/options_builder.rb
219
238
  - lib/rails_app_generator/options/rails_options.rb
220
239
  - lib/rails_app_generator/starter.rb
240
+ - lib/rails_app_generator/util.rb
221
241
  - lib/rails_app_generator/version.rb
222
242
  - package-lock.json
223
243
  - package.json