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 +4 -4
- data/lib/cli/cli.rb +41 -2
- data/lib/cli/init.rb +39 -12
- data/lib/constants.rb +1 -2
- data/lib/plugin/plugin.rb +4 -0
- data/lib/utils/utils.rb +26 -0
- metadata +6 -26
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6f07c5d4850c7e57ff1c5dd647a4902485a071a7
|
4
|
+
data.tar.gz: b9f719f69a220de2c24bc3d30ba25a36eae6f485
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1570379e275c758442502a92eab49ded53f327f9a6e53a1bab6c4902c8b7e5c9001c4e6b68d7eebb4dbb288ec599939c466913c0905c1fb38118eb6b65c9a61f
|
7
|
+
data.tar.gz: cd64ca0944515d7836599ab245cc19d4c678fc748e2ed1c2b553e5b951a7b921abf26a1cca7535938d6ef93905873523c2fe3639dac996758a8ad97b9efc8710
|
data/lib/cli/cli.rb
CHANGED
@@ -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
|
-
|
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
|
-
|
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
|
data/lib/cli/init.rb
CHANGED
@@ -2,7 +2,7 @@ module Gena
|
|
2
2
|
|
3
3
|
class Application < Thor
|
4
4
|
|
5
|
-
desc 'reconfigure [
|
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
|
-
|
72
|
-
|
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
|
-
|
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
|
data/lib/constants.rb
CHANGED
data/lib/plugin/plugin.rb
CHANGED
data/lib/utils/utils.rb
CHANGED
@@ -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.
|
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-
|
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.
|
19
|
+
version: '1.7'
|
20
20
|
- - ">="
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 1.
|
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.
|
29
|
+
version: '1.7'
|
30
30
|
- - ">="
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 1.
|
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:
|