vsvipergen 0.1.10 → 0.1.11
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/Gemfile.lock +9 -3
- data/bin/console +24 -21
- data/exe/vsvipergen +27 -22
- data/lib/templates/VS<$$>Contracts.h +4 -4
- data/lib/templates/VS<$$>Contracts.java +1 -1
- data/lib/templates/VS<$$>Contracts.swift +3 -3
- data/lib/templates/architecturalDecisionRecordFile/VS<$$>_adr.md +32 -0
- data/lib/templates/interactor/VS<$$>Interactor.h +3 -3
- data/lib/templates/interactor/VS<$$>Interactor.java +1 -1
- data/lib/templates/interactor/VS<$$>Interactor.m +3 -3
- data/lib/templates/interactor/VS<$$>Interactor.swift +5 -5
- data/lib/templates/model/VS<$$>VO.h +4 -4
- data/lib/templates/model/VS<$$>VO.java +2 -2
- data/lib/templates/model/VS<$$>VO.m +6 -6
- data/lib/templates/model/VS<$$>VO.swift +4 -4
- data/lib/templates/presenter/VS<$$>Presenter.h +2 -2
- data/lib/templates/presenter/VS<$$>Presenter.java +1 -1
- data/lib/templates/presenter/VS<$$>Presenter.m +4 -4
- data/lib/templates/presenter/VS<$$>Presenter.swift +3 -3
- data/lib/templates/router/VS<$$>Router.h +3 -3
- data/lib/templates/router/VS<$$>Router.java +1 -1
- data/lib/templates/router/VS<$$>Router.m +3 -3
- data/lib/templates/router/VS<$$>Router.swift +3 -3
- data/lib/templates/view/VS<$$>Page.java +1 -1
- data/lib/templates/view/VS<$$>ViewController.h +3 -3
- data/lib/templates/view/VS<$$>ViewController.m +2 -2
- data/lib/templates/view/VS<$$>ViewController.swift +2 -2
- data/lib/vsvipergen.rb +35 -23
- data/lib/vsvipergen/version.rb +1 -1
- data/lib/vsvipergen_adr.rb +29 -0
- data/lib/vsvipergen_contracts.rb +6 -7
- data/lib/vsvipergen_interactor.rb +8 -8
- data/lib/vsvipergen_model.rb +16 -12
- data/lib/vsvipergen_presenter.rb +8 -8
- data/lib/vsvipergen_router.rb +8 -8
- data/lib/vsvipergen_view.rb +8 -8
- data/vsvipergen.gemspec +3 -2
- metadata +21 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7de45e52ba16e779f44ba299885f21c2f685504edaf0bb60fe05cbc6a165e8fd
|
4
|
+
data.tar.gz: 13f2a1197f241cfa9579b6a45e70cd96d307f7a9f9e5b90dabbffb2a2db723a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2371e05a656c0a59e31942a169abe7aad55ddd7d18562898203b45139372fb9838f1f1b141d56dc33172c2c76713bd5d43b2240e873608130b187ae766ef7215
|
7
|
+
data.tar.gz: 4f90d98ffab97a5ac8de13274e0d99366b77c152175d6b33b2efd320a440ab69f32ea3ea9dc02217522349a83e4294c5135c60926c1cffce4459da72247d8ef8
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
vsvipergen (0.1.
|
4
|
+
vsvipergen (0.1.11)
|
5
5
|
colorize (~> 0.8.1)
|
6
6
|
xcodeproj (~> 1.7.0)
|
7
7
|
|
@@ -11,10 +11,15 @@ GEM
|
|
11
11
|
CFPropertyList (3.0.0)
|
12
12
|
atomos (0.1.3)
|
13
13
|
claide (1.0.2)
|
14
|
+
coderay (1.1.3)
|
14
15
|
colored2 (3.1.2)
|
15
16
|
colorize (0.8.1)
|
17
|
+
method_source (1.0.0)
|
16
18
|
nanaimo (0.2.6)
|
17
|
-
|
19
|
+
pry (0.13.1)
|
20
|
+
coderay (~> 1.1)
|
21
|
+
method_source (~> 1.0)
|
22
|
+
rake (13.0.0)
|
18
23
|
xcodeproj (1.7.0)
|
19
24
|
CFPropertyList (>= 2.3.3, < 4.0)
|
20
25
|
atomos (~> 0.1.3)
|
@@ -28,7 +33,8 @@ PLATFORMS
|
|
28
33
|
DEPENDENCIES
|
29
34
|
bundler (~> 1.16)
|
30
35
|
colorize (~> 0.8.1)
|
31
|
-
|
36
|
+
pry (~> 0.13.1)
|
37
|
+
rake (~> 13.0)
|
32
38
|
vsvipergen!
|
33
39
|
xcodeproj (~> 1.7.0)
|
34
40
|
|
data/bin/console
CHANGED
@@ -8,18 +8,28 @@ require "vsvipergen_interactor"
|
|
8
8
|
require "vsvipergen_presenter"
|
9
9
|
require "vsvipergen_view"
|
10
10
|
require "vsvipergen_router"
|
11
|
+
require "vsvipergen_adr"
|
11
12
|
require "xcodeproj"
|
12
13
|
require "colorize"
|
14
|
+
require 'pry'
|
13
15
|
|
14
16
|
begin
|
15
17
|
#################################################
|
16
18
|
############ handle user input start ############
|
17
19
|
projectName = ""
|
18
20
|
lang = ""
|
19
|
-
|
20
|
-
modelPrefix = ""
|
21
|
+
prefix = ""
|
21
22
|
now = Time.now.strftime("%Y/%m/%d")
|
22
23
|
year = Time.now.strftime("%Y")
|
24
|
+
orgName = ""
|
25
|
+
|
26
|
+
# orgName 입력 요구
|
27
|
+
while true
|
28
|
+
puts "input organization name : "
|
29
|
+
orgName = gets
|
30
|
+
|
31
|
+
break if (orgName.strip != "")
|
32
|
+
end
|
23
33
|
|
24
34
|
# 프로그래밍 언어 입력 요구
|
25
35
|
while true
|
@@ -29,7 +39,7 @@ begin
|
|
29
39
|
break if (lang.strip == "objc" || lang.strip == "o" || lang.strip == "android" || lang.strip == "a" || lang.strip == "swift" || lang.strip == "s")
|
30
40
|
end
|
31
41
|
|
32
|
-
# objective-c 선택일 경우 프로젝트 파일 이름 입력 요구
|
42
|
+
# objective-c or swift 선택일 경우 프로젝트 파일 이름 입력 요구
|
33
43
|
if lang.strip == "objc" || lang.strip == "o" || lang.strip == "swift" || lang.strip == "s" then
|
34
44
|
puts "input xcode project file name [ex:VLunch] :"
|
35
45
|
while true
|
@@ -40,21 +50,11 @@ begin
|
|
40
50
|
end
|
41
51
|
|
42
52
|
# 파일 prefix 입력 요구
|
43
|
-
puts "input file prefix [ex:
|
44
|
-
|
53
|
+
puts "input file prefix [ex:input" + " Login".yellow + " for VS" + "Login".yellow + "ViewController(or VS" + "Login".yellow + "Page), ...] : "
|
54
|
+
prefix = gets
|
45
55
|
|
46
|
-
if
|
47
|
-
|
48
|
-
end
|
49
|
-
|
50
|
-
# objective-c 또는 swift 선택일 경우 모델 prefix 입력 요구
|
51
|
-
if lang.strip == "objc" || lang.strip == "o" || lang.strip == "swift" || lang.strip == "s" then
|
52
|
-
puts "input model prefix [ex:type" + " User".yellow + " for VS" + "User".yellow + "VO] : "
|
53
|
-
modelPrefix = gets
|
54
|
-
|
55
|
-
if modelPrefix == "" then
|
56
|
-
modelPrefix = "Default"
|
57
|
-
end
|
56
|
+
if prefix == "" then
|
57
|
+
prefix = "Default"
|
58
58
|
end
|
59
59
|
|
60
60
|
############# handle user input end #############
|
@@ -70,7 +70,9 @@ begin
|
|
70
70
|
subPathAndFilePathHashes = []
|
71
71
|
|
72
72
|
generatorFactory = Vsvipergen::ViperGeneratorFactory.new
|
73
|
-
generatorFactory.init(
|
73
|
+
generatorFactory.init(prefix, now, year, projectName, orgName)
|
74
|
+
|
75
|
+
generatorFactory.createAdrFileGenerator
|
74
76
|
|
75
77
|
if lang.strip == "objc" || lang.strip == "o" then
|
76
78
|
fileGenerators = generatorFactory.createObjcGenerator
|
@@ -79,13 +81,13 @@ begin
|
|
79
81
|
else
|
80
82
|
fileGenerators = generatorFactory.createAndroidGenerator
|
81
83
|
end
|
84
|
+
|
82
85
|
############# create file generator #############
|
83
86
|
#################################################
|
84
87
|
|
85
|
-
|
86
|
-
|
87
88
|
#################################################
|
88
89
|
################## make file ###################
|
90
|
+
|
89
91
|
for generator in fileGenerators
|
90
92
|
files = generator.makeFiles
|
91
93
|
|
@@ -93,6 +95,7 @@ begin
|
|
93
95
|
generatedFilePaths.push(file)
|
94
96
|
end
|
95
97
|
end
|
98
|
+
|
96
99
|
################## make file ###################
|
97
100
|
#################################################
|
98
101
|
|
@@ -104,7 +107,7 @@ begin
|
|
104
107
|
project = Xcodeproj::Project.open(xcodeProjectFile.strip)
|
105
108
|
targets = project.targets
|
106
109
|
mainTarget = project.targets.first
|
107
|
-
newGroup = project.new_group(
|
110
|
+
newGroup = project.new_group(prefix.strip.downcase)
|
108
111
|
|
109
112
|
# Add files, groups to the project in the main group
|
110
113
|
for filePath in generatedFilePaths
|
data/exe/vsvipergen
CHANGED
@@ -7,18 +7,27 @@ require "vsvipergen_interactor"
|
|
7
7
|
require "vsvipergen_presenter"
|
8
8
|
require "vsvipergen_view"
|
9
9
|
require "vsvipergen_router"
|
10
|
+
require "vsvipergen_adr"
|
10
11
|
require "xcodeproj"
|
11
12
|
require "colorize"
|
12
13
|
|
13
|
-
begin
|
14
|
+
begin
|
14
15
|
#################################################
|
15
16
|
############ handle user input start ############
|
16
17
|
projectName = ""
|
17
18
|
lang = ""
|
18
|
-
|
19
|
-
modelPrefix = ""
|
19
|
+
prefix = ""
|
20
20
|
now = Time.now.strftime("%Y/%m/%d")
|
21
21
|
year = Time.now.strftime("%Y")
|
22
|
+
orgName = ""
|
23
|
+
|
24
|
+
# orgName 입력 요구
|
25
|
+
while true
|
26
|
+
puts "input organization name : "
|
27
|
+
orgName = gets
|
28
|
+
|
29
|
+
break if (orgName.strip != "")
|
30
|
+
end
|
22
31
|
|
23
32
|
# 프로그래밍 언어 입력 요구
|
24
33
|
while true
|
@@ -28,7 +37,7 @@ begin
|
|
28
37
|
break if (lang.strip == "objc" || lang.strip == "o" || lang.strip == "android" || lang.strip == "a" || lang.strip == "swift" || lang.strip == "s")
|
29
38
|
end
|
30
39
|
|
31
|
-
# objective-c 선택일 경우 프로젝트 파일 이름 입력 요구
|
40
|
+
# objective-c or swift 선택일 경우 프로젝트 파일 이름 입력 요구
|
32
41
|
if lang.strip == "objc" || lang.strip == "o" || lang.strip == "swift" || lang.strip == "s" then
|
33
42
|
puts "input xcode project file name [ex:VLunch] :"
|
34
43
|
while true
|
@@ -39,21 +48,11 @@ begin
|
|
39
48
|
end
|
40
49
|
|
41
50
|
# 파일 prefix 입력 요구
|
42
|
-
puts "input file prefix [ex:
|
43
|
-
|
51
|
+
puts "input file prefix [ex:input" + " Login".yellow + " for VS" + "Login".yellow + "ViewController(or VS" + "Login".yellow + "Page), ...] : "
|
52
|
+
prefix = gets
|
44
53
|
|
45
|
-
if
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
# objective-c 또는 swift 선택일 경우 모델 prefix 입력 요구
|
50
|
-
if lang.strip == "objc" || lang.strip == "o" || lang.strip == "swift" || lang.strip == "s" then
|
51
|
-
puts "input model prefix [ex:type" + " User".yellow + " for VS" + "User".yellow + "VO] : "
|
52
|
-
modelPrefix = gets
|
53
|
-
|
54
|
-
if modelPrefix == "" then
|
55
|
-
modelPrefix = "Default"
|
56
|
-
end
|
54
|
+
if prefix == "" then
|
55
|
+
prefix = "Default"
|
57
56
|
end
|
58
57
|
|
59
58
|
############# handle user input end #############
|
@@ -66,9 +65,12 @@ begin
|
|
66
65
|
############# create file generator #############
|
67
66
|
fileGenerators = []
|
68
67
|
generatedFilePaths = []
|
68
|
+
subPathAndFilePathHashes = []
|
69
69
|
|
70
70
|
generatorFactory = Vsvipergen::ViperGeneratorFactory.new
|
71
|
-
generatorFactory.init(
|
71
|
+
generatorFactory.init(prefix, now, year, projectName, orgName)
|
72
|
+
|
73
|
+
generatorFactory.createAdrFileGenerator
|
72
74
|
|
73
75
|
if lang.strip == "objc" || lang.strip == "o" then
|
74
76
|
fileGenerators = generatorFactory.createObjcGenerator
|
@@ -77,13 +79,13 @@ begin
|
|
77
79
|
else
|
78
80
|
fileGenerators = generatorFactory.createAndroidGenerator
|
79
81
|
end
|
82
|
+
|
80
83
|
############# create file generator #############
|
81
84
|
#################################################
|
82
85
|
|
83
|
-
|
84
|
-
|
85
86
|
#################################################
|
86
87
|
################## make file ###################
|
88
|
+
|
87
89
|
for generator in fileGenerators
|
88
90
|
files = generator.makeFiles
|
89
91
|
|
@@ -91,6 +93,7 @@ begin
|
|
91
93
|
generatedFilePaths.push(file)
|
92
94
|
end
|
93
95
|
end
|
96
|
+
|
94
97
|
################## make file ###################
|
95
98
|
#################################################
|
96
99
|
|
@@ -102,14 +105,16 @@ begin
|
|
102
105
|
project = Xcodeproj::Project.open(xcodeProjectFile.strip)
|
103
106
|
targets = project.targets
|
104
107
|
mainTarget = project.targets.first
|
105
|
-
newGroup = project.new_group(
|
108
|
+
newGroup = project.new_group(prefix.strip.downcase)
|
106
109
|
|
107
110
|
# Add files, groups to the project in the main group
|
108
111
|
for filePath in generatedFilePaths
|
112
|
+
puts "filePath : #{filePath}"
|
109
113
|
|
110
114
|
# extract child group name from file path
|
111
115
|
pathArr = filePath.split("/")
|
112
116
|
childGroupName = pathArr[pathArr.count - 2]
|
117
|
+
puts "childGroupName : #{childGroupName}"
|
113
118
|
childGroup = nil
|
114
119
|
|
115
120
|
if childGroupName != "" then
|
@@ -1,14 +1,14 @@
|
|
1
1
|
//
|
2
|
-
// VS<$
|
3
|
-
//
|
2
|
+
// VS<$prefix$>Contracts.h
|
3
|
+
// <$projectName$>
|
4
4
|
//
|
5
|
-
// Created by
|
5
|
+
// Created by <$orgName$> on <$now$>..
|
6
6
|
// Copyright © <$year$>년 Vendys. All rights reserved.
|
7
7
|
//
|
8
8
|
|
9
9
|
#import <Foundation/Foundation.h>
|
10
10
|
#import <UIKit/UIKit.h>
|
11
|
-
#import "VS<$
|
11
|
+
#import "VS<$prefix$>VO.h"
|
12
12
|
|
13
13
|
// presenter 클래스가 구현해야 할 프로토콜 : view 클래스가 호출
|
14
14
|
@protocol I<$prefix$>PresenterForView <NSObject>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# [구조적 의사결정 기록(short title of solved problem and solution)]
|
2
|
+
* 의사결정 참여자(Deciders): [개발자들(커밋 author 를 참고)]
|
3
|
+
* 날짜(Date): [커밋 날짜를 참고]
|
4
|
+
* 이슈(Technical Story): [jira issue id]
|
5
|
+
|
6
|
+
## 의사결정이 필요한 배경(Context and Problem Statement)
|
7
|
+
[왜 의사결정이 필요했는지 서술하시오]
|
8
|
+
|
9
|
+
## 의사결정에 주요한 영향을 준 요인(Decision Drivers)
|
10
|
+
* [고객사: 요구사항]
|
11
|
+
|
12
|
+
## 고려가능한 대체 옵션(Considered Options)
|
13
|
+
* [없다면 무시]
|
14
|
+
|
15
|
+
## 결과(Decision Outcome)
|
16
|
+
이런 저런 요소들을 고려한 결과를 작성할 것.
|
17
|
+
|
18
|
+
### 긍정적 기대효과(Positive Consequences)
|
19
|
+
* [고객사의 필요 충족]
|
20
|
+
|
21
|
+
### 부정적 기대효과(Negative Consequences)
|
22
|
+
* [고객사가 재계약하지 않을 경우 쓸모없는 기능을 전락할 수 있음]
|
23
|
+
|
24
|
+
## 고려가능한 대체 옵션의 장,단점(Pros and Cons of the Options)
|
25
|
+
### [없다면 무시]
|
26
|
+
[없다면 무시]
|
27
|
+
* Good, because [argument a]
|
28
|
+
* Bad, because [argument b]
|
29
|
+
|
30
|
+
## Links
|
31
|
+
* [당신이 읽고 있는 이 파일의 원본 템플릿(이 링크는 절대 제거하지 마시오)](https://github.com/joelparkerhenderson/architecture_decision_record/blob/master/adr_template_madr.md)
|
32
|
+
* [Link type](Link to ADR)
|
@@ -1,8 +1,8 @@
|
|
1
1
|
//
|
2
|
-
// VS<$
|
3
|
-
//
|
2
|
+
// VS<$prefix$>VO.swift
|
3
|
+
// <$projectName$>
|
4
4
|
//
|
5
|
-
// Created by
|
5
|
+
// Created by <$orgName$> on <$now$>..
|
6
6
|
// Copyright © <$year$>년 Vendys. All rights reserved.
|
7
7
|
//
|
8
8
|
|
@@ -10,9 +10,9 @@ import Foundation
|
|
10
10
|
|
11
11
|
class VS<$prefix$>Interactor {
|
12
12
|
weak var presenter: I<$prefix$>PresenterForInteractor?
|
13
|
-
var vo: VS<$
|
13
|
+
var vo: VS<$prefix$>VO
|
14
14
|
|
15
|
-
init(vo: VS<$
|
15
|
+
init(vo: VS<$prefix$>VO) {
|
16
16
|
self.vo = vo
|
17
17
|
}
|
18
18
|
}
|
@@ -1,13 +1,13 @@
|
|
1
1
|
//
|
2
|
-
// VS<$
|
3
|
-
//
|
2
|
+
// VS<$prefix$>VO.h
|
3
|
+
// <$projectName$>
|
4
4
|
//
|
5
|
-
// Created by
|
5
|
+
// Created by <$orgName$> on <$now$>..
|
6
6
|
// Copyright © <$year$>년 Vendys. All rights reserved.
|
7
7
|
//
|
8
8
|
|
9
9
|
#import <Foundation/Foundation.h>
|
10
10
|
|
11
|
-
@interface VS<$
|
11
|
+
@interface VS<$prefix$>VO : JSONModel
|
12
12
|
<$properties$>
|
13
13
|
@end
|