rails_app_generator 0.0.9 → 0.0.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.builders/generators/project-plan.rb +6 -8
- data/CHANGELOG.md +23 -0
- data/docs/project-plan/project.drawio +20 -26
- data/docs/project-plan/project_done.svg +1 -1
- data/docs/project-plan/project_in_progress.svg +1 -1
- data/docs/project-plan/project_todo.svg +1 -1
- data/exe/rag +49 -20
- data/lib/rails_app_generator/cli.rb +40 -0
- data/lib/rails_app_generator/diff/compare_info.rb +121 -0
- data/lib/rails_app_generator/diff/file_pair.rb +18 -0
- data/lib/rails_app_generator/diff/open_in_editor.rb +39 -0
- data/lib/rails_app_generator/diff/processor.rb +52 -0
- data/lib/rails_app_generator/diff/report.rb +38 -0
- data/lib/rails_app_generator/starter.rb +0 -11
- data/lib/rails_app_generator/util.rb +26 -0
- data/lib/rails_app_generator/version.rb +1 -1
- data/lib/rails_app_generator.rb +7 -8
- data/package-lock.json +2 -2
- data/package.json +1 -1
- metadata +9 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0470af9a31da0f8b53b53c9fb7f4dbe832ecd8d778adea006047d933e17e056f
|
|
4
|
+
data.tar.gz: b4889acbaaaa9fb37af410fedd68a3368213e40efdf7af72d81d47b28a6ec7a2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d1de0b5079f06786e8872ee9302fb25a020c58d6c5b82b82759800c439c48627f32fd3db642a7fcc1b1df821fdc97385b951824248ca6da9d87cebc24d86deed
|
|
7
|
+
data.tar.gz: 7e885bdbf52d97ef963a45a57cca5f4ff557434ba0c93dd5699bfe69d60329257901bf07f22bd381ecb10ef8f50b45a2d9d1c0c5a40a8c0e2d1188a775f50c2f
|
|
@@ -10,20 +10,17 @@ KManager.action :project_plan do
|
|
|
10
10
|
|
|
11
11
|
grid_layout(y: 90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
|
12
12
|
|
|
13
|
-
todo(title: '')
|
|
13
|
+
todo(title: 'add diff tool open in vscode option')
|
|
14
14
|
end
|
|
15
15
|
.page('To Do', theme: :style_02, margin_left: 0, margin_top: 0) do
|
|
16
16
|
|
|
17
17
|
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
|
18
18
|
# p(x: 350, y: 40, w: 400, h: 80, title: 'Project plan')
|
|
19
19
|
|
|
20
|
-
todo(title: '
|
|
21
|
-
todo(title: '
|
|
22
|
-
todo(title: '
|
|
23
|
-
todo(title: '
|
|
24
|
-
todo(title: 'add diff tool open in vscode option')
|
|
25
|
-
todo(title: 'rag new should work like rails new')
|
|
26
|
-
todo(title: 'rag profile is the default option')
|
|
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)
|
|
27
24
|
|
|
28
25
|
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
|
29
26
|
|
|
@@ -33,6 +30,7 @@ KManager.action :project_plan do
|
|
|
33
30
|
# h5(x: 300, y: 0, w: 400, h: 80, title: 'DrawIO DSL')
|
|
34
31
|
# p(x: 350, y: 40, w: 400, h: 80, title: 'Done')
|
|
35
32
|
|
|
33
|
+
todo(title: 'add diff tool supporting lhs only, rhs only, same and different')
|
|
36
34
|
todo(title: 'add project plan to do list')
|
|
37
35
|
|
|
38
36
|
grid_layout(y:90, direction: :horizontal, grid_h: 80, grid_w: 320, wrap_at: 3, grid: 0)
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,26 @@
|
|
|
1
|
+
## [0.0.11](https://github.com/klueless-io/rails_app_generator/compare/v0.0.10...v0.0.11) (2022-07-25)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Bug Fixes
|
|
5
|
+
|
|
6
|
+
* add support for FilePairs in diff tool ([e330e1c](https://github.com/klueless-io/rails_app_generator/commit/e330e1c3db06ac2710893a3909f36af290727b57))
|
|
7
|
+
|
|
8
|
+
## [0.0.10](https://github.com/klueless-io/rails_app_generator/compare/v0.0.9...v0.0.10) (2022-07-25)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Bug Fixes
|
|
12
|
+
|
|
13
|
+
* add diff processor ([edd86a3](https://github.com/klueless-io/rails_app_generator/commit/edd86a3657ec83c566f84cd965820d780a2a1c43))
|
|
14
|
+
* fix gha specs ([6ae95de](https://github.com/klueless-io/rails_app_generator/commit/6ae95de2e53e77590375c3a9863a78744b38fa30))
|
|
15
|
+
* fix gha specs ([c7504f9](https://github.com/klueless-io/rails_app_generator/commit/c7504f97ddf25011a887b7b6ec4b0235e6dbd16d))
|
|
16
|
+
|
|
17
|
+
## [0.0.9](https://github.com/klueless-io/rails_app_generator/compare/v0.0.8...v0.0.9) (2022-07-24)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### Bug Fixes
|
|
21
|
+
|
|
22
|
+
* add project plan ([1c47e0f](https://github.com/klueless-io/rails_app_generator/commit/1c47e0fa82b7b184d63fab8c2363416587d4c66d))
|
|
23
|
+
|
|
1
24
|
## [0.0.8](https://github.com/klueless-io/rails_app_generator/compare/v0.0.7...v0.0.8) (2022-07-24)
|
|
2
25
|
|
|
3
26
|
|
|
@@ -1,53 +1,47 @@
|
|
|
1
|
-
<mxfile host="
|
|
2
|
-
<diagram id="
|
|
1
|
+
<mxfile host="x0A">
|
|
2
|
+
<diagram id="Oq8" 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="
|
|
6
|
-
<mxCell id="
|
|
7
|
-
<mxCell id="
|
|
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
8
|
<mxGeometry x="300" y="0" width="400" height="80" as="geometry"/>
|
|
9
9
|
</mxCell>
|
|
10
|
-
<mxCell id="
|
|
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
11
|
<mxGeometry x="10" y="10" width="300" height="60" as="geometry"/>
|
|
12
12
|
</mxCell>
|
|
13
13
|
</root>
|
|
14
14
|
</mxGraphModel>
|
|
15
15
|
</diagram>
|
|
16
|
-
<diagram id="
|
|
16
|
+
<diagram id="Ip4" name="To Do">
|
|
17
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
18
|
<root>
|
|
19
|
-
<mxCell id="
|
|
20
|
-
<mxCell id="
|
|
21
|
-
<mxCell id="
|
|
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
22
|
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
23
23
|
</mxCell>
|
|
24
|
-
<mxCell id="
|
|
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
25
|
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
26
26
|
</mxCell>
|
|
27
|
-
<mxCell id="
|
|
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
28
|
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
29
29
|
</mxCell>
|
|
30
|
-
<mxCell id="
|
|
31
|
-
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
32
|
-
</mxCell>
|
|
33
|
-
<mxCell id="U3w-5" value="add diff tool open in vscode option" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_U3w">
|
|
34
|
-
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
35
|
-
</mxCell>
|
|
36
|
-
<mxCell id="U3w-6" value="rag new should work like rails new" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_U3w">
|
|
37
|
-
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
38
|
-
</mxCell>
|
|
39
|
-
<mxCell id="U3w-7" value="rag profile is the default option" style="whiteSpace=wrap;html=1;rounded=1;glass=1;fillColor=#dae8fc;strokeColor=#6c8ebf;fontColor=#333333" vertex="1" parent="node_root_U3w">
|
|
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">
|
|
40
31
|
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
41
32
|
</mxCell>
|
|
42
33
|
</root>
|
|
43
34
|
</mxGraphModel>
|
|
44
35
|
</diagram>
|
|
45
|
-
<diagram id="
|
|
36
|
+
<diagram id="YZE" name="Done">
|
|
46
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">
|
|
47
38
|
<root>
|
|
48
|
-
<mxCell id="
|
|
49
|
-
<mxCell id="
|
|
50
|
-
<mxCell id="
|
|
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">
|
|
51
45
|
<mxGeometry x="0" y="0" width="300" height="60" as="geometry"/>
|
|
52
46
|
</mxCell>
|
|
53
47
|
</root>
|
|
@@ -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="#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>
|
|
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>
|
|
@@ -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="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"
|
|
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>
|
|
@@ -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="#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;">
|
|
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>
|
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
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
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,39 @@
|
|
|
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(info.lhs_only) if open_left_only
|
|
25
|
+
open_files(info.rhs_only) if open_right_only
|
|
26
|
+
open_files(info.same) if open_same
|
|
27
|
+
open_files(info.diff) if open_different
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def open_files(files)
|
|
33
|
+
files.map do |f|
|
|
34
|
+
system("code --diff #{f.lhs_absolute_file} #{f.rhs_absolute_file}")
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
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
|
|
@@ -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
|
data/lib/rails_app_generator.rb
CHANGED
|
@@ -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.
|
|
3
|
+
"version": "0.0.12",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "rails_app_generator",
|
|
9
|
-
"version": "0.0.
|
|
9
|
+
"version": "0.0.12",
|
|
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
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.
|
|
4
|
+
version: 0.0.12
|
|
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-
|
|
11
|
+
date: 2022-07-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bootsnap
|
|
@@ -207,8 +207,14 @@ files:
|
|
|
207
207
|
- lib/rails_app_generator/addons/views.rb
|
|
208
208
|
- lib/rails_app_generator/app_builder.rb
|
|
209
209
|
- lib/rails_app_generator/app_generator.rb
|
|
210
|
+
- lib/rails_app_generator/cli.rb
|
|
210
211
|
- lib/rails_app_generator/context.rb
|
|
211
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
|
|
212
218
|
- lib/rails_app_generator/generators/advisories_generator.rb
|
|
213
219
|
- lib/rails_app_generator/generators/base.rb
|
|
214
220
|
- lib/rails_app_generator/generators/foo_generator.rb
|
|
@@ -231,6 +237,7 @@ files:
|
|
|
231
237
|
- lib/rails_app_generator/options/options_builder.rb
|
|
232
238
|
- lib/rails_app_generator/options/rails_options.rb
|
|
233
239
|
- lib/rails_app_generator/starter.rb
|
|
240
|
+
- lib/rails_app_generator/util.rb
|
|
234
241
|
- lib/rails_app_generator/version.rb
|
|
235
242
|
- package-lock.json
|
|
236
243
|
- package.json
|