generamba 0.6.0 → 0.6.1

Sign up to get free protection for your applications and to get access to all the features.
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}