generamba-udf 2.0.1

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 (69) hide show
  1. checksums.yaml +7 -0
  2. data/.codeclimate.yml +10 -0
  3. data/.gitignore +4 -0
  4. data/.rspec +2 -0
  5. data/.travis.yml +17 -0
  6. data/CHANGELOG.md +191 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +62 -0
  10. data/Rakefile +6 -0
  11. data/VISION.md +41 -0
  12. data/bin/console +14 -0
  13. data/bin/generamba +5 -0
  14. data/bin/setup +7 -0
  15. data/docs/2.x/roadmap.md +365 -0
  16. data/generamba-1.6.0.gem +0 -0
  17. data/generamba-2.0.0.gem +0 -0
  18. data/generamba.gemspec +38 -0
  19. data/lib/generamba/cli/cli.rb +16 -0
  20. data/lib/generamba/cli/gen_command.rb +119 -0
  21. data/lib/generamba/cli/setup_command.rb +127 -0
  22. data/lib/generamba/cli/setup_username_command.rb +21 -0
  23. data/lib/generamba/cli/template/template_create_command.rb +40 -0
  24. data/lib/generamba/cli/template/template_group.rb +14 -0
  25. data/lib/generamba/cli/template/template_install_command.rb +21 -0
  26. data/lib/generamba/cli/template/template_list_command.rb +25 -0
  27. data/lib/generamba/cli/template/template_search_command.rb +30 -0
  28. data/lib/generamba/cli/thor_extension.rb +47 -0
  29. data/lib/generamba/cli/version_command.rb +25 -0
  30. data/lib/generamba/code_generation/Rambafile.liquid +44 -0
  31. data/lib/generamba/code_generation/code_module.rb +123 -0
  32. data/lib/generamba/code_generation/content_generator.rb +43 -0
  33. data/lib/generamba/code_generation/module_template.rb +31 -0
  34. data/lib/generamba/code_generation/rambafile_generator.rb +23 -0
  35. data/lib/generamba/configuration/user_preferences.rb +50 -0
  36. data/lib/generamba/constants/constants.rb +12 -0
  37. data/lib/generamba/constants/rambafile_constants.rb +41 -0
  38. data/lib/generamba/constants/rambaspec_constants.rb +22 -0
  39. data/lib/generamba/constants/user_preferences_constants.rb +5 -0
  40. data/lib/generamba/helpers/dependency_checker.rb +54 -0
  41. data/lib/generamba/helpers/gen_command_table_parameters_formatter.rb +41 -0
  42. data/lib/generamba/helpers/module_info_generator.rb +35 -0
  43. data/lib/generamba/helpers/module_validator.rb +85 -0
  44. data/lib/generamba/helpers/print_table.rb +17 -0
  45. data/lib/generamba/helpers/rambafile_validator.rb +18 -0
  46. data/lib/generamba/helpers/template_helper.rb +30 -0
  47. data/lib/generamba/helpers/xcodeproj_helper.rb +262 -0
  48. data/lib/generamba/module_generator.rb +148 -0
  49. data/lib/generamba/template/creator/new_template/Code/Service/service.h.liquid +11 -0
  50. data/lib/generamba/template/creator/new_template/Code/Service/service.m.liquid +13 -0
  51. data/lib/generamba/template/creator/new_template/Tests/Service/service_tests.m.liquid +35 -0
  52. data/lib/generamba/template/creator/new_template/template.rambaspec.liquid +20 -0
  53. data/lib/generamba/template/creator/template_creator.rb +39 -0
  54. data/lib/generamba/template/helpers/catalog_downloader.rb +58 -0
  55. data/lib/generamba/template/helpers/catalog_template_list_helper.rb +23 -0
  56. data/lib/generamba/template/helpers/catalog_template_search_helper.rb +27 -0
  57. data/lib/generamba/template/helpers/catalog_terminator.rb +21 -0
  58. data/lib/generamba/template/helpers/rambaspec_validator.rb +52 -0
  59. data/lib/generamba/template/installer/abstract_installer.rb +9 -0
  60. data/lib/generamba/template/installer/catalog_installer.rb +73 -0
  61. data/lib/generamba/template/installer/local_installer.rb +32 -0
  62. data/lib/generamba/template/installer/remote_installer.rb +50 -0
  63. data/lib/generamba/template/installer/template_installer_factory.rb +22 -0
  64. data/lib/generamba/template/processor/template_declaration.rb +36 -0
  65. data/lib/generamba/template/processor/template_processor.rb +75 -0
  66. data/lib/generamba/tools/string-colorize.rb +23 -0
  67. data/lib/generamba/version.rb +5 -0
  68. data/lib/generamba.rb +16 -0
  69. metadata +288 -0
@@ -0,0 +1,36 @@
1
+ module Generamba
2
+
3
+ # This class acts as an Enumeration for TemplateDeclaration types
4
+ class TemplateDeclarationType
5
+ # A local template - usually it's stored somewhere outside the current project directory
6
+ LOCAL_TEMPLATE = 0
7
+
8
+ # A remote template - it's stored in a remote Git repository
9
+ REMOTE_TEMPLATE = 1
10
+
11
+ # A template from our shared catalog
12
+ CATALOG_TEMPLATE = 2
13
+ end
14
+
15
+ # Describes a Generamba template declaration model
16
+ class TemplateDeclaration
17
+
18
+ attr_reader :name, :local, :git, :branch, :type
19
+
20
+ def initialize(template_hash)
21
+ @name = template_hash[TEMPLATE_DECLARATION_NAME_KEY]
22
+ @local = template_hash[TEMPLATE_DECLARATION_LOCAL_KEY]
23
+ @git = template_hash[TEMPLATE_DECLARATION_GIT_KEY]
24
+ @branch = template_hash[TEMPLATE_DECLARATION_BRANCH_KEY]
25
+
26
+ @type = TemplateDeclarationType::LOCAL_TEMPLATE if @local
27
+ @type = TemplateDeclarationType::REMOTE_TEMPLATE if @git
28
+ @type = TemplateDeclarationType::CATALOG_TEMPLATE if @git == nil && @local == nil
29
+ end
30
+
31
+ def install(strategy)
32
+ strategy.install_template(self)
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,75 @@
1
+ require 'generamba/template/processor/template_declaration.rb'
2
+ require 'generamba/template/installer/local_installer.rb'
3
+ require 'generamba/template/installer/remote_installer.rb'
4
+ require 'generamba/template/installer/catalog_installer.rb'
5
+ require 'generamba/template/helpers/catalog_downloader.rb'
6
+ require 'generamba/template/helpers/catalog_terminator'
7
+ require 'git'
8
+
9
+ module Generamba
10
+
11
+ # Incapsulates logic of processing templates declaration section from Rambafile
12
+ class TemplateProcessor
13
+
14
+ def initialize(catalog_downloader, installer_factory)
15
+ @catalog_downloader = catalog_downloader
16
+ @installer_factory = installer_factory
17
+ end
18
+
19
+ # This method parses Rambafile, serializes templates hashes into model objects and install them
20
+ def install_templates(rambafile)
21
+ # We always clear previously installed templates to avoid conflicts in different versions
22
+ clear_installed_templates
23
+
24
+ templates = rambafile[TEMPLATES_KEY]
25
+
26
+ if !templates || templates.count == 0
27
+ puts 'You must specify at least one template in Rambafile under the key *templates*'.red
28
+ return
29
+ end
30
+
31
+ # Mapping hashes to model objects
32
+ templates = rambafile[TEMPLATES_KEY].map { |template_hash|
33
+ Generamba::TemplateDeclaration.new(template_hash)
34
+ }
35
+
36
+ catalogs = rambafile[CATALOGS_KEY]
37
+ # If there is at least one template from catalogs, we should update our local copy of the catalog
38
+ update_catalogs_if_needed(catalogs, templates)
39
+
40
+ templates.each do |template_declaration|
41
+ strategy = @installer_factory.installer_for_type(template_declaration.type)
42
+ template_declaration.install(strategy)
43
+ end
44
+ end
45
+
46
+ private
47
+
48
+ # Clears all of the currently installed templates
49
+ def clear_installed_templates
50
+ install_path = Pathname.new(TEMPLATES_FOLDER)
51
+ FileUtils.rm_rf(Dir.glob(install_path))
52
+ end
53
+
54
+ # Clones remote template catalogs to the local directory
55
+ def update_catalogs_if_needed(catalogs, templates)
56
+ needs_update = templates.any? {|template| template.type == TemplateDeclarationType::CATALOG_TEMPLATE}
57
+
58
+ return unless needs_update
59
+
60
+ terminator = CatalogTerminator.new
61
+ terminator.remove_all_catalogs
62
+ puts('Updating shared generamba-catalog specs...')
63
+ @catalog_downloader.download_catalog(GENERAMBA_CATALOG_NAME, RAMBLER_CATALOG_REPO)
64
+
65
+ return unless catalogs != nil && catalogs.count > 0
66
+
67
+ catalogs.each do |catalog_url|
68
+ catalog_name = catalog_url.split('://').last
69
+ catalog_name = catalog_name.gsub('/', '-');
70
+ puts("Updating #{catalog_name} specs...")
71
+ @catalog_downloader.download_catalog(catalog_name, catalog_url)
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,23 @@
1
+ # Adds a number of methods for colorizing output strings
2
+ class String
3
+
4
+ def colorize(color_code)
5
+ "\e[#{color_code}m#{self}\e[0m"
6
+ end
7
+
8
+ def red
9
+ colorize(31)
10
+ end
11
+
12
+ def green
13
+ colorize(32)
14
+ end
15
+
16
+ def yellow
17
+ colorize(33)
18
+ end
19
+
20
+ def blue
21
+ colorize(34)
22
+ end
23
+ end
@@ -0,0 +1,5 @@
1
+ module Generamba
2
+ VERSION = '2.0.1'
3
+ RELEASE_DATE = '11.08.2019'
4
+ RELEASE_LINK = "https://github.com/rambler-digital-solutions/Generamba/releases/tag/#{VERSION}"
5
+ end
data/lib/generamba.rb ADDED
@@ -0,0 +1,16 @@
1
+ module Generamba
2
+ require 'generamba/constants/constants.rb'
3
+ require 'generamba/constants/rambafile_constants.rb'
4
+ require 'generamba/constants/rambaspec_constants.rb'
5
+ require 'generamba/cli/cli.rb'
6
+ require 'generamba/code_generation/code_module.rb'
7
+ require 'generamba/code_generation/module_template.rb'
8
+ require 'generamba/code_generation/content_generator.rb'
9
+ require 'generamba/code_generation/rambafile_generator.rb'
10
+ require 'generamba/module_generator.rb'
11
+ require 'generamba/template/processor/template_processor.rb'
12
+ require 'generamba/template/installer/template_installer_factory'
13
+ require 'generamba/configuration/user_preferences.rb'
14
+ require 'generamba/template/creator/template_creator.rb'
15
+ require 'generamba/tools/string-colorize.rb'
16
+ end
metadata ADDED
@@ -0,0 +1,288 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: generamba-udf
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Egor Tolstoy
8
+ - Andrey Zarembo
9
+ - Beniamin Sarkisyan
10
+ - Aleksandr Sychev
11
+ autorequire:
12
+ bindir: bin
13
+ cert_chain: []
14
+ date: 2022-05-04 00:00:00.000000000 Z
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: thor
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - '='
21
+ - !ruby/object:Gem::Version
22
+ version: 0.19.1
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - '='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.19.1
30
+ - !ruby/object:Gem::Dependency
31
+ name: xcodeproj
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.6.0
37
+ - - "<"
38
+ - !ruby/object:Gem::Version
39
+ version: 2.0.0
40
+ type: :runtime
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.6.0
47
+ - - "<"
48
+ - !ruby/object:Gem::Version
49
+ version: 2.0.0
50
+ - !ruby/object:Gem::Dependency
51
+ name: liquid
52
+ requirement: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - '='
55
+ - !ruby/object:Gem::Version
56
+ version: 4.0.0
57
+ type: :runtime
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - '='
62
+ - !ruby/object:Gem::Version
63
+ version: 4.0.0
64
+ - !ruby/object:Gem::Dependency
65
+ name: git
66
+ requirement: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - '='
69
+ - !ruby/object:Gem::Version
70
+ version: 1.2.9.1
71
+ type: :runtime
72
+ prerelease: false
73
+ version_requirements: !ruby/object:Gem::Requirement
74
+ requirements:
75
+ - - '='
76
+ - !ruby/object:Gem::Version
77
+ version: 1.2.9.1
78
+ - !ruby/object:Gem::Dependency
79
+ name: cocoapods-core
80
+ requirement: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 1.4.0
85
+ - - "<"
86
+ - !ruby/object:Gem::Version
87
+ version: 2.0.0
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - ">="
93
+ - !ruby/object:Gem::Version
94
+ version: 1.4.0
95
+ - - "<"
96
+ - !ruby/object:Gem::Version
97
+ version: 2.0.0
98
+ - !ruby/object:Gem::Dependency
99
+ name: terminal-table
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - '='
103
+ - !ruby/object:Gem::Version
104
+ version: 1.4.5
105
+ type: :runtime
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - '='
110
+ - !ruby/object:Gem::Version
111
+ version: 1.4.5
112
+ - !ruby/object:Gem::Dependency
113
+ name: bundler
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - "~>"
117
+ - !ruby/object:Gem::Version
118
+ version: 2.2.16
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - "~>"
124
+ - !ruby/object:Gem::Version
125
+ version: 2.2.16
126
+ - !ruby/object:Gem::Dependency
127
+ name: rake
128
+ requirement: !ruby/object:Gem::Requirement
129
+ requirements:
130
+ - - "~>"
131
+ - !ruby/object:Gem::Version
132
+ version: '10.0'
133
+ type: :development
134
+ prerelease: false
135
+ version_requirements: !ruby/object:Gem::Requirement
136
+ requirements:
137
+ - - "~>"
138
+ - !ruby/object:Gem::Version
139
+ version: '10.0'
140
+ - !ruby/object:Gem::Dependency
141
+ name: rspec
142
+ requirement: !ruby/object:Gem::Requirement
143
+ requirements:
144
+ - - "~>"
145
+ - !ruby/object:Gem::Version
146
+ version: '3.4'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '3.4'
154
+ - !ruby/object:Gem::Dependency
155
+ name: fakefs
156
+ requirement: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - - "~>"
159
+ - !ruby/object:Gem::Version
160
+ version: 0.6.1
161
+ type: :development
162
+ prerelease: false
163
+ version_requirements: !ruby/object:Gem::Requirement
164
+ requirements:
165
+ - - "~>"
166
+ - !ruby/object:Gem::Version
167
+ version: 0.6.1
168
+ - !ruby/object:Gem::Dependency
169
+ name: activesupport
170
+ requirement: !ruby/object:Gem::Requirement
171
+ requirements:
172
+ - - "~>"
173
+ - !ruby/object:Gem::Version
174
+ version: '4.2'
175
+ - - ">="
176
+ - !ruby/object:Gem::Version
177
+ version: 4.2.7
178
+ type: :development
179
+ prerelease: false
180
+ version_requirements: !ruby/object:Gem::Requirement
181
+ requirements:
182
+ - - "~>"
183
+ - !ruby/object:Gem::Version
184
+ version: '4.2'
185
+ - - ">="
186
+ - !ruby/object:Gem::Version
187
+ version: 4.2.7
188
+ description: Generamba is a powerful and easy-to-use Xcode code generator. It provides
189
+ a project-based configuration, flexible templates system, the ability to generate
190
+ code and tests simultaneously.
191
+ email: rambler.ios@rambler-co.ru
192
+ executables:
193
+ - generamba
194
+ extensions: []
195
+ extra_rdoc_files: []
196
+ files:
197
+ - ".codeclimate.yml"
198
+ - ".gitignore"
199
+ - ".rspec"
200
+ - ".travis.yml"
201
+ - CHANGELOG.md
202
+ - Gemfile
203
+ - LICENSE.txt
204
+ - README.md
205
+ - Rakefile
206
+ - VISION.md
207
+ - bin/console
208
+ - bin/generamba
209
+ - bin/setup
210
+ - docs/2.x/roadmap.md
211
+ - generamba-1.6.0.gem
212
+ - generamba-2.0.0.gem
213
+ - generamba.gemspec
214
+ - lib/generamba.rb
215
+ - lib/generamba/cli/cli.rb
216
+ - lib/generamba/cli/gen_command.rb
217
+ - lib/generamba/cli/setup_command.rb
218
+ - lib/generamba/cli/setup_username_command.rb
219
+ - lib/generamba/cli/template/template_create_command.rb
220
+ - lib/generamba/cli/template/template_group.rb
221
+ - lib/generamba/cli/template/template_install_command.rb
222
+ - lib/generamba/cli/template/template_list_command.rb
223
+ - lib/generamba/cli/template/template_search_command.rb
224
+ - lib/generamba/cli/thor_extension.rb
225
+ - lib/generamba/cli/version_command.rb
226
+ - lib/generamba/code_generation/Rambafile.liquid
227
+ - lib/generamba/code_generation/code_module.rb
228
+ - lib/generamba/code_generation/content_generator.rb
229
+ - lib/generamba/code_generation/module_template.rb
230
+ - lib/generamba/code_generation/rambafile_generator.rb
231
+ - lib/generamba/configuration/user_preferences.rb
232
+ - lib/generamba/constants/constants.rb
233
+ - lib/generamba/constants/rambafile_constants.rb
234
+ - lib/generamba/constants/rambaspec_constants.rb
235
+ - lib/generamba/constants/user_preferences_constants.rb
236
+ - lib/generamba/helpers/dependency_checker.rb
237
+ - lib/generamba/helpers/gen_command_table_parameters_formatter.rb
238
+ - lib/generamba/helpers/module_info_generator.rb
239
+ - lib/generamba/helpers/module_validator.rb
240
+ - lib/generamba/helpers/print_table.rb
241
+ - lib/generamba/helpers/rambafile_validator.rb
242
+ - lib/generamba/helpers/template_helper.rb
243
+ - lib/generamba/helpers/xcodeproj_helper.rb
244
+ - lib/generamba/module_generator.rb
245
+ - lib/generamba/template/creator/new_template/Code/Service/service.h.liquid
246
+ - lib/generamba/template/creator/new_template/Code/Service/service.m.liquid
247
+ - lib/generamba/template/creator/new_template/Tests/Service/service_tests.m.liquid
248
+ - lib/generamba/template/creator/new_template/template.rambaspec.liquid
249
+ - lib/generamba/template/creator/template_creator.rb
250
+ - lib/generamba/template/helpers/catalog_downloader.rb
251
+ - lib/generamba/template/helpers/catalog_template_list_helper.rb
252
+ - lib/generamba/template/helpers/catalog_template_search_helper.rb
253
+ - lib/generamba/template/helpers/catalog_terminator.rb
254
+ - lib/generamba/template/helpers/rambaspec_validator.rb
255
+ - lib/generamba/template/installer/abstract_installer.rb
256
+ - lib/generamba/template/installer/catalog_installer.rb
257
+ - lib/generamba/template/installer/local_installer.rb
258
+ - lib/generamba/template/installer/remote_installer.rb
259
+ - lib/generamba/template/installer/template_installer_factory.rb
260
+ - lib/generamba/template/processor/template_declaration.rb
261
+ - lib/generamba/template/processor/template_processor.rb
262
+ - lib/generamba/tools/string-colorize.rb
263
+ - lib/generamba/version.rb
264
+ homepage: https://github.com/rambler-digital-solutions/Generamba
265
+ licenses:
266
+ - MIT
267
+ metadata: {}
268
+ post_install_message:
269
+ rdoc_options: []
270
+ require_paths:
271
+ - lib
272
+ required_ruby_version: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '2.2'
277
+ required_rubygems_version: !ruby/object:Gem::Requirement
278
+ requirements:
279
+ - - ">="
280
+ - !ruby/object:Gem::Version
281
+ version: '0'
282
+ requirements: []
283
+ rubygems_version: 3.2.16
284
+ signing_key:
285
+ specification_version: 4
286
+ summary: Advanced code generator for Xcode projects with a nice and flexible template
287
+ system.
288
+ test_files: []