rails_app_generator 0.0.15 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/.builders/generators/project-plan.rb +15 -3
  3. data/.rubocop.yml +1 -0
  4. data/CHANGELOG.md +28 -0
  5. data/README.md +10 -1
  6. data/after_templates/rag_bootstrap/component-modal.html +18 -0
  7. data/after_templates/rag_bootstrap.rb +80 -0
  8. data/after_templates/rag_import_map/component-sortable.html +9 -0
  9. data/after_templates/rag_import_map/home.css +12 -0
  10. data/after_templates/rag_import_map/position_controller.js +10 -0
  11. data/after_templates/rag_import_map.rb +44 -0
  12. data/after_templates/rag_simple.rb +2 -13
  13. data/after_templates/rag_tailwind_hotwire/home/controller.rb +9 -0
  14. data/after_templates/rag_tailwind_hotwire/home/helper.rb +7 -0
  15. data/after_templates/rag_tailwind_hotwire/home/increment.html.erb +4 -0
  16. data/after_templates/rag_tailwind_hotwire/home/index.html +5 -0
  17. data/after_templates/rag_tailwind_hotwire.rb +23 -0
  18. data/docs/project-plan/project.drawio +62 -20
  19. data/docs/project-plan/project_done.svg +1 -1
  20. data/docs/project-plan/project_in_progress.svg +1 -1
  21. data/docs/project-plan/project_todo.svg +1 -1
  22. data/exe/rag +23 -51
  23. data/lib/rails_app_generator/app_generator.rb +4 -0
  24. data/lib/rails_app_generator/cli/diff.rb +49 -0
  25. data/lib/rails_app_generator/cli/profile.rb +37 -0
  26. data/lib/rails_app_generator/diff/processor.rb +4 -1
  27. data/lib/rails_app_generator/diff/report.rb +1 -1
  28. data/lib/rails_app_generator/starter.rb +4 -0
  29. data/lib/rails_app_generator/version.rb +1 -1
  30. data/lib/rails_app_generator.rb +2 -1
  31. data/package-lock.json +2 -2
  32. data/package.json +1 -1
  33. data/profiles/rag-import-map.json +11 -0
  34. data/profiles/rag-simple.json +1 -1
  35. data/profiles/rag-tailwind-hotwire.json +12 -0
  36. metadata +15 -4
  37. data/after_templates/___base_template.rb +0 -1
  38. data/after_templates/___r7_hotwire.rb +0 -1
  39. data/lib/rails_app_generator/cli.rb +0 -64
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cca2f1e34648c7901ae0a96f9b0f672aea90cf56c39454cdf8588df622df2597
4
- data.tar.gz: 3bf462300806d73a340fab47476c4f0b5999c26163ba82ef2253ffa8df99fd47
3
+ metadata.gz: 52910e6cbc4c2985a98a24d7786a1711e3004511d4047b97037c73f43355dd30
4
+ data.tar.gz: 7156016d4fc968fe23fa4c5068da48c5a5b087899822556c8484493a045026d8
5
5
  SHA512:
6
- metadata.gz: 26df78c51a7e7d73da6f6de478d0612c0244dc9ae36255486177ad0516332314de9dee46b5a82c3c572f71a26f47cb10015a62a23b39ca7ed113d6e509ab8d9e
7
- data.tar.gz: 719cd5df268fdcfe048f9c8002037192120d29792155d4bf53f5c76d5cb8e5fe2313a87bb8a3735dae52ec702205759d5f319916b8a65e90a37534fcdaf3b9f0
6
+ metadata.gz: 0767dd3e641b70864186624f83ac45c9210d6ba884258d648c28c048da2ea8b6b0a4edc708543d4bec09a08a38f272f1311f5ba5d4ac2a614143cab9517b2d26
7
+ data.tar.gz: 03bcd1e0dd42e3f21869a0ab807fd7d91975f00ca50c32d305987d99d3d68d8b7f923a482afa2265a9a68800e1e927374599a91006ff61958546f2936015de49
@@ -7,22 +7,34 @@ KManager.action :project_plan do
7
7
  .page('In progress', theme: :style_03, margin_left: 0, margin_top: 0) do
8
8
  grid_layout(y: 90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
9
9
 
10
- todo(title: 'cli support for profile')
11
-
12
10
  end
13
11
  .page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
14
12
 
15
13
  grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
16
14
 
15
+ todo(title: 'add auto open flag to profile and command line')
16
+ todo(title: 'add profile - stimulas')
17
+ todo(title: 'add profile - hotwire')
18
+ todo(title: 'add profile - turbo')
19
+ todo(title: 'add profile - vue')
20
+ todo(title: 'add profile - svelte')
21
+ todo(title: 'add profile - react')
22
+ todo(title: 'add profile - vite')
23
+ todo(title: 'add profile - docker') # https://www.youtube.com/watch?v=ZhrnqHVVo1g
24
+ todo(title: 'add encryption - https://youtu.be/ZmwNzod1trk?t=701')
17
25
  todo(title: 'cli help support for diff')
18
26
  todo(title: 'cli support for rails new (rag new should work like rails new) - buggy, need to work through')
19
27
  todo(title: 'need an option for deleting target project path') # FileUtils.rm_rf(instance.target_path)
20
-
21
28
  end
22
29
  .page('Done', theme: :style_06, margin_left: 0, margin_top: 0) do
23
30
 
24
31
  grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
25
32
 
33
+ todo(title: 'add profile - tailwind_hotwire')
34
+ todo(title: 'add profile - import_map') # vs esbuild - import_map is a replacement for webpacker
35
+ todo(title: 'profile - fix the bootstrap profile')
36
+ todo(title: 'cli support for profile')
37
+ todo(title: 'separate CLI methods into include modules')
26
38
  todo(title: 'cli support for diff')
27
39
  todo(title: 'add diff tool - open in editor')
28
40
  todo(title: 'add diff tool supporting lhs only, rhs only, same and different')
data/.rubocop.yml CHANGED
@@ -11,6 +11,7 @@ AllCops:
11
11
  - ".builders/**/*"
12
12
  - "spec/samples/**/*"
13
13
  - "a/**/*"
14
+ - "after_templates/**/*"
14
15
 
15
16
  Metrics/BlockLength:
16
17
  Exclude:
data/CHANGELOG.md CHANGED
@@ -1,3 +1,31 @@
1
+ ## [0.1.1](https://github.com/klueless-io/rails_app_generator/compare/v0.1.0...v0.1.1) (2022-07-26)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * add profile import_map ([9cda9ec](https://github.com/klueless-io/rails_app_generator/commit/9cda9ecc85992a0903450dbd9245795fc471d9a5))
7
+
8
+ # [0.1.0](https://github.com/klueless-io/rails_app_generator/compare/v0.0.15...v0.1.0) (2022-07-26)
9
+
10
+
11
+ ### Bug Fixes
12
+
13
+ * fix cops ([caab557](https://github.com/klueless-io/rails_app_generator/commit/caab557ac6bd42df3e732024b8d71d97238c3a22))
14
+ * fix failing specs ([94dbc85](https://github.com/klueless-io/rails_app_generator/commit/94dbc85a898da8954927b8a0e2979f83d6850e79))
15
+ * separate CLI methods into include modules ([2357654](https://github.com/klueless-io/rails_app_generator/commit/235765457f736d56f5ee64b064d2fe666c71ead8))
16
+
17
+
18
+ ### Features
19
+
20
+ * first release ([0bf3adb](https://github.com/klueless-io/rails_app_generator/commit/0bf3adba504a8524c821b4497c9d5e001126e3d3))
21
+
22
+ ## [0.0.15](https://github.com/klueless-io/rails_app_generator/compare/v0.0.14...v0.0.15) (2022-07-26)
23
+
24
+
25
+ ### Bug Fixes
26
+
27
+ * update project plan documentation ([7ed1728](https://github.com/klueless-io/rails_app_generator/commit/7ed1728e081149e56eb4292f37825169a5f21690))
28
+
1
29
  ## [0.0.14](https://github.com/klueless-io/rails_app_generator/compare/v0.0.13...v0.0.14) (2022-07-26)
2
30
 
3
31
 
data/README.md CHANGED
@@ -22,6 +22,15 @@ Or install it yourself as:
22
22
  gem install rails_app_generator
23
23
  ```
24
24
 
25
+ Use the Gem
26
+
27
+ ```
28
+ rag rag-simple
29
+ rag rag-tailwind
30
+ rag rag-bootstrap
31
+ ```
32
+
33
+
25
34
  ## Notes
26
35
 
27
36
  You can use rails_app_generator to create Rails 7 applications
@@ -37,7 +46,7 @@ Templates for rails are separated from templates for addons
37
46
 
38
47
  As a Developer, I want to create new Rails application with flexible opinions so that I can build different rails proof of concepts
39
48
 
40
- See all [stories](./STORIES.md)
49
+ [Project Plan](./docs/project-plan.md)
41
50
 
42
51
 
43
52
  ## Usage
@@ -0,0 +1,18 @@
1
+ <!-- Modal -->
2
+ <div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
3
+ <div class="modal-dialog">
4
+ <div class="modal-content">
5
+ <div class="modal-header">
6
+ <h5 class="modal-title" id="exampleModalLabel">Modal title</h5>
7
+ <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
8
+ </div>
9
+ <div class="modal-body">
10
+ ...
11
+ </div>
12
+ <div class="modal-footer">
13
+ <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
14
+ <button type="button" class="btn btn-primary">Save changes</button>
15
+ </div>
16
+ </div>
17
+ </div>
18
+ </div>
@@ -1 +1,81 @@
1
1
  # frozen_string_literal: true
2
+
3
+ # Rails 7 with Bootstrap CSS and custom CSS
4
+ # resources:
5
+ # https://www.youtube.com/watch?v=tYr8yn7yRKw
6
+ # https://youtu.be/phOUsR0dm5s?t=493
7
+ # https://www.youtube.com/watch?v=nxKDTtuKOo4
8
+
9
+ require 'pry'
10
+
11
+ def add_customizations
12
+ self.local_template_path = File.join(File.dirname(__FILE__), 'rag_bootstrap')
13
+
14
+ gac 'base rails 7 image created'
15
+
16
+ add_controller('home', 'index', 'about')
17
+ route("root 'home#index'")
18
+
19
+ # need a join template method
20
+ index_content = join_templates(
21
+ 'component-nav.html',
22
+ 'component-hero.html',
23
+ 'component-cards-fancy.html',
24
+ 'component-cards-staff.html',
25
+ 'component-cards-styled.html',
26
+ 'component-modal.html',
27
+ 'component-footer.html'
28
+ )
29
+
30
+ # move the nav bar into
31
+ # 'app/views/shared/_navbar.html.erb'
32
+ # and add the nav bar to the layout
33
+ # 'app/views/layouts/application.html.erb'
34
+ # <%= render partial: 'shared/navbar' %>
35
+
36
+ create_file 'app/views/home/index.html.erb', index_content, force: true
37
+
38
+ gem 'sassc-rails'
39
+
40
+ after_bundle do
41
+ add_css_customizations
42
+ add_crud_people
43
+
44
+ rails_command('db:migrate')
45
+ end
46
+ end
47
+
48
+ def add_css_customizations
49
+ # Update the manifest to include the stylesheets
50
+ append_to_file 'app/assets/config/manifest.js' , read_template('manifest.js')
51
+
52
+ # This is how you would add custom styling via @import in the application.bootstrap.css
53
+ append_to_file 'app/assets/stylesheets/application.bootstrap.scss' , "@import 'custom-bootstrap-import.scss';"
54
+ create_file 'app/assets/stylesheets/custom-bootstrap-import.scss' , read_template('custom-bootstrap-import.scss')
55
+
56
+ # This is how you would add custom styling using standard CSS
57
+ create_file 'app/assets/stylesheets/custom-using-css.css' , read_template('custom-using-css.css')
58
+
59
+ # This is how you would add custom styling using standard SAAS/SCSS
60
+ create_file 'app/assets/stylesheets/custom-using-scss.scss' , read_template('custom-using-scss.scss')
61
+
62
+ # This is custom CSS for the fancier components
63
+ create_file 'app/assets/stylesheets/custom-component.css' , join_templates('component-cards-fancy.css', 'component-cards-staff.css')
64
+
65
+ # Update the layout so that the stylesheets are included
66
+ insert_into_file 'app/views/layouts/application.html.erb', read_template('application.html.erb'),
67
+ before: %( <%= javascript_include_tag "application", "data-turbo-track": "reload", defer: true %>)
68
+ gsub_file 'app/views/layouts/application.html.erb', %( <%= yield %>), read_template('application-yield.html.erb')
69
+ end
70
+
71
+ def add_crud_people
72
+ # Need to get the bootstrap form styling working
73
+ # Follow the instructions at: https://youtu.be/phOUsR0dm5s?t=493
74
+ add_scaffold('people', 'first_name', 'last_name', 'age:integer', 'address:text')
75
+ end
76
+
77
+ begin
78
+ add_customizations
79
+ rescue StandardError => e
80
+ puts e.message
81
+ end
@@ -0,0 +1,9 @@
1
+
2
+ <h2>Drag the items into position</h2>
3
+
4
+ <ul data-controller="position">
5
+ <li>Item 1</li>
6
+ <li>Item 2</li>
7
+ <li>Item 3</li>
8
+ <li>Item 4</li>
9
+ </ul>
@@ -0,0 +1,12 @@
1
+ ul {
2
+ list-style: none;
3
+ margin: 1.75rem 0;;
4
+ padding-left: 0;
5
+ }
6
+
7
+ ul li {
8
+ background-color: lightgrey;
9
+ border-radius: 0.5rem;
10
+ margin-top: 1rem;
11
+ padding: 1rem;
12
+ }
@@ -0,0 +1,10 @@
1
+ import { Controller } from "@hotwired/stimulus"
2
+ import { Sortable } from "sortablejs"
3
+
4
+ export default class extends Controller {
5
+ connect() {
6
+ this.sortable = Sortable.create(this.element, {
7
+ animation: 150
8
+ })
9
+ }
10
+ }
@@ -0,0 +1,44 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Episode #312 - Importmaps in Rails 7
4
+ # https://www.youtube.com/watch?v=veWpot6zfUQ
5
+
6
+ require 'pry'
7
+
8
+ def add_customizations
9
+ self.local_template_path = File.join(File.dirname(__FILE__), 'rag_import_map')
10
+
11
+ gac 'base rails 7 image created'
12
+
13
+ add_controller('home', 'index')
14
+ route("root 'home#index'")
15
+
16
+ # need a join template metehod
17
+ after_bundle do
18
+ # after bundle hook
19
+ bundle_add('importmap-rails')
20
+ rails_command('importmap:install')
21
+
22
+ bundle_add('hotwire-rails')
23
+ rails_command('hotwire:install')
24
+
25
+ # run("bin/importmap pin local-time --download")
26
+
27
+ # use CDN: ga.jsmp.io
28
+ run('bin/importmap pin sortablejs')
29
+ # => pin "sortablejs", to: "https://ga.jspm.io/npm:sortablejs@1.15.0/modular/sortable.esm.js"
30
+ # use CDN: jsdeliver
31
+ # run("bin/importmap pin sortablejs --from jsdelivr")
32
+ # => pin "sortablejs", to: "https://cdn.jsdelivr.net/npm/sortablejs@1.15.0/modular/sortable.esm.js"
33
+
34
+ append_to_file 'app/views/home/index.html.erb', read_template('component-sortable.html')
35
+ template 'position_controller.js', 'app/javascript/controllers/position_controller.js'
36
+ template 'home.css', 'app/assets/stylesheets/home.css'
37
+ end
38
+ end
39
+
40
+ begin
41
+ add_customizations
42
+ rescue StandardError => e
43
+ puts e.message
44
+ end
@@ -9,17 +9,6 @@ self.local_template_path = File.join(File.dirname(__FILE__), 'rag_simple')
9
9
 
10
10
  gac 'base rails 7 image created'
11
11
 
12
- def application_html
13
- <<-HTML
14
- <div class="container">
15
- <div class="row">
16
- <%= yield %>
17
- </div>
18
- </div>
19
- HTML
12
+ after_bundle do
13
+ # if needed
20
14
  end
21
-
22
- gsub_file 'app/views/layouts/application.html.erb' , %( <%= yield %>), application_html
23
-
24
- # after_bundle do
25
- # end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class HomeController < ApplicationController
4
+ def index; end
5
+
6
+ def increment
7
+ @counter = (params[:counter]&.to_i || 0) + 1
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module HomeHelper
4
+ def rand_color
5
+ format('#%06x', (rand * 0xffffff))
6
+ end
7
+ end
@@ -0,0 +1,4 @@
1
+ <turbo-frame id='counter'>
2
+ <div class='mt-4' style='color: <%= rand_color %>'>Current Count: <%= @counter %></div>
3
+ <div class="mt-4"><%= link_to 'Increment', increment_path(counter: @counter), class: 'bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded' %></div>
4
+ </turbo-frame>
@@ -0,0 +1,5 @@
1
+ <h1 class="text-3xl font-bold underline">
2
+ Hello World
3
+ </h1>
4
+
5
+ <%= turbo_frame_tag 'counter', src: increment_path %>
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ # How to Start a Ruby on Rails 7 App With Hotwire and Tailwind CSS
4
+ # https://www.youtube.com/watch?v=7G0oWn2Gn5c
5
+
6
+ require 'pry'
7
+
8
+ self.local_template_path = File.join(File.dirname(__FILE__), 'rag_tailwind_hotwire')
9
+
10
+ gac 'base rails 7 image created'
11
+
12
+ add_controller('home', 'index')
13
+ route("get 'home/increment', as: :increment")
14
+ route("root 'home#index'")
15
+
16
+ copy_file 'home/controller.rb' , 'app/controllers/home_controller.rb' , force: true
17
+ copy_file 'home/helper.rb' , 'app/helpers/home_helper.rb' , force: true
18
+ copy_file 'home/index.html' , 'app/views/home/index.html.erb' , force: true
19
+ copy_file 'home/increment.html.erb', 'app/views/home/increment.html.erb' , force: true
20
+
21
+ after_bundle do
22
+ gsub_file 'app/views/layouts/application.html.erb', %(container mx-auto mt-28 px-5 flex), 'container mt-8 mx-auto'
23
+ end
@@ -1,49 +1,91 @@
1
- <mxfile host="3Xt">
2
- <diagram id="avE" name="In progress">
1
+ <mxfile host="hAT">
2
+ <diagram id="EXU" name="In progress">
3
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
4
  <root>
5
- <mxCell id="page_root_avE" parent="avE"/>
6
- <mxCell id="node_root_avE" parent="page_root_avE"/>
7
- <mxCell id="avE-2" value="cli support for profile" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#d5e8d4;strokeColor=#82b366;fontColor=#333333" vertex="1" parent="node_root_avE">
8
- <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
9
- </mxCell>
5
+ <mxCell id="page_root_EXU" parent="EXU"/>
6
+ <mxCell id="node_root_EXU" parent="page_root_EXU"/>
10
7
  </root>
11
8
  </mxGraphModel>
12
9
  </diagram>
13
- <diagram id="uOE" name="To Do">
10
+ <diagram id="c1l" name="To Do">
14
11
  <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">
15
12
  <root>
16
- <mxCell id="page_root_uOE" parent="uOE"/>
17
- <mxCell id="node_root_uOE" parent="page_root_uOE"/>
18
- <mxCell id="uOE-2" value="cli help support for diff" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_uOE">
13
+ <mxCell id="page_root_c1l" parent="c1l"/>
14
+ <mxCell id="node_root_c1l" parent="page_root_c1l"/>
15
+ <mxCell id="c1l-2" value="add auto open flag to profile and command line" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
19
16
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
20
17
  </mxCell>
21
- <mxCell id="uOE-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_uOE">
18
+ <mxCell id="c1l-3" value="add profile - stimulas" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
22
19
  <mxGeometry x="330" y="10" width="300" height="60" as="geometry"/>
23
20
  </mxCell>
24
- <mxCell id="uOE-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_uOE">
21
+ <mxCell id="c1l-4" value="add profile - hotwire" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
25
22
  <mxGeometry x="650" y="10" width="300" height="60" as="geometry"/>
26
23
  </mxCell>
24
+ <mxCell id="c1l-5" value="add profile - turbo" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
25
+ <mxGeometry x="10" y="90" width="300" height="60" as="geometry"/>
26
+ </mxCell>
27
+ <mxCell id="c1l-6" value="add profile - vue" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
28
+ <mxGeometry x="330" y="90" width="300" height="60" as="geometry"/>
29
+ </mxCell>
30
+ <mxCell id="c1l-7" value="add profile - svelte" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
31
+ <mxGeometry x="650" y="90" width="300" height="60" as="geometry"/>
32
+ </mxCell>
33
+ <mxCell id="c1l-8" value="add profile - react" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
34
+ <mxGeometry x="10" y="170" width="300" height="60" as="geometry"/>
35
+ </mxCell>
36
+ <mxCell id="c1l-9" value="add profile - vite" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
37
+ <mxGeometry x="330" y="170" width="300" height="60" as="geometry"/>
38
+ </mxCell>
39
+ <mxCell id="c1l-10" value="add profile - docker" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
40
+ <mxGeometry x="650" y="170" width="300" height="60" as="geometry"/>
41
+ </mxCell>
42
+ <mxCell id="c1l-11" value="add encryption - https://youtu.be/ZmwNzod1trk?t=701" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
43
+ <mxGeometry x="10" y="250" width="300" height="60" as="geometry"/>
44
+ </mxCell>
45
+ <mxCell id="c1l-12" value="cli help support for diff" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_c1l">
46
+ <mxGeometry x="330" y="250" width="300" height="60" as="geometry"/>
47
+ </mxCell>
48
+ <mxCell id="c1l-13" 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_c1l">
49
+ <mxGeometry x="650" y="250" width="300" height="60" as="geometry"/>
50
+ </mxCell>
51
+ <mxCell id="c1l-14" 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_c1l">
52
+ <mxGeometry x="10" y="330" width="300" height="60" as="geometry"/>
53
+ </mxCell>
27
54
  </root>
28
55
  </mxGraphModel>
29
56
  </diagram>
30
- <diagram id="Oa0" name="Done">
57
+ <diagram id="oP6" name="Done">
31
58
  <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">
32
59
  <root>
33
- <mxCell id="page_root_Oa0" parent="Oa0"/>
34
- <mxCell id="node_root_Oa0" parent="page_root_Oa0"/>
35
- <mxCell id="Oa0-2" value="cli support for diff" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Oa0">
60
+ <mxCell id="page_root_oP6" parent="oP6"/>
61
+ <mxCell id="node_root_oP6" parent="page_root_oP6"/>
62
+ <mxCell id="oP6-2" value="add profile - tailwind_hotwire" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_oP6">
36
63
  <mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
37
64
  </mxCell>
38
- <mxCell id="Oa0-3" value="add diff tool - open in editor" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_Oa0">
65
+ <mxCell id="oP6-3" value="add profile - import_map" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_oP6">
39
66
  <mxGeometry x="330" y="10" width="300" height="60" as="geometry"/>
40
67
  </mxCell>
41
- <mxCell id="Oa0-4" 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_Oa0">
68
+ <mxCell id="oP6-4" value="profile - fix the bootstrap profile" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_oP6">
42
69
  <mxGeometry x="650" y="10" width="300" height="60" as="geometry"/>
43
70
  </mxCell>
44
- <mxCell id="Oa0-5" 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_Oa0">
71
+ <mxCell id="oP6-5" value="cli support for profile" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_oP6">
45
72
  <mxGeometry x="10" y="90" width="300" height="60" as="geometry"/>
46
73
  </mxCell>
74
+ <mxCell id="oP6-6" value="separate CLI methods into include modules" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_oP6">
75
+ <mxGeometry x="330" y="90" width="300" height="60" as="geometry"/>
76
+ </mxCell>
77
+ <mxCell id="oP6-7" value="cli support for diff" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_oP6">
78
+ <mxGeometry x="650" y="90" width="300" height="60" as="geometry"/>
79
+ </mxCell>
80
+ <mxCell id="oP6-8" value="add diff tool - open in editor" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#f8cecc;strokeColor=#b85450;fontColor=#333333" vertex="1" parent="node_root_oP6">
81
+ <mxGeometry x="10" y="170" width="300" height="60" as="geometry"/>
82
+ </mxCell>
83
+ <mxCell id="oP6-9" 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_oP6">
84
+ <mxGeometry x="330" y="170" width="300" height="60" as="geometry"/>
85
+ </mxCell>
86
+ <mxCell id="oP6-10" 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_oP6">
87
+ <mxGeometry x="650" y="170" width="300" height="60" as="geometry"/>
88
+ </mxCell>
47
89
  </root>
48
90
  </mxGraphModel>
49
91
  </diagram>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
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="942px" height="142px" viewBox="-0.5 -0.5 942 142"><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;">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="320" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.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: 321px;"><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 editor</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add diff tool - open in editor</text></switch></g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.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: 641px;"><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="790" 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="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 79 Q -1 79 -1 90.15 L -1 104 Q 150 122 301 104 L 301 90.15 Q 301 79 289.85 79 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: 110px; 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="114" 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>
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="942px" height="222px" viewBox="-0.5 -0.5 942 222"><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 profile - tailwind_hotwire</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - tailwind_hotwire</text></switch></g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.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: 321px;"><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 profile - import_map</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - import_map</text></switch></g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.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: 641px;"><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;">profile - fix the bootstrap profile</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">profile - fix the bootstrap profile</text></switch></g><rect x="0" y="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 79 Q -1 79 -1 90.15 L -1 104 Q 150 122 301 104 L 301 90.15 Q 301 79 289.85 79 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: 110px; 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="114" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">cli support for profile</text></switch></g><rect x="320" y="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 79 Q 319 79 319 90.15 L 319 104 Q 470 122 621 104 L 621 90.15 Q 621 79 609.85 79 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: 110px; margin-left: 321px;"><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;">separate CLI methods into include modules</div></div></div></foreignObject><text x="470" y="114" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">separate CLI methods into include modules</text></switch></g><rect x="640" y="80" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 79 Q 639 79 639 90.15 L 639 104 Q 790 122 941 104 L 941 90.15 Q 941 79 929.85 79 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: 110px; margin-left: 641px;"><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="790" y="114" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">cli support for diff</text></switch></g><rect x="0" y="160" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 10.15 159 Q -1 159 -1 170.15 L -1 184 Q 150 202 301 184 L 301 170.15 Q 301 159 289.85 159 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: 190px; 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 editor</div></div></div></foreignObject><text x="150" y="194" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add diff tool - open in editor</text></switch></g><rect x="320" y="160" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 330.15 159 Q 319 159 319 170.15 L 319 184 Q 470 202 621 184 L 621 170.15 Q 621 159 609.85 159 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: 190px; margin-left: 321px;"><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="470" y="194" 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="640" y="160" width="300" height="60" rx="9" ry="9" fill="#f8cecc" stroke="#b85450" pointer-events="all"/><path d="M 650.15 159 Q 639 159 639 170.15 L 639 184 Q 790 202 941 184 L 941 170.15 Q 941 159 929.85 159 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: 190px; margin-left: 641px;"><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="790" y="194" 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>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
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="#d5e8d4" stroke="#82b366" 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></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>
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="#d5e8d4" stroke="#82b366" 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 profile - import maps</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - import maps</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>
@@ -1,3 +1,3 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
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="942px" height="62px" viewBox="-0.5 -0.5 942 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 help support for diff</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">cli help support for diff</text></switch></g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.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: 321px;"><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="470" 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="640" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.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: 641px;"><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="790" 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>
3
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="942px" height="382px" viewBox="-0.5 -0.5 942 382"><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;">add auto open flag to profile and command line</div></div></div></foreignObject><text x="150" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add auto open flag to profile and command line</text></switch></g><rect x="320" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 -1 Q 319 -1 319 10.15 L 319 24 Q 470 42 621 24 L 621 10.15 Q 621 -1 609.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: 321px;"><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 profile - stimulas</div></div></div></foreignObject><text x="470" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - stimulas</text></switch></g><rect x="640" y="0" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 -1 Q 639 -1 639 10.15 L 639 24 Q 790 42 941 24 L 941 10.15 Q 941 -1 929.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: 641px;"><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 profile - hotwire</div></div></div></foreignObject><text x="790" y="34" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - hotwire</text></switch></g><rect x="0" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 79 Q -1 79 -1 90.15 L -1 104 Q 150 122 301 104 L 301 90.15 Q 301 79 289.85 79 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: 110px; 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 profile - turbo</div></div></div></foreignObject><text x="150" y="114" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - turbo</text></switch></g><rect x="320" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 79 Q 319 79 319 90.15 L 319 104 Q 470 122 621 104 L 621 90.15 Q 621 79 609.85 79 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: 110px; margin-left: 321px;"><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 profile - vue</div></div></div></foreignObject><text x="470" y="114" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - vue</text></switch></g><rect x="640" y="80" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 79 Q 639 79 639 90.15 L 639 104 Q 790 122 941 104 L 941 90.15 Q 941 79 929.85 79 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: 110px; margin-left: 641px;"><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 profile - svelte</div></div></div></foreignObject><text x="790" y="114" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - svelte</text></switch></g><rect x="0" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 159 Q -1 159 -1 170.15 L -1 184 Q 150 202 301 184 L 301 170.15 Q 301 159 289.85 159 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: 190px; 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 profile - react</div></div></div></foreignObject><text x="150" y="194" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - react</text></switch></g><rect x="320" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 159 Q 319 159 319 170.15 L 319 184 Q 470 202 621 184 L 621 170.15 Q 621 159 609.85 159 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: 190px; margin-left: 321px;"><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 profile - vite</div></div></div></foreignObject><text x="470" y="194" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - vite</text></switch></g><rect x="640" y="160" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 159 Q 639 159 639 170.15 L 639 184 Q 790 202 941 184 L 941 170.15 Q 941 159 929.85 159 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: 190px; margin-left: 641px;"><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 profile - docker</div></div></div></foreignObject><text x="790" y="194" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add profile - docker</text></switch></g><rect x="0" y="240" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 239 Q -1 239 -1 250.15 L -1 264 Q 150 282 301 264 L 301 250.15 Q 301 239 289.85 239 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: 270px; 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 encryption - https://youtu.be/ZmwNzod1trk?t=701</div></div></div></foreignObject><text x="150" y="274" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">add encryption - https://youtu.be/ZmwNzod1trk?t=701</text></switch></g><rect x="320" y="240" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 330.15 239 Q 319 239 319 250.15 L 319 264 Q 470 282 621 264 L 621 250.15 Q 621 239 609.85 239 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: 270px; margin-left: 321px;"><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 help support for diff</div></div></div></foreignObject><text x="470" y="274" fill="#333333" font-family="Helvetica" font-size="12px" text-anchor="middle">cli help support for diff</text></switch></g><rect x="640" y="240" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 650.15 239 Q 639 239 639 250.15 L 639 264 Q 790 282 941 264 L 941 250.15 Q 941 239 929.85 239 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: 270px; margin-left: 641px;"><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="790" y="274" 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="320" width="300" height="60" rx="9" ry="9" fill="#dae8fc" stroke="#6c8ebf" pointer-events="all"/><path d="M 10.15 319 Q -1 319 -1 330.15 L -1 344 Q 150 362 301 344 L 301 330.15 Q 301 319 289.85 319 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: 350px; 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="354" 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>
data/exe/rag CHANGED
@@ -9,62 +9,34 @@ $LOAD_PATH << source_path
9
9
 
10
10
  require 'rails_app_generator'
11
11
 
12
+ first = ARGV.first
13
+
12
14
  if ARGV.empty?
13
15
  puts 'Please provide a profile for the new application'
14
16
  puts
15
17
  puts 'See --help for more info'
16
- exit 0
17
- elsif %w[-v --version].include? ARGV[0]
18
+ elsif %w[-v --version].include?(first)
18
19
  puts RailsAppGenerator::VERSION
19
- exit 0
20
+ elsif first == 'diff'
21
+ RailsAppGenerator::Cli::Diff.start(ARGV)
22
+ elsif first == 'new'
23
+ puts 'TODO: NEW'
24
+
25
+ # # Use RAG with in the same way as the Rails generator (the following commands should be equivalent)
26
+ # # rails new args
27
+ # # rag new args
28
+ # if ARGV.first == 'new'
29
+ # # NOTE: This is not yet working
30
+ # RailsAppGenerator::Cli::Standard.start ARGV[1..]
31
+ # exit 0
32
+ # elsif !ARGV.first.nil?
33
+ # end
34
+
35
+ else
36
+ fallback_profile_path = File.expand_path("#{Pathname.new(__FILE__).dirname}/../profiles")
37
+ args = ['profile'] + ARGV + ["--fallback-profile-path=#{fallback_profile_path}"]
38
+
39
+ RailsAppGenerator::Cli::Profile.start(args)
20
40
  end
21
41
 
22
- RailsAppGenerator::Cli.start(ARGV)
23
-
24
42
  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
@@ -187,6 +187,10 @@ module RailsAppGenerator
187
187
  generate(:scaffold, name, *args)
188
188
  end
189
189
 
190
+ def bundle_add(name)
191
+ run("bundle add #{name}")
192
+ end
193
+
190
194
  def read_template(template_file)
191
195
  path = find_in_source_paths(template_file)
192
196
 
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ module Cli
5
+ # Folder Diff
6
+ class Diff < Thor
7
+ desc 'diff lhs_folder rhs_folder [options]', 'Diff two different rails folders'
8
+
9
+ # Run report to console for following options
10
+ option :show_left_only , type: :boolean
11
+ option :show_right_only , type: :boolean
12
+ option :show_same , type: :boolean
13
+ option :show_different , type: :boolean
14
+
15
+ # Open files in VSCode for for following options
16
+ option :open_left_only , type: :boolean
17
+ option :open_right_only , type: :boolean
18
+ option :open_same , type: :boolean
19
+ option :open_different , type: :boolean
20
+
21
+ # rubocop:disable Metrics/AbcSize
22
+ def diff(lhs_folder, rhs_folder)
23
+ # puts "Diffing #{lhs_folder} and #{rhs_folder}"
24
+ # puts JSON.pretty_generate(options)
25
+ processor = RailsAppGenerator::Diff::Processor.new(lhs_folder, rhs_folder)
26
+ compare_info = processor.compare
27
+
28
+ report = RailsAppGenerator::Diff::Report.new(
29
+ compare_info,
30
+ show_left_only: options[:show_left_only],
31
+ show_right_only: options[:show_right_only],
32
+ show_same: options[:show_same],
33
+ show_different: options[:show_different]
34
+ )
35
+ report.display
36
+
37
+ vscode = RailsAppGenerator::Diff::OpenInEditor.new(
38
+ compare_info,
39
+ open_left_only: options[:open_left_only],
40
+ open_right_only: options[:open_right_only],
41
+ open_same: options[:open_same],
42
+ open_different: options[:show_different]
43
+ )
44
+ vscode.open
45
+ end
46
+ # rubocop:enable Metrics/AbcSize
47
+ end
48
+ end
49
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RailsAppGenerator
4
+ module Cli
5
+ # Folder Diff
6
+ class Profile < Thor
7
+ desc 'xxx [options]', 'Create a new rails app based on a RAG profile'
8
+
9
+ option :profile_path , type: :string
10
+ option :fallback_profile_path , type: :string
11
+
12
+ # rubocop:disable Metrics/AbcSize
13
+ def profile(name)
14
+ path = options[:profile_path] || options[:fallback_profile_path]
15
+ profile_name = name.end_with?('.json') ? name : "#{name}.json"
16
+ profile_file = File.join(path, profile_name)
17
+
18
+ unless File.exist?(profile_file)
19
+ puts "Profile [#{profile_file}] not found"
20
+ exit 1
21
+ end
22
+
23
+ puts "Using profile #{profile_file}"
24
+
25
+ profile = JSON.parse(File.read(profile_file), symbolize_names: true)
26
+ args = profile[:args]
27
+ opts = RailsAppGenerator::RailsOptions.new(profile[:opts])
28
+
29
+ starter = RailsAppGenerator::Starter.new(args)
30
+
31
+ starter.delete_target_folder
32
+ starter.start(opts)
33
+ end
34
+ # rubocop:enable Metrics/AbcSize
35
+ end
36
+ end
37
+ end
@@ -8,7 +8,10 @@ module RailsAppGenerator
8
8
  attr_reader :rhs_path
9
9
 
10
10
  DEFAULT_EXCLUSION = lambda do |_file, relative_file|
11
- relative_file.start_with?('tmp') || relative_file.start_with?('node_modules')
11
+ relative_file.start_with?('tmp') ||
12
+ relative_file.start_with?('node_modules') ||
13
+ relative_file.start_with?('log') ||
14
+ relative_file == 'Gemfile.lock'
12
15
  end
13
16
 
14
17
  def initialize(lhs_path, rhs_path)
@@ -14,7 +14,7 @@ module RailsAppGenerator
14
14
  def initialize(compare_info, **opts)
15
15
  @info = compare_info
16
16
 
17
- @show_left_only = opts[:show_left_only].nil? ? false : opts[:show_left_only]
17
+ @show_left_only = opts[:show_left_only].nil? ? true : opts[:show_left_only]
18
18
  @show_right_only = opts[:show_right_only].nil? ? true : opts[:show_right_only]
19
19
  @show_same = opts[:show_same].nil? ? false : opts[:show_same]
20
20
  @show_different = opts[:show_different].nil? ? true : opts[:show_different]
@@ -56,6 +56,10 @@ module RailsAppGenerator
56
56
  end
57
57
  end
58
58
 
59
+ def delete_target_folder
60
+ FileUtils.rm_rf(target_path)
61
+ end
62
+
59
63
  private
60
64
 
61
65
  def capture_console
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsAppGenerator
4
- VERSION = '0.0.15'
4
+ VERSION = '0.1.2'
5
5
  end
@@ -8,7 +8,8 @@ require 'rails/generators/rails/app/app_generator'
8
8
  require 'bundler'
9
9
 
10
10
  require 'rails_app_generator/version'
11
- require 'rails_app_generator/cli'
11
+ require 'rails_app_generator/cli/diff'
12
+ require 'rails_app_generator/cli/profile'
12
13
  require 'rails_app_generator/util'
13
14
  require 'rails_app_generator/diff/file_pair'
14
15
  require 'rails_app_generator/diff/compare_info'
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "rails_app_generator",
3
- "version": "0.0.15",
3
+ "version": "0.1.2",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "rails_app_generator",
9
- "version": "0.0.15",
9
+ "version": "0.1.2",
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.15",
3
+ "version": "0.1.2",
4
4
  "description": "Create new Rails Application with custom opinions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
@@ -0,0 +1,11 @@
1
+ {
2
+ "args": {
3
+ "app_path": "import_map",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
5
+ },
6
+ "opts": {
7
+ "skip_test": true,
8
+ "skip_javascript": true,
9
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/rag_import_map.rb"
10
+ }
11
+ }
@@ -4,7 +4,7 @@
4
4
  "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
5
5
  },
6
6
  "opts": {
7
- "skip_git": true,
7
+ "skip_test": true,
8
8
  "skip_bundle": true,
9
9
  "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/rag_simple.rb"
10
10
  }
@@ -0,0 +1,12 @@
1
+ {
2
+ "args": {
3
+ "app_path": "tailwind_hotwire",
4
+ "destination_root": "/Users/davidcruwys/dev/kgems/rails_app_generator/a/rag"
5
+ },
6
+ "opts": {
7
+ "skip_test": true,
8
+ "template": "/Users/davidcruwys/dev/kgems/rails_app_generator/after_templates/rag_tailwind_hotwire.rb",
9
+ "css": "tailwind",
10
+ "javascript": "esbuild"
11
+ }
12
+ }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails_app_generator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.15
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
@@ -146,8 +146,6 @@ files:
146
146
  - README.md
147
147
  - Rakefile
148
148
  - after_templates/README.md
149
- - after_templates/___base_template.rb
150
- - after_templates/___r7_hotwire.rb
151
149
  - after_templates/rag_bootstrap.rb
152
150
  - after_templates/rag_bootstrap/application-yield.html.erb
153
151
  - after_templates/rag_bootstrap/application.html.erb
@@ -158,11 +156,16 @@ files:
158
156
  - after_templates/rag_bootstrap/component-cards-styled.html
159
157
  - after_templates/rag_bootstrap/component-footer.html
160
158
  - after_templates/rag_bootstrap/component-hero.html
159
+ - after_templates/rag_bootstrap/component-modal.html
161
160
  - after_templates/rag_bootstrap/component-nav.html
162
161
  - after_templates/rag_bootstrap/custom-bootstrap-import.scss
163
162
  - after_templates/rag_bootstrap/custom-using-css.css
164
163
  - after_templates/rag_bootstrap/custom-using-scss.scss
165
164
  - after_templates/rag_bootstrap/manifest.js
165
+ - after_templates/rag_import_map.rb
166
+ - after_templates/rag_import_map/component-sortable.html
167
+ - after_templates/rag_import_map/home.css
168
+ - after_templates/rag_import_map/position_controller.js
166
169
  - after_templates/rag_simple.rb
167
170
  - after_templates/rag_tailwind.rb
168
171
  - after_templates/rag_tailwind/component-cta.html
@@ -172,6 +175,11 @@ files:
172
175
  - after_templates/rag_tailwind/component-nav.html
173
176
  - after_templates/rag_tailwind/component-section-begin.html
174
177
  - after_templates/rag_tailwind/component-section-end.html
178
+ - after_templates/rag_tailwind_hotwire.rb
179
+ - after_templates/rag_tailwind_hotwire/home/controller.rb
180
+ - after_templates/rag_tailwind_hotwire/home/helper.rb
181
+ - after_templates/rag_tailwind_hotwire/home/increment.html.erb
182
+ - after_templates/rag_tailwind_hotwire/home/index.html
175
183
  - bin/console
176
184
  - bin/setup
177
185
  - docs/project-plan.md
@@ -207,7 +215,8 @@ files:
207
215
  - lib/rails_app_generator/addons/views.rb
208
216
  - lib/rails_app_generator/app_builder.rb
209
217
  - lib/rails_app_generator/app_generator.rb
210
- - lib/rails_app_generator/cli.rb
218
+ - lib/rails_app_generator/cli/diff.rb
219
+ - lib/rails_app_generator/cli/profile.rb
211
220
  - lib/rails_app_generator/context.rb
212
221
  - lib/rails_app_generator/dependencies.rb
213
222
  - lib/rails_app_generator/diff/compare_info.rb
@@ -243,7 +252,9 @@ files:
243
252
  - package.json
244
253
  - profiles/rag-add-some-pages.json
245
254
  - profiles/rag-bootstrap.json
255
+ - profiles/rag-import-map.json
246
256
  - profiles/rag-simple.json
257
+ - profiles/rag-tailwind-hotwire.json
247
258
  - profiles/rag-tailwind.json
248
259
  - sig/rails_app_generator.rbs
249
260
  - templates/README.md.erb
@@ -1 +0,0 @@
1
- # frozen_string_literal: true
@@ -1 +0,0 @@
1
- # frozen_string_literal: true
@@ -1,64 +0,0 @@
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
-
8
- # Run report to console for following options
9
- option :show_left_only , type: :boolean
10
- option :show_right_only , type: :boolean
11
- option :show_same , type: :boolean
12
- option :show_different , type: :boolean
13
-
14
- # Open files in VSCode for for following options
15
- option :open_left_only , type: :boolean
16
- option :open_right_only , type: :boolean
17
- option :open_same , type: :boolean
18
- option :open_different , type: :boolean
19
-
20
- # rubocop:disable Metrics/AbcSize
21
- def diff(lhs_folder, rhs_folder)
22
- # puts "Diffing #{lhs_folder} and #{rhs_folder}"
23
- # puts JSON.pretty_generate(options)
24
- processor = RailsAppGenerator::Diff::Processor.new(lhs_folder, rhs_folder)
25
- compare_info = processor.compare
26
-
27
- report = RailsAppGenerator::Diff::Report.new(
28
- compare_info,
29
- show_left_only: options[:show_left_only],
30
- show_right_only: options[:show_right_only],
31
- show_same: options[:show_same],
32
- show_different: options[:show_different]
33
- )
34
- report.display
35
-
36
- vscode = RailsAppGenerator::Diff::OpenInEditor.new(
37
- compare_info,
38
- open_left_only: options[:open_left_only],
39
- open_right_only: options[:open_right_only],
40
- open_same: options[:open_same],
41
- open_different: options[:show_different]
42
- )
43
- vscode.open
44
- end
45
- # rubocop:enable Metrics/AbcSize
46
-
47
- # def initialize(profile_file)
48
- # @profile_file = profile_file
49
- # end
50
-
51
- # def run
52
- # puts "Using profile #{profile_file}"
53
-
54
- # profile = JSON.parse(File.read(profile_file), symbolize_names: true)
55
- # args = profile[:args]
56
- # opts = profile[:opts]
57
- # rails_options = RailsAppGenerator::RailsOptions.new(opts)
58
-
59
- # instance = RailsAppGenerator::Starter.new(args)
60
- # FileUtils.rm_rf(instance.target_path)
61
- # instance.start(rails_options)
62
- # end
63
- end
64
- end