ccios 2.2.0 → 4.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 17e45b6aa153c86b30ee9975a172b6a9e010c796633936310497a4d7eafea7e4
4
- data.tar.gz: 61769b9cdd9d07510d855ccbbbdcace5a79fb171391872db91d93778bfbc0448
3
+ metadata.gz: de14a43356ef83a12de8ed67d690e64273797a8c2fe5e720248e5dae02f5d00e
4
+ data.tar.gz: 572b69db42737d92b3018e94bba2b5323e20d669f120adcea6608365a9102ed6
5
5
  SHA512:
6
- metadata.gz: d0782622ea52267f207de88a45a60fdcffe93629b3c6fcb8542c2ee256dccc7fd44e1aeb4b2dc1b2e4fb5514b836fbe561968e18bda962d50b4d5b23884cad34
7
- data.tar.gz: a744aaa03b197360105b3656580dfecc9675138269a9bf7116093b1daa208919ac5cf77ece3ca735b92906a303b2e79dbe95df22f12653b631c4cb0d53c842ee
6
+ metadata.gz: 2627eab887cb5d005d338e36247e95579d8b90835cd85b12e769bf83fad091a80d8f2b414eed10c066f5892ecf0d3d5e0dff4bc65c82d978316744f660f9972d
7
+ data.tar.gz: b643795350b673ae9440e01fe50e24debda9e9c4f6e517bcf010a9941defcd90b7ed3d2614138e1b877f94d1f1dbfb5cdbc251dde5543af00d82a179ee6c5a16
data/CHANGELOG.md CHANGED
@@ -2,6 +2,40 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  `ADUtils` adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [Unreleased]
6
+
7
+ ## [4.0.1]
8
+
9
+ ### Fixed
10
+
11
+ - Do not generate new groups with name if using folder references
12
+
13
+ ## [4.0.0]
14
+
15
+ ### Added
16
+ - Use `ADCoordinator` dependency in coordinator files
17
+
18
+ ### Fixed
19
+ - Use `active_support` instead of `rails` dependency
20
+ - Add dev dependencies
21
+
22
+ ## [3.0.0]
23
+
24
+ ### Fixed
25
+ - Use `ApplicationDependencyProvider` in Coordinator
26
+ - Updated by [Denis Poifol](https://github.com/denisPoifol) in Pull Request [#10](https://github.com/felginep/ccios/pull/10)
27
+
28
+ ## [2.3.1]
29
+
30
+ ### Fixed
31
+ - Import `Core` in Repository implementations
32
+ - Updated by [Hervé Béranger](https://github.com/hberenger) in Pull Request [#11](https://github.com/felginep/ccios/pull/11)
33
+
34
+ ## [2.3.0]
35
+
36
+ ### Added
37
+ - Add possibilty to specify target in `.ccios.yml`
38
+
5
39
  ## [2.2.0]
6
40
 
7
41
  ### Added
data/Gemfile.lock CHANGED
@@ -1,139 +1,48 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- ccios (2.2.0)
4
+ ccios (4.0.1)
5
+ activesupport (> 4)
5
6
  mustache (~> 1.0)
6
- rails (~> 5.1)
7
7
  xcodeproj (~> 1.4)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- CFPropertyList (3.0.2)
13
- actioncable (5.2.4.2)
14
- actionpack (= 5.2.4.2)
15
- nio4r (~> 2.0)
16
- websocket-driver (>= 0.6.1)
17
- actionmailer (5.2.4.2)
18
- actionpack (= 5.2.4.2)
19
- actionview (= 5.2.4.2)
20
- activejob (= 5.2.4.2)
21
- mail (~> 2.5, >= 2.5.4)
22
- rails-dom-testing (~> 2.0)
23
- actionpack (5.2.4.2)
24
- actionview (= 5.2.4.2)
25
- activesupport (= 5.2.4.2)
26
- rack (~> 2.0, >= 2.0.8)
27
- rack-test (>= 0.6.3)
28
- rails-dom-testing (~> 2.0)
29
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
30
- actionview (5.2.4.2)
31
- activesupport (= 5.2.4.2)
32
- builder (~> 3.1)
33
- erubi (~> 1.4)
34
- rails-dom-testing (~> 2.0)
35
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
36
- activejob (5.2.4.2)
37
- activesupport (= 5.2.4.2)
38
- globalid (>= 0.3.6)
39
- activemodel (5.2.4.2)
40
- activesupport (= 5.2.4.2)
41
- activerecord (5.2.4.2)
42
- activemodel (= 5.2.4.2)
43
- activesupport (= 5.2.4.2)
44
- arel (>= 9.0)
45
- activestorage (5.2.4.2)
46
- actionpack (= 5.2.4.2)
47
- activerecord (= 5.2.4.2)
48
- marcel (~> 0.3.1)
49
- activesupport (5.2.4.2)
12
+ CFPropertyList (3.0.3)
13
+ activesupport (6.1.1)
50
14
  concurrent-ruby (~> 1.0, >= 1.0.2)
51
- i18n (>= 0.7, < 2)
52
- minitest (~> 5.1)
53
- tzinfo (~> 1.1)
54
- arel (9.0.0)
15
+ i18n (>= 1.6, < 2)
16
+ minitest (>= 5.1)
17
+ tzinfo (~> 2.0)
18
+ zeitwerk (~> 2.3)
55
19
  atomos (0.1.3)
56
- builder (3.2.4)
57
20
  claide (1.0.3)
58
21
  colored2 (3.1.2)
59
- concurrent-ruby (1.1.6)
60
- crass (1.0.6)
61
- erubi (1.9.0)
62
- globalid (0.4.2)
63
- activesupport (>= 4.2.0)
64
- i18n (1.8.2)
22
+ concurrent-ruby (1.1.8)
23
+ i18n (1.8.8)
65
24
  concurrent-ruby (~> 1.0)
66
- loofah (2.5.0)
67
- crass (~> 1.0.2)
68
- nokogiri (>= 1.5.9)
69
- mail (2.7.1)
70
- mini_mime (>= 0.1.1)
71
- marcel (0.3.3)
72
- mimemagic (~> 0.3.2)
73
- method_source (1.0.0)
74
- mimemagic (0.3.4)
75
- mini_mime (1.0.2)
76
- mini_portile2 (2.4.0)
77
- minitest (5.14.0)
25
+ minitest (5.14.2)
78
26
  mustache (1.1.1)
79
- nanaimo (0.2.6)
80
- nio4r (2.5.2)
81
- nokogiri (1.10.9)
82
- mini_portile2 (~> 2.4.0)
83
- rack (2.2.2)
84
- rack-test (1.1.0)
85
- rack (>= 1.0, < 3)
86
- rails (5.2.4.2)
87
- actioncable (= 5.2.4.2)
88
- actionmailer (= 5.2.4.2)
89
- actionpack (= 5.2.4.2)
90
- actionview (= 5.2.4.2)
91
- activejob (= 5.2.4.2)
92
- activemodel (= 5.2.4.2)
93
- activerecord (= 5.2.4.2)
94
- activestorage (= 5.2.4.2)
95
- activesupport (= 5.2.4.2)
96
- bundler (>= 1.3.0)
97
- railties (= 5.2.4.2)
98
- sprockets-rails (>= 2.0.0)
99
- rails-dom-testing (2.0.3)
100
- activesupport (>= 4.2.0)
101
- nokogiri (>= 1.6)
102
- rails-html-sanitizer (1.3.0)
103
- loofah (~> 2.3)
104
- railties (5.2.4.2)
105
- actionpack (= 5.2.4.2)
106
- activesupport (= 5.2.4.2)
107
- method_source
108
- rake (>= 0.8.7)
109
- thor (>= 0.19.0, < 2.0)
110
- rake (13.0.1)
111
- sprockets (4.0.0)
27
+ nanaimo (0.3.0)
28
+ rake (12.3.3)
29
+ tzinfo (2.0.4)
112
30
  concurrent-ruby (~> 1.0)
113
- rack (> 1, < 3)
114
- sprockets-rails (3.2.1)
115
- actionpack (>= 4.0)
116
- activesupport (>= 4.0)
117
- sprockets (>= 3.0.0)
118
- thor (1.0.1)
119
- thread_safe (0.3.6)
120
- tzinfo (1.2.7)
121
- thread_safe (~> 0.1)
122
- websocket-driver (0.7.1)
123
- websocket-extensions (>= 0.1.0)
124
- websocket-extensions (0.1.4)
125
- xcodeproj (1.16.0)
31
+ xcodeproj (1.19.0)
126
32
  CFPropertyList (>= 2.3.3, < 4.0)
127
33
  atomos (~> 0.1.3)
128
34
  claide (>= 1.0.2, < 2.0)
129
35
  colored2 (~> 3.1)
130
- nanaimo (~> 0.2.6)
36
+ nanaimo (~> 0.3.0)
37
+ zeitwerk (2.4.2)
131
38
 
132
39
  PLATFORMS
133
40
  ruby
134
41
 
135
42
  DEPENDENCIES
136
43
  ccios!
44
+ minitest (~> 5.11)
45
+ rake (~> 12.3)
137
46
 
138
47
  BUNDLED WITH
139
48
  1.17.3
data/Makefile CHANGED
@@ -8,4 +8,4 @@ clean:
8
8
  rm -f ccios-*.gem
9
9
 
10
10
  tests:
11
- rake test
11
+ bundle exec rake test
data/README.md CHANGED
@@ -14,7 +14,7 @@ gem install ./ccios-x.x.x.gem
14
14
  ```
15
15
 
16
16
  To run the tests run:
17
- ```rake test```
17
+ ```bundle exec rake test```
18
18
 
19
19
  # How to use
20
20
 
@@ -135,6 +135,7 @@ But you could imagine more complex project structures with multiple xcodeproj:
135
135
  ```
136
136
  app:
137
137
  project: MyProject/MyProject.xcodeproj
138
+ target: MyProject # optional
138
139
  presenter:
139
140
  group: Classes/App
140
141
  coordinator:
@@ -142,6 +143,7 @@ app:
142
143
 
143
144
  core:
144
145
  project: MyProjectCore/MyProjectCore.xcodeproj
146
+ target: MyProjectCore # optional
145
147
  interactor:
146
148
  group: MyProjectCore/Interactors
147
149
  repository:
@@ -149,6 +151,7 @@ core:
149
151
 
150
152
  data:
151
153
  project: MyProjectData/MyProjectData.xcodeproj
154
+ target: MyProjectData # optional
152
155
  repository:
153
156
  group: MyProjectData/Sources/Repositories
154
157
 
data/ccios.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'ccios'
3
- s.version = '2.2.0'
3
+ s.version = '4.0.1'
4
4
  s.executables << 'ccios'
5
5
  s.date = '2016-08-03'
6
6
  s.summary = "Clean Code iOS Generator"
@@ -11,7 +11,10 @@ Gem::Specification.new do |s|
11
11
  s.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
12
12
  s.homepage = 'http://rubygems.org/gems/hola'
13
13
  s.license = 'MIT'
14
+ s.add_dependency 'activesupport', '> 4'
14
15
  s.add_dependency 'xcodeproj', '~> 1.4'
15
- s.add_dependency 'rails', '~> 5.1'
16
16
  s.add_dependency "mustache", "~> 1.0"
17
+
18
+ s.add_development_dependency 'rake', '~> 12.3'
19
+ s.add_development_dependency 'minitest', '~> 5.11'
17
20
  end
data/lib/ccios.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require 'date'
2
2
  require 'xcodeproj'
3
3
  require 'optparse'
4
- require 'rails' # for underscore method used in code_templater.rb
4
+ require 'active_support'
5
5
  require 'ccios/presenter_generator'
6
6
  require 'ccios/coordinator_generator'
7
7
  require 'ccios/interactor_generator'
@@ -1,5 +1,5 @@
1
1
  require 'mustache'
2
- require 'rails'
2
+ require 'active_support/core_ext/string'
3
3
 
4
4
  class CodeTemplater
5
5
  def initialize(options = {})
data/lib/ccios/config.rb CHANGED
@@ -75,30 +75,33 @@ class Config
75
75
  end
76
76
 
77
77
  class AppConfig
78
- attr_reader :project, :presenter, :coordinator
78
+ attr_reader :project, :target, :presenter, :coordinator
79
79
 
80
80
  def initialize(hash)
81
81
  @project = hash["project"]
82
+ @target = hash["target"]
82
83
  @presenter = ObjectConfig.new hash["presenter"]
83
84
  @coordinator = ObjectConfig.new hash["coordinator"]
84
85
  end
85
86
  end
86
87
 
87
88
  class CoreConfig
88
- attr_reader :project, :interactor, :repository
89
+ attr_reader :project, :target, :interactor, :repository
89
90
 
90
91
  def initialize(hash)
91
92
  @project = hash["project"]
93
+ @target = hash["target"]
92
94
  @interactor = ObjectConfig.new hash["interactor"]
93
95
  @repository = ObjectConfig.new hash["repository"]
94
96
  end
95
97
  end
96
98
 
97
99
  class DataConfig
98
- attr_reader :project, :repository
100
+ attr_reader :project, :target, :repository
99
101
 
100
102
  def initialize(hash)
101
103
  @project = hash["project"]
104
+ @target = hash["target"]
102
105
  @repository = ObjectConfig.new hash["repository"]
103
106
  end
104
107
  end
@@ -1,5 +1,18 @@
1
1
  require_relative 'code_templater'
2
2
  require 'fileutils'
3
+ require 'logger'
4
+
5
+ class Xcodeproj::Project::Object::PBXGroup
6
+
7
+ def pf_new_group(associate_path_to_group:, name:, path:)
8
+ # When using "Group with folder" we only provide a path
9
+ # When using "Group without folder" we only provide a name
10
+ new_group(
11
+ associate_path_to_group ? nil : name,
12
+ associate_path_to_group ? path : nil
13
+ )
14
+ end
15
+ end
3
16
 
4
17
  class FileCreator
5
18
 
@@ -16,7 +16,11 @@ class InteractorGenerator
16
16
 
17
17
  raise "[Error] Group #{new_group_name} already exists in #{app_group.display_name}" if interactor_group[new_group_name]
18
18
  new_group_path = File.join(interactor_group.real_path, new_group_name)
19
- new_group = interactor_group.new_group(new_group_name, associate_path_to_group ? new_group_path : nil)
19
+ new_group = interactor_group.pf_new_group(
20
+ associate_path_to_group: associate_path_to_group,
21
+ name: new_group_name,
22
+ path: new_group_path
23
+ )
20
24
 
21
25
  file_creator = FileCreator.new(options)
22
26
  target = @parser.core_target
@@ -1,4 +1,5 @@
1
1
  require 'xcodeproj'
2
+ require 'active_support/core_ext/object/blank'
2
3
 
3
4
  class PBXProjParser
4
5
 
@@ -48,15 +49,15 @@ class PBXProjParser
48
49
  end
49
50
 
50
51
  def app_target
51
- app_project.targets.first
52
+ target_for(app_project, @config.app.target)
52
53
  end
53
54
 
54
55
  def core_target
55
- core_project.targets.first
56
+ target_for(core_project, @config.core.target)
56
57
  end
57
58
 
58
59
  def data_target
59
- data_project.targets.first
60
+ target_for(data_project, @config.data.target)
60
61
  end
61
62
 
62
63
  def save
@@ -75,4 +76,12 @@ class PBXProjParser
75
76
  end
76
77
  @projects[module_project_path] ||= Xcodeproj::Project.open(resolved_module_project_path)
77
78
  end
79
+
80
+ def target_for(project, target_name)
81
+ if target_name.blank?
82
+ project.targets.find { |t| t.product_type == "com.apple.product-type.application" }
83
+ else
84
+ project.targets.find { |t| t.name == target_name }
85
+ end
86
+ end
78
87
  end
@@ -15,22 +15,46 @@ class PresenterGenerator
15
15
 
16
16
  raise "[Error] Group #{presenter_name} already exists in #{app_group.display_name}" if app_group[presenter_name]
17
17
  new_group_path = File.join(app_group.real_path, presenter_name)
18
- new_group = app_group.new_group(presenter_name, associate_path_to_group ? new_group_path : nil)
18
+ new_group = app_group.pf_new_group(
19
+ associate_path_to_group: associate_path_to_group,
20
+ name: presenter_name,
21
+ path: new_group_path
22
+ )
19
23
 
20
24
  ui_group_path = File.join(new_group_path, "UI")
21
- ui_group = new_group.new_group("UI", associate_path_to_group ? ui_group_path : nil)
25
+ ui_group = new_group.pf_new_group(
26
+ associate_path_to_group: associate_path_to_group,
27
+ name: "UI",
28
+ path: ui_group_path
29
+ )
22
30
 
23
31
  view_group_path = File.join(ui_group_path, "View")
24
- view_group = ui_group.new_group("View", associate_path_to_group ? view_group_path : nil)
32
+ view_group = ui_group.pf_new_group(
33
+ associate_path_to_group: associate_path_to_group,
34
+ name: "View",
35
+ path: view_group_path
36
+ )
25
37
 
26
38
  view_controller_group_path = File.join(ui_group_path, "ViewController")
27
- view_controller_group = ui_group.new_group("ViewController", associate_path_to_group ? view_controller_group_path : nil)
39
+ view_controller_group = ui_group.pf_new_group(
40
+ associate_path_to_group: associate_path_to_group,
41
+ name: "ViewController",
42
+ path: view_controller_group_path
43
+ )
28
44
 
29
45
  presenter_group_path = File.join(new_group_path, "Presenter")
30
- presenter_group = new_group.new_group("Presenter", associate_path_to_group ? presenter_group_path : nil)
46
+ presenter_group = new_group.pf_new_group(
47
+ associate_path_to_group: associate_path_to_group,
48
+ name: "Presenter",
49
+ path: presenter_group_path
50
+ )
31
51
 
32
52
  model_group_path = File.join(new_group_path, "Model")
33
- model_group = new_group.new_group("Model", associate_path_to_group ? model_group_path : nil)
53
+ model_group = new_group.pf_new_group(
54
+ associate_path_to_group: associate_path_to_group,
55
+ name: "Model",
56
+ path: model_group_path
57
+ )
34
58
 
35
59
  file_creator = FileCreator.new(options)
36
60
  target = @parser.app_target
@@ -15,12 +15,20 @@ class RepositoryGenerator
15
15
  raise "[Error] Group #{repository_name} already exists in #{core_group.display_name}" if core_group[repository_name]
16
16
  associate_path_to_group = !core_group.path.nil?
17
17
  core_data_new_group_path = File.join(core_group.real_path, repository_name)
18
- core_data_new_group = core_group.new_group(repository_name, associate_path_to_group ? core_data_new_group_path : nil)
18
+ core_data_new_group = core_group.pf_new_group(
19
+ associate_path_to_group: associate_path_to_group,
20
+ name: repository_name,
21
+ path: core_data_new_group_path
22
+ )
19
23
 
20
24
  raise "[Error] Group #{repository_name} already exists in #{data_group.display_name}" if data_group[repository_name]
21
25
  associate_path_to_group = !data_group.path.nil?
22
26
  data_new_group_path = File.join(data_group.real_path, repository_name)
23
- data_new_group = data_group.new_group(repository_name, associate_path_to_group ? data_new_group_path : nil)
27
+ data_new_group = data_group.pf_new_group(
28
+ associate_path_to_group: associate_path_to_group,
29
+ name: repository_name,
30
+ path: data_new_group_path
31
+ )
24
32
 
25
33
  file_creator = FileCreator.new(options)
26
34
  core_target = @parser.core_target
@@ -7,6 +7,7 @@
7
7
  //
8
8
 
9
9
  import Foundation
10
+ import ADCoordinator
10
11
 
11
12
  {{#generate_delegate}}
12
13
  protocol {{name}}CoordinatorDelegate: AnyObject {
@@ -19,15 +20,20 @@ class {{name}}Coordinator: Coordinator {
19
20
  {{#generate_delegate}}
20
21
  weak var delegate: {{name}}CoordinatorDelegate?
21
22
  {{/generate_delegate}}
22
- private let navigationController: UINavigationController
23
+ private let dependencyProvider: ApplicationDependencyProvider
24
+ private unowned var navigationController: UINavigationController
23
25
 
24
- init(navigationController: UINavigationController) {
26
+ init(navigationController: UINavigationController,
27
+ dependencyProvider: ApplicationDependencyProvider) {
25
28
  self.navigationController = navigationController
29
+ self.dependencyProvider = dependencyProvider
26
30
  }
27
31
 
28
32
  // MARK: - Public
29
33
 
30
34
  func start() {
31
-
35
+ let viewController = UIViewController()
36
+ navigationController.pushViewController(viewController, animated: false)
37
+ bindToLifecycle(of: viewController)
32
38
  }
33
39
  }
@@ -8,6 +8,6 @@
8
8
 
9
9
  import Foundation
10
10
 
11
- protocol {{name}}Interactor {
11
+ public protocol {{name}}Interactor {
12
12
  func execute()
13
13
  }
@@ -1,4 +1,4 @@
1
- container.register({{name}}Interactor.self) { r in
1
+ container.register({{name}}Interactor.self) { _ in
2
2
  {{name}}InteractorImplementation(
3
3
 
4
4
  )
@@ -8,11 +8,15 @@
8
8
 
9
9
  import Foundation
10
10
 
11
- class {{name}}InteractorImplementation: {{name}}Interactor {
11
+ public class {{name}}InteractorImplementation: {{name}}Interactor {
12
+
13
+ public init() {
14
+
15
+ }
12
16
 
13
17
  // MARK: - {{name}}Interactor
14
18
 
15
- func execute() {
19
+ public func execute() {
16
20
 
17
21
  }
18
22
  }
@@ -8,6 +8,6 @@
8
8
 
9
9
  import Foundation
10
10
 
11
- protocol {{name}}Repository {
11
+ public protocol {{name}}Repository {
12
12
 
13
13
  }
@@ -1,5 +1,6 @@
1
- container.register({{name}}Repository.self) { r in
1
+ container.register({{name}}Repository.self) { _ in
2
2
  {{name}}RepositoryImplementation(
3
3
 
4
4
  )
5
- }.inObjectScope(.container)
5
+ }
6
+ .inObjectScope(.container)
@@ -8,10 +8,11 @@
8
8
  //
9
9
 
10
10
  import Foundation
11
+ import Core
11
12
 
12
- class {{name}}RepositoryImplementation: {{name}}Repository {
13
+ public class {{name}}RepositoryImplementation: {{name}}Repository {
13
14
 
14
- init() {
15
+ public init() {
15
16
 
16
17
  }
17
18
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ccios
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 4.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pierre Felgines
@@ -10,6 +10,20 @@ bindir: bin
10
10
  cert_chain: []
11
11
  date: 2016-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">"
18
+ - !ruby/object:Gem::Version
19
+ version: '4'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">"
25
+ - !ruby/object:Gem::Version
26
+ version: '4'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: xcodeproj
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -25,33 +39,47 @@ dependencies:
25
39
  - !ruby/object:Gem::Version
26
40
  version: '1.4'
27
41
  - !ruby/object:Gem::Dependency
28
- name: rails
42
+ name: mustache
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '5.1'
47
+ version: '1.0'
34
48
  type: :runtime
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '5.1'
54
+ version: '1.0'
41
55
  - !ruby/object:Gem::Dependency
42
- name: mustache
56
+ name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '1.0'
48
- type: :runtime
61
+ version: '12.3'
62
+ type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '1.0'
68
+ version: '12.3'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '5.11'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '5.11'
55
83
  description: Clean Code iOS Generator
56
84
  email: pierre.felgines@gmail.com
57
85
  executables: