gena 0.1.3 → 0.1.4

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: 3a49a3d4b92b77790f89ee8b0f4d87ee866d4f4c
4
- data.tar.gz: 1dc2a06d1290fbd8df144e1e0089fb5ea921b6d6
3
+ metadata.gz: 6f07c5d4850c7e57ff1c5dd647a4902485a071a7
4
+ data.tar.gz: b9f719f69a220de2c24bc3d30ba25a36eae6f485
5
5
  SHA512:
6
- metadata.gz: eb4d8a23274ff80132c3a882490dd3723712b4d8972cf33ca696d3d6a8c1a41c5c032a908dc123e27212be7952cd1fa1c74d9e979f1aa0e6c5e6d6af1933c175
7
- data.tar.gz: ddfa2b043f06fb053899161dc7843528f02ce8782ed606f6f19380c00af71f3f4c4110c25be43f0814eaeac4fbe7bdd3c850af9ecf5d647e13f990ff3fe3d3f3
6
+ metadata.gz: 1570379e275c758442502a92eab49ded53f327f9a6e53a1bab6c4902c8b7e5c9001c4e6b68d7eebb4dbb288ec599939c466913c0905c1fb38118eb6b65c9a61f
7
+ data.tar.gz: cd64ca0944515d7836599ab245cc19d4c678fc748e2ed1c2b553e5b951a7b921abf26a1cca7535938d6ef93905873523c2fe3639dac996758a8ad97b9efc8710
@@ -70,7 +70,9 @@ module Gena
70
70
  clazz = command_name ? class_for_command[command_name] : nil
71
71
 
72
72
  if command_name && clazz
73
- clazz.dispatch(nil, given_args.dup, nil, config)
73
+ if check_dependencies(command_name, clazz.dependencies)
74
+ clazz.dispatch(nil, given_args.dup, nil, config)
75
+ end
74
76
  else
75
77
  dispatch(nil, given_args.dup, nil, config)
76
78
  end
@@ -124,12 +126,49 @@ module Gena
124
126
  if tag_name > VERSION
125
127
  say "New update v#{tag_name} is available for gena.\nSee release notes: #{data['url']}", Color::YELLOW
126
128
  if data['body'].length > 0
127
- say "---------------------\n#{data['body']}\n---------------------", Color::YELLOW
129
+ say "---------------------\n#{data['body']}\n---------------------", Color::YELLOW
128
130
  end
129
131
  say "Please update by:\n#{set_color('gem install gena', Color::GREEN)}", Color::YELLOW
130
132
  end
131
133
 
132
134
  end
135
+
136
+ def self.check_dependencies(plugin_name, dependencies)
137
+
138
+ missing_gems = {}
139
+
140
+ dependencies.each do |gem_name, version|
141
+ begin
142
+ require gem_name
143
+ rescue LoadError
144
+ missing_gems[gem_name] = version
145
+ end
146
+ end
147
+
148
+ if missing_gems.count > 0
149
+ puts "The following gems required for #{plugin_name.yellow}:\n\t#{missing_gems.keys.join(', ')}"
150
+ puts "Would you like to install them? (Yn)"
151
+ answer = STDIN.gets.chomp
152
+ if answer == 'Y' || answer == 'y' || answer == '' || answer == 'yes'
153
+ gems = missing_gems.collect { |k, v| "#{k}:#{v}" }
154
+ command = "gem install #{gems.join(" ")}"
155
+ puts command
156
+ result = system(command)
157
+ if result
158
+ puts "All dependencies installed successfully! Run your command again.".green
159
+ else
160
+ puts "Error occured while installing dependencies. Please install them manually and try again.".red
161
+ end
162
+ return false
163
+ else
164
+ puts "Unable to run #{plugin_name}. Please install dependencies and try again.".red
165
+ return false
166
+ end
167
+ else
168
+ return true
169
+ end
170
+ end
171
+
133
172
  end
134
173
 
135
174
  end
@@ -2,7 +2,7 @@ module Gena
2
2
 
3
3
  class Application < Thor
4
4
 
5
- desc 'reconfigure [COMMAND]', 'Restores default parameters for plugin inside gena.plist'
5
+ desc 'reconfigure [PLUGIN]', 'Restores default parameters for plugin inside gena.plist'
6
6
  def reconfigure(command)
7
7
 
8
8
  $config = Gena::Config.new
@@ -45,17 +45,16 @@ module Gena
45
45
  end
46
46
  end
47
47
 
48
- sources_path = common_path_in_target(main_target, 'main.m')
49
- tests_path = common_path_in_target(test_target, "#{sources_path}/")
50
-
51
- sources_path = relative_to_current_dir(sources_path)
52
- tests_path = relative_to_current_dir(tests_path)
53
-
54
48
  hash = Hash.new
55
49
  hash[:plugins_url] = [
56
50
  'https://github.com/alexgarbarev/gena-plugins.git'
57
51
  ]
58
52
 
53
+ unless main_target
54
+ say "Can't find application target in your Xcode project. Please create application target and try again", Color::RED
55
+ abort
56
+ end
57
+
59
58
  default_build_configuration = main_target.build_configuration_list.default_configuration_name || 'Debug'
60
59
  info_plist_value = main_target.build_configuration_list.get_setting('INFOPLIST_FILE')[default_build_configuration]
61
60
  if info_plist_value['$(SRCROOT)/']
@@ -65,11 +64,30 @@ module Gena
65
64
  hash['company'] = xcode_project.root_object.attributes['ORGANIZATIONNAME'].to_s
66
65
  hash['prefix'] = xcode_project.root_object.attributes['CLASSPREFIX'].to_s
67
66
  hash['project_name'] = xcode_project.root_object.name
68
- hash['project_target'] = main_target.name
69
- hash['test_target'] = test_target.name
70
67
  hash['info_plist'] = info_plist_value
71
- hash['sources_dir'] = ask_with_default("Enter path for #{set_color('sources', Color::YELLOW)} or ENTER to continue (#{sources_path}):", sources_path)
72
- hash['tests_dir'] = ask_with_default("Enter path for #{set_color('tests', Color::YELLOW)} or ENTER to continue (#{tests_path}):", tests_path)
68
+
69
+ if main_target
70
+ sources_path = common_path_in_target(main_target, 'main.m')
71
+ sources_path = relative_to_current_dir(sources_path)
72
+
73
+ hash['project_target'] = main_target.name
74
+ hash['sources_dir'] = ask_with_default("Enter path for #{set_color('sources', Color::YELLOW)} or ENTER to continue (#{sources_path}):", sources_path)
75
+ end
76
+
77
+ if test_target
78
+ tests_path = common_path_in_target(test_target, "#{sources_path}/")
79
+ tests_path = relative_to_current_dir(tests_path)
80
+
81
+ hash['test_target'] = test_target.name
82
+ hash['tests_dir'] = ask_with_default("Enter path for #{set_color('tests', Color::YELLOW)} or ENTER to continue (#{tests_path}):", tests_path)
83
+ else
84
+ say "Can't find target for UnitTests. You setup it later using 'test_target' and 'tests_dir' key (similar to sources)", Color::YELLOW
85
+ hash['test_target'] = ''
86
+ hash['tests_dir'] = ''
87
+ end
88
+
89
+ language = file_exists_in_target?(main_target, 'main.m') ? "objc" : "swift"
90
+ hash['language'] = ask_with_default("Enter main #{set_color('language', Color::YELLOW)} or ENTER to continue (#{language}):", language)
73
91
 
74
92
  say '===============================================================', Color::YELLOW
75
93
  print_table(hash)
@@ -98,7 +116,7 @@ module Gena
98
116
  init
99
117
  ARGV.replace([])
100
118
  else
101
- if yes? "'gena.plist' is not exists. Do you want to create new one? (Y/n)", Color::YELLOW
119
+ unless no? "'gena.plist' is not exists. Do you want to create new one? (Y/n)", Color::YELLOW
102
120
  init
103
121
  end
104
122
  end
@@ -287,6 +305,15 @@ module Gena
287
305
  common
288
306
  end
289
307
 
308
+ def file_exists_in_target?(target, file_name)
309
+ target.source_build_phase.files.each do |file|
310
+ if File.basename(file.file_ref.real_path.to_s) == file_name
311
+ return true
312
+ end
313
+ end
314
+ false
315
+ end
316
+
290
317
  end
291
318
 
292
319
  end
@@ -2,6 +2,5 @@ module Gena
2
2
  GENA_HOME = '~/.gena'
3
3
  GENA_UPDATE_CHECK_INTERVAL = 10800
4
4
  GENA_PLUGINS_CONFIG_KEY = 'configs'
5
- VERSION = '0.1.3'
6
- RELEASE_DATE = '2018-05-29'
5
+ VERSION = '0.1.4'
7
6
  end
@@ -25,6 +25,10 @@ module Gena
25
25
 
26
26
  no_tasks do
27
27
 
28
+ def self.dependencies
29
+ return { }
30
+ end
31
+
28
32
  def config
29
33
  config = $config.data
30
34
  config.reject { |k, v| k == GENA_PLUGINS_CONFIG_KEY }
@@ -74,4 +74,30 @@ def common_path(paths)
74
74
  common = common[0..-2]
75
75
  end
76
76
  common
77
+ end
78
+
79
+ class String
80
+ def black; "\e[30m#{self}\e[0m" end
81
+ def red; "\e[31m#{self}\e[0m" end
82
+ def green; "\e[32m#{self}\e[0m" end
83
+ def brown; "\e[33m#{self}\e[0m" end
84
+ def blue; "\e[34m#{self}\e[0m" end
85
+ def magenta; "\e[35m#{self}\e[0m" end
86
+ def cyan; "\e[36m#{self}\e[0m" end
87
+ def gray; "\e[37m#{self}\e[0m" end
88
+
89
+ def bg_black; "\e[40m#{self}\e[0m" end
90
+ def bg_red; "\e[41m#{self}\e[0m" end
91
+ def bg_green; "\e[42m#{self}\e[0m" end
92
+ def bg_brown; "\e[43m#{self}\e[0m" end
93
+ def bg_blue; "\e[44m#{self}\e[0m" end
94
+ def bg_magenta; "\e[45m#{self}\e[0m" end
95
+ def bg_cyan; "\e[46m#{self}\e[0m" end
96
+ def bg_gray; "\e[47m#{self}\e[0m" end
97
+
98
+ def bold; "\e[1m#{self}\e[22m" end
99
+ def italic; "\e[3m#{self}\e[23m" end
100
+ def underline; "\e[4m#{self}\e[24m" end
101
+ def blink; "\e[5m#{self}\e[25m" end
102
+ def reverse_color; "\e[7m#{self}\e[27m" end
77
103
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gena
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksey Garbarev
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-05-29 00:00:00.000000000 Z
11
+ date: 2018-12-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj
@@ -16,20 +16,20 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '1.7'
20
20
  - - ">="
21
21
  - !ruby/object:Gem::Version
22
- version: 1.5.2
22
+ version: 1.7.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
27
  - - "~>"
28
28
  - !ruby/object:Gem::Version
29
- version: '1.5'
29
+ version: '1.7'
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
- version: 1.5.2
32
+ version: 1.7.0
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: thor
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -90,26 +90,6 @@ dependencies:
90
90
  - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: 3.2.0
93
- - !ruby/object:Gem::Dependency
94
- name: ttfunk
95
- requirement: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - "~>"
98
- - !ruby/object:Gem::Version
99
- version: '1.4'
100
- - - ">="
101
- - !ruby/object:Gem::Version
102
- version: 1.4.0
103
- type: :runtime
104
- prerelease: false
105
- version_requirements: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '1.4'
110
- - - ">="
111
- - !ruby/object:Gem::Version
112
- version: 1.4.0
113
93
  description: Code generation and automation tool
114
94
  email: alex.garbarev@gmail.com
115
95
  executables: