vipergen 0.2.2 → 0.2.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/README.md +15 -5
- data/lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.h +2 -2
- data/lib/templates/default/objc/DataManager/API/VIPERAPIDataManager.m +2 -2
- data/lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.h +2 -2
- data/lib/templates/default/objc/DataManager/Local/VIPERLocalDataManager.m +2 -2
- data/lib/templates/default/objc/Interactor/VIPERInteractor.h +2 -2
- data/lib/templates/default/objc/Interactor/VIPERInteractor.m +2 -2
- data/lib/templates/default/objc/Interactor/VIPERItem.h +2 -5
- data/lib/templates/default/objc/Interactor/VIPERItem.m +2 -5
- data/lib/templates/default/objc/Presenter/VIPERPresenter.h +2 -2
- data/lib/templates/default/objc/Presenter/VIPERPresenter.m +2 -2
- data/lib/templates/default/objc/Protocols/VIPERProtocols.h +2 -2
- data/lib/templates/default/objc/View/VIPERView.h +2 -2
- data/lib/templates/default/objc/View/VIPERView.m +2 -2
- data/lib/templates/default/objc/WireFrame/VIPERWireFrame.h +2 -2
- data/lib/templates/default/objc/WireFrame/VIPERWireFrame.m +2 -2
- data/lib/templates/default/swift/DataManager/API/VIPERAPIDataManager.swift +2 -5
- data/lib/templates/default/swift/DataManager/Local/VIPERLocalDataManager.swift +2 -5
- data/lib/templates/default/swift/Interactor/VIPERInteractor.swift +2 -5
- data/lib/templates/default/swift/Interactor/VIPERItem.swift +2 -5
- data/lib/templates/default/swift/Presenter/VIPERPresenter.swift +2 -5
- data/lib/templates/default/swift/Protocols/VIPERProtocols.swift +5 -8
- data/lib/templates/default/swift/View/VIPERView.swift +2 -5
- data/lib/templates/default/swift/WireFrame/VIPERWireFrame.swift +2 -5
- data/lib/vipergen/generator.rb +12 -7
- data/lib/vipergen/version.rb +1 -1
- data/lib/vipergen/viperthor.rb +2 -1
- data/spec/vipergen/vipergen_spec.rb +9 -7
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3247a8166344baa0ddda9c8dbe2c075d9b38cbd8
|
4
|
+
data.tar.gz: 59b81a5b17de090ab513717644ca6d0dff9415a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 879f5c3929b2228b75b95f5766d9380185321c2ab6ca513529d80da07eb5a7e2a3b336d9a0cdcb0ea44b7dfd24a961b5f0845fddd4958f1ab3179f027483644d
|
7
|
+
data.tar.gz: 35a37204ea55241aa6e956e801bdc838383ffe7474375bb6488ea695c19442b2e98d284e7be2fca16cd565afa346edb646cd0511dd834b1624aabafd8d732a5b
|
data/README.md
CHANGED
@@ -34,11 +34,12 @@ The implementation scheme returned by this generator is hardly inspired in the e
|
|
34
34
|
- Added default template
|
35
35
|
- Fully components tested
|
36
36
|
|
37
|
-
###
|
38
|
-
- Example
|
39
|
-
-
|
40
|
-
-
|
41
|
-
|
37
|
+
### Changelog 0.2.3
|
38
|
+
- VIPER Example using the Twitter API
|
39
|
+
- Default template implemented in Swift
|
40
|
+
-
|
41
|
+
|
42
|
+
### Expected in version 0.3
|
42
43
|
- Integrate with XCode as a plugin (http://nshipster.com/xcode-plugins/)
|
43
44
|
|
44
45
|
## Viper files structure
|
@@ -89,6 +90,15 @@ vipergen generate MyFirstViperModule --path=~/myproject/shared
|
|
89
90
|
```
|
90
91
|
And then the files structure will be automatically created. Don't forget to add this folder to your project dragging it into the XCode/Appcode inspector
|
91
92
|
|
93
|
+
## How can I try the demo project?
|
94
|
+
|
95
|
+
1. Clone the repo `git clone https://github.com/pepibumur/viper-module-generator.git`
|
96
|
+
2. Move into the repo folder and update the git submodules `git sumodule update --init`
|
97
|
+
3. In the folder VIPERGenDemo install the pods `pod install`
|
98
|
+
4. Open the project from the `VIPERGenDemo.xcworkspace` file
|
99
|
+
5. Enjoy it!
|
100
|
+
|
101
|
+
|
92
102
|
## Developer tips
|
93
103
|
### Update the gem
|
94
104
|
When the gem is updated it has to be reported to the gem repository. I followed this tutorial http://amaras-tech.co.uk/article/43/Creating_executable_gems that basically says that once you have your gem ready execute:
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___PPinera___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
#import <Foundation/Foundation.h>
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 22/08/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
@@ -12,7 +9,7 @@ protocol VIPERViewProtocol: class
|
|
12
9
|
{
|
13
10
|
var presenter: VIPERPresenterProtocol? { get set }
|
14
11
|
/**
|
15
|
-
* Add here your methods for communication
|
12
|
+
* Add here your methods for communication PRESENTER -> VIEW
|
16
13
|
*/
|
17
14
|
}
|
18
15
|
|
@@ -30,7 +27,7 @@ protocol VIPERPresenterProtocol: class
|
|
30
27
|
var interactor: VIPERInteractorInputProtocol? { get set }
|
31
28
|
var wireFrame: VIPERWireFrameProtocol? { get set }
|
32
29
|
/**
|
33
|
-
* Add here your methods for communication
|
30
|
+
* Add here your methods for communication VIEW -> PRESENTER
|
34
31
|
*/
|
35
32
|
}
|
36
33
|
|
@@ -68,6 +65,6 @@ protocol VIPERAPIDataManagerInputProtocol: class
|
|
68
65
|
protocol VIPERLocalDataManagerInputProtocol: class
|
69
66
|
{
|
70
67
|
/**
|
71
|
-
* Add here your methods for communication INTERACTOR ->
|
68
|
+
* Add here your methods for communication INTERACTOR -> LOCALDATAMANAGER
|
72
69
|
*/
|
73
70
|
}
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
@@ -1,9 +1,6 @@
|
|
1
1
|
//
|
2
|
-
//
|
3
|
-
//
|
4
|
-
//
|
5
|
-
// Created by Pedro Piñera Buendía on 24/10/14.
|
6
|
-
// Copyright (c) 2014 ___Redbooth___. All rights reserved.
|
2
|
+
// Created by AUTHOR
|
3
|
+
// Copyright (c) YEAR AUTHOR. All rights reserved.
|
7
4
|
//
|
8
5
|
|
9
6
|
import Foundation
|
data/lib/vipergen/generator.rb
CHANGED
@@ -4,43 +4,46 @@ module Vipergen
|
|
4
4
|
# Constants
|
5
5
|
LANGUAGES = ["swift", "objc"]
|
6
6
|
REPLACEMENT_KEY = "VIPER"
|
7
|
+
AUTHOR_REPLACEMENT_KEY = "AUTHOR"
|
8
|
+
YEAR_REPLACEMENT_KEY = "YEAR"
|
7
9
|
|
8
10
|
# Main method that generate the VIPER files structure
|
9
|
-
def self.generate_viper(template, language, name, path)
|
11
|
+
def self.generate_viper(template, language, name, path, author)
|
10
12
|
puts "Generating VIPER-Module"
|
11
13
|
puts "Template: #{template}"
|
12
14
|
puts "Language: #{language}"
|
13
15
|
puts "Name: #{name}"
|
14
16
|
puts "Path: #{path}"
|
17
|
+
puts "Author: #{author}"
|
15
18
|
path_from = Vipergen::FileManager.path_from(template, language)
|
16
19
|
path_to = Vipergen::FileManager.destination_viper_path(path, name)
|
17
20
|
Vipergen::FileManager.copy(path_from, path_to)
|
18
21
|
files = Vipergen::FileManager.files_in_path(path_to)
|
19
|
-
rename_files(files,name)
|
22
|
+
rename_files(files, name, author)
|
20
23
|
end
|
21
24
|
|
22
25
|
# Rename all the files in the files array
|
23
26
|
# - It renames the name of the file
|
24
27
|
# - It renames the content of the file
|
25
|
-
def self.rename_files(files, name)
|
28
|
+
def self.rename_files(files, name, author)
|
26
29
|
files.each do |file|
|
27
30
|
raise SyntaxError unless file.include? (Vipergen::Generator::REPLACEMENT_KEY)
|
28
|
-
rename_file(file, name)
|
31
|
+
rename_file(file, name, author)
|
29
32
|
end
|
30
33
|
end
|
31
34
|
|
32
35
|
# Rename a given file
|
33
36
|
# - It renames the name of the file
|
34
37
|
# - It renames the content of the file
|
35
|
-
def self.rename_file(file, name)
|
38
|
+
def self.rename_file(file, name, author)
|
36
39
|
new_path = file.gsub((Vipergen::Generator::REPLACEMENT_KEY), name)
|
37
40
|
Vipergen::FileManager.move(file, new_path)
|
38
|
-
rename_file_content(new_path, name)
|
41
|
+
rename_file_content(new_path, name, author)
|
39
42
|
end
|
40
43
|
|
41
44
|
# Rename the file content
|
42
45
|
# @return: An String with the every VIPER replaced by 'name'
|
43
|
-
def self.rename_file_content(filename, name)
|
46
|
+
def self.rename_file_content(filename, name, author)
|
44
47
|
# Reading content
|
45
48
|
file = File.open(filename, "rb")
|
46
49
|
content = file.read
|
@@ -48,6 +51,8 @@ module Vipergen
|
|
48
51
|
|
49
52
|
# Replacing content
|
50
53
|
content = content.gsub((Vipergen::Generator::REPLACEMENT_KEY), name)
|
54
|
+
content = content.gsub((Vipergen::Generator::AUTHOR_REPLACEMENT_KEY), author)
|
55
|
+
content = content.gsub((Vipergen::Generator::YEAR_REPLACEMENT_KEY), "#{Time.new.year}")
|
51
56
|
|
52
57
|
# Saving content with replaced string
|
53
58
|
File.open(filename, "w+") do |file|
|
data/lib/vipergen/version.rb
CHANGED
data/lib/vipergen/viperthor.rb
CHANGED
@@ -7,8 +7,9 @@ module Vipergen
|
|
7
7
|
option :language, :required => false, :default => 'objc', :type => :string, :desc => "The language of the generated module (swift, objc)"
|
8
8
|
option :template, :required => false, :default => 'default', :type => :string , :desc => "Template for the generation"
|
9
9
|
option :path, :required => true, :type => :string , :desc => "Path where the output module is going to be saved"
|
10
|
+
option :author, :required => false, :default => 'VIPER', :type => :string , :desc => "Author to be specified on the file's header. Otherwise VIPER will be used"
|
10
11
|
def generate(name)
|
11
|
-
Vipergen::Generator.generate_viper(options[:template], options[:language], name, options[:path])
|
12
|
+
Vipergen::Generator.generate_viper(options[:template], options[:language], name, options[:path], options[:author])
|
12
13
|
end
|
13
14
|
|
14
15
|
desc "templates", "Get a list of available templates"
|
@@ -44,14 +44,14 @@ end
|
|
44
44
|
describe Vipergen::Generator do
|
45
45
|
context "when renaming file content" do
|
46
46
|
before (:each) do
|
47
|
-
File.open("test.txt", 'w') {|f| f.write("I'm a #{Vipergen::Generator::REPLACEMENT_KEY} file") }
|
47
|
+
File.open("test.txt", 'w') {|f| f.write("I'm a #{Vipergen::Generator::REPLACEMENT_KEY} file by #{Vipergen::Generator::AUTHOR_REPLACEMENT_KEY} on #{Vipergen::Generator::YEAR_REPLACEMENT_KEY}") }
|
48
48
|
end
|
49
49
|
|
50
50
|
it "should rename every VIPER word to the given name" do
|
51
|
-
Vipergen::Generator.rename_file_content("test.txt","RENAMED")
|
51
|
+
Vipergen::Generator.rename_file_content("test.txt","RENAMED", "pepito")
|
52
52
|
file = File.open("test.txt", "rb")
|
53
53
|
content = file.read
|
54
|
-
expect(content).to eq("I'm a RENAMED file")
|
54
|
+
expect(content).to eq("I'm a RENAMED file by pepito on #{Time.new.year}")
|
55
55
|
end
|
56
56
|
|
57
57
|
after (:each) do
|
@@ -66,25 +66,27 @@ describe Vipergen::Generator do
|
|
66
66
|
|
67
67
|
it "every file should be renamed in rename_files" do
|
68
68
|
expect(Vipergen::Generator).to receive(:rename_file)
|
69
|
-
Vipergen::Generator.rename_files(["#{Vipergen::Generator::REPLACEMENT_KEY}file.txt"], "
|
69
|
+
Vipergen::Generator.rename_files(["#{Vipergen::Generator::REPLACEMENT_KEY}file.txt"], "MyModule", "Pepi")
|
70
70
|
end
|
71
71
|
|
72
72
|
it "should raise a SyntaxError exeption if there's a file in the template without the proper name" do
|
73
|
-
expect{Vipergen::Generator.rename_files(["asgasgs.txt"], "
|
73
|
+
expect{Vipergen::Generator.rename_files(["asgasgs.txt"], "MyModule", "Pepi")}.to raise_error
|
74
74
|
end
|
75
75
|
|
76
76
|
it "should rename the VIPER in name to the given name" do
|
77
77
|
file = "#{Vipergen::Generator::REPLACEMENT_KEY}test.txt"
|
78
78
|
name = "RENAMED"
|
79
|
-
|
79
|
+
author = "PEPI"
|
80
|
+
Vipergen::Generator.rename_file(file, name, author)
|
80
81
|
expect(File.exist? "RENAMEDtest.txt").to eq(true)
|
81
82
|
end
|
82
83
|
|
83
84
|
it "should rename the file content after the file name rename" do
|
84
85
|
file = "#{Vipergen::Generator::REPLACEMENT_KEY}test.txt"
|
85
86
|
name = "RENAMED"
|
87
|
+
author = "PEPI"
|
86
88
|
expect(Vipergen::Generator).to receive(:rename_file_content)
|
87
|
-
Vipergen::Generator.rename_file(file, name)
|
89
|
+
Vipergen::Generator.rename_file(file, name, author)
|
88
90
|
end
|
89
91
|
|
90
92
|
after (:each) do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vipergen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Pedro Piñera
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-12-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|