vsvipergen 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -0
  3. data/Gemfile.lock +9 -3
  4. data/bin/console +24 -21
  5. data/exe/vsvipergen +27 -22
  6. data/lib/templates/VS<$$>Contracts.h +4 -4
  7. data/lib/templates/VS<$$>Contracts.java +1 -1
  8. data/lib/templates/VS<$$>Contracts.swift +3 -3
  9. data/lib/templates/architecturalDecisionRecordFile/VS<$$>_adr.md +32 -0
  10. data/lib/templates/interactor/VS<$$>Interactor.h +3 -3
  11. data/lib/templates/interactor/VS<$$>Interactor.java +1 -1
  12. data/lib/templates/interactor/VS<$$>Interactor.m +3 -3
  13. data/lib/templates/interactor/VS<$$>Interactor.swift +5 -5
  14. data/lib/templates/model/VS<$$>VO.h +4 -4
  15. data/lib/templates/model/VS<$$>VO.java +2 -2
  16. data/lib/templates/model/VS<$$>VO.m +6 -6
  17. data/lib/templates/model/VS<$$>VO.swift +4 -4
  18. data/lib/templates/presenter/VS<$$>Presenter.h +2 -2
  19. data/lib/templates/presenter/VS<$$>Presenter.java +1 -1
  20. data/lib/templates/presenter/VS<$$>Presenter.m +4 -4
  21. data/lib/templates/presenter/VS<$$>Presenter.swift +3 -3
  22. data/lib/templates/router/VS<$$>Router.h +3 -3
  23. data/lib/templates/router/VS<$$>Router.java +1 -1
  24. data/lib/templates/router/VS<$$>Router.m +3 -3
  25. data/lib/templates/router/VS<$$>Router.swift +3 -3
  26. data/lib/templates/view/VS<$$>Page.java +1 -1
  27. data/lib/templates/view/VS<$$>ViewController.h +3 -3
  28. data/lib/templates/view/VS<$$>ViewController.m +2 -2
  29. data/lib/templates/view/VS<$$>ViewController.swift +2 -2
  30. data/lib/vsvipergen.rb +35 -23
  31. data/lib/vsvipergen/version.rb +1 -1
  32. data/lib/vsvipergen_adr.rb +29 -0
  33. data/lib/vsvipergen_contracts.rb +6 -7
  34. data/lib/vsvipergen_interactor.rb +8 -8
  35. data/lib/vsvipergen_model.rb +16 -12
  36. data/lib/vsvipergen_presenter.rb +8 -8
  37. data/lib/vsvipergen_router.rb +8 -8
  38. data/lib/vsvipergen_view.rb +8 -8
  39. data/vsvipergen.gemspec +3 -2
  40. metadata +21 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ce84b981ebcdf231134370ed75cd51e001ea3d714570242d9c5ca2c251220734
4
- data.tar.gz: 1672ac7dd893451d08d208c3489ddc36c6cb418db2b82f9428027c259b9ae226
3
+ metadata.gz: 7de45e52ba16e779f44ba299885f21c2f685504edaf0bb60fe05cbc6a165e8fd
4
+ data.tar.gz: 13f2a1197f241cfa9579b6a45e70cd96d307f7a9f9e5b90dabbffb2a2db723a7
5
5
  SHA512:
6
- metadata.gz: 44712c606bcf8412474cf45fa3b0fa09b960b503cba254b1516532ce1be7df1f10b96f5f238f7fcf615963640109096edd2befc88e30df5275ce94ae0d95d2a2
7
- data.tar.gz: 4cea80a9fc1ba022adc65cc7ed7e22694c87eb9c7c33b2b4d39c1b655a5c24ff6c1f6e532e6f7463bbd8e96b79422674c3b28634449931f54d775f7fb6113ec4
6
+ metadata.gz: 2371e05a656c0a59e31942a169abe7aad55ddd7d18562898203b45139372fb9838f1f1b141d56dc33172c2c76713bd5d43b2240e873608130b187ae766ef7215
7
+ data.tar.gz: 4f90d98ffab97a5ac8de13274e0d99366b77c152175d6b33b2efd320a440ab69f32ea3ea9dc02217522349a83e4294c5135c60926c1cffce4459da72247d8ef8
data/Gemfile CHANGED
@@ -4,3 +4,5 @@ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
4
 
5
5
  # Specify your gem's dependencies in vsvipergen.gemspec
6
6
  gemspec
7
+
8
+ gem 'pry', '~> 0.13.1'
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- vsvipergen (0.1.9)
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
- rake (10.5.0)
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
- rake (~> 10.0)
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
- filePrefix = ""
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:type" + " Login".yellow + " for VS" + "Login".yellow + "ViewController(or VS" + "Login".yellow + "Page), ...] : "
44
- filePrefix = gets
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 filePrefix == "" then
47
- filePrefix = "Default"
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(filePrefix, modelPrefix, now, year)
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(filePrefix.strip.downcase)
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
- filePrefix = ""
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:type" + " Login".yellow + " for VS" + "Login".yellow + "ViewController(or VS" + "Login".yellow + "Page), ...] : "
43
- filePrefix = gets
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 filePrefix == "" then
46
- filePrefix = "Default"
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(filePrefix, modelPrefix, now, year)
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(filePrefix.strip.downcase)
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<$filePrefix$>Contracts.h
3
- // VLunch
2
+ // VS<$prefix$>Contracts.h
3
+ // <$projectName$>
4
4
  //
5
- // Created by Vendys on <$now$>..
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<$modelPrefix$>VO.h"
11
+ #import "VS<$prefix$>VO.h"
12
12
 
13
13
  // presenter 클래스가 구현해야 할 프로토콜 : view 클래스가 호출
14
14
  @protocol I<$prefix$>PresenterForView <NSObject>
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Created by Vendys on <$now$>..
2
+ * Created by <$orgName$> on <$now$>..
3
3
  */
4
4
 
5
5
  public class VS<$prefix$>Contracts {
@@ -1,8 +1,8 @@
1
1
  //
2
- // VS<$filePrefix$>Contracts.swift
3
- // VLunch
2
+ // VS<$prefix$>Contracts.swift
3
+ // <$projectName$>
4
4
  //
5
- // Created by Vendys on <$now$>..
5
+ // Created by <$orgName$> on <$now$>..
6
6
  // Copyright © <$year$>년 Vendys. All rights reserved.
7
7
  //
8
8
 
@@ -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<$modelPrefix$>VO.h
3
- // VLunch
2
+ // VS<$prefix$>VO.h
3
+ // <$projectName$>
4
4
  //
5
- // Created by vendys on <$now$>..
5
+ // Created by <$orgName$> on <$now$>..
6
6
  // Copyright © <$year$>년 Vendys. All rights reserved.
7
7
  //
8
8
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Created by Vendys on <$now$>..
2
+ * Created by <$orgName$> on <$now$>..
3
3
  */
4
4
 
5
5
  public class VS<$prefix$>Interactor extends CommonDataManager implements VS<$prefix$>Constracts.I<$prefix$>InteractorForPresenter {
@@ -1,8 +1,8 @@
1
1
  //
2
- // VS<$modelPrefix$>VO.h
3
- // VLunch
2
+ // VS<$prefix$>VO.h
3
+ // <$projectName$>
4
4
  //
5
- // Created by vendys on <$now$>..
5
+ // Created by <$orgName$> on <$now$>..
6
6
  // Copyright © <$year$>년 Vendys. All rights reserved.
7
7
  //
8
8
 
@@ -1,8 +1,8 @@
1
1
  //
2
- // VS<$modelPrefix$>VO.swift
3
- // VLunch
2
+ // VS<$prefix$>VO.swift
3
+ // <$projectName$>
4
4
  //
5
- // Created by vendys on <$now$>..
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<$modelPrefix$>VO
13
+ var vo: VS<$prefix$>VO
14
14
 
15
- init(vo: VS<$modelPrefix$>VO) {
15
+ init(vo: VS<$prefix$>VO) {
16
16
  self.vo = vo
17
17
  }
18
18
  }
@@ -1,13 +1,13 @@
1
1
  //
2
- // VS<$modelPrefix$>VO.h
3
- // VLunch
2
+ // VS<$prefix$>VO.h
3
+ // <$projectName$>
4
4
  //
5
- // Created by vendys on <$now$>..
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<$modelPrefix$>VO : JSONModel
11
+ @interface VS<$prefix$>VO : JSONModel
12
12
  <$properties$>
13
13
  @end
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Created by Vendys on <$now$>..
2
+ * Created by <$orgName$> on <$now$>..
3
3
  */
4
4
 
5
- public class VS<$modelPrefix$> {
5
+ public class VS<$prefix$> {
6
6
  <$properties$>
7
7
  }