generamba 0.6.0 → 0.6.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ffb2a6a54f2534abe4a3a94904ac75c4dfc375cf
4
- data.tar.gz: beef4c78efff15575167171b8ac21293ee34d092
3
+ metadata.gz: 49edac40853a1e75968a2583d0e2ee41dd17ce10
4
+ data.tar.gz: b58c8ab9bdc965aa61e094403a1ea5a7d64183f7
5
5
  SHA512:
6
- metadata.gz: bb416b0ca779e1bc359734e2082a4f4b91e2e078b85ff93ae8d6313f074ca1720a716020f490efa264c83c8439161f63f2fd2f357856d0b4d0424ce10d6b0d1f
7
- data.tar.gz: 9147cf3e069cb1d99d3984979943d45d725c80d74fb6831be704b949e904c20b196d17a25ce340f8ca491c2f8b2bd6137e6d0435298efa2e721e9b0cf0db6bee
6
+ metadata.gz: b5d0ed0bbb05aa123c9176370c20aedf4445003736742f3b93c8d5f16d5947523682ab9f9752f15569dcccfd70fba9f00d86ea6800c3a13050fab10de9a25f70
7
+ data.tar.gz: b196bf8123c9b4649a41efed5d9de8764d71b4da9e6998a0f6a1d052998a70334c464a63a8c267c5e068fa982fb9182f3ed5349ad664f3f4d82efc372f9f91a6
@@ -18,14 +18,16 @@ Gem::Specification.new do |spec|
18
18
  spec.executables = ['generamba']
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_dependency 'thor'
22
- spec.add_dependency 'xcodeproj'
23
- spec.add_dependency 'liquid'
24
- spec.add_dependency 'tilt'
25
- spec.add_dependency 'settingslogic'
26
- spec.add_dependency 'git'
21
+ spec.required_ruby_version = '>= 2.2'
22
+
23
+ spec.add_runtime_dependency 'thor', '0.19.1'
24
+ spec.add_runtime_dependency 'xcodeproj', '0.28.2'
25
+ spec.add_runtime_dependency 'liquid', '3.0.6'
26
+ spec.add_runtime_dependency 'tilt', '2.0.1'
27
+ spec.add_runtime_dependency 'settingslogic', '2.0.9'
28
+ spec.add_runtime_dependency 'git', '1.2.9.1'
27
29
 
28
30
  spec.add_development_dependency 'bundler', '~> 1.10'
29
31
  spec.add_development_dependency 'rake', '~> 10.0'
30
- spec.add_development_dependency 'rspec'
32
+ spec.add_development_dependency 'rspec', '~> 3.4'
31
33
  end
@@ -5,6 +5,7 @@ require 'tilt'
5
5
  require 'git'
6
6
  require 'generamba/cli/gen_command.rb'
7
7
  require 'generamba/cli/setup_command.rb'
8
+ require 'generamba/cli/setup_username_command.rb'
8
9
  require 'generamba/cli/thor_extension.rb'
9
10
  require 'generamba/cli/template/template_group.rb'
10
11
 
@@ -1,8 +1,11 @@
1
1
  require 'thor'
2
+ require 'generamba/helpers/rambafile_validator.rb'
2
3
 
3
4
  module Generamba::CLI
4
5
  class Application < Thor
5
6
 
7
+ include Generamba
8
+
6
9
  desc 'gen [MODULE_NAME] [TEMPLATE_NAME_KEY]', 'Creates a new VIPER module with a given name from a specific template'
7
10
  method_option :description, :aliases => '-d', :desc => 'Provides a full description to the module'
8
11
  def gen(module_name, template_name)
@@ -14,6 +17,12 @@ module Generamba::CLI
14
17
  return
15
18
  end
16
19
 
20
+ rambafile_validator = Generamba::RambafileValidator.new
21
+ rambafile_validator.validate(RAMBAFILE_NAME)
22
+
23
+ setup_username_command = Generamba::CLI::SetupUsernameCommand.new
24
+ setup_username_command.setup_username
25
+
17
26
  default_module_description = "#{module_name} module"
18
27
  module_description = options[:description] ? options[:description] : default_module_description
19
28
 
@@ -13,20 +13,14 @@ module Generamba::CLI
13
13
  def setup
14
14
  properties = {}
15
15
 
16
- git_username = Git.init.config['user.name']
17
-
18
- if git_username != nil && yes?("Your name in git is configured as #{git_username}. Do you want to use it in code headers? (yes/no)")
19
- username = git_username
20
- else
21
- username = ask_non_empty_string('The author name which will be used in the headers:', 'User name should not be empty')
22
- end
23
-
24
- Generamba::UserPreferences.save_username(username)
16
+ setup_username_command = Generamba::CLI::SetupUsernameCommand.new
17
+ setup_username_command.setup_username
25
18
 
26
19
  properties[COMPANY_KEY] = ask('The company name which will be used in the headers:')
27
20
 
28
21
  project_name = Pathname.new(Dir.getwd).basename.to_s
29
22
  is_right_project_name = yes?("The name of your project is #{project_name}. Do you want to use it? (yes/no)")
23
+
30
24
  properties[PROJECT_NAME_KEY] = is_right_project_name ? project_name : ask_non_empty_string('The project name:', 'Project name should not be empty')
31
25
  properties[PROJECT_PREFIX_KEY] = ask('The project prefix (if any):')
32
26
 
@@ -44,7 +38,6 @@ module Generamba::CLI
44
38
 
45
39
  targets_prompt = ''
46
40
  project.targets.each_with_index { |element, i| targets_prompt += ("#{i}. #{element.name}" + "\n") }
47
-
48
41
  project_target = ask_index("Select the appropriate target for adding your MODULES (type the index):\n" + targets_prompt,project.targets)
49
42
  test_target = ask_index("Select the appropriate target for adding your TESTS (type the index):\n" + targets_prompt,project.targets)
50
43
 
@@ -0,0 +1,21 @@
1
+ module Generamba::CLI
2
+ class SetupUsernameCommand < Thor
3
+
4
+ no_commands {
5
+ def setup_username
6
+ username = Generamba::UserPreferences.obtain_username
7
+ if username == nil
8
+ puts('The author name is not configured!')
9
+ git_username = Git.init.config['user.name']
10
+ if git_username != nil && yes?("Your name in git is configured as #{git_username}. Do you want to use it in code headers? (yes/no)")
11
+ username = git_username
12
+ else
13
+ username = ask_non_empty_string('The author name which will be used in the headers:', 'User name should not be empty')
14
+ end
15
+ Generamba::UserPreferences.save_username(username)
16
+ end
17
+
18
+ end
19
+ }
20
+ end
21
+ end
@@ -25,7 +25,7 @@ module Generamba::CLI
25
25
  def ask_with_validation(message, is_valid_value, description = 'Invalid value')
26
26
  loop do
27
27
  value = ask(message)
28
- break if is_valid_value.call(value)
28
+ return value if is_valid_value.call(value)
29
29
  puts(description)
30
30
  end
31
31
  end
@@ -0,0 +1,38 @@
1
+ module Generamba
2
+
3
+ # Provides methods for validating Rambafile contents
4
+ class RambafileValidator
5
+
6
+ # Method validates Rambafile contents
7
+ # @param path [String] The path to a Rambafile
8
+ def validate(path)
9
+ file_contents = open(path).read
10
+ preferences = file_contents.empty? ? {} : YAML.load(file_contents).to_hash
11
+
12
+ mandatory_fields = [COMPANY_KEY,
13
+ PROJECT_NAME_KEY,
14
+ XCODEPROJ_PATH_KEY,
15
+ PROJECT_TARGET_KEY,
16
+ PROJECT_FILE_PATH_KEY,
17
+ PROJECT_GROUP_PATH_KEY,
18
+ TEST_TARGET_KEY,
19
+ TEST_FILE_PATH_KEY,
20
+ TEST_GROUP_PATH_KEY,
21
+ TEMPLATES_KEY]
22
+
23
+ mandatory_fields.each { |field|
24
+ if preferences.has_key?(field) == false
25
+ error_description = "Rambafile is broken! Cannot find #{field} field, which is mandatory. Either add it manually, or run *generamba setup*."
26
+ raise StandardError.new(error_description)
27
+ end
28
+ }
29
+
30
+ if preferences[TEMPLATES_KEY] == nil
31
+ error_description = "You can't run *generamba gen* without any templates installed. Add their declarations to a Rambafile and run *generamba template install*."
32
+ raise StandardError.new(error_description)
33
+ end
34
+
35
+ end
36
+
37
+ end
38
+ end
@@ -1,3 +1,3 @@
1
1
  module Generamba
2
- VERSION = '0.6.0'
2
+ VERSION = '0.6.1'
3
3
  end
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.6.0
4
+ version: 0.6.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Egor Tolstoy
@@ -9,92 +9,92 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-11-15 00:00:00.000000000 Z
12
+ date: 2015-11-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: thor
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ">="
18
+ - - '='
19
19
  - !ruby/object:Gem::Version
20
- version: '0'
20
+ version: 0.19.1
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - ">="
25
+ - - '='
26
26
  - !ruby/object:Gem::Version
27
- version: '0'
27
+ version: 0.19.1
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: xcodeproj
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - ">="
32
+ - - '='
33
33
  - !ruby/object:Gem::Version
34
- version: '0'
34
+ version: 0.28.2
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - ">="
39
+ - - '='
40
40
  - !ruby/object:Gem::Version
41
- version: '0'
41
+ version: 0.28.2
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: liquid
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - ">="
46
+ - - '='
47
47
  - !ruby/object:Gem::Version
48
- version: '0'
48
+ version: 3.0.6
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - ">="
53
+ - - '='
54
54
  - !ruby/object:Gem::Version
55
- version: '0'
55
+ version: 3.0.6
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: tilt
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ">="
60
+ - - '='
61
61
  - !ruby/object:Gem::Version
62
- version: '0'
62
+ version: 2.0.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: '0'
69
+ version: 2.0.1
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: settingslogic
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - ">="
74
+ - - '='
75
75
  - !ruby/object:Gem::Version
76
- version: '0'
76
+ version: 2.0.9
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: '0'
83
+ version: 2.0.9
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: git
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ">="
88
+ - - '='
89
89
  - !ruby/object:Gem::Version
90
- version: '0'
90
+ version: 1.2.9.1
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: '0'
97
+ version: 1.2.9.1
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: bundler
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -127,16 +127,16 @@ dependencies:
127
127
  name: rspec
128
128
  requirement: !ruby/object:Gem::Requirement
129
129
  requirements:
130
- - - ">="
130
+ - - "~>"
131
131
  - !ruby/object:Gem::Version
132
- version: '0'
132
+ version: '3.4'
133
133
  type: :development
134
134
  prerelease: false
135
135
  version_requirements: !ruby/object:Gem::Requirement
136
136
  requirements:
137
- - - ">="
137
+ - - "~>"
138
138
  - !ruby/object:Gem::Version
139
- version: '0'
139
+ version: '3.4'
140
140
  description: Generamba is a powerful and easy-to-use Xcode code generator. It provides
141
141
  a project-based configuration, flexible templates system, the ability to generate
142
142
  code and tests simultaneously.
@@ -153,7 +153,6 @@ files:
153
153
  - LICENSE.txt
154
154
  - Rakefile
155
155
  - Readme.md
156
- - bin/GenerambaSandbox/Rambafile
157
156
  - bin/console
158
157
  - bin/generamba
159
158
  - bin/setup
@@ -162,6 +161,7 @@ files:
162
161
  - lib/generamba/cli/cli.rb
163
162
  - lib/generamba/cli/gen_command.rb
164
163
  - lib/generamba/cli/setup_command.rb
164
+ - lib/generamba/cli/setup_username_command.rb
165
165
  - lib/generamba/cli/template/template_create_command.rb
166
166
  - lib/generamba/cli/template/template_group.rb
167
167
  - lib/generamba/cli/template/template_install_command.rb
@@ -177,6 +177,7 @@ files:
177
177
  - lib/generamba/constants/rambafile_constants.rb
178
178
  - lib/generamba/constants/rambaspec_constants.rb
179
179
  - lib/generamba/constants/user_preferences_constants.rb
180
+ - lib/generamba/helpers/rambafile_validator.rb
180
181
  - lib/generamba/helpers/template_helper.rb
181
182
  - lib/generamba/helpers/xcodeproj_helper.rb
182
183
  - lib/generamba/module_generator.rb
@@ -205,7 +206,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
205
206
  requirements:
206
207
  - - ">="
207
208
  - !ruby/object:Gem::Version
208
- version: '0'
209
+ version: '2.2'
209
210
  required_rubygems_version: !ruby/object:Gem::Requirement
210
211
  requirements:
211
212
  - - ">="
@@ -1,17 +0,0 @@
1
- ---
2
- author: Egor Tolstoy
3
- company: Rambler&Co
4
- project_name: GenerambaSandbox
5
- prefix:
6
- xcodeproj_path: "/Users/etolstoy/Generamba/GenerambaSandbox/GenerambaSandbox.xcodeproj"
7
- project_target: GenerambaSandbox
8
- project_file_path: GenerambaSandbox/Classes/Modules/
9
- project_group_path: GenerambaSandbox/Classes/Modules/
10
- test_target: GenerambaSandboxTests
11
- test_file_path: GenerambaSandboxTests/Classes/Modules/
12
- test_group_path: GenerambaSandboxTests/Classes/Modules/
13
- templates:
14
- - {name: default_template, git: 'https://github.com/igrekde/default_template.git'}
15
- - {name: rambler_viper_controller, local: '/Users/etolstoy/Generamba/rambler_viper_controller'}
16
- - {name: rambler_viper_controller2, local: '/Users/etolstoy/Generamba/rambler_viper_controller2'}
17
- - {name: default}