generamba 0.7.3 → 0.7.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +177 -0
- data/Gemfile.lock +5 -5
- data/generamba.gemspec +1 -1
- data/lib/generamba/cli/cli.rb +0 -1
- data/lib/generamba/cli/gen_command.rb +8 -0
- data/lib/generamba/cli/setup_command.rb +31 -9
- data/lib/generamba/cli/template/template_create_command.rb +13 -2
- data/lib/generamba/code_generation/Rambafile.liquid +5 -4
- data/lib/generamba/code_generation/content_generator.rb +9 -5
- data/lib/generamba/code_generation/rambafile_generator.rb +4 -3
- data/lib/generamba/helpers/gen_command_table_parameters_formatter.rb +23 -0
- data/lib/generamba/helpers/print_table.rb +21 -0
- data/lib/generamba/helpers/xcodeproj_helper.rb +58 -14
- data/lib/generamba/template/creator/template_creator.rb +4 -3
- data/lib/generamba/version.rb +1 -1
- metadata +14 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5382f3daaa79b49658dadd60155a036352984dce
|
4
|
+
data.tar.gz: f27992a72f3ffda44ab213cec784c87a262f4732
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: dfe52b2b9ebe991851955d30dd3ead8604927f7162742afede6142816a1f44a02c424f5cea3245e6e1346c983084fca48818166447f2e7d8e5c2853649b29082
|
7
|
+
data.tar.gz: 098b52bdc639a2e86ecb79797574ec1d42d4f1809b17e849bf86e0eb2208f9a0e7908adb1b77a20aef231b4742fdde73ce6c3a5305ba9c31a1d0b33d349c4d14
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,177 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
## [Unreleased](https://github.com/rambler-ios/Generamba/tree/HEAD)
|
4
|
+
|
5
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.7.3...HEAD)
|
6
|
+
|
7
|
+
**Implemented enhancements:**
|
8
|
+
|
9
|
+
- Asks the user if he needed tests in `generamba setup` command [\#85](https://github.com/rambler-ios/Generamba/issues/85)
|
10
|
+
- Improve the visualization of commands with parameters [\#69](https://github.com/rambler-ios/Generamba/issues/69)
|
11
|
+
|
12
|
+
**Fixed bugs:**
|
13
|
+
|
14
|
+
- Add resources\(xib, storyboard and etc\) in project bundle resources. [\#84](https://github.com/rambler-ios/Generamba/issues/84)
|
15
|
+
|
16
|
+
**Merged pull requests:**
|
17
|
+
|
18
|
+
- Print table with summary info about input parameters [\#89](https://github.com/rambler-ios/Generamba/pull/89) ([Beniamiiin](https://github.com/Beniamiiin))
|
19
|
+
- Handle any resources in template and correct add to project [\#88](https://github.com/rambler-ios/Generamba/pull/88) ([Beniamiiin](https://github.com/Beniamiiin))
|
20
|
+
- Implemented new question, about need tests in `generamba setup` [\#87](https://github.com/rambler-ios/Generamba/pull/87) ([Beniamiiin](https://github.com/Beniamiiin))
|
21
|
+
|
22
|
+
## [0.7.3](https://github.com/rambler-ios/Generamba/tree/0.7.3) (2016-01-24)
|
23
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.7.2...0.7.3)
|
24
|
+
|
25
|
+
**Implemented enhancements:**
|
26
|
+
|
27
|
+
- Enhance `generamba template search` to search templates in custom catalogs [\#75](https://github.com/rambler-ios/Generamba/issues/75)
|
28
|
+
- Enhance `generamba template list` to browse custom catalogs [\#74](https://github.com/rambler-ios/Generamba/issues/74)
|
29
|
+
- Warn the user if template contains missing dependencies [\#17](https://github.com/rambler-ios/Generamba/issues/17)
|
30
|
+
- Added method to check missing template dependencies in podfile [\#79](https://github.com/rambler-ios/Generamba/pull/79) ([Beniamiiin](https://github.com/Beniamiiin))
|
31
|
+
|
32
|
+
**Closed issues:**
|
33
|
+
|
34
|
+
- Can we use constants from rambafile in templates? [\#81](https://github.com/rambler-ios/Generamba/issues/81)
|
35
|
+
- Arguments for `generamba gen Name modulename` [\#80](https://github.com/rambler-ios/Generamba/issues/80)
|
36
|
+
|
37
|
+
**Merged pull requests:**
|
38
|
+
|
39
|
+
- Fixed crash when templates directory exists. [\#78](https://github.com/rambler-ios/Generamba/pull/78) ([mogol](https://github.com/mogol))
|
40
|
+
|
41
|
+
## [0.7.2](https://github.com/rambler-ios/Generamba/tree/0.7.2) (2016-01-10)
|
42
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.7.1...0.7.2)
|
43
|
+
|
44
|
+
**Implemented enhancements:**
|
45
|
+
|
46
|
+
- --version command [\#54](https://github.com/rambler-ios/Generamba/issues/54)
|
47
|
+
- Incorrect behavior when generate module which already exists [\#52](https://github.com/rambler-ios/Generamba/issues/52)
|
48
|
+
- Add the ability to specify custom template catalogs in Rambafile [\#44](https://github.com/rambler-ios/Generamba/issues/44)
|
49
|
+
|
50
|
+
**Fixed bugs:**
|
51
|
+
|
52
|
+
- Don't set target in swift projects [\#65](https://github.com/rambler-ios/Generamba/issues/65)
|
53
|
+
- Errors if default path is empty [\#64](https://github.com/rambler-ios/Generamba/issues/64)
|
54
|
+
- Default template set can not be used [\#60](https://github.com/rambler-ios/Generamba/issues/60)
|
55
|
+
- Incorrect behavior when generate module which already exists [\#52](https://github.com/rambler-ios/Generamba/issues/52)
|
56
|
+
|
57
|
+
**Closed issues:**
|
58
|
+
|
59
|
+
- Can generamba be used to generate swift modules? [\#61](https://github.com/rambler-ios/Generamba/issues/61)
|
60
|
+
- Git 1.2.9.1 [\#57](https://github.com/rambler-ios/Generamba/issues/57)
|
61
|
+
|
62
|
+
**Merged pull requests:**
|
63
|
+
|
64
|
+
- Feature/custom catalogs [\#73](https://github.com/rambler-ios/Generamba/pull/73) ([etolstoy](https://github.com/etolstoy))
|
65
|
+
- Added `generamba version` command [\#67](https://github.com/rambler-ios/Generamba/pull/67) ([etolstoy](https://github.com/etolstoy))
|
66
|
+
- Fixed \#64: Errors if default path is empty [\#66](https://github.com/rambler-ios/Generamba/pull/66) ([Beniamiiin](https://github.com/Beniamiiin))
|
67
|
+
- Added error display, if not specify at least one template in Rambafile \#60 [\#63](https://github.com/rambler-ios/Generamba/pull/63) ([Beniamiiin](https://github.com/Beniamiiin))
|
68
|
+
- Fixed \#52 - Incorrect behavior when generate module which already exists [\#59](https://github.com/rambler-ios/Generamba/pull/59) ([Beniamiiin](https://github.com/Beniamiiin))
|
69
|
+
- docs, link to Rambafile when it mentioned [\#58](https://github.com/rambler-ios/Generamba/pull/58) ([MaksimBazarov](https://github.com/MaksimBazarov))
|
70
|
+
- Fixed incorrect group path [\#56](https://github.com/rambler-ios/Generamba/pull/56) ([Beniamiiin](https://github.com/Beniamiiin))
|
71
|
+
- Docs translated to english \(\#13\) [\#55](https://github.com/rambler-ios/Generamba/pull/55) ([novixon](https://github.com/novixon))
|
72
|
+
|
73
|
+
## [0.7.1](https://github.com/rambler-ios/Generamba/tree/0.7.1) (2015-12-20)
|
74
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.7.0...0.7.1)
|
75
|
+
|
76
|
+
**Implemented enhancements:**
|
77
|
+
|
78
|
+
- Podfile path setup during generamba setup needs clarification [\#50](https://github.com/rambler-ios/Generamba/issues/50)
|
79
|
+
- Remove the Settingslogic dependency [\#42](https://github.com/rambler-ios/Generamba/issues/42)
|
80
|
+
|
81
|
+
**Fixed bugs:**
|
82
|
+
|
83
|
+
- Unexpected behavior when use --module\_path [\#53](https://github.com/rambler-ios/Generamba/issues/53)
|
84
|
+
|
85
|
+
**Closed issues:**
|
86
|
+
|
87
|
+
- Add support for multiple targets during generamba setup [\#49](https://github.com/rambler-ios/Generamba/issues/49)
|
88
|
+
|
89
|
+
**Merged pull requests:**
|
90
|
+
|
91
|
+
- Feature/settingslogic remove [\#47](https://github.com/rambler-ios/Generamba/pull/47) ([etolstoy](https://github.com/etolstoy))
|
92
|
+
|
93
|
+
## [0.7.0](https://github.com/rambler-ios/Generamba/tree/0.7.0) (2015-12-13)
|
94
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.6.2...0.7.0)
|
95
|
+
|
96
|
+
**Implemented enhancements:**
|
97
|
+
|
98
|
+
- Add coloured output [\#28](https://github.com/rambler-ios/Generamba/issues/28)
|
99
|
+
- Add -filepath and -grouppath options for `generamba gen` command [\#27](https://github.com/rambler-ios/Generamba/issues/27)
|
100
|
+
- Add a `generamba template search` command [\#26](https://github.com/rambler-ios/Generamba/issues/26)
|
101
|
+
- Add a `generamba template list` command [\#25](https://github.com/rambler-ios/Generamba/issues/25)
|
102
|
+
- Add the if statements to the Rambafile.liquid [\#22](https://github.com/rambler-ios/Generamba/issues/22)
|
103
|
+
- Target membership for module sources [\#11](https://github.com/rambler-ios/Generamba/issues/11)
|
104
|
+
|
105
|
+
**Fixed bugs:**
|
106
|
+
|
107
|
+
- Non-informative error message when running `generamba template install` in the wrong directory [\#39](https://github.com/rambler-ios/Generamba/issues/39)
|
108
|
+
- undefined method `each' for nil:NilClass \(NoMethodError\) [\#37](https://github.com/rambler-ios/Generamba/issues/37)
|
109
|
+
|
110
|
+
**Merged pull requests:**
|
111
|
+
|
112
|
+
- Feature/multiple targets [\#43](https://github.com/rambler-ios/Generamba/pull/43) ([etolstoy](https://github.com/etolstoy))
|
113
|
+
- Feature/colored output [\#40](https://github.com/rambler-ios/Generamba/pull/40) ([etolstoy](https://github.com/etolstoy))
|
114
|
+
- Feature/gen file flags [\#38](https://github.com/rambler-ios/Generamba/pull/38) ([etolstoy](https://github.com/etolstoy))
|
115
|
+
|
116
|
+
## [0.6.2](https://github.com/rambler-ios/Generamba/tree/0.6.2) (2015-11-25)
|
117
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.6.1...0.6.2)
|
118
|
+
|
119
|
+
**Fixed bugs:**
|
120
|
+
|
121
|
+
- Can't install template from git repo [\#36](https://github.com/rambler-ios/Generamba/issues/36)
|
122
|
+
- Can't find template by local fullpath [\#35](https://github.com/rambler-ios/Generamba/issues/35)
|
123
|
+
|
124
|
+
**Closed issues:**
|
125
|
+
|
126
|
+
- Need more information about dependencies [\#34](https://github.com/rambler-ios/Generamba/issues/34)
|
127
|
+
|
128
|
+
**Merged pull requests:**
|
129
|
+
|
130
|
+
- Mention the Ruby 2.2+ requirement in README [\#33](https://github.com/rambler-ios/Generamba/pull/33) ([rodionovd](https://github.com/rodionovd))
|
131
|
+
|
132
|
+
## [0.6.1](https://github.com/rambler-ios/Generamba/tree/0.6.1) (2015-11-21)
|
133
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.6.0...0.6.1)
|
134
|
+
|
135
|
+
**Implemented enhancements:**
|
136
|
+
|
137
|
+
- Add Rambafile validation [\#10](https://github.com/rambler-ios/Generamba/issues/10)
|
138
|
+
|
139
|
+
**Fixed bugs:**
|
140
|
+
|
141
|
+
- The author name should be configured without `generamba setup` [\#31](https://github.com/rambler-ios/Generamba/issues/31)
|
142
|
+
- Sometimes Generamba fills in the wrong test target in the Rambafile [\#30](https://github.com/rambler-ios/Generamba/issues/30)
|
143
|
+
- Seems that Generamba doesn't add project name to the headers [\#29](https://github.com/rambler-ios/Generamba/issues/29)
|
144
|
+
|
145
|
+
## [0.6.0](https://github.com/rambler-ios/Generamba/tree/0.6.0) (2015-11-15)
|
146
|
+
[Full Changelog](https://github.com/rambler-ios/Generamba/compare/0.5.0...0.6.0)
|
147
|
+
|
148
|
+
**Implemented enhancements:**
|
149
|
+
|
150
|
+
- Add a podfile\_path/cartfile\_path fields to a Rambafile [\#19](https://github.com/rambler-ios/Generamba/issues/19)
|
151
|
+
- Add a dependencies field to the .rambaspec [\#18](https://github.com/rambler-ios/Generamba/issues/18)
|
152
|
+
- Move the hardcoded keys to the constants [\#15](https://github.com/rambler-ios/Generamba/issues/15)
|
153
|
+
- Implement automatic template creation [\#8](https://github.com/rambler-ios/Generamba/issues/8)
|
154
|
+
- Change some of the questions of `generamba setup` [\#7](https://github.com/rambler-ios/Generamba/issues/7)
|
155
|
+
- Implement installation of templates from the remote git repository [\#6](https://github.com/rambler-ios/Generamba/issues/6)
|
156
|
+
- Implement installation of templates with local filepath [\#5](https://github.com/rambler-ios/Generamba/issues/5)
|
157
|
+
- Remove the author-specific information from Rambafile [\#1](https://github.com/rambler-ios/Generamba/issues/1)
|
158
|
+
|
159
|
+
**Fixed bugs:**
|
160
|
+
|
161
|
+
- Rambafile uses absolute filepath to xcodeproj file [\#21](https://github.com/rambler-ios/Generamba/issues/21)
|
162
|
+
- Duplicate file reference in project.pbxproj [\#20](https://github.com/rambler-ios/Generamba/issues/20)
|
163
|
+
- Move the rambler\_viper\_controller template to the generamba-catalog [\#16](https://github.com/rambler-ios/Generamba/issues/16)
|
164
|
+
- The output of `setup` command is splitted sometimes [\#4](https://github.com/rambler-ios/Generamba/issues/4)
|
165
|
+
- Files are generated with incorrect filepaths [\#3](https://github.com/rambler-ios/Generamba/issues/3)
|
166
|
+
|
167
|
+
**Merged pull requests:**
|
168
|
+
|
169
|
+
- Feature/template creation [\#23](https://github.com/rambler-ios/Generamba/pull/23) ([etolstoy](https://github.com/etolstoy))
|
170
|
+
- Added command: generamba template install [\#14](https://github.com/rambler-ios/Generamba/pull/14) ([etolstoy](https://github.com/etolstoy))
|
171
|
+
- Feature/cli improvements [\#12](https://github.com/rambler-ios/Generamba/pull/12) ([AndreyZarembo](https://github.com/AndreyZarembo))
|
172
|
+
- Master [\#2](https://github.com/rambler-ios/Generamba/pull/2) ([etolstoy](https://github.com/etolstoy))
|
173
|
+
|
174
|
+
## [0.5.0](https://github.com/rambler-ios/Generamba/tree/0.5.0) (2015-11-01)
|
175
|
+
|
176
|
+
|
177
|
+
\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
|
data/Gemfile.lock
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
generamba (0.7.
|
4
|
+
generamba (0.7.3)
|
5
5
|
cocoapods-core (= 0.39.0)
|
6
6
|
git (= 1.2.9.1)
|
7
7
|
liquid (= 3.0.6)
|
8
|
+
terminal-table (= 1.4.5)
|
8
9
|
thor (= 0.19.1)
|
9
|
-
tilt (= 2.0.1)
|
10
10
|
xcodeproj (= 0.28.2)
|
11
11
|
|
12
12
|
GEM
|
13
13
|
remote: https://rubygems.org/
|
14
14
|
specs:
|
15
|
-
activesupport (4.2.5)
|
15
|
+
activesupport (4.2.5.1)
|
16
16
|
i18n (~> 0.7)
|
17
17
|
json (~> 1.7, >= 1.7.7)
|
18
18
|
minitest (~> 5.1)
|
@@ -32,7 +32,7 @@ GEM
|
|
32
32
|
json (1.8.3)
|
33
33
|
liquid (3.0.6)
|
34
34
|
minitest (5.8.4)
|
35
|
-
nap (1.
|
35
|
+
nap (1.1.0)
|
36
36
|
rake (10.4.2)
|
37
37
|
rspec (3.3.0)
|
38
38
|
rspec-core (~> 3.3.0)
|
@@ -47,9 +47,9 @@ GEM
|
|
47
47
|
diff-lcs (>= 1.2.0, < 2.0)
|
48
48
|
rspec-support (~> 3.3.0)
|
49
49
|
rspec-support (3.3.0)
|
50
|
+
terminal-table (1.4.5)
|
50
51
|
thor (0.19.1)
|
51
52
|
thread_safe (0.3.5)
|
52
|
-
tilt (2.0.1)
|
53
53
|
tzinfo (1.2.2)
|
54
54
|
thread_safe (~> 0.1)
|
55
55
|
xcodeproj (0.28.2)
|
data/generamba.gemspec
CHANGED
@@ -23,9 +23,9 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_runtime_dependency 'thor', '0.19.1'
|
24
24
|
spec.add_runtime_dependency 'xcodeproj', '0.28.2'
|
25
25
|
spec.add_runtime_dependency 'liquid', '3.0.6'
|
26
|
-
spec.add_runtime_dependency 'tilt', '2.0.1'
|
27
26
|
spec.add_runtime_dependency 'git', '1.2.9.1'
|
28
27
|
spec.add_runtime_dependency 'cocoapods-core', '0.39.0'
|
28
|
+
spec.add_runtime_dependency 'terminal-table', '1.4.5'
|
29
29
|
|
30
30
|
spec.add_development_dependency 'bundler', '~> 1.10'
|
31
31
|
spec.add_development_dependency 'rake', '~> 10.0'
|
data/lib/generamba/cli/cli.rb
CHANGED
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'thor'
|
2
|
+
require 'generamba/helpers/print_table.rb'
|
2
3
|
require 'generamba/helpers/rambafile_validator.rb'
|
3
4
|
require 'generamba/helpers/xcodeproj_helper.rb'
|
4
5
|
require 'generamba/helpers/dependency_checker.rb'
|
6
|
+
require 'generamba/helpers/gen_command_table_parameters_formatter.rb'
|
5
7
|
|
6
8
|
module Generamba::CLI
|
7
9
|
class Application < Thor
|
@@ -38,6 +40,12 @@ module Generamba::CLI
|
|
38
40
|
|
39
41
|
rambafile = YAML.load_file(RAMBAFILE_NAME)
|
40
42
|
|
43
|
+
parameters = GenCommandTableParametersFormatter.prepare_parameters_for_displaying(rambafile)
|
44
|
+
PrintTable.print_values(
|
45
|
+
values: parameters,
|
46
|
+
title: "Summary for gen #{module_name}"
|
47
|
+
)
|
48
|
+
|
41
49
|
template = ModuleTemplate.new(template_name)
|
42
50
|
code_module = CodeModule.new(module_name, module_description, rambafile, options)
|
43
51
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
require 'thor'
|
2
2
|
require 'xcodeproj'
|
3
3
|
require 'liquid'
|
4
|
-
require 'tilt'
|
5
4
|
require 'git'
|
6
5
|
require 'generamba/constants/rambafile_constants.rb'
|
6
|
+
require 'generamba/helpers/print_table.rb'
|
7
7
|
|
8
8
|
module Generamba::CLI
|
9
9
|
class Application < Thor
|
@@ -33,21 +33,29 @@ module Generamba::CLI
|
|
33
33
|
targets_prompt = ''
|
34
34
|
project.targets.each_with_index { |element, i| targets_prompt += ("#{i}. #{element.name}" + "\n") }
|
35
35
|
project_target = ask_index("Select the appropriate target for adding your MODULES (type the index):\n" + targets_prompt,project.targets)
|
36
|
-
|
36
|
+
include_tests = yes?('Are you using unit-tests in this project? (yes/no)')
|
37
|
+
|
38
|
+
if include_tests
|
39
|
+
test_target = ask_index("Select the appropriate target for adding your TESTS (type the index):\n" + targets_prompt,project.targets)
|
40
|
+
end
|
37
41
|
|
38
42
|
should_use_same_paths = yes?('Do you want to use the same paths for your files both in Xcode and the filesystem? (yes/no)')
|
39
43
|
if should_use_same_paths
|
40
44
|
project_group_path = ask('The default path for creating new modules:')
|
41
45
|
project_file_path = project_group_path
|
42
46
|
|
43
|
-
|
44
|
-
|
47
|
+
if include_tests
|
48
|
+
test_group_path = ask('The default path for creating tests:')
|
49
|
+
test_file_path = test_group_path
|
50
|
+
end
|
45
51
|
else
|
46
52
|
project_group_path = ask('The default path for creating new modules (in Xcode groups):')
|
47
53
|
project_file_path = ask('The default path for creating new modules (in the filesystem):')
|
48
54
|
|
49
|
-
|
50
|
-
|
55
|
+
if include_tests
|
56
|
+
test_group_path = ask('The default path for creating tests (in Xcode groups):')
|
57
|
+
test_file_path = ask('The default path for creating tests (in the filesystem):')
|
58
|
+
end
|
51
59
|
end
|
52
60
|
|
53
61
|
using_pods = yes?('Are you using Cocoapods? (yes/no)')
|
@@ -65,9 +73,23 @@ module Generamba::CLI
|
|
65
73
|
properties[PROJECT_TARGET_KEY] = project_target.name
|
66
74
|
properties[PROJECT_FILE_PATH_KEY] = project_file_path
|
67
75
|
properties[PROJECT_GROUP_PATH_KEY] = project_group_path
|
68
|
-
|
69
|
-
|
70
|
-
|
76
|
+
|
77
|
+
if test_target
|
78
|
+
properties[TEST_TARGET_KEY] = test_target.name
|
79
|
+
end
|
80
|
+
|
81
|
+
if test_file_path
|
82
|
+
properties[TEST_FILE_PATH_KEY] = test_file_path
|
83
|
+
end
|
84
|
+
|
85
|
+
if test_group_path
|
86
|
+
properties[TEST_GROUP_PATH_KEY] = test_group_path
|
87
|
+
end
|
88
|
+
|
89
|
+
PrintTable.print_values(
|
90
|
+
values: properties,
|
91
|
+
title: "Summary for generamba setup"
|
92
|
+
)
|
71
93
|
|
72
94
|
Generamba::RambafileGenerator.create_rambafile(properties)
|
73
95
|
puts('Rambafile successfully created! Now add some templates to the Rambafile and run `generamba template install`.'.green)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
require 'generamba/helpers/print_table.rb'
|
2
|
+
|
1
3
|
module Generamba::CLI
|
2
4
|
class Template < Thor
|
3
5
|
include Generamba
|
@@ -17,13 +19,22 @@ module Generamba::CLI
|
|
17
19
|
TEMPLATE_NAME_KEY => template_name,
|
18
20
|
TEMPLATE_SUMMARY_KEY => summary,
|
19
21
|
TEMPLATE_AUTHOR_KEY => author,
|
20
|
-
TEMPLATE_LICENSE_KEY => license
|
21
|
-
TEMPLATE_DEPENDENCIES_KEY => dependencies
|
22
|
+
TEMPLATE_LICENSE_KEY => license
|
22
23
|
}
|
23
24
|
|
25
|
+
if dependencies and !dependencies.empty?
|
26
|
+
properties[TEMPLATE_DEPENDENCIES_KEY] = dependencies
|
27
|
+
end
|
28
|
+
|
29
|
+
PrintTable.print_values(
|
30
|
+
values: properties,
|
31
|
+
title: "Summary for template create"
|
32
|
+
)
|
33
|
+
|
24
34
|
template_creator = Generamba::TemplateCreator.new
|
25
35
|
template_creator.create_template(properties)
|
26
36
|
puts("The template #{template_name} is successfully generated! Now add some file templates into it.".green)
|
27
37
|
end
|
38
|
+
|
28
39
|
end
|
29
40
|
end
|
@@ -16,15 +16,16 @@ project_file_path: {{ project_file_path }}
|
|
16
16
|
# The Xcode group path to new modules
|
17
17
|
project_group_path: {{ project_group_path }}
|
18
18
|
|
19
|
-
{% if test_target != "" or test_file_path != "" or test_group_path != "" %}### Tests generation settings section
|
20
|
-
{% if test_target != "" %}# The tests target name
|
19
|
+
{% if (test_target != nil and test_target != "") or (test_file_path != nil and test_file_path != "") or (test_group_path != nil and test_group_path != "") %}### Tests generation settings section
|
20
|
+
{% if test_target != nil and test_target != "" %}# The tests target name
|
21
21
|
test_target: {{ test_target }}{% endif %}
|
22
22
|
|
23
|
-
{% if test_file_path != "" %}# The file path for new tests
|
23
|
+
{% if test_file_path != nil and test_file_path != "" %}# The file path for new tests
|
24
24
|
test_file_path: {{ test_file_path }}{% endif %}
|
25
25
|
|
26
|
-
{% if test_group_path != "" %}# The Xcode group path to new tests
|
26
|
+
{% if test_group_path != nil and test_group_path != "" %}# The Xcode group path to new tests
|
27
27
|
test_group_path: {{ test_group_path }}{% endif %}
|
28
|
+
{% endif %}
|
28
29
|
|
29
30
|
{% if podfile_path != nil or cartfile_path != nil %}### Dependencies settings section{% endif %}
|
30
31
|
{% if podfile_path != nil %}podfile_path: {{ podfile_path }}{% endif %}
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'liquid'
|
2
|
-
require 'tilt'
|
3
2
|
|
4
3
|
module Generamba
|
5
4
|
|
@@ -13,13 +12,17 @@ module Generamba
|
|
13
12
|
#
|
14
13
|
# @return [String] The generated body
|
15
14
|
def self.create_file_content(file, code_module, template)
|
16
|
-
|
17
|
-
|
15
|
+
file_source = IO.read(template.template_path.join(file[TEMPLATE_FILE_PATH_KEY]))
|
16
|
+
Liquid::Template.file_system = Liquid::LocalFileSystem.new(template.template_path.join('snippets'), '%s.liquid')
|
17
|
+
|
18
|
+
template = Liquid::Template.parse(file_source)
|
19
|
+
file_name = File.basename(file[TEMPLATE_FILE_NAME_KEY])
|
20
|
+
|
18
21
|
module_info = {
|
19
22
|
'name' => code_module.name,
|
20
23
|
'file_name' => file_name,
|
21
24
|
'description' => code_module.description,
|
22
|
-
|
25
|
+
'project_name' => code_module.project_name
|
23
26
|
}
|
24
27
|
|
25
28
|
developer = {
|
@@ -35,7 +38,8 @@ module Generamba
|
|
35
38
|
'prefix' => code_module.prefix
|
36
39
|
}
|
37
40
|
|
38
|
-
output =
|
41
|
+
output = template.render(scope)
|
42
|
+
|
39
43
|
return output
|
40
44
|
end
|
41
45
|
end
|
@@ -1,5 +1,4 @@
|
|
1
1
|
require 'liquid'
|
2
|
-
require 'tilt'
|
3
2
|
|
4
3
|
module Generamba
|
5
4
|
|
@@ -11,8 +10,10 @@ module Generamba
|
|
11
10
|
#
|
12
11
|
# @return void
|
13
12
|
def self.create_rambafile(properties)
|
14
|
-
|
15
|
-
|
13
|
+
file_source = IO.read(File.dirname(__FILE__) + '/Rambafile.liquid')
|
14
|
+
|
15
|
+
template = Liquid::Template.parse(file_source)
|
16
|
+
output = template.render(properties).gsub!(/[\n]{3,}/, "\n\n");
|
16
17
|
|
17
18
|
File.open(RAMBAFILE_NAME, 'w+') {|f|
|
18
19
|
f.write(output)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module Generamba
|
2
|
+
|
3
|
+
# Provides methods for prepare parameters for displaying in table.
|
4
|
+
class GenCommandTableParametersFormatter
|
5
|
+
|
6
|
+
# This method prepared parameter for displaying
|
7
|
+
def self.prepare_parameters_for_displaying(parameters)
|
8
|
+
params = parameters.clone
|
9
|
+
|
10
|
+
templates = []
|
11
|
+
|
12
|
+
params['templates'].each do |param|
|
13
|
+
templates.push(param['name'])
|
14
|
+
end
|
15
|
+
|
16
|
+
params['templates'] = templates.join(', ')
|
17
|
+
|
18
|
+
return params
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Generamba
|
2
|
+
|
3
|
+
# Provides methods for print parameters in nice table.
|
4
|
+
class PrintTable
|
5
|
+
|
6
|
+
# This method prints out all the user inputs in a nice table.
|
7
|
+
def self.print_values(values: nil, title: nil)
|
8
|
+
require 'terminal-table'
|
9
|
+
|
10
|
+
params = {}
|
11
|
+
params[:rows] = values
|
12
|
+
params[:title] = title.green if title
|
13
|
+
|
14
|
+
puts ''
|
15
|
+
puts Terminal::Table.new(params)
|
16
|
+
puts ''
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -25,18 +25,32 @@ module Generamba
|
|
25
25
|
file_name = File.basename(file_path)
|
26
26
|
targets_name.each do |target|
|
27
27
|
xcode_target = self.obtain_target(target, project)
|
28
|
-
|
29
|
-
|
28
|
+
|
29
|
+
if self.is_compile_source?(file_name)
|
30
|
+
xcode_target.add_file_references([xcode_file])
|
31
|
+
elsif self.is_bundle_resource?(file_name)
|
32
|
+
xcode_target.add_resources([xcode_file])
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
30
36
|
end
|
31
37
|
|
32
|
-
#
|
33
|
-
# @param file_name [String]
|
38
|
+
# File is a compiled source
|
39
|
+
# @param file_name [String] String of file name
|
34
40
|
#
|
35
41
|
# @return [TrueClass or FalseClass]
|
36
|
-
def self.
|
42
|
+
def self.is_compile_source?(file_name)
|
37
43
|
File.extname(file_name) == '.m' || File.extname(file_name) == '.swift' || File.extname(file_name) == '.mm'
|
38
44
|
end
|
39
45
|
|
46
|
+
# File is a resource
|
47
|
+
# @param resource_name [String] String of resource name
|
48
|
+
#
|
49
|
+
# @return [TrueClass or FalseClass]
|
50
|
+
def self.is_bundle_resource?(resource_name)
|
51
|
+
File.extname(resource_name) == '.xib' || File.extname(resource_name) == '.storyboard'
|
52
|
+
end
|
53
|
+
|
40
54
|
# Recursively clears children of the given group
|
41
55
|
# @param project [Xcodeproj::Project] The working Xcode project file
|
42
56
|
# @param group_path [Pathname] The full group path
|
@@ -75,7 +89,7 @@ module Generamba
|
|
75
89
|
#
|
76
90
|
# @return [PBXGroup]
|
77
91
|
def self.retreive_group_or_create_if_needed(group_path, project, create_group_if_not_exists)
|
78
|
-
group_names =
|
92
|
+
group_names = path_names_from_path(group_path)
|
79
93
|
|
80
94
|
final_group = project
|
81
95
|
|
@@ -112,13 +126,13 @@ module Generamba
|
|
112
126
|
raise StandardError.new(error_description)
|
113
127
|
end
|
114
128
|
|
115
|
-
# Splits the provided Xcode
|
116
|
-
# @param
|
129
|
+
# Splits the provided Xcode path to an array of separate paths
|
130
|
+
# @param path The full group or file path
|
117
131
|
#
|
118
132
|
# @return [[String]]
|
119
|
-
def self.
|
120
|
-
|
121
|
-
return
|
133
|
+
def self.path_names_from_path(path)
|
134
|
+
paths = path.to_s.split('/')
|
135
|
+
return paths
|
122
136
|
end
|
123
137
|
|
124
138
|
# Remove build file from target build phase
|
@@ -128,14 +142,28 @@ module Generamba
|
|
128
142
|
#
|
129
143
|
# @return [Void]
|
130
144
|
def self.remove_file_by_file_path(file_path, targets_name, project)
|
131
|
-
|
132
|
-
|
145
|
+
file_names = path_names_from_path(file_path)
|
146
|
+
|
147
|
+
build_phases = nil
|
148
|
+
|
149
|
+
if self.is_compile_source?(file_names.last)
|
150
|
+
build_phases = self.build_phases_from_targets(targets_name, project)
|
151
|
+
elsif self.is_bundle_resource?(file_names.last)
|
152
|
+
build_phases = self.resources_build_phase_from_targets(targets_name, project)
|
153
|
+
end
|
154
|
+
|
155
|
+
self.remove_file_from_build_phases(file_path, build_phases)
|
156
|
+
end
|
157
|
+
|
158
|
+
def self.remove_file_from_build_phases(file_path, build_phases)
|
159
|
+
return if build_phases == nil
|
160
|
+
|
133
161
|
build_phases.each do |build_phase|
|
134
162
|
build_phase.files.each do |build_file|
|
135
163
|
next if build_file.nil? || build_file.file_ref.nil?
|
136
164
|
|
137
165
|
build_file_path = self.configure_file_ref_path(build_file.file_ref)
|
138
|
-
|
166
|
+
|
139
167
|
if build_file_path == file_path
|
140
168
|
build_phase.remove_build_file(build_file)
|
141
169
|
end
|
@@ -163,6 +191,22 @@ module Generamba
|
|
163
191
|
return build_phases
|
164
192
|
end
|
165
193
|
|
194
|
+
# Find and return target resources build phase
|
195
|
+
# @param targets_name [String] Array of targets
|
196
|
+
# @param project [Xcodeproj::Project] The target xcodeproj file
|
197
|
+
#
|
198
|
+
# @return [[PBXResourcesBuildPhase]]
|
199
|
+
def self.resources_build_phase_from_targets(targets_name, project)
|
200
|
+
resource_build_phase = []
|
201
|
+
|
202
|
+
targets_name.each do |target_name|
|
203
|
+
xcode_target = self.obtain_target(target_name, project)
|
204
|
+
resource_build_phase.push(xcode_target.resources_build_phase)
|
205
|
+
end
|
206
|
+
|
207
|
+
return resource_build_phase
|
208
|
+
end
|
209
|
+
|
166
210
|
# Get configure file full path
|
167
211
|
# @param file_ref [PBXFileReference] Build file
|
168
212
|
#
|
@@ -13,13 +13,14 @@ module Generamba
|
|
13
13
|
#
|
14
14
|
# @return [Void]
|
15
15
|
def create_template(properties)
|
16
|
-
template_dir_path = Pathname.new(File.dirname(__FILE__))
|
17
|
-
.join(NEW_TEMPLATE_FOLDER)
|
16
|
+
template_dir_path = Pathname.new(File.dirname(__FILE__)).join(NEW_TEMPLATE_FOLDER)
|
18
17
|
rambaspec_template_file_path = template_dir_path.join(RAMBASPEC_TEMPLATE_NAME)
|
19
18
|
code_file_path = template_dir_path.join(CODE_FOLDER)
|
20
19
|
tests_file_path = template_dir_path.join(TESTS_FOLDER)
|
21
20
|
|
22
|
-
|
21
|
+
file_source = IO.read(rambaspec_template_file_path)
|
22
|
+
|
23
|
+
template = Liquid::Template.parse(file_source)
|
23
24
|
output = template.render(properties)
|
24
25
|
|
25
26
|
result_name = properties[TEMPLATE_NAME_KEY] + RAMBASPEC_EXTENSION
|
data/lib/generamba/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: generamba
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.7.
|
4
|
+
version: 0.7.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Egor Tolstoy
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-
|
12
|
+
date: 2016-02-21 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: thor
|
@@ -54,47 +54,47 @@ dependencies:
|
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: 3.0.6
|
56
56
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
57
|
+
name: git
|
58
58
|
requirement: !ruby/object:Gem::Requirement
|
59
59
|
requirements:
|
60
60
|
- - '='
|
61
61
|
- !ruby/object:Gem::Version
|
62
|
-
version: 2.
|
62
|
+
version: 1.2.9.1
|
63
63
|
type: :runtime
|
64
64
|
prerelease: false
|
65
65
|
version_requirements: !ruby/object:Gem::Requirement
|
66
66
|
requirements:
|
67
67
|
- - '='
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 2.
|
69
|
+
version: 1.2.9.1
|
70
70
|
- !ruby/object:Gem::Dependency
|
71
|
-
name:
|
71
|
+
name: cocoapods-core
|
72
72
|
requirement: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - '='
|
75
75
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
76
|
+
version: 0.39.0
|
77
77
|
type: :runtime
|
78
78
|
prerelease: false
|
79
79
|
version_requirements: !ruby/object:Gem::Requirement
|
80
80
|
requirements:
|
81
81
|
- - '='
|
82
82
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
83
|
+
version: 0.39.0
|
84
84
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
85
|
+
name: terminal-table
|
86
86
|
requirement: !ruby/object:Gem::Requirement
|
87
87
|
requirements:
|
88
88
|
- - '='
|
89
89
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
90
|
+
version: 1.4.5
|
91
91
|
type: :runtime
|
92
92
|
prerelease: false
|
93
93
|
version_requirements: !ruby/object:Gem::Requirement
|
94
94
|
requirements:
|
95
95
|
- - '='
|
96
96
|
- !ruby/object:Gem::Version
|
97
|
-
version:
|
97
|
+
version: 1.4.5
|
98
98
|
- !ruby/object:Gem::Dependency
|
99
99
|
name: bundler
|
100
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -163,6 +163,7 @@ files:
|
|
163
163
|
- ".gitignore"
|
164
164
|
- ".rspec"
|
165
165
|
- ".travis.yml"
|
166
|
+
- CHANGELOG.md
|
166
167
|
- Gemfile
|
167
168
|
- Gemfile.lock
|
168
169
|
- LICENSE.txt
|
@@ -195,6 +196,8 @@ files:
|
|
195
196
|
- lib/generamba/constants/rambaspec_constants.rb
|
196
197
|
- lib/generamba/constants/user_preferences_constants.rb
|
197
198
|
- lib/generamba/helpers/dependency_checker.rb
|
199
|
+
- lib/generamba/helpers/gen_command_table_parameters_formatter.rb
|
200
|
+
- lib/generamba/helpers/print_table.rb
|
198
201
|
- lib/generamba/helpers/rambafile_validator.rb
|
199
202
|
- lib/generamba/helpers/template_helper.rb
|
200
203
|
- lib/generamba/helpers/xcodeproj_helper.rb
|