vsvipergen 0.1.3 → 0.1.4
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/Gemfile.lock +5 -1
- data/bin/console +38 -6
- data/exe/vsvipergen +35 -6
- data/lib/templates/VS<$$>Contracts.h +5 -5
- data/lib/templates/view/VS<$$>ViewController.h +1 -1
- data/lib/vsvipergen/version.rb +1 -1
- data/lib/vsvipergen_contracts.rb +1 -1
- data/vsvipergen.gemspec +4 -0
- metadata +43 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f552f327f810c4c2a4062820a094842adc7c9f11ab61c733807e7575eca2c85
|
4
|
+
data.tar.gz: baa628bcd652087c7dcf35f99c3da6530158b5520c7152a11be74a6891f84b23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8dff4fbd309c3c7a898e7b798dc03e03caf57eb387e49e6e56759ed0bc6664d7ddfa8bd74b5caba01732298d21764f79d7fd1284b32c355ec0c0ca5a49f10ec
|
7
|
+
data.tar.gz: 197d4d6c066ea0e6aaf3420e80d644a4959302473743b88f36a14e0fe7007a5f4ce0e8afd4eb72f19d0f874462753feff19562c2ea51acc0661b2f529200413d
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
vsvipergen (0.1.
|
4
|
+
vsvipergen (0.1.4)
|
5
|
+
colorize (~> 0.8.1)
|
5
6
|
xcodeproj (~> 1.7.0)
|
6
7
|
|
7
8
|
GEM
|
@@ -11,6 +12,7 @@ GEM
|
|
11
12
|
atomos (0.1.3)
|
12
13
|
claide (1.0.2)
|
13
14
|
colored2 (3.1.2)
|
15
|
+
colorize (0.8.1)
|
14
16
|
nanaimo (0.2.6)
|
15
17
|
rake (10.5.0)
|
16
18
|
xcodeproj (1.7.0)
|
@@ -25,8 +27,10 @@ PLATFORMS
|
|
25
27
|
|
26
28
|
DEPENDENCIES
|
27
29
|
bundler (~> 1.16)
|
30
|
+
colorize (~> 0.8.1)
|
28
31
|
rake (~> 10.0)
|
29
32
|
vsvipergen!
|
33
|
+
xcodeproj (~> 1.7.0)
|
30
34
|
|
31
35
|
BUNDLED WITH
|
32
36
|
1.16.2
|
data/bin/console
CHANGED
@@ -9,6 +9,7 @@ require "vsvipergen_presenter"
|
|
9
9
|
require "vsvipergen_view"
|
10
10
|
require "vsvipergen_router"
|
11
11
|
require "xcodeproj"
|
12
|
+
require "colorize"
|
12
13
|
|
13
14
|
#################################################
|
14
15
|
############ handle user input start ############
|
@@ -29,7 +30,7 @@ end
|
|
29
30
|
|
30
31
|
# objective-c 선택일 경우 프로젝트 파일 이름 입력 요구
|
31
32
|
if lang.strip == "objc" || lang.strip == "o" then
|
32
|
-
puts "input project file name [ex:VLunch] :"
|
33
|
+
puts "input xcode project file name [ex:VLunch] :"
|
33
34
|
while true
|
34
35
|
projectName = gets
|
35
36
|
|
@@ -38,7 +39,7 @@ if lang.strip == "objc" || lang.strip == "o" then
|
|
38
39
|
end
|
39
40
|
|
40
41
|
# 파일 prefix 입력 요구
|
41
|
-
puts "input file prefix [ex:type Login for
|
42
|
+
puts "input file prefix [ex:type" + " Login".yellow + " for VS" + "Login".yellow + "ViewController(or VS" + "Login".yellow + "Page), ...] : "
|
42
43
|
filePrefix = gets
|
43
44
|
|
44
45
|
if filePrefix == "" then
|
@@ -47,7 +48,7 @@ end
|
|
47
48
|
|
48
49
|
# objective-c 선택일 경우 모델 prefix 입력 요구
|
49
50
|
if lang.strip == "objc" || lang.strip == "o" then
|
50
|
-
puts "input model prefix [ex:type User for
|
51
|
+
puts "input model prefix [ex:type" + " User".yellow + " for VS" + "User".yellow + "VO] : "
|
51
52
|
modelPrefix = gets
|
52
53
|
|
53
54
|
if modelPrefix == "" then
|
@@ -65,6 +66,7 @@ end
|
|
65
66
|
############# create file generator #############
|
66
67
|
fileGenerators = []
|
67
68
|
generatedFilePaths = []
|
69
|
+
subPathAndFilePathHashes = []
|
68
70
|
|
69
71
|
generatorFactory = Vsvipergen::ViperGeneratorFactory.new
|
70
72
|
generatorFactory.init(filePrefix, modelPrefix, now, year)
|
@@ -84,6 +86,8 @@ end
|
|
84
86
|
for generator in fileGenerators
|
85
87
|
files = generator.makeFiles
|
86
88
|
|
89
|
+
subPathAndFilePathHashes.push(generator.subPathAndFilePathHash)
|
90
|
+
|
87
91
|
for file in files
|
88
92
|
generatedFilePaths.push(file)
|
89
93
|
end
|
@@ -99,11 +103,39 @@ if lang.strip == "objc" || lang.strip == "o" then
|
|
99
103
|
project = Xcodeproj::Project.open(xcodeProjectFile.strip)
|
100
104
|
targets = project.targets
|
101
105
|
mainTarget = project.targets.first
|
102
|
-
newGroup = project.new_group(filePrefix.strip)
|
106
|
+
newGroup = project.new_group(filePrefix.strip.downcase)
|
103
107
|
|
104
|
-
# Add
|
108
|
+
# Add files, groups to the project in the main group
|
105
109
|
for filePath in generatedFilePaths
|
106
|
-
|
110
|
+
|
111
|
+
# extract child group name from file path
|
112
|
+
pathArr = filePath.split("/")
|
113
|
+
childGroupName = pathArr[pathArr.count - 2]
|
114
|
+
childGroup = nil
|
115
|
+
|
116
|
+
if childGroupName != "" then
|
117
|
+
# check same child group added to newGroup
|
118
|
+
addChildGroupAlready = false
|
119
|
+
newGroup.groups.each { |group|
|
120
|
+
if group.name == childGroupName then
|
121
|
+
addChildGroupAlready = true
|
122
|
+
childGroup = group
|
123
|
+
end
|
124
|
+
}
|
125
|
+
|
126
|
+
# add child group to newGroup
|
127
|
+
if addChildGroupAlready == false then
|
128
|
+
puts "add child group : #{childGroupName}"
|
129
|
+
childGroup = newGroup.new_group(childGroupName)
|
130
|
+
end
|
131
|
+
|
132
|
+
# Add file to child group
|
133
|
+
file = childGroup.new_file(filePath.strip)
|
134
|
+
else
|
135
|
+
puts "could not extract child group name from file path, add file to parent group(#{newGroup.name})".red
|
136
|
+
# Add file to new group
|
137
|
+
file = newGroup.new_file(filePath.strip)
|
138
|
+
end
|
107
139
|
|
108
140
|
# Add the file to the main target
|
109
141
|
mainTarget.add_file_references([file])
|
data/exe/vsvipergen
CHANGED
@@ -8,6 +8,7 @@ require "vsvipergen_presenter"
|
|
8
8
|
require "vsvipergen_view"
|
9
9
|
require "vsvipergen_router"
|
10
10
|
require "xcodeproj"
|
11
|
+
require "colorize"
|
11
12
|
|
12
13
|
#################################################
|
13
14
|
############ handle user input start ############
|
@@ -28,7 +29,7 @@ end
|
|
28
29
|
|
29
30
|
# objective-c 선택일 경우 프로젝트 파일 이름 입력 요구
|
30
31
|
if lang.strip == "objc" || lang.strip == "o" then
|
31
|
-
puts "input project file name [ex:VLunch] :"
|
32
|
+
puts "input xcode project file name [ex:VLunch] :"
|
32
33
|
while true
|
33
34
|
projectName = gets
|
34
35
|
|
@@ -37,7 +38,7 @@ if lang.strip == "objc" || lang.strip == "o" then
|
|
37
38
|
end
|
38
39
|
|
39
40
|
# 파일 prefix 입력 요구
|
40
|
-
puts "input file prefix [ex:type Login for
|
41
|
+
puts "input file prefix [ex:type" + " Login".yellow + " for VS" + "Login".yellow + "ViewController(or VS" + "Login".yellow + "Page), ...] : "
|
41
42
|
filePrefix = gets
|
42
43
|
|
43
44
|
if filePrefix == "" then
|
@@ -46,7 +47,7 @@ end
|
|
46
47
|
|
47
48
|
# objective-c 선택일 경우 모델 prefix 입력 요구
|
48
49
|
if lang.strip == "objc" || lang.strip == "o" then
|
49
|
-
puts "input model prefix [ex:type User for
|
50
|
+
puts "input model prefix [ex:type" + " User".yellow + " for VS" + "User".yellow + "VO] : "
|
50
51
|
modelPrefix = gets
|
51
52
|
|
52
53
|
if modelPrefix == "" then
|
@@ -98,11 +99,39 @@ if lang.strip == "objc" || lang.strip == "o" then
|
|
98
99
|
project = Xcodeproj::Project.open(xcodeProjectFile.strip)
|
99
100
|
targets = project.targets
|
100
101
|
mainTarget = project.targets.first
|
101
|
-
newGroup = project.new_group(filePrefix.strip)
|
102
|
+
newGroup = project.new_group(filePrefix.strip.downcase)
|
102
103
|
|
103
|
-
# Add
|
104
|
+
# Add files, groups to the project in the main group
|
104
105
|
for filePath in generatedFilePaths
|
105
|
-
|
106
|
+
|
107
|
+
# extract child group name from file path
|
108
|
+
pathArr = filePath.split("/")
|
109
|
+
childGroupName = pathArr[pathArr.count - 2]
|
110
|
+
childGroup = nil
|
111
|
+
|
112
|
+
if childGroupName != "" then
|
113
|
+
# check same child group added to newGroup
|
114
|
+
addChildGroupAlready = false
|
115
|
+
newGroup.groups.each { |group|
|
116
|
+
if group.name == childGroupName then
|
117
|
+
addChildGroupAlready = true
|
118
|
+
childGroup = group
|
119
|
+
end
|
120
|
+
}
|
121
|
+
|
122
|
+
# add child group to newGroup
|
123
|
+
if addChildGroupAlready == false then
|
124
|
+
puts "add child group : #{childGroupName}"
|
125
|
+
childGroup = newGroup.new_group(childGroupName)
|
126
|
+
end
|
127
|
+
|
128
|
+
# Add file to child group
|
129
|
+
file = childGroup.new_file(filePath.strip)
|
130
|
+
else
|
131
|
+
puts "could not extract child group name from file path, add file to parent group(#{newGroup.name})".red
|
132
|
+
# Add file to new group
|
133
|
+
file = newGroup.new_file(filePath.strip)
|
134
|
+
end
|
106
135
|
|
107
136
|
# Add the file to the main target
|
108
137
|
mainTarget.add_file_references([file])
|
@@ -10,23 +10,23 @@
|
|
10
10
|
#import <UIKit/UIKit.h>
|
11
11
|
#import "VS<$modelPrefix$>VO.h"
|
12
12
|
|
13
|
-
// view
|
13
|
+
// presenter 클래스가 구현해야 할 프로토콜 : view 클래스가 호출
|
14
14
|
@protocol I<$prefix$>PresenterForView <NSObject>
|
15
15
|
@end
|
16
16
|
|
17
|
-
// presenter
|
17
|
+
// view 클래스가 구현해야 할 프로토콜 : presenter 클래스가 호출
|
18
18
|
@protocol I<$prefix$>ViewForPresenter <NSObject>
|
19
19
|
@end
|
20
20
|
|
21
|
-
// presenter
|
21
|
+
// interactor 클래스가 구현해야 할 프로토콜 : presenter 클래스가 호출
|
22
22
|
@protocol I<$prefix$>InteractorForPresenter <NSObject>
|
23
23
|
@end
|
24
24
|
|
25
|
-
// interactor
|
25
|
+
// presenter 클래스가 구현해야 할 프로토콜 : interactor 클래스가 호출
|
26
26
|
@protocol I<$prefix$>PresenterForInteractor <NSObject>
|
27
27
|
@end
|
28
28
|
|
29
|
-
// router
|
29
|
+
// router 클래스가 구현해야 할 프로토콜 : 외부 viper 모듈에서 호출
|
30
30
|
@protocol I<$prefix$>Router <NSObject>
|
31
31
|
+ (UIViewController *)create<$prefix$>Module;
|
32
32
|
@end
|
@@ -10,5 +10,5 @@
|
|
10
10
|
#import "VS<$prefix$>Contracts.h"
|
11
11
|
|
12
12
|
@interface VS<$prefix$>ViewController : UIViewController <I<$prefix$>ViewForPresenter>
|
13
|
-
@property (nonatomic,
|
13
|
+
@property (nonatomic, strong) id<I<$prefix$>PresenterForView> presenter;
|
14
14
|
@end
|
data/lib/vsvipergen/version.rb
CHANGED
data/lib/vsvipergen_contracts.rb
CHANGED
@@ -56,7 +56,7 @@ module Vsvipergen
|
|
56
56
|
templateJavaFileContents.gsub! "<$now$>", now.strip
|
57
57
|
templateJavaFileContents.gsub! "<$year$>", year.strip
|
58
58
|
templateJavaFileContents.gsub! "<$prefix$>", prefix.strip
|
59
|
-
|
59
|
+
|
60
60
|
ViperFileWriter.new.writeFile(newJavaFilePath, templateJavaFileContents)
|
61
61
|
end
|
62
62
|
end
|
data/vsvipergen.gemspec
CHANGED
@@ -34,6 +34,10 @@ Gem::Specification.new do |spec|
|
|
34
34
|
|
35
35
|
spec.add_development_dependency "bundler", "~> 1.16"
|
36
36
|
spec.add_development_dependency "rake", "~> 10.0"
|
37
|
+
spec.add_development_dependency 'xcodeproj', '~> 1.7.0'
|
38
|
+
spec.add_development_dependency 'colorize', '~> 0.8.1'
|
39
|
+
|
37
40
|
# spec.add_development_dependency "rpec", "~> 3.0"
|
38
41
|
spec.add_runtime_dependency 'xcodeproj', '~> 1.7.0'
|
42
|
+
spec.add_runtime_dependency 'colorize', '~> 0.8.1'
|
39
43
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vsvipergen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- vendys-choohyoung
|
@@ -38,6 +38,34 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: xcodeproj
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 1.7.0
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 1.7.0
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: colorize
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.8.1
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.8.1
|
41
69
|
- !ruby/object:Gem::Dependency
|
42
70
|
name: xcodeproj
|
43
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +80,20 @@ dependencies:
|
|
52
80
|
- - "~>"
|
53
81
|
- !ruby/object:Gem::Version
|
54
82
|
version: 1.7.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: colorize
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 0.8.1
|
90
|
+
type: :runtime
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.8.1
|
55
97
|
description: generating VS<$prefix$>Protocol.h, VS<$prefix$>ViewController.h, VS<$prefix$>ViewController.m,
|
56
98
|
VS<$prefix$>Presenter.h, VS<$prefix$>Presenter.m, VS<$prefix$>Interactor.h, VS<$prefix$>Interactor.m,
|
57
99
|
VS<$prefix$>Router.h, VS<$prefix$>Router.m
|