mt_tool 0.1.2 → 0.1.5

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.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/.idea/mt_tool.iml +81 -49
  3. data/.idea/sonarlint/issuestore/4/7/4745e92ab1b53af3e65026337909045741e13bea +0 -0
  4. data/.idea/sonarlint/issuestore/5/2/5283f86f6adbda087dceb47c69b64e141dfb1e93 +0 -0
  5. data/.idea/sonarlint/issuestore/7/0/70213f721c971c9a12d0f46060f7ee2a087b4a96 +0 -0
  6. data/.idea/sonarlint/issuestore/b/5/b53eec12e0ab8df9876dbc7fe65915bb985c4f72 +0 -0
  7. data/.idea/sonarlint/issuestore/e/8/e84cc700d4480c1d3ca7dcc158063e40a25cee12 +0 -0
  8. data/.idea/sonarlint/issuestore/f/8/f80e2edcdaf9ddf9362d26f7fa5d19df422f29c7 +0 -0
  9. data/.idea/sonarlint/issuestore/index.pb +13 -0
  10. data/Gemfile.lock +7 -3
  11. data/README.md +18 -7
  12. data/img/69786f8e2a527b8c26f2c1311e230e5f.webp.png +0 -0
  13. data/img/SCR-20240619-msnz.png +0 -0
  14. data/lib/mt_tool/commands.rb +27 -214
  15. data/lib/mt_tool/module/module.rb +275 -0
  16. data/lib/mt_tool/module/template/objc/Bundle.h +21 -0
  17. data/lib/mt_tool/module/template/objc/Bundle.m +28 -0
  18. data/lib/mt_tool/{template → module/template}/objc/CategoryHeader.h +1 -0
  19. data/lib/mt_tool/{template → module/template}/objc/PrefixHeader.pch +6 -0
  20. data/lib/mt_tool/{template → module/template}/objc/ToolsHeader.h +1 -1
  21. data/lib/mt_tool/module/template/swift/Entity.swift +15 -0
  22. data/lib/mt_tool/module/template/swift/Interactor.swift +16 -0
  23. data/lib/mt_tool/module/template/swift/Presenter.swift +28 -0
  24. data/lib/mt_tool/module/template/swift/Router.swift +50 -0
  25. data/lib/mt_tool/module/template/swift/ViewController.swift +97 -0
  26. data/lib/mt_tool/oc_model/main.rb +112 -0
  27. data/lib/mt_tool/oc_model/oc_model.rb +235 -0
  28. data/lib/mt_tool/oc_model/sample.json +11 -0
  29. data/lib/mt_tool/short_hand/objc_generate_from_shorthand.rb +182 -0
  30. data/lib/mt_tool/short_hand/objc_header.mustache +41 -0
  31. data/lib/mt_tool/short_hand/objc_implementation.mustache +99 -0
  32. data/lib/mt_tool/short_hand/objc_shorthand.rb +64 -0
  33. data/lib/mt_tool/version.rb +1 -1
  34. data/mt_tool.gemspec +3 -1
  35. metadata +84 -19
  36. data/lib/mt_tool/analyze.rb +0 -126
  37. /data/lib/mt_tool/{template → module/template}/objc/RouterDefine.h +0 -0
  38. /data/lib/mt_tool/{template → module/template}/objc/RouterRegister.h +0 -0
  39. /data/lib/mt_tool/{template → module/template}/objc/RouterRegister.m +0 -0
  40. /data/lib/mt_tool/{template → module/template}/objc/ServiceProtocol.h +0 -0
  41. /data/lib/mt_tool/{template → module/template}/objc/ServiceRegister.h +0 -0
  42. /data/lib/mt_tool/{template → module/template}/objc/ServiceRegister.m +0 -0
  43. /data/lib/mt_tool/{template → module/template}/objc/VendorHeader.h +0 -0
  44. /data/lib/mt_tool/{template → module/template}/objc/demo/DemoViewController.h +0 -0
  45. /data/lib/mt_tool/{template → module/template}/objc/demo/DemoViewController.m +0 -0
  46. /data/lib/mt_tool/{template → module/template}/objc/demo/DemoViewModel.h +0 -0
  47. /data/lib/mt_tool/{template → module/template}/objc/demo/DemoViewModel.m +0 -0
  48. /data/lib/mt_tool/{template → module/template}/swift/RouterDefine.swift +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 466b8868490b3f9b799559c3c4213b3ca4ab91f2a87dbc5df5d7db34091be194
4
- data.tar.gz: 712bdb6715c3cd7213652f3104c6ed4b285c5ddb903bbbd0a5cec22c7bd3ba74
3
+ metadata.gz: 7eeca6fee7bb5bc02cf6b281ce04c8da18558905941f1a7513d6856e95b32196
4
+ data.tar.gz: 24c54d8d84e44111c10c59c6c4fa6b8dc310d4d7476f783f7cf4ffcaa2081af9
5
5
  SHA512:
6
- metadata.gz: 46c1cb718b27f665c220c0f1341f3cf2b686f7d4181565594d7b9426f00b5e5053dc73ac51574cfebe575b5895fdb70245f3daa0db0a350a87a8466bfdb14b24
7
- data.tar.gz: 61ad9301171acc6fc238570114d9d597d56a09fa047d40feebdf7d8baac38eeb54f4f6efc68e5c0d97f37a8f24b1f1c95e7d774cbb832269415c0de0a29a5471
6
+ metadata.gz: fb3f3a03a6164a4741ad8287063855f8f660dfc51d7cbe688a3123d36f52c3880ab7c6ed1894aa08b2fd9ad386ea39b114758cb16cffd659dbcde2ba307edc6f
7
+ data.tar.gz: dc821d39412af58a762319d7e1aa378f58a478a09a440cc4b8d4ec7cd353694e6b23c911d1938d4304e95c39562039c76d730aac892d20b62cea8584970936bd
data/.idea/mt_tool.iml CHANGED
@@ -9,55 +9,87 @@
9
9
  <sourceFolder url="file://$MODULE_DIR$/spec" isTestSource="true" />
10
10
  <sourceFolder url="file://$MODULE_DIR$/test" isTestSource="true" />
11
11
  </content>
12
- <orderEntry type="inheritedJdk" />
12
+ <orderEntry type="jdk" jdkName="ruby-3.1.0-p0" jdkType="RUBY_SDK" />
13
13
  <orderEntry type="sourceFolder" forTests="false" />
14
- <orderEntry type="library" scope="PROVIDED" name="CFPropertyList (v3.0.5, RVM: ruby-2.7.2) [gem]" level="application" />
15
- <orderEntry type="library" scope="PROVIDED" name="activesupport (v6.1.5, RVM: ruby-2.7.2) [gem]" level="application" />
16
- <orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.0, RVM: ruby-2.7.2) [gem]" level="application" />
17
- <orderEntry type="library" scope="PROVIDED" name="algoliasearch (v1.27.5, RVM: ruby-2.7.2) [gem]" level="application" />
18
- <orderEntry type="library" scope="PROVIDED" name="atomos (v0.1.3, RVM: ruby-2.7.2) [gem]" level="application" />
19
- <orderEntry type="library" scope="PROVIDED" name="bundler (v2.3.11, RVM: ruby-2.7.2) [gem]" level="application" />
20
- <orderEntry type="library" scope="PROVIDED" name="claide (v1.1.0, RVM: ruby-2.7.2) [gem]" level="application" />
21
- <orderEntry type="library" scope="PROVIDED" name="cocoapods (v1.11.3, RVM: ruby-2.7.2) [gem]" level="application" />
22
- <orderEntry type="library" scope="PROVIDED" name="cocoapods-core (v1.11.3, RVM: ruby-2.7.2) [gem]" level="application" />
23
- <orderEntry type="library" scope="PROVIDED" name="cocoapods-deintegrate (v1.0.5, RVM: ruby-2.7.2) [gem]" level="application" />
24
- <orderEntry type="library" scope="PROVIDED" name="cocoapods-downloader (v1.6.3, RVM: ruby-2.7.2) [gem]" level="application" />
25
- <orderEntry type="library" scope="PROVIDED" name="cocoapods-plugins (v1.0.0, RVM: ruby-2.7.2) [gem]" level="application" />
26
- <orderEntry type="library" scope="PROVIDED" name="cocoapods-search (v1.0.1, RVM: ruby-2.7.2) [gem]" level="application" />
27
- <orderEntry type="library" scope="PROVIDED" name="cocoapods-trunk (v1.6.0, RVM: ruby-2.7.2) [gem]" level="application" />
28
- <orderEntry type="library" scope="PROVIDED" name="cocoapods-try (v1.2.0, RVM: ruby-2.7.2) [gem]" level="application" />
29
- <orderEntry type="library" scope="PROVIDED" name="colored (v1.2, RVM: ruby-2.7.2) [gem]" level="application" />
30
- <orderEntry type="library" scope="PROVIDED" name="colored2 (v3.1.2, RVM: ruby-2.7.2) [gem]" level="application" />
31
- <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.10, RVM: ruby-2.7.2) [gem]" level="application" />
32
- <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, RVM: ruby-2.7.2) [gem]" level="application" />
33
- <orderEntry type="library" scope="PROVIDED" name="escape (v0.0.4, RVM: ruby-2.7.2) [gem]" level="application" />
34
- <orderEntry type="library" scope="PROVIDED" name="ethon (v0.15.0, RVM: ruby-2.7.2) [gem]" level="application" />
35
- <orderEntry type="library" scope="PROVIDED" name="ffi (v1.15.5, RVM: ruby-2.7.2) [gem]" level="application" />
36
- <orderEntry type="library" scope="PROVIDED" name="fourflusher (v2.3.1, RVM: ruby-2.7.2) [gem]" level="application" />
37
- <orderEntry type="library" scope="PROVIDED" name="fuzzy_match (v2.0.4, RVM: ruby-2.7.2) [gem]" level="application" />
38
- <orderEntry type="library" scope="PROVIDED" name="gh_inspector (v1.1.3, RVM: ruby-2.7.2) [gem]" level="application" />
39
- <orderEntry type="library" scope="PROVIDED" name="httpclient (v2.8.3, RVM: ruby-2.7.2) [gem]" level="application" />
40
- <orderEntry type="library" scope="PROVIDED" name="i18n (v1.10.0, RVM: ruby-2.7.2) [gem]" level="application" />
41
- <orderEntry type="library" scope="PROVIDED" name="json (v2.6.1, RVM: ruby-2.7.2) [gem]" level="application" />
42
- <orderEntry type="library" scope="PROVIDED" name="minitest (v5.15.0, RVM: ruby-2.7.2) [gem]" level="application" />
43
- <orderEntry type="library" scope="PROVIDED" name="molinillo (v0.8.0, RVM: ruby-2.7.2) [gem]" level="application" />
44
- <orderEntry type="library" scope="PROVIDED" name="nanaimo (v0.3.0, RVM: ruby-2.7.2) [gem]" level="application" />
45
- <orderEntry type="library" scope="PROVIDED" name="nap (v1.1.0, RVM: ruby-2.7.2) [gem]" level="application" />
46
- <orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, RVM: ruby-2.7.2) [gem]" level="application" />
47
- <orderEntry type="library" scope="PROVIDED" name="pathname (v0.2.0, RVM: ruby-2.7.2) [gem]" level="application" />
48
- <orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.7, RVM: ruby-2.7.2) [gem]" level="application" />
49
- <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, RVM: ruby-2.7.2) [gem]" level="application" />
50
- <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, RVM: ruby-2.7.2) [gem]" level="application" />
51
- <orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, RVM: ruby-2.7.2) [gem]" level="application" />
52
- <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, RVM: ruby-2.7.2) [gem]" level="application" />
53
- <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, RVM: ruby-2.7.2) [gem]" level="application" />
54
- <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.1, RVM: ruby-2.7.2) [gem]" level="application" />
55
- <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, RVM: ruby-2.7.2) [gem]" level="application" />
56
- <orderEntry type="library" scope="PROVIDED" name="ruby-macho (v2.5.1, RVM: ruby-2.7.2) [gem]" level="application" />
57
- <orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, RVM: ruby-2.7.2) [gem]" level="application" />
58
- <orderEntry type="library" scope="PROVIDED" name="typhoeus (v1.4.0, RVM: ruby-2.7.2) [gem]" level="application" />
59
- <orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.4, RVM: ruby-2.7.2) [gem]" level="application" />
60
- <orderEntry type="library" scope="PROVIDED" name="xcodeproj (v1.21.0, RVM: ruby-2.7.2) [gem]" level="application" />
61
- <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.5.4, RVM: ruby-2.7.2) [gem]" level="application" />
14
+ <orderEntry type="library" scope="PROVIDED" name="CFPropertyList (v3.0.5, ruby-3.1.0-p0) [gem]" level="application" />
15
+ <orderEntry type="library" scope="PROVIDED" name="activesupport (v6.1.6, ruby-3.1.0-p0) [gem]" level="application" />
16
+ <orderEntry type="library" scope="PROVIDED" name="addressable (v2.8.0, ruby-3.1.0-p0) [gem]" level="application" />
17
+ <orderEntry type="library" scope="PROVIDED" name="algoliasearch (v1.27.5, ruby-3.1.0-p0) [gem]" level="application" />
18
+ <orderEntry type="library" scope="PROVIDED" name="atomos (v0.1.3, ruby-3.1.0-p0) [gem]" level="application" />
19
+ <orderEntry type="library" scope="PROVIDED" name="bundler (v2.3.11, ruby-3.1.0-p0) [gem]" level="application" />
20
+ <orderEntry type="library" scope="PROVIDED" name="claide (v1.1.0, ruby-3.1.0-p0) [gem]" level="application" />
21
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods (v1.11.3, ruby-3.1.0-p0) [gem]" level="application" />
22
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-core (v1.11.3, ruby-3.1.0-p0) [gem]" level="application" />
23
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-deintegrate (v1.0.5, ruby-3.1.0-p0) [gem]" level="application" />
24
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-downloader (v1.6.3, ruby-3.1.0-p0) [gem]" level="application" />
25
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-plugins (v1.0.0, ruby-3.1.0-p0) [gem]" level="application" />
26
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-search (v1.0.1, ruby-3.1.0-p0) [gem]" level="application" />
27
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-trunk (v1.6.0, ruby-3.1.0-p0) [gem]" level="application" />
28
+ <orderEntry type="library" scope="PROVIDED" name="cocoapods-try (v1.2.0, ruby-3.1.0-p0) [gem]" level="application" />
29
+ <orderEntry type="library" scope="PROVIDED" name="colored (v1.2, ruby-3.1.0-p0) [gem]" level="application" />
30
+ <orderEntry type="library" scope="PROVIDED" name="colored2 (v3.1.2, ruby-3.1.0-p0) [gem]" level="application" />
31
+ <orderEntry type="library" scope="PROVIDED" name="concurrent-ruby (v1.1.10, ruby-3.1.0-p0) [gem]" level="application" />
32
+ <orderEntry type="library" scope="PROVIDED" name="diff-lcs (v1.5.0, ruby-3.1.0-p0) [gem]" level="application" />
33
+ <orderEntry type="library" scope="PROVIDED" name="escape (v0.0.4, ruby-3.1.0-p0) [gem]" level="application" />
34
+ <orderEntry type="library" scope="PROVIDED" name="ethon (v0.15.0, ruby-3.1.0-p0) [gem]" level="application" />
35
+ <orderEntry type="library" scope="PROVIDED" name="ffi (v1.15.5, ruby-3.1.0-p0) [gem]" level="application" />
36
+ <orderEntry type="library" scope="PROVIDED" name="fourflusher (v2.3.1, ruby-3.1.0-p0) [gem]" level="application" />
37
+ <orderEntry type="library" scope="PROVIDED" name="fuzzy_match (v2.0.4, ruby-3.1.0-p0) [gem]" level="application" />
38
+ <orderEntry type="library" scope="PROVIDED" name="gh_inspector (v1.1.3, ruby-3.1.0-p0) [gem]" level="application" />
39
+ <orderEntry type="library" scope="PROVIDED" name="httpclient (v2.8.3, ruby-3.1.0-p0) [gem]" level="application" />
40
+ <orderEntry type="library" scope="PROVIDED" name="i18n (v1.10.0, ruby-3.1.0-p0) [gem]" level="application" />
41
+ <orderEntry type="library" scope="PROVIDED" name="json (v2.6.2, ruby-3.1.0-p0) [gem]" level="application" />
42
+ <orderEntry type="library" scope="PROVIDED" name="minitest (v5.15.0, ruby-3.1.0-p0) [gem]" level="application" />
43
+ <orderEntry type="library" scope="PROVIDED" name="molinillo (v0.8.0, ruby-3.1.0-p0) [gem]" level="application" />
44
+ <orderEntry type="library" scope="PROVIDED" name="mustache (v1.1.1, ruby-3.1.0-p0) [gem]" level="application" />
45
+ <orderEntry type="library" scope="PROVIDED" name="nanaimo (v0.3.0, ruby-3.1.0-p0) [gem]" level="application" />
46
+ <orderEntry type="library" scope="PROVIDED" name="nap (v1.1.0, ruby-3.1.0-p0) [gem]" level="application" />
47
+ <orderEntry type="library" scope="PROVIDED" name="netrc (v0.11.0, ruby-3.1.0-p0) [gem]" level="application" />
48
+ <orderEntry type="library" scope="PROVIDED" name="public_suffix (v4.0.7, ruby-3.1.0-p0) [gem]" level="application" />
49
+ <orderEntry type="library" scope="PROVIDED" name="rake (v13.0.6, ruby-3.1.0-p0) [gem]" level="application" />
50
+ <orderEntry type="library" scope="PROVIDED" name="rexml (v3.2.5, ruby-3.1.0-p0) [gem]" level="application" />
51
+ <orderEntry type="library" scope="PROVIDED" name="rspec (v3.11.0, ruby-3.1.0-p0) [gem]" level="application" />
52
+ <orderEntry type="library" scope="PROVIDED" name="rspec-core (v3.11.0, ruby-3.1.0-p0) [gem]" level="application" />
53
+ <orderEntry type="library" scope="PROVIDED" name="rspec-expectations (v3.11.0, ruby-3.1.0-p0) [gem]" level="application" />
54
+ <orderEntry type="library" scope="PROVIDED" name="rspec-mocks (v3.11.1, ruby-3.1.0-p0) [gem]" level="application" />
55
+ <orderEntry type="library" scope="PROVIDED" name="rspec-support (v3.11.0, ruby-3.1.0-p0) [gem]" level="application" />
56
+ <orderEntry type="library" scope="PROVIDED" name="ruby-macho (v2.5.1, ruby-3.1.0-p0) [gem]" level="application" />
57
+ <orderEntry type="library" scope="PROVIDED" name="thor (v1.2.1, ruby-3.1.0-p0) [gem]" level="application" />
58
+ <orderEntry type="library" scope="PROVIDED" name="typhoeus (v1.4.0, ruby-3.1.0-p0) [gem]" level="application" />
59
+ <orderEntry type="library" scope="PROVIDED" name="tzinfo (v2.0.4, ruby-3.1.0-p0) [gem]" level="application" />
60
+ <orderEntry type="library" scope="PROVIDED" name="xcodeproj (v1.21.0, ruby-3.1.0-p0) [gem]" level="application" />
61
+ <orderEntry type="library" scope="PROVIDED" name="zeitwerk (v2.5.4, ruby-3.1.0-p0) [gem]" level="application" />
62
+ </component>
63
+ <component name="RakeTasksCache">
64
+ <option name="myRootTask">
65
+ <RakeTaskImpl id="rake">
66
+ <subtasks>
67
+ <RakeTaskImpl description="Build mt_tool-0.1.4.gem into the pkg directory" fullCommand="build" id="build" />
68
+ <RakeTaskImpl id="build">
69
+ <subtasks>
70
+ <RakeTaskImpl description="Generate SHA512 checksum if mt_tool-0.1.4.gem into the checksums directory" fullCommand="build:checksum" id="checksum" />
71
+ </subtasks>
72
+ </RakeTaskImpl>
73
+ <RakeTaskImpl description="Remove any temporary products" fullCommand="clean" id="clean" />
74
+ <RakeTaskImpl description="Remove any generated files" fullCommand="clobber" id="clobber" />
75
+ <RakeTaskImpl description="Build and install mt_tool-0.1.4.gem into system gems" fullCommand="install" id="install" />
76
+ <RakeTaskImpl id="install">
77
+ <subtasks>
78
+ <RakeTaskImpl description="Build and install mt_tool-0.1.4.gem into system gems without network access" fullCommand="install:local" id="local" />
79
+ </subtasks>
80
+ </RakeTaskImpl>
81
+ <RakeTaskImpl description="Create tag v0.1.4 and build and push mt_tool-0.1.4.gem to rubygems.org" fullCommand="release[remote]" id="release[remote]" />
82
+ <RakeTaskImpl description="" fullCommand="default" id="default" />
83
+ <RakeTaskImpl description="" fullCommand="release" id="release" />
84
+ <RakeTaskImpl id="release">
85
+ <subtasks>
86
+ <RakeTaskImpl description="" fullCommand="release:guard_clean" id="guard_clean" />
87
+ <RakeTaskImpl description="" fullCommand="release:rubygem_push" id="rubygem_push" />
88
+ <RakeTaskImpl description="" fullCommand="release:source_control_push" id="source_control_push" />
89
+ </subtasks>
90
+ </RakeTaskImpl>
91
+ </subtasks>
92
+ </RakeTaskImpl>
93
+ </option>
62
94
  </component>
63
95
  </module>
@@ -0,0 +1,13 @@
1
+
2
+ >
3
+ lib/mt_tool.rb,b/5/b53eec12e0ab8df9876dbc7fe65915bb985c4f72
4
+ c
5
+ 3lib/mt_tool/short_hand/objc_implementation.mustache,5/2/5283f86f6adbda087dceb47c69b64e141dfb1e93
6
+ Y
7
+ )lib/mt_tool/module/template/objc/Bundle.h,f/8/f80e2edcdaf9ddf9362d26f7fa5d19df422f29c7
8
+ L
9
+ lib/mt_tool/module/module.rb,e/8/e84cc700d4480c1d3ca7dcc158063e40a25cee12
10
+ Y
11
+ )lib/mt_tool/module/template/objc/Bundle.m,7/0/70213f721c971c9a12d0f46060f7ee2a087b4a96
12
+ F
13
+ lib/mt_tool/version.rb,4/7/4745e92ab1b53af3e65026337909045741e13bea
data/Gemfile.lock CHANGED
@@ -1,9 +1,12 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- mt_tool (0.1.2)
4
+ mt_tool (0.1.4)
5
+ activesupport
5
6
  bundler
6
7
  colored
8
+ colored2
9
+ mustache
7
10
  pathname
8
11
  thor
9
12
  xcodeproj
@@ -13,7 +16,7 @@ GEM
13
16
  specs:
14
17
  CFPropertyList (3.0.5)
15
18
  rexml
16
- activesupport (6.1.5)
19
+ activesupport (6.1.6)
17
20
  concurrent-ruby (~> 1.0, >= 1.0.2)
18
21
  i18n (>= 1.6, < 2)
19
22
  minitest (>= 5.1)
@@ -77,9 +80,10 @@ GEM
77
80
  httpclient (2.8.3)
78
81
  i18n (1.10.0)
79
82
  concurrent-ruby (~> 1.0)
80
- json (2.6.1)
83
+ json (2.6.2)
81
84
  minitest (5.15.0)
82
85
  molinillo (0.8.0)
86
+ mustache (1.1.1)
83
87
  nanaimo (0.3.0)
84
88
  nap (1.1.0)
85
89
  netrc (0.11.0)
data/README.md CHANGED
@@ -1,8 +1,23 @@
1
1
  # MtTool
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/mt_tool`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Generate OC/Swift files for project or module.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
5
+ <img src="img/69786f8e2a527b8c26f2c1311e230e5f.webp.png" alt="Module File Generator" height="150" width="150">
6
+
7
+
8
+ Free your time, focus on real coding things.
9
+
10
+ ## Usage
11
+
12
+ For viper module
13
+
14
+ `mt_tool generateViperModule Canvas Tom.Liu ./`
15
+
16
+ <img src="img/SCR-20240619-msnz.png" alt="Module File Generator">
17
+
18
+ ## Debug
19
+
20
+ ![config](https://github.com/lyleLH/image-repo/blob/master/images/SCR-20240619-mpdx.png?raw=true)
6
21
 
7
22
  ## Installation
8
23
 
@@ -14,10 +29,6 @@ If bundler is not being used to manage dependencies, install the gem by executin
14
29
 
15
30
  $ gem install mt_tool
16
31
 
17
- ## Usage
18
-
19
- TODO: Write usage instructions here
20
-
21
32
  ## Development
22
33
 
23
34
  After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
@@ -26,4 +37,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
26
37
 
27
38
  ## Contributing
28
39
 
29
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/mt_tool.
40
+ Bug reports and pull requests are welcome on GitHub at https://github.com/lylelh/mt_tool.
Binary file
@@ -1,237 +1,50 @@
1
- require 'colored2'
1
+
2
2
  require 'thor'
3
- require 'fileutils'
4
- require 'psych'
5
- require 'yaml'
6
- require 'mt_tool/analyze'
3
+ require 'mt_tool/module/module'
4
+ require 'mt_tool/oc_model/oc_model'
5
+
7
6
  module MtTool
8
7
  class CLI < Thor
9
8
  include Thor::Actions
10
9
 
11
- CONFIG_FILE = '.MTModuleFilesConfig.yml'.freeze
12
10
 
13
11
  desc 'generate <Path> <Module Name> <Language> <Prefix - 前缀> <Author - 作者>', '直接生成项目 例子: yk_command generate . HomeModule oc MT Tom.Liu '
14
12
  method_option :generate, aliases: '-g'
15
- def generate(path = nil,name,lang ,class_prefix,author)
16
- @name = name
17
- @module = @name
18
- @lang = lang
19
- @class_prefix = class_prefix
20
- @final_path = "#{path}/#{@name}"
21
- @author = author
22
- @prefixed_module = @class_prefix + @module
23
-
24
- say "generating file in path:#{@final_path}", :green
25
-
26
- if File.exist?(@final_path.to_s)
27
- say "#{@final_path} 已存在:", :red
28
- else
29
- prepare_folder
30
- if File.exist?("#{@final_path}/configure")
31
- system("#{@final_path}/configure", @name, @lang, @class_prefix, *@additional_args)
32
- else
33
- say 'Template does not have a configure file', :red
34
- end
35
- yk_module_folders
36
- yk_template_files
37
- end
13
+
14
+ def generate(path = nil, name, lang, class_prefix, author)
15
+ Module.new(self .args,self .options).generate(path, name, lang, class_prefix, author)
38
16
  end
39
17
 
40
18
  desc 'create <Path>', '在某个路径下交互式生成项目'
41
19
  method_option :create, aliases: '-c'
20
+
42
21
  def create(path = nil)
43
- path = Dir.pwd if path.nil?
44
-
45
- say '模块名:', :green
46
- config_file_path = "#{path}/#{CONFIG_FILE}"
47
- config = File.exist?(config_file_path) ? YAML.load_file(config_file_path) : {}
48
- input_name = ask("Project name [#{config[:project]}] ?")
49
-
50
- if input_name != ''
51
- @name = input_name
52
- config[:project] = input_name if input_name != config[:project]
53
- else
54
- @name = config[:project]
55
- end
56
-
57
- File.open(config_file_path, 'w') do |f|
58
- f.write config.to_yaml
59
- end
60
-
61
- @final_path = "#{path}/#{@name}"
62
-
63
- if File.exist?(@final_path.to_s)
64
- say "#{@final_path} 已存在:", :red
65
- else
66
- prepare_folder
67
- read_config(path)
68
-
69
- if File.exist?("#{@final_path}/configure")
70
- system("#{@final_path}/configure", @name, @lang, @class_prefix, *@additional_args)
71
- else
72
- say 'Template does not have a configure file', :red
73
- end
74
-
75
- yk_module_folders
76
- yk_template_files
77
-
78
- end
79
- end
80
-
81
- no_commands do
82
- def read_config(path)
83
- config_file_path = "#{path}/#{CONFIG_FILE}"
84
- config = File.exist?(config_file_path) ? YAML.load_file(config_file_path) : {}
85
-
86
- project = @name
87
- say '语言:', :green
88
- language = ask("Project language [#{config[:language]}] ?", limited_to: ['objc', 'swift', ''])
89
- say '类名前缀:', :green
90
- class_prefix = ask("Class prefix [#{config[:class_prefix]}] ?")
91
- say '文件作者:', :green
92
- author = ask("Author [#{config[:author]}] ?")
93
-
94
- config[:project] = project.empty? ? config[:project] || '' : project
95
- config[:language] = language.empty? ? config[:language] || 'objc' : language
96
- config[:class_prefix] = class_prefix.empty? ? config[:class_prefix] || '' : class_prefix
97
- config[:author] = author.empty? ? config[:author] || '' : author
98
-
99
- File.open(config_file_path, 'w') do |f|
100
- f.write config.to_yaml
101
- # f.write YAML.to_yaml(config)
102
- end
103
-
104
- @module = @name
105
- @class_prefix = config[:class_prefix]
106
- @prefixed_module = config[:class_prefix] + @module
107
- @project = config[:project]
108
- @author = config[:author]
109
- @date = Time.now.strftime('%d/%m/%y')
110
- @lang = config[:language]
111
- end
112
-
113
- def prepare_folder
114
-
115
- template_repo_url = 'https://github.com/lyleLH/MTTemplate.git'
116
- system("git clone #{template_repo_url} #{@final_path}")
117
-
118
- # FileUtils.remove_dir(@final_path, true)
119
- # FileUtils.cp_r('/Users/imacn24/Documents/dev/YKProjectTemplate', @final_path)
120
- # FileUtils.remove_dir("#{@final_path}/.git", true)
121
- end
122
-
123
- def yk_module_folders
124
- class_folder_path = "#{@final_path}/#{@name}/Classes"
125
-
126
- first_level_folders = %w[Public Private]
127
-
128
- # public_level_folders = ['Register']
129
- # public_level_folders.each do |folder|
130
- # path = "#{class_folder_path}/Public/#{folder}"
131
- # empty_directory path
132
- # end
133
-
134
- private_level_folders = %w[Business Category Vendor Tools]
135
-
136
- first_level_folders.each do |folder|
137
- path = "#{class_folder_path}/#{folder}"
138
- empty_directory path
139
- end
140
-
141
-
142
-
143
- private_level_folders.each do |folder|
144
- path = "#{class_folder_path}/Private/#{folder}"
145
- empty_directory path
146
- end
147
- end
148
-
149
- CLI.source_root(File.dirname(__FILE__))
150
-
151
- def yk_template_files
152
- register_path = "#{@final_path}/#{@name}/Classes/Private/Register"
153
- registger = {
154
- 'RouterRegister.h' => 'RouterRegister',
155
- 'RouterRegister.m' => 'RouterRegister',
156
- 'ServiceRegister.h' => 'ServiceRegister',
157
- 'ServiceRegister.m' => 'ServiceRegister'
158
- }
159
-
160
- registger.each do |file_name, _folder|
161
- final_file = "#{register_path}/#{@prefixed_module}#{file_name}"
162
- template "#{__dir__}/template/objc/#{file_name}", final_file
163
- end
164
-
165
- public_folder_path = "#{@final_path}/#{@name}/Classes/Public"
166
-
167
- template_code_filename = ['ServiceProtocol.h','RouterDefine.h']
168
- template_code_filename.each do |file_name|
169
- final_file = "#{public_folder_path}/#{@prefixed_module}#{file_name}"
170
- source = "#{__dir__}/template/objc/#{file_name}"
171
- template source, final_file
172
- end
173
-
174
- swift_template_code_filename = ['RouterDefine.swift']
175
- swift_template_code_filename.each do |file_name|
176
- final_file = "#{public_folder_path}/#{@prefixed_module}_Swift_#{file_name}"
177
- source = "#{__dir__}/template/swift/#{file_name}"
178
- template source, final_file
179
- end
180
-
181
-
182
-
183
- private_folder_path = "#{@final_path}/#{@name}/Classes/Private"
184
- #pch file
185
- # pch_file_name = "PrefixHeader.pch"
186
- # final_file = "#{private_folder_path}/#{@prefixed_module}#{pch_file_name}"
187
- # source = "#{__dir__}/template/objc/#{pch_file_name}"
188
- # template source, final_file
189
-
190
- private_level_folder_files = {
191
- 'PrefixHeader.pch' => 'Business',
192
- 'CategoryHeader.h' => 'Category',
193
- 'ToolsHeader.h' => 'Tools',
194
- 'vendorHeader.h' => 'Vendor'
195
- }
196
-
197
- private_level_folder_files.each do |file_name, folder|
198
- final_prefix = @prefixed_module
199
- if file_name == 'PrefixHeader.pch'
200
- final_prefix = @module
201
- end
202
-
203
- final_file = "#{private_folder_path}/#{folder}/#{final_prefix}#{file_name}"
204
- source = "#{__dir__}/template/objc/#{file_name}"
205
- template source, final_file
206
- end
207
-
208
- business_demo_path = "#{@final_path}/#{@name}/Classes/Private/Business"
209
- demo_replace_file = ['DemoViewController.h','DemoViewController.m','DemoViewModel.h','DemoViewModel.m']
210
- demo_replace_file.each do |file_name|
211
- final_file = "#{business_demo_path}/Demo/#{@prefixed_module}#{file_name}"
212
- source = "#{__dir__}/template/objc/demo/#{file_name}"
213
- template source, final_file
214
- end
215
-
22
+ Module.new(self .args,self .options ).create(path)
216
23
 
24
+ end
217
25
 
218
- Dir.chdir("#{@final_path}/Example") do
219
- system 'pod install'
220
- system "open './#{@name}.xcworkspace'"
221
- end
222
- end
223
26
 
27
+ desc 'vmod <module name > <author> <path> ', '生成viper模块文件'
28
+ method_option :vmod, aliases: '-v'
29
+ def generateViperModule(name,author, path )
30
+ Module.new(self .args,self .options).create_viper_module(path, name, "swift","", author)
224
31
  end
225
32
 
226
- desc 'dependency <Podfile.lock Path>', '解析Podfile.lock'
227
- method_option :dependency, aliases: '-d'
228
- def dependency(path = nil)
229
- say 'start resolve dependency',:green
33
+ desc 'model_class <prefix> <class name > <json file path> <output path>', '根据json文件生成模型类'
34
+ method_option :create, aliases: '-c'
35
+ def model_class(prefix,name, path ,output_path)
36
+ OcModel.new(self .args,self .options ).create(prefix,name ,path,output_path)
230
37
 
231
- analyzer = Analyzer.new
232
- result = analyzer.analyze(path)
233
- pp result
38
+ end
39
+
40
+ desc 'qt_model_class <prefix> <class name > <json file path> <output path>', '使用quicktype根据json文件生成模型类'
41
+ method_option :create, aliases: '-c'
42
+ def qt_model_class(prefix,name, path ,output_path)
43
+ OcModel.new(self .args,self .options ).qt_create(prefix,name ,path,output_path)
234
44
 
235
45
  end
46
+
47
+
48
+
236
49
  end
237
50
  end