gena 0.1.3 → 0.1.4

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: 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: