vipergen-roche 0.2.5

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.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +134 -0
  4. data/bin/vipergen +9 -0
  5. data/lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.h +12 -0
  6. data/lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.m +10 -0
  7. data/lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.h +12 -0
  8. data/lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.m +10 -0
  9. data/lib/templates/default/objc/Interactor/VIPERInteractor.h +16 -0
  10. data/lib/templates/default/objc/Interactor/VIPERInteractor.m +10 -0
  11. data/lib/templates/default/objc/Interactor/VIPERItem.h +10 -0
  12. data/lib/templates/default/objc/Interactor/VIPERItem.m +10 -0
  13. data/lib/templates/default/objc/Presenter/VIPERPresenter.h +17 -0
  14. data/lib/templates/default/objc/Presenter/VIPERPresenter.m +11 -0
  15. data/lib/templates/default/objc/Protocols/VIPERProtocols.h +80 -0
  16. data/lib/templates/default/objc/View/VIPERView.h +13 -0
  17. data/lib/templates/default/objc/View/VIPERView.m +32 -0
  18. data/lib/templates/default/objc/WireFrame/VIPERWireFrame.h +18 -0
  19. data/lib/templates/default/objc/WireFrame/VIPERWireFrame.m +32 -0
  20. data/lib/templates/default/swift/DataManager/API/VIPERAPIDataManager.swift +11 -0
  21. data/lib/templates/default/swift/DataManager/Local/VIPERLocalDataManager.swift +11 -0
  22. data/lib/templates/default/swift/Interactor/VIPERInteractor.swift +15 -0
  23. data/lib/templates/default/swift/Interactor/VIPERItem.swift +13 -0
  24. data/lib/templates/default/swift/Presenter/VIPERPresenter.swift +15 -0
  25. data/lib/templates/default/swift/Protocols/VIPERProtocols.swift +70 -0
  26. data/lib/templates/default/swift/View/VIPERView.swift +12 -0
  27. data/lib/templates/default/swift/WireFrame/VIPERWireFrame.swift +29 -0
  28. data/lib/templates/default/viperspec.yml +4 -0
  29. data/lib/templates/testable/objc/DataManager/VIPERDataManager.h +15 -0
  30. data/lib/templates/testable/objc/DataManager/VIPERDataManager.m +11 -0
  31. data/lib/templates/testable/objc/Interactor/VIPERInteractor.h +16 -0
  32. data/lib/templates/testable/objc/Interactor/VIPERInteractor.m +10 -0
  33. data/lib/templates/testable/objc/Interactor/VIPERInteractorSpec.m +31 -0
  34. data/lib/templates/testable/objc/Presenter/VIPERPresenter.h +18 -0
  35. data/lib/templates/testable/objc/Presenter/VIPERPresenter.m +11 -0
  36. data/lib/templates/testable/objc/Presenter/VIPERPresenterSpec.m +31 -0
  37. data/lib/templates/testable/objc/Protocols/VIPERProtocols.h +64 -0
  38. data/lib/templates/testable/objc/ViewController/VIPERViewController.h +13 -0
  39. data/lib/templates/testable/objc/ViewController/VIPERViewController.m +32 -0
  40. data/lib/templates/testable/objc/ViewController/VIPERViewControllerSpec.m +31 -0
  41. data/lib/templates/testable/objc/WireFrame/VIPERWireFrame.h +19 -0
  42. data/lib/templates/testable/objc/WireFrame/VIPERWireFrame.m +31 -0
  43. data/lib/templates/testable/swift/DataManager/API/VIPERAPIDataManager.swift +11 -0
  44. data/lib/templates/testable/swift/DataManager/Local/VIPERLocalDataManager.swift +11 -0
  45. data/lib/templates/testable/swift/Interactor/VIPERInteractor.swift +15 -0
  46. data/lib/templates/testable/swift/Interactor/VIPERInteractorSpec.swift +22 -0
  47. data/lib/templates/testable/swift/Interactor/VIPERItem.swift +13 -0
  48. data/lib/templates/testable/swift/Presenter/VIPERPresenter.swift +15 -0
  49. data/lib/templates/testable/swift/Presenter/VIPERPresenterSpec.swift +22 -0
  50. data/lib/templates/testable/swift/Protocols/VIPERProtocols.swift +70 -0
  51. data/lib/templates/testable/swift/View/VIPERView.swift +12 -0
  52. data/lib/templates/testable/swift/View/VIPERViewSpec.swift +22 -0
  53. data/lib/templates/testable/swift/WireFrame/VIPERWireFrame.swift +29 -0
  54. data/lib/templates/testable/viperspec.yml +4 -0
  55. data/lib/vipergen.rb +6 -0
  56. data/lib/vipergen/dirutils.rb +17 -0
  57. data/lib/vipergen/filemanager.rb +51 -0
  58. data/lib/vipergen/generator.rb +66 -0
  59. data/lib/vipergen/templatemanager.rb +53 -0
  60. data/lib/vipergen/version.rb +4 -0
  61. data/lib/vipergen/viperthor.rb +21 -0
  62. data/spec/spec_helper.rb +4 -0
  63. data/spec/vipergen/vipergen_spec.rb +133 -0
  64. metadata +181 -0
@@ -0,0 +1,13 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ #import <UIKit/UIKit.h>
7
+ #import "VIPERProtocols.h"
8
+
9
+ @interface VIPERViewController : UIViewController <VIPERViewProtocol>
10
+
11
+ @property (nonatomic, strong) id <VIPERPresenterProtocol> presenter;
12
+
13
+ @end
@@ -0,0 +1,32 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ #import "VIPERViewController.h"
7
+
8
+ @implementation VIPERViewController
9
+
10
+ #pragma mark - ViewController Lifecycle
11
+
12
+ - (void)viewDidLoad
13
+ {
14
+ [super viewDidLoad];
15
+ }
16
+
17
+ - (void)viewDidDisappear:(BOOL)animated
18
+ {
19
+ [super viewDidDisappear:animated];
20
+ }
21
+
22
+ - (void)viewWillAppear:(BOOL)animated
23
+ {
24
+ [super viewWillAppear:animated];
25
+ }
26
+
27
+ - (void)viewWillDisappear:(BOOL)animated
28
+ {
29
+ [super viewWillDisappear:animated];
30
+ }
31
+
32
+ @end
@@ -0,0 +1,31 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ //#import "Spec.h" - this header should have imports of Specta, Expecta, OCMokito, OCHamrest
7
+ #import "VIPERViewController.h"
8
+
9
+
10
+ SpecBegin(VIPERViewController)
11
+
12
+ describe(@"VIPERViewController",^{
13
+ __block VIPERViewController *sut;
14
+
15
+ beforeEach(^{
16
+
17
+ });
18
+
19
+ afterEach(^{
20
+ sut = nil;
21
+ });
22
+
23
+ describe(@"VIPERViewControllerComponent",{
24
+ it(@"VIPERViewControllerComponent should pass test",{
25
+
26
+ });
27
+ });
28
+
29
+ });
30
+
31
+ SpecEnd
@@ -0,0 +1,19 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ #import <Foundation/Foundation.h>
7
+ #import "VIPERProtocols.h"
8
+ #import "VIPERViewController.h"
9
+ #import "VIPERDataManager.h"
10
+ #import "VIPERInteractor.h"
11
+ #import "VIPERPresenter.h"
12
+ #import "VIPERWireframe.h"
13
+ #import <UIKit/UIKit.h>
14
+
15
+ @interface VIPERWireFrame : NSObject
16
+
17
+ + (void)presentVIPERModuleFrom:(id)fromView;
18
+
19
+ @end
@@ -0,0 +1,31 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ #import "VIPERWireFrame.h"
7
+
8
+ @implementation VIPERWireFrame
9
+
10
+ + (void)presentVIPERModuleFrom:(UIViewController*)fromViewController
11
+ {
12
+ // Generating module components
13
+ UIViewController <VIPERViewProtocol> *viewController = [[VIPERViewController alloc] init];
14
+ id <VIPERPresenterProtocol, VIPERInteractorOutputProtocol> presenter = [VIPERPresenter new];
15
+ id <VIPERInteractorInputProtocol, VIPERDataManagerOutputProtocol> interactor = [VIPERInteractor new];
16
+ id <VIPERDataManagerInputProtocol> dataManager = [VIPERDataManager new];
17
+ VIPERWireFrame *wireFrame = [VIPERWireFrame new];
18
+
19
+ // Connecting
20
+ viewController.presenter = presenter;
21
+ presenter.view = viewController;
22
+ presenter.wireFrame = wireFrame;
23
+ presenter.interactor = interactor;
24
+ interactor.presenter = presenter;
25
+ interactor.dataManager = dataManager;
26
+ dataManager.interactor = interactor;
27
+
28
+ //TOODO - New view controller presentation (present, push, pop, .. )
29
+ }
30
+
31
+ @end
@@ -0,0 +1,11 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+
8
+ class VIPERAPIDataManager: VIPERAPIDataManagerInputProtocol
9
+ {
10
+ init() {}
11
+ }
@@ -0,0 +1,11 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+
8
+ class VIPERLocalDataManager: VIPERLocalDataManagerInputProtocol
9
+ {
10
+ init() {}
11
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+
8
+ class VIPERInteractor: VIPERInteractorInputProtocol
9
+ {
10
+ weak var presenter: VIPERInteractorOutputProtocol?
11
+ var APIDataManager: VIPERAPIDataManagerInputProtocol?
12
+ var localDatamanager: VIPERLocalDataManagerInputProtocol?
13
+
14
+ init() {}
15
+ }
@@ -0,0 +1,22 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Quick
7
+ import Nimble
8
+
9
+ @testable import SWIFT_MODULE
10
+
11
+ class VIPERInteractorSpec: QuickSpec{
12
+
13
+ class Mock{
14
+
15
+ }
16
+
17
+ override func spec(){
18
+ describe(""){
19
+
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,13 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+
8
+ struct VIPERItem
9
+ {
10
+ /**
11
+ * Attributes here
12
+ */
13
+ }
@@ -0,0 +1,15 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+
8
+ class VIPERPresenter: VIPERPresenterProtocol, VIPERInteractorOutputProtocol
9
+ {
10
+ weak var view: VIPERViewProtocol?
11
+ var interactor: VIPERInteractorInputProtocol?
12
+ var wireFrame: VIPERWireFrameProtocol?
13
+
14
+ init() {}
15
+ }
@@ -0,0 +1,22 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Quick
7
+ import Nimble
8
+
9
+ @testable import SWIFT_MODULE
10
+
11
+ class VIPERPresenterSpec: QuickSpec{
12
+
13
+ class Mock{
14
+
15
+ }
16
+
17
+ override func spec(){
18
+ describe(""){
19
+
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,70 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+
8
+ protocol VIPERViewProtocol: class
9
+ {
10
+ var presenter: VIPERPresenterProtocol? { get set }
11
+ /**
12
+ * Add here your methods for communication PRESENTER -> VIEW
13
+ */
14
+ }
15
+
16
+ protocol VIPERWireFrameProtocol: class
17
+ {
18
+ static func presentVIPERModule(fromView view: AnyObject)
19
+ /**
20
+ * Add here your methods for communication PRESENTER -> WIREFRAME
21
+ */
22
+ }
23
+
24
+ protocol VIPERPresenterProtocol: class
25
+ {
26
+ var view: VIPERViewProtocol? { get set }
27
+ var interactor: VIPERInteractorInputProtocol? { get set }
28
+ var wireFrame: VIPERWireFrameProtocol? { get set }
29
+ /**
30
+ * Add here your methods for communication VIEW -> PRESENTER
31
+ */
32
+ }
33
+
34
+ protocol VIPERInteractorOutputProtocol: class
35
+ {
36
+ /**
37
+ * Add here your methods for communication INTERACTOR -> PRESENTER
38
+ */
39
+ }
40
+
41
+ protocol VIPERInteractorInputProtocol: class
42
+ {
43
+ var presenter: VIPERInteractorOutputProtocol? { get set }
44
+ var APIDataManager: VIPERAPIDataManagerInputProtocol? { get set }
45
+ var localDatamanager: VIPERLocalDataManagerInputProtocol? { get set }
46
+ /**
47
+ * Add here your methods for communication PRESENTER -> INTERACTOR
48
+ */
49
+ }
50
+
51
+ protocol VIPERDataManagerInputProtocol: class
52
+ {
53
+ /**
54
+ * Add here your methods for communication INTERACTOR -> DATAMANAGER
55
+ */
56
+ }
57
+
58
+ protocol VIPERAPIDataManagerInputProtocol: class
59
+ {
60
+ /**
61
+ * Add here your methods for communication INTERACTOR -> APIDATAMANAGER
62
+ */
63
+ }
64
+
65
+ protocol VIPERLocalDataManagerInputProtocol: class
66
+ {
67
+ /**
68
+ * Add here your methods for communication INTERACTOR -> LOCALDATAMANAGER
69
+ */
70
+ }
@@ -0,0 +1,12 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+ import UIKit
8
+
9
+ class VIPERView: UIViewController, VIPERViewProtocol
10
+ {
11
+ var presenter: VIPERPresenterProtocol?
12
+ }
@@ -0,0 +1,22 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Quick
7
+ import Nimble
8
+
9
+ @testable import SWIFT_MODULE
10
+
11
+ class VIPERViewSpec: QuickSpec{
12
+
13
+ class Mock{
14
+
15
+ }
16
+
17
+ override func spec(){
18
+ describe(""){
19
+
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,29 @@
1
+ //
2
+ // Created by AUTHOR.
3
+ // Copyright (c) YEAR AUTHOR. All rights reserved.
4
+ //
5
+
6
+ import Foundation
7
+
8
+ class VIPERWireFrame: VIPERWireFrameProtocol
9
+ {
10
+ class func presentVIPERModule(fromView view: AnyObject)
11
+ {
12
+ // Generating module components
13
+ let view: VIPERViewProtocol = VIPERView()
14
+ let presenter: protocol<VIPERPresenterProtocol, VIPERInteractorOutputProtocol> = VIPERPresenter()
15
+ let interactor: VIPERInteractorInputProtocol = VIPERInteractor()
16
+ let APIDataManager: VIPERAPIDataManagerInputProtocol = VIPERAPIDataManager()
17
+ let localDataManager: VIPERLocalDataManagerInputProtocol = VIPERLocalDataManager()
18
+ let wireFrame: VIPERWireFrameProtocol = VIPERWireFrame()
19
+
20
+ // Connecting
21
+ view.presenter = presenter
22
+ presenter.view = view
23
+ presenter.wireFrame = wireFrame
24
+ presenter.interactor = interactor
25
+ interactor.presenter = presenter
26
+ interactor.APIDataManager = APIDataManager
27
+ interactor.localDatamanager = localDataManager
28
+ }
29
+ }
@@ -0,0 +1,4 @@
1
+ author: Michal Wojtysiak (Roche)
2
+ author_email: michal.wojtysiak@roche.com
3
+ template_description: Template for VIPER structure including Tests (BDD/TDD), Swift 2.0 compatible. Quick&Nible for Swift, Specta, Expecta, OCMockito for Obj-C
4
+ updated_at: 2015-09-30
data/lib/vipergen.rb ADDED
@@ -0,0 +1,6 @@
1
+ require 'vipergen/generator'
2
+ require 'vipergen/filemanager'
3
+ require 'vipergen/dirutils'
4
+ require 'vipergen/version'
5
+ require 'vipergen/viperthor'
6
+ require 'vipergen/templatemanager'
@@ -0,0 +1,17 @@
1
+ module Vipergen
2
+ class DirUtils
3
+ # Return a directory with the project libraries.
4
+ def self.gem_libdir
5
+ t = ["#{File.dirname(File.expand_path($0))}/../lib/#{Vipergen::NAME}",
6
+ "#{Gem.dir}/gems/#{Vipergen::NAME}-#{Vipergen::VERSION}/lib/#{Vipergen::NAME}"]
7
+ t.each {|i| return i if File.readable?(i) }
8
+ raise "both paths are invalid: #{t}"
9
+ end
10
+
11
+ # Returns the directories inside a given one
12
+ def self.directories_in(directory)
13
+ expanded_dir = File.expand_path(directory)
14
+ return Dir.glob(File.join(expanded_dir,'*')).select {|f| File.directory? f}
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,51 @@
1
+ module Vipergen
2
+ # File manager class
3
+ class FileManager
4
+
5
+ # Returns if the template is valid by the VIPER generator
6
+ def self.is_template_valid(template)
7
+ return Vipergen::TemplateManager.templates.include? template
8
+ end
9
+
10
+ # Returns if the language is valid by the VIPER generator
11
+ def self.is_language_valid(language)
12
+ return (Vipergen::Generator::LANGUAGES).include? language
13
+ end
14
+
15
+ # Return the path if valid template and language
16
+ # @return String with valid path
17
+ def self.path_from(template, language)
18
+ return nil if !is_language_valid(language) || !is_template_valid(template)
19
+ return File.join(Vipergen::TemplateManager.templates_dir, template, language)
20
+ end
21
+
22
+ # Returns an array with files in a given path
23
+ # @return Array with the files in a given path
24
+ def self.files_in_path(path)
25
+ return Dir[File.join("#{path}","/**/*")].select {|f| File.file?(f)}
26
+ end
27
+
28
+ # Returns the destination viper path
29
+ # @return Destination root path
30
+ def self.destination_viper_path(path, name)
31
+ expand_path = File.expand_path(path)
32
+ return File.join(expand_path,name)
33
+ end
34
+
35
+ # Copy a system item to another place
36
+ def self.copy(from, to)
37
+ to_expand_path = File.expand_path(to)
38
+ from_expand_path = File.expand_path(from)
39
+ FileUtils.mkdir_p (to_expand_path)
40
+ FileUtils.copy_entry(from_expand_path, to_expand_path)
41
+ end
42
+
43
+ # Move a system item to another place
44
+ def self.move(from, to)
45
+ to_expand_path = File.expand_path(to)
46
+ from_expand_path = File.expand_path(from)
47
+ FileUtils.move(from_expand_path, to_expand_path)
48
+ end
49
+
50
+ end
51
+ end