rails_app_generator 0.0.8 → 0.0.11

Sign up to get free protection for your applications and to get access to all the features.
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