ccios 4.0.2 → 4.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/ruby.yml +4 -4
- data/.ruby-version +1 -0
- data/CHANGELOG.md +5 -0
- data/Gemfile.lock +13 -12
- data/README.md +7 -1
- data/ccios.gemspec +1 -1
- data/lib/ccios/code_templater.rb +3 -2
- data/lib/ccios/config.rb +21 -4
- data/lib/ccios/coordinator_generator.rb +1 -1
- data/lib/ccios/file_creator.rb +4 -3
- data/lib/ccios/interactor_generator.rb +1 -1
- data/lib/ccios/presenter_generator.rb +1 -1
- data/lib/ccios/repository_generator.rb +2 -2
- data/lib/ccios/templates/repository_implementation.mustache +0 -1
- data/lib/ccios.rb +10 -10
- data/templates_library/async/coordinator.mustache +41 -0
- data/templates_library/async/dependency_provider.mustache +14 -0
- data/templates_library/async/interactor.mustache +13 -0
- data/templates_library/async/interactor_assembly.mustache +5 -0
- data/templates_library/async/interactor_implementation.mustache +22 -0
- data/templates_library/async/presenter.mustache +21 -0
- data/templates_library/async/presenter_assembly.mustache +15 -0
- data/templates_library/async/presenter_implementation.mustache +35 -0
- data/templates_library/async/repository.mustache +13 -0
- data/templates_library/async/repository_assembly.mustache +6 -0
- data/templates_library/async/repository_implementation.mustache +20 -0
- data/templates_library/async/view_contract.mustache +14 -0
- data/templates_library/async/view_controller.mustache +23 -0
- data/templates_library/default/README.md +1 -0
- metadata +20 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6854ecea6f4dd2478a49675e65dac4f292ddd1e2cae94d526b5903ea507efaf0
|
4
|
+
data.tar.gz: eeaa057288fe8c0d0c6d02e0a94453e967e8c1d904a068d5c185f0d49224c252
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34837239dd73f4e62f167a078a48fb3083b49296c9970032f86ba768128af08b991c5f46adc72b032fbc909d4937e82487fcdea65d0cb6b9eaaa9049c2261580
|
7
|
+
data.tar.gz: a480d7df1ee5dc7a9d595ec6fcb4c68ad968ca2b62e9c57065ff7a3e3ad5528f2ffd0e3d76dfe01f6f6ba2cad71fab65ffafc5148b2fbbf202e978b0a65c1f61
|
data/.github/workflows/ruby.yml
CHANGED
@@ -8,11 +8,11 @@ jobs:
|
|
8
8
|
runs-on: ubuntu-latest
|
9
9
|
|
10
10
|
steps:
|
11
|
-
- uses: actions/checkout@
|
12
|
-
- name: Set up Ruby 2
|
13
|
-
uses:
|
11
|
+
- uses: actions/checkout@v4
|
12
|
+
- name: Set up Ruby 3.2
|
13
|
+
uses: ruby/setup-ruby@v1
|
14
14
|
with:
|
15
|
-
|
15
|
+
bundler-cache: true
|
16
16
|
- name: Build and test with Rake
|
17
17
|
run: |
|
18
18
|
gem install bundler
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
3.2.2
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
ccios (4.0
|
4
|
+
ccios (4.1.0)
|
5
5
|
activesupport (> 4)
|
6
6
|
mustache (~> 1.0)
|
7
7
|
xcodeproj (~> 1.4)
|
@@ -9,32 +9,33 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
CFPropertyList (3.0.
|
13
|
-
|
12
|
+
CFPropertyList (3.0.6)
|
13
|
+
rexml
|
14
|
+
activesupport (7.0.8)
|
14
15
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
15
16
|
i18n (>= 1.6, < 2)
|
16
17
|
minitest (>= 5.1)
|
17
18
|
tzinfo (~> 2.0)
|
18
|
-
zeitwerk (~> 2.3)
|
19
19
|
atomos (0.1.3)
|
20
|
-
claide (1.0
|
20
|
+
claide (1.1.0)
|
21
21
|
colored2 (3.1.2)
|
22
|
-
concurrent-ruby (1.
|
23
|
-
i18n (1.
|
22
|
+
concurrent-ruby (1.2.2)
|
23
|
+
i18n (1.14.1)
|
24
24
|
concurrent-ruby (~> 1.0)
|
25
|
-
minitest (5.
|
25
|
+
minitest (5.20.0)
|
26
26
|
mustache (1.1.1)
|
27
27
|
nanaimo (0.3.0)
|
28
28
|
rake (12.3.3)
|
29
|
-
|
29
|
+
rexml (3.2.6)
|
30
|
+
tzinfo (2.0.6)
|
30
31
|
concurrent-ruby (~> 1.0)
|
31
|
-
xcodeproj (1.
|
32
|
+
xcodeproj (1.23.0)
|
32
33
|
CFPropertyList (>= 2.3.3, < 4.0)
|
33
34
|
atomos (~> 0.1.3)
|
34
35
|
claide (>= 1.0.2, < 2.0)
|
35
36
|
colored2 (~> 3.1)
|
36
37
|
nanaimo (~> 0.3.0)
|
37
|
-
|
38
|
+
rexml (~> 3.2.4)
|
38
39
|
|
39
40
|
PLATFORMS
|
40
41
|
ruby
|
@@ -45,4 +46,4 @@ DEPENDENCIES
|
|
45
46
|
rake (~> 12.3)
|
46
47
|
|
47
48
|
BUNDLED WITH
|
48
|
-
|
49
|
+
2.4.10
|
data/README.md
CHANGED
@@ -154,8 +154,14 @@ data:
|
|
154
154
|
target: MyProjectData # optional
|
155
155
|
repository:
|
156
156
|
group: MyProjectData/Sources/Repositories
|
157
|
-
|
158
157
|
```
|
159
158
|
|
160
159
|
*Note*: The path of the new files will be infered from the path of the group. It works with *Group with folder* and *Group without folder* in Xcode.
|
161
160
|
|
161
|
+
And lastly you may want to use your own templates, by adding this parameter to the file:
|
162
|
+
```
|
163
|
+
templates:
|
164
|
+
path: Path/To/Users/Templates
|
165
|
+
```
|
166
|
+
|
167
|
+
|
data/ccios.gemspec
CHANGED
data/lib/ccios/code_templater.rb
CHANGED
@@ -2,14 +2,15 @@ require 'mustache'
|
|
2
2
|
require 'active_support/core_ext/string'
|
3
3
|
|
4
4
|
class CodeTemplater
|
5
|
-
def initialize(options = {})
|
5
|
+
def initialize(options = {}, templates_path)
|
6
6
|
@options = options
|
7
|
+
@templates_path = templates_path
|
7
8
|
end
|
8
9
|
|
9
10
|
def content_for_suffix(prefix, suffix)
|
10
11
|
template_name = suffix.underscore
|
11
12
|
options = @options.merge({name: prefix, lowercased_name: prefix.camelize(:lower)})
|
12
|
-
template_file = File.join(
|
13
|
+
template_file = File.join(@templates_path, "#{template_name}.mustache")
|
13
14
|
Mustache.render(File.read(template_file), options)
|
14
15
|
end
|
15
16
|
end
|
data/lib/ccios/config.rb
CHANGED
@@ -2,14 +2,14 @@ require 'yaml'
|
|
2
2
|
|
3
3
|
class Config
|
4
4
|
|
5
|
-
attr_reader :app, :core, :data
|
5
|
+
attr_reader :app, :core, :data, :templates
|
6
6
|
|
7
7
|
def self.parse(source_path)
|
8
8
|
if File.exist?(source_path)
|
9
9
|
config = YAML.load_file(source_path)
|
10
10
|
self.new config, source_path
|
11
11
|
else
|
12
|
-
puts "File #{source_path} does not
|
12
|
+
puts "File #{source_path} does not exist. Using default config."
|
13
13
|
self.default
|
14
14
|
end
|
15
15
|
end
|
@@ -30,7 +30,8 @@ class Config
|
|
30
30
|
"data" => {
|
31
31
|
"project" => project,
|
32
32
|
"repository" => {"group" => "Classes/Data"}
|
33
|
-
}
|
33
|
+
},
|
34
|
+
"templates" => self.default_templates_hash
|
34
35
|
}
|
35
36
|
end
|
36
37
|
|
@@ -38,12 +39,21 @@ class Config
|
|
38
39
|
self.new default_config_hash
|
39
40
|
end
|
40
41
|
|
42
|
+
def self.default_templates_hash
|
43
|
+
{ "path" => File.join(File.dirname(__FILE__), "templates") }
|
44
|
+
end
|
45
|
+
|
41
46
|
def initialize(config_hash, source_path = nil)
|
42
47
|
@source_path = source_path
|
43
48
|
validate config_hash
|
44
49
|
@app = AppConfig.new config_hash["app"]
|
45
50
|
@core = CoreConfig.new config_hash["core"]
|
46
51
|
@data = DataConfig.new config_hash["data"]
|
52
|
+
if config_hash["templates"].nil?
|
53
|
+
@templates = TemplatesConfig.new Config.default_templates_hash
|
54
|
+
else
|
55
|
+
@templates = TemplatesConfig.new config_hash["templates"]
|
56
|
+
end
|
47
57
|
end
|
48
58
|
|
49
59
|
def validate(hash)
|
@@ -107,10 +117,17 @@ class DataConfig
|
|
107
117
|
end
|
108
118
|
|
109
119
|
class ObjectConfig
|
110
|
-
|
111
120
|
attr_reader :group
|
112
121
|
|
113
122
|
def initialize(hash)
|
114
123
|
@group = hash["group"]
|
115
124
|
end
|
116
125
|
end
|
126
|
+
|
127
|
+
class TemplatesConfig
|
128
|
+
attr_reader :path
|
129
|
+
|
130
|
+
def initialize(hash)
|
131
|
+
@path = hash["path"]
|
132
|
+
end
|
133
|
+
end
|
@@ -10,7 +10,7 @@ class CoordinatorGenerator
|
|
10
10
|
|
11
11
|
def generate(coordinator_name, options = {})
|
12
12
|
coordinator_group = @parser.coordinator_group
|
13
|
-
file_creator = FileCreator.new(options)
|
13
|
+
file_creator = FileCreator.new(options, @config)
|
14
14
|
target = @parser.app_target
|
15
15
|
coordinator_name = coordinator_name.gsub("Coordinator", "")
|
16
16
|
file_creator.create_file(coordinator_name, 'Coordinator', coordinator_group, target)
|
data/lib/ccios/file_creator.rb
CHANGED
@@ -24,8 +24,9 @@ class FileCreator
|
|
24
24
|
FileCreator.logger
|
25
25
|
end
|
26
26
|
|
27
|
-
def initialize(options = {})
|
27
|
+
def initialize(options = {}, config)
|
28
28
|
@options = options
|
29
|
+
@config = config
|
29
30
|
end
|
30
31
|
|
31
32
|
def templater_options(target)
|
@@ -50,7 +51,7 @@ class FileCreator
|
|
50
51
|
file = File.new(file_path, 'w')
|
51
52
|
|
52
53
|
templater_options = templater_options(target)
|
53
|
-
code_templater = CodeTemplater.new(templater_options)
|
54
|
+
code_templater = CodeTemplater.new(templater_options, @config.templates.path)
|
54
55
|
file_content = code_templater.content_for_suffix(prefix, suffix)
|
55
56
|
file.puts(file_content)
|
56
57
|
|
@@ -70,7 +71,7 @@ class FileCreator
|
|
70
71
|
def print_file_content(prefix, suffix)
|
71
72
|
file_name = suffix + '.swift'
|
72
73
|
|
73
|
-
code_templater = CodeTemplater.new(@options)
|
74
|
+
code_templater = CodeTemplater.new(@options, @config.templates.path)
|
74
75
|
template = code_templater.content_for_suffix(prefix, suffix)
|
75
76
|
|
76
77
|
logger.info "Add this snippet to #{file_name}"
|
@@ -23,7 +23,7 @@ class InteractorGenerator
|
|
23
23
|
path: new_group_path
|
24
24
|
)
|
25
25
|
|
26
|
-
file_creator = FileCreator.new(options)
|
26
|
+
file_creator = FileCreator.new(options, @config)
|
27
27
|
target = @parser.core_target
|
28
28
|
file_creator.create_file(interactor_name, 'Interactor', new_group, target)
|
29
29
|
file_creator.create_file(interactor_name, 'InteractorImplementation', new_group, target)
|
@@ -56,7 +56,7 @@ class PresenterGenerator
|
|
56
56
|
path: model_group_path
|
57
57
|
)
|
58
58
|
|
59
|
-
file_creator = FileCreator.new(options)
|
59
|
+
file_creator = FileCreator.new(options, @config)
|
60
60
|
target = @parser.app_target
|
61
61
|
file_creator.create_file(presenter_name, 'ViewContract', ui_group, target)
|
62
62
|
file_creator.create_file(presenter_name, 'ViewController', view_controller_group, target)
|
@@ -31,11 +31,11 @@ class RepositoryGenerator
|
|
31
31
|
path: data_new_group_path
|
32
32
|
)
|
33
33
|
|
34
|
-
file_creator = FileCreator.new(options)
|
34
|
+
file_creator = FileCreator.new(options, @config)
|
35
35
|
core_target = @parser.core_target
|
36
36
|
file_creator.create_file(repository_name, 'Repository', core_data_new_group, core_target)
|
37
37
|
|
38
|
-
file_creator = FileCreator.new(options)
|
38
|
+
file_creator = FileCreator.new(options, @config)
|
39
39
|
data_target = @parser.data_target
|
40
40
|
file_creator.create_file(repository_name, 'RepositoryImplementation', data_new_group, data_target)
|
41
41
|
|
data/lib/ccios.rb
CHANGED
@@ -14,20 +14,20 @@ OptionParser.new do |opts|
|
|
14
14
|
opts.on("-v", "--[no-]verbose", "Run verbosely") do |v|
|
15
15
|
options[:verbose] = v
|
16
16
|
end
|
17
|
-
opts.on("-pName", "--presenter=Name", "Generate NamePresenter, NamePresenterImplementation, NameViewContract and NameViewController") do |
|
18
|
-
options[:presenter] =
|
17
|
+
opts.on("-pName", "--presenter=Name", "Generate NamePresenter, NamePresenterImplementation, NameViewContract and NameViewController") do |name|
|
18
|
+
options[:presenter] = name
|
19
19
|
end
|
20
|
-
opts.on("-cName", "--coordinator=Name", "Generate NameCoordinator") do |
|
21
|
-
options[:coordinator] =
|
20
|
+
opts.on("-cName", "--coordinator=Name", "Generate NameCoordinator") do |name|
|
21
|
+
options[:coordinator] = name
|
22
22
|
end
|
23
|
-
opts.on("-iName", "--interactor=Name", "Generate NameInteractor and NameInteractorImplementation") do |
|
24
|
-
options[:interactor] =
|
23
|
+
opts.on("-iName", "--interactor=Name", "Generate NameInteractor and NameInteractorImplementation") do |name|
|
24
|
+
options[:interactor] = name
|
25
25
|
end
|
26
|
-
opts.on("-rName", "--repository=Name", "Generate NameRepository and NameRepositoryImplementation") do |
|
27
|
-
options[:repository] =
|
26
|
+
opts.on("-rName", "--repository=Name", "Generate NameRepository and NameRepositoryImplementation") do |name|
|
27
|
+
options[:repository] = name
|
28
28
|
end
|
29
|
-
opts.on("-d", "--delegate", "Add delegate for curent generation") do |
|
30
|
-
options[:generate_delegate] =
|
29
|
+
opts.on("-d", "--delegate", "Add delegate for curent generation") do |add_delegate|
|
30
|
+
options[:generate_delegate] = add_delegate
|
31
31
|
end
|
32
32
|
opts.on("-h", "--help", "Print this help") do
|
33
33
|
puts opts
|
@@ -0,0 +1,41 @@
|
|
1
|
+
//
|
2
|
+
// {{name}}Coordinator.swift
|
3
|
+
// {{project_name}}
|
4
|
+
//
|
5
|
+
// Created by {{full_username}} on {{date}}.
|
6
|
+
//
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
import ADCoordinator
|
11
|
+
|
12
|
+
{{#generate_delegate}}
|
13
|
+
@MainActor
|
14
|
+
protocol {{name}}CoordinatorDelegate: AnyObject {
|
15
|
+
|
16
|
+
}
|
17
|
+
|
18
|
+
{{/generate_delegate}}
|
19
|
+
@MainActor
|
20
|
+
class {{name}}Coordinator: Coordinator {
|
21
|
+
|
22
|
+
{{#generate_delegate}}
|
23
|
+
weak var delegate: {{name}}CoordinatorDelegate?
|
24
|
+
{{/generate_delegate}}
|
25
|
+
private let dependencyProvider: ApplicationDependencyProvider
|
26
|
+
private unowned var navigationController: UINavigationController
|
27
|
+
|
28
|
+
nonisolated init(navigationController: UINavigationController,
|
29
|
+
dependencyProvider: ApplicationDependencyProvider) {
|
30
|
+
self.navigationController = navigationController
|
31
|
+
self.dependencyProvider = dependencyProvider
|
32
|
+
}
|
33
|
+
|
34
|
+
// MARK: - Public
|
35
|
+
|
36
|
+
func start() {
|
37
|
+
let viewController = UIViewController()
|
38
|
+
navigationController.pushViewController(viewController, animated: false)
|
39
|
+
bindToLifecycle(of: viewController)
|
40
|
+
}
|
41
|
+
}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
{{#generate_delegate}}
|
2
|
+
func {{lowercased_name}}Presenter(viewContract: {{name}}ViewContract, presenterDelegate: {{name}}PresenterDelegate) -> {{name}}Presenter? {
|
3
|
+
return presenterAssembler
|
4
|
+
.resolver
|
5
|
+
.resolve({{name}}Presenter.self, arguments: viewContract, presenterDelegate)
|
6
|
+
}
|
7
|
+
{{/generate_delegate}}
|
8
|
+
{{^generate_delegate}}
|
9
|
+
func {{lowercased_name}}Presenter(viewContract: {{name}}ViewContract) -> {{name}}Presenter? {
|
10
|
+
return presenterAssembler
|
11
|
+
.resolver
|
12
|
+
.resolve({{name}}Presenter.self, argument: viewContract)
|
13
|
+
}
|
14
|
+
{{/generate_delegate}}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
//
|
2
|
+
// {{name}}InteractorImplementation.swift
|
3
|
+
// {{project_name}}
|
4
|
+
//
|
5
|
+
// Created by {{full_username}} on {{date}}.
|
6
|
+
//
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
|
11
|
+
public class {{name}}InteractorImplementation: {{name}}Interactor {
|
12
|
+
|
13
|
+
public init() {
|
14
|
+
|
15
|
+
}
|
16
|
+
|
17
|
+
// MARK: - {{name}}Interactor
|
18
|
+
|
19
|
+
public func execute() async throws {
|
20
|
+
|
21
|
+
}
|
22
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
//
|
2
|
+
// {{name}}Presenter.swift
|
3
|
+
// {{project_name}}
|
4
|
+
//
|
5
|
+
// Created by {{full_username}} on {{date}}.
|
6
|
+
//
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
|
11
|
+
@MainActor
|
12
|
+
protocol {{name}}Presenter {
|
13
|
+
func start()
|
14
|
+
}
|
15
|
+
{{#generate_delegate}}
|
16
|
+
|
17
|
+
@MainActor
|
18
|
+
protocol {{name}}PresenterDelegate: AnyObject {
|
19
|
+
|
20
|
+
}
|
21
|
+
{{/generate_delegate}}
|
@@ -0,0 +1,15 @@
|
|
1
|
+
{{#generate_delegate}}
|
2
|
+
container.register({{name}}Presenter.self) { _, viewContract, delegate in
|
3
|
+
{{name}}PresenterImplementation(
|
4
|
+
viewContract: viewContract,
|
5
|
+
delegate: delegate
|
6
|
+
)
|
7
|
+
}
|
8
|
+
{{/generate_delegate}}
|
9
|
+
{{^generate_delegate}}
|
10
|
+
container.register({{name}}Presenter.self) { _, viewContract in
|
11
|
+
{{name}}PresenterImplementation(
|
12
|
+
viewContract: viewContract
|
13
|
+
)
|
14
|
+
}
|
15
|
+
{{/generate_delegate}}
|
@@ -0,0 +1,35 @@
|
|
1
|
+
//
|
2
|
+
// {{name}}PresenterImplementation.swift
|
3
|
+
// {{project_name}}
|
4
|
+
//
|
5
|
+
// Created by {{full_username}} on {{date}}.
|
6
|
+
//
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
|
11
|
+
class {{name}}PresenterImplementation: {{name}}Presenter {
|
12
|
+
|
13
|
+
private weak var viewContract: {{name}}ViewContract?
|
14
|
+
{{#generate_delegate}}
|
15
|
+
private weak var delegate: {{name}}PresenterDelegate?
|
16
|
+
{{/generate_delegate}}
|
17
|
+
|
18
|
+
{{#generate_delegate}}
|
19
|
+
nonisolated init(viewContract: {{name}}ViewContract, delegate: {{name}}PresenterDelegate) {
|
20
|
+
self.viewContract = viewContract
|
21
|
+
self.delegate = delegate
|
22
|
+
}
|
23
|
+
{{/generate_delegate}}
|
24
|
+
{{^generate_delegate}}
|
25
|
+
nonisolated init(viewContract: {{name}}ViewContract) {
|
26
|
+
self.viewContract = viewContract
|
27
|
+
}
|
28
|
+
{{/generate_delegate}}
|
29
|
+
|
30
|
+
// MARK: - {{name}}Presenter
|
31
|
+
|
32
|
+
func start() {
|
33
|
+
|
34
|
+
}
|
35
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
//
|
2
|
+
// {{name}}RepositoryImplementation.swift
|
3
|
+
// {{project_name}}
|
4
|
+
//
|
5
|
+
// Created by {{full_username}} on {{date}}.
|
6
|
+
//
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
import Core
|
11
|
+
|
12
|
+
public class {{name}}RepositoryImplementation: {{name}}Repository {
|
13
|
+
|
14
|
+
public init() {
|
15
|
+
|
16
|
+
}
|
17
|
+
|
18
|
+
// MARK: - {{name}}Repository
|
19
|
+
|
20
|
+
}
|
@@ -0,0 +1,23 @@
|
|
1
|
+
//
|
2
|
+
// {{name}}ViewController.swift
|
3
|
+
// {{project_name}}
|
4
|
+
//
|
5
|
+
// Created by {{full_username}} on {{date}}.
|
6
|
+
//
|
7
|
+
//
|
8
|
+
|
9
|
+
import Foundation
|
10
|
+
import UIKit
|
11
|
+
|
12
|
+
@MainActor
|
13
|
+
class {{name}}ViewController: SharedViewController, {{name}}ViewContract {
|
14
|
+
var presenter: {{name}}Presenter?
|
15
|
+
|
16
|
+
override func viewDidLoad() {
|
17
|
+
super.viewDidLoad()
|
18
|
+
presenter?.start()
|
19
|
+
}
|
20
|
+
|
21
|
+
// MARK: - {{name}}ViewContract
|
22
|
+
|
23
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
Default templates are in <root>/lib/ccios/templates
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ccios
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pierre Felgines
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2016-08-03 00:00:00.000000000 Z
|
@@ -89,6 +89,7 @@ extra_rdoc_files: []
|
|
89
89
|
files:
|
90
90
|
- ".github/workflows/ruby.yml"
|
91
91
|
- ".gitignore"
|
92
|
+
- ".ruby-version"
|
92
93
|
- CHANGELOG.md
|
93
94
|
- Gemfile
|
94
95
|
- Gemfile.lock
|
@@ -119,11 +120,25 @@ files:
|
|
119
120
|
- lib/ccios/templates/repository_implementation.mustache
|
120
121
|
- lib/ccios/templates/view_contract.mustache
|
121
122
|
- lib/ccios/templates/view_controller.mustache
|
123
|
+
- templates_library/async/coordinator.mustache
|
124
|
+
- templates_library/async/dependency_provider.mustache
|
125
|
+
- templates_library/async/interactor.mustache
|
126
|
+
- templates_library/async/interactor_assembly.mustache
|
127
|
+
- templates_library/async/interactor_implementation.mustache
|
128
|
+
- templates_library/async/presenter.mustache
|
129
|
+
- templates_library/async/presenter_assembly.mustache
|
130
|
+
- templates_library/async/presenter_implementation.mustache
|
131
|
+
- templates_library/async/repository.mustache
|
132
|
+
- templates_library/async/repository_assembly.mustache
|
133
|
+
- templates_library/async/repository_implementation.mustache
|
134
|
+
- templates_library/async/view_contract.mustache
|
135
|
+
- templates_library/async/view_controller.mustache
|
136
|
+
- templates_library/default/README.md
|
122
137
|
homepage: http://rubygems.org/gems/hola
|
123
138
|
licenses:
|
124
139
|
- MIT
|
125
140
|
metadata: {}
|
126
|
-
post_install_message:
|
141
|
+
post_install_message:
|
127
142
|
rdoc_options: []
|
128
143
|
require_paths:
|
129
144
|
- lib
|
@@ -138,8 +153,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
153
|
- !ruby/object:Gem::Version
|
139
154
|
version: '0'
|
140
155
|
requirements: []
|
141
|
-
rubygems_version: 3.
|
142
|
-
signing_key:
|
156
|
+
rubygems_version: 3.4.10
|
157
|
+
signing_key:
|
143
158
|
specification_version: 4
|
144
159
|
summary: Clean Code iOS Generator
|
145
160
|
test_files: []
|