skeleton-ui 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.rubocop.yml +26 -0
- data/README.md +8 -1
- data/bin/skeleton +4 -2
- data/html/server.rb +2 -0
- data/html/template.html.erb +2 -2
- data/lib/skeleton.rb +35 -18
- data/lib/skeleton/android.rb +24 -11
- data/lib/skeleton/base.rb +20 -28
- data/lib/skeleton/ios.rb +37 -36
- data/lib/skeleton/languages.rb +10 -10
- data/lib/skeleton/version.rb +1 -1
- data/skeleton.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c8ef2154e88b5a4fa1a97058af39362b3336a44827407110bcb8b640fa9a08fd
|
4
|
+
data.tar.gz: 68aaa372fa4ed72015cf96524e3d376b359249fb4a0b023e55293ab2eb99897a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2412554c9d911309c6ae7c626b85c5af8a00fe4b0ac0b733129b3096527b7f3f3a7459137e2d2695def1c9ae32f8105c67e8f7bf27c5f6a387f23f0bc0c648a6
|
7
|
+
data.tar.gz: 5543e179d7f1a6e85f3231ff1546ba126d0cff836d5254e0f6bb94c846fab22da4f5d6e8316df7d058bc7e8e6a8eeda8bc3aa87e37b6ff9a73a41b2779356868
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Style/Tab:
|
2
|
+
Enabled: false
|
3
|
+
|
4
|
+
Layout/IndentationWidth:
|
5
|
+
Enabled: false
|
6
|
+
|
7
|
+
Metrics/MethodLength:
|
8
|
+
Enabled: false
|
9
|
+
|
10
|
+
Metrics/ClassLength:
|
11
|
+
Enabled: false
|
12
|
+
|
13
|
+
Layout/IndentationConsistency:
|
14
|
+
Enabled: false
|
15
|
+
|
16
|
+
Layout/AlignHash:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
Metrics/AbcSize:
|
20
|
+
Enabled: false
|
21
|
+
|
22
|
+
Layout/AlignParameters:
|
23
|
+
Enabled: false
|
24
|
+
|
25
|
+
Style/Documentation:
|
26
|
+
Enabled: false
|
data/README.md
CHANGED
@@ -5,6 +5,9 @@ CLI for fast generating multi language page objects from iOS and Android screens
|
|
5
5
|
Prerequisites:
|
6
6
|
--------
|
7
7
|
|
8
|
+
#### Global
|
9
|
+
- Install [imagemagick](http://brewformulas.org/Imagemagick).
|
10
|
+
|
8
11
|
#### Android
|
9
12
|
- Install [SDK Tools](http://developer.android.com/sdk/installing/index.html?pkg=tools).
|
10
13
|
- SDK tools are added to your $PATH. [OSX](https://stackoverflow.com/posts/19764254/revisions)
|
@@ -13,7 +16,6 @@ Prerequisites:
|
|
13
16
|
#### iOS
|
14
17
|
- Install [Xcode](https://developer.apple.com/xcode/download/).
|
15
18
|
- Install [Xcode Command Line Tools](http://railsapps.github.io/xcode-command-line-tools.html).
|
16
|
-
- For real devices you need to sign skeleton in xcodeproj ([like appium](https://github.com/appium/appium-xcuitest-driver/blob/master/docs/real-device-config.md)).
|
17
19
|
|
18
20
|
Installation:
|
19
21
|
------
|
@@ -76,6 +78,11 @@ Usage:
|
|
76
78
|
EXAMPLES:
|
77
79
|
|
78
80
|
skeleton clear
|
81
|
+
|
82
|
+
OPTIONS:
|
83
|
+
|
84
|
+
-p, --port PORT
|
85
|
+
Set web-server port
|
79
86
|
|
80
87
|
Docs:
|
81
88
|
------
|
data/bin/skeleton
CHANGED
@@ -34,8 +34,10 @@ module Skeleton
|
|
34
34
|
c.syntax = 'skeleton server'
|
35
35
|
c.description = 'Run skeleton web-server'
|
36
36
|
c.example 'description', 'skeleton server'
|
37
|
-
c.
|
38
|
-
|
37
|
+
c.option '-p', '--port PORT', String, 'Set web-server port'
|
38
|
+
c.action do |_args, options|
|
39
|
+
options.default(port: 4567)
|
40
|
+
system("cd ../html/ && ruby server.rb #{options.port}")
|
39
41
|
end
|
40
42
|
end
|
41
43
|
end
|
data/html/server.rb
CHANGED
data/html/template.html.erb
CHANGED
@@ -20,12 +20,12 @@
|
|
20
20
|
</div>
|
21
21
|
</div>
|
22
22
|
<div class="col-md-8">
|
23
|
-
<h4 class="mb-3">
|
23
|
+
<h4 class="mb-3">Page Objects:</h4>
|
24
24
|
<div class="content" id="content">
|
25
25
|
<pre><code><%= @pageobject %></code></pre>
|
26
26
|
</div>
|
27
27
|
<br>
|
28
|
-
<h4 class="mb-3">
|
28
|
+
<h4 class="mb-3">Elements Tree:</h4>
|
29
29
|
<div class="content" id="content">
|
30
30
|
<pre><code><%= @elements_tree %></code></pre>
|
31
31
|
</div>
|
data/lib/skeleton.rb
CHANGED
@@ -3,6 +3,9 @@ require 'fileutils'
|
|
3
3
|
require 'nokogiri'
|
4
4
|
require 'logger'
|
5
5
|
require 'colorize'
|
6
|
+
require 'mini_magick'
|
7
|
+
require_relative 'skeleton/languages.rb'
|
8
|
+
require_relative 'skeleton/root.rb'
|
6
9
|
require_relative 'skeleton/version'
|
7
10
|
require_relative 'skeleton/base'
|
8
11
|
require_relative 'skeleton/ios'
|
@@ -10,8 +13,6 @@ require_relative 'skeleton/android'
|
|
10
13
|
|
11
14
|
module Skeleton
|
12
15
|
class Skeleton
|
13
|
-
include Language
|
14
|
-
|
15
16
|
attr_accessor :platform, :udid, :bundle_id
|
16
17
|
|
17
18
|
def initialize(options)
|
@@ -30,39 +31,55 @@ module Skeleton
|
|
30
31
|
end
|
31
32
|
|
32
33
|
def udid=(udid)
|
33
|
-
|
34
|
-
raise 'Not set udid [-u arg]'
|
35
|
-
end
|
34
|
+
raise 'Not set udid [-u arg]' if udid.nil?
|
36
35
|
@udid = udid
|
37
36
|
end
|
38
37
|
|
39
38
|
def bundle_id=(bundle_id)
|
40
|
-
|
41
|
-
raise 'Not set bundle_id [-b arg]'
|
42
|
-
end
|
39
|
+
raise 'Not set bundle_id [-b arg]' if @platform == 'ios' && bundle_id.nil?
|
43
40
|
@bundle_id = bundle_id
|
44
41
|
end
|
45
42
|
|
46
|
-
|
43
|
+
def run
|
47
44
|
@driver.clear
|
48
45
|
@driver.precondition
|
49
46
|
@driver.skeletoner
|
50
47
|
fill_html
|
51
|
-
|
52
|
-
|
48
|
+
open_url
|
49
|
+
end
|
53
50
|
|
54
51
|
def fill_html
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
52
|
+
language = Language.new
|
53
|
+
%w[ruby java].each do |lang|
|
54
|
+
attach_image
|
55
|
+
type = language.type(lang)
|
56
|
+
folder = Base::PAGE_OBJECTS_FOLDER
|
57
|
+
@pageobject = File.read(Dir["#{folder}/*.#{type}"].first)
|
58
|
+
@elements_tree = File.read(Dir["#{folder}/*.xml"].first)
|
59
|
+
if @driver.class == Android
|
60
|
+
@elements_tree = Nokogiri::XML(@elements_tree).to_s
|
61
|
+
@elements_tree.gsub!('<', '<')
|
62
|
+
@elements_tree.gsub!('>', '>')
|
63
|
+
end
|
62
64
|
template = File.read('../html/template.html.erb')
|
63
65
|
result = ERB.new(template).result(binding)
|
64
66
|
File.open("../html/#{lang}.html", 'w+') { |f| f.write(result) }
|
65
67
|
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def attach_image
|
71
|
+
screenshot = Dir["#{Base::ATTACHMENTS_FOLDER}/*.png"].first
|
72
|
+
image = MiniMagick::Image.new(screenshot)
|
73
|
+
image.rotate(90) if image.width > image.height
|
74
|
+
FileUtils.cp_r(screenshot, '../html/screenshot.png')
|
75
|
+
rescue MiniMagick::Error => e
|
76
|
+
@driver.log.error(e)
|
77
|
+
end
|
78
|
+
|
79
|
+
def open_url
|
80
|
+
url = 'http://localhost:4567/index.html'
|
81
|
+
`open #{url}`
|
82
|
+
@driver.log.info("Look at your pretty page objects: #{url} 😍")
|
66
83
|
end
|
67
84
|
|
68
85
|
def ios?
|
data/lib/skeleton/android.rb
CHANGED
@@ -1,16 +1,23 @@
|
|
1
1
|
class Android < Base
|
2
|
-
RESOURCE_ID = 'resource-id'
|
3
|
-
CONTENT_DESC = 'content-desc'
|
4
|
-
TEXT = 'text'
|
5
|
-
|
6
|
-
|
7
|
-
|
2
|
+
RESOURCE_ID = 'resource-id'.freeze
|
3
|
+
CONTENT_DESC = 'content-desc'.freeze
|
4
|
+
TEXT = 'text'.freeze
|
5
|
+
CLASS = 'class'.freeze
|
6
|
+
ID = {
|
7
|
+
java: :id,
|
8
|
+
ruby: :id
|
9
|
+
}.freeze
|
10
|
+
XPATH = {
|
11
|
+
java: :xpath,
|
12
|
+
ruby: :xpath
|
13
|
+
}.freeze
|
8
14
|
|
9
15
|
attr_accessor :platform, :udid
|
10
16
|
|
11
17
|
def initialize(options)
|
12
18
|
self.platform = options.platform
|
13
19
|
self.udid = options.udid
|
20
|
+
@language = Language.new
|
14
21
|
end
|
15
22
|
|
16
23
|
def skeletoner
|
@@ -28,7 +35,7 @@ class Android < Base
|
|
28
35
|
method_name.slice!(/.*id\//)
|
29
36
|
code_generation(method_name: method_name,
|
30
37
|
locator_type: ID,
|
31
|
-
|
38
|
+
locator_value: line[RESOURCE_ID])
|
32
39
|
end
|
33
40
|
|
34
41
|
def create_locator_by_content_desc(line)
|
@@ -37,7 +44,7 @@ class Android < Base
|
|
37
44
|
locator = "//#{line[CLASS]}[@#{CONTENT_DESC}='#{line[CONTENT_DESC]}']"
|
38
45
|
code_generation(method_name: method_name,
|
39
46
|
locator_type: XPATH,
|
40
|
-
|
47
|
+
locator_value: locator)
|
41
48
|
end
|
42
49
|
|
43
50
|
def create_locator_by_text(line)
|
@@ -46,7 +53,7 @@ class Android < Base
|
|
46
53
|
locator = "//#{line[CLASS]}[@#{TEXT}='#{line[TEXT]}'"
|
47
54
|
code_generation(method_name: method_name,
|
48
55
|
locator_type: XPATH,
|
49
|
-
|
56
|
+
locator_value: locator)
|
50
57
|
end
|
51
58
|
|
52
59
|
def create_locator(line)
|
@@ -65,9 +72,15 @@ class Android < Base
|
|
65
72
|
page_source_html.css('node').each { |line| create_locator(line) }
|
66
73
|
end
|
67
74
|
|
68
|
-
def code_generation(method_name:, locator_type:,
|
69
|
-
java = java(method_name,
|
75
|
+
def code_generation(method_name:, locator_type:, locator_value:)
|
76
|
+
java = @language.java(camel_method_name: camel_style(method_name),
|
77
|
+
locator_type: locator_type,
|
78
|
+
locator_value: locator_value)
|
79
|
+
ruby = @language.ruby(snake_method_name: snake_style(method_name),
|
80
|
+
locator_type: locator_type,
|
81
|
+
locator_value: locator_value)
|
70
82
|
save(code: java, format: Language::JAVA)
|
83
|
+
save(code: ruby, format: Language::RUBY)
|
71
84
|
end
|
72
85
|
|
73
86
|
def page_source
|
data/lib/skeleton/base.rb
CHANGED
@@ -1,32 +1,26 @@
|
|
1
|
-
require_relative 'languages.rb'
|
2
|
-
require_relative 'root.rb'
|
3
|
-
|
4
1
|
class Base
|
5
|
-
|
6
|
-
|
7
|
-
PAGE_OBJECTS_FOLDER = "#{ROOT_DIR}/PageObjects"
|
8
|
-
ATTACHMENTS_FOLDER = "#{ROOT_DIR}/Attachments"
|
2
|
+
PAGE_OBJECTS_FOLDER = "#{ROOT_DIR}/PageObjects".freeze
|
3
|
+
ATTACHMENTS_FOLDER = "#{ROOT_DIR}/Attachments".freeze
|
9
4
|
TIMESTAMP = (Time.now.to_f * 1000).to_i
|
10
5
|
|
11
6
|
def precondition
|
12
7
|
create_logger
|
8
|
+
clear
|
9
|
+
FileUtils.rm_rf("#{ROOT_DIR}/html/screenshot.png")
|
13
10
|
FileUtils.mkdir_p(PAGE_OBJECTS_FOLDER)
|
14
11
|
FileUtils.mkdir_p(ATTACHMENTS_FOLDER)
|
15
12
|
end
|
16
13
|
|
17
14
|
def log
|
18
|
-
if @log.nil?
|
19
|
-
create_logger
|
20
|
-
end
|
15
|
+
create_logger if @log.nil?
|
21
16
|
@log
|
22
17
|
end
|
23
18
|
|
24
|
-
def skeletoner
|
25
|
-
end
|
19
|
+
def skeletoner; end
|
26
20
|
|
27
21
|
def clear
|
28
|
-
FileUtils.rm_rf(
|
29
|
-
FileUtils.rm_rf(
|
22
|
+
FileUtils.rm_rf(PAGE_OBJECTS_FOLDER)
|
23
|
+
FileUtils.rm_rf(ATTACHMENTS_FOLDER)
|
30
24
|
end
|
31
25
|
|
32
26
|
protected
|
@@ -39,19 +33,20 @@ class Base
|
|
39
33
|
def create_logger
|
40
34
|
@log = Logger.new(STDOUT)
|
41
35
|
@log.level = Logger::INFO
|
42
|
-
@log.formatter = proc do |severity, datetime,
|
36
|
+
@log.formatter = proc do |severity, datetime, _progname, msg|
|
43
37
|
"[#{severity}] #{datetime}: " + "#{msg}\n".colorize(:light_cyan)
|
44
38
|
end
|
45
39
|
end
|
46
40
|
|
47
41
|
def snake_style(method_name)
|
48
|
-
method_name
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
42
|
+
method_name
|
43
|
+
.tr("@()[]'\"*!?{}:;#$^.,\/\\", '')
|
44
|
+
.tr('-', '_')
|
45
|
+
.gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2')
|
46
|
+
.gsub(/([a-z\d])([A-Z])/, '\1_\2')
|
47
|
+
.gsub(/\s/, '_')
|
48
|
+
.gsub(/__+/, '_')
|
49
|
+
.downcase
|
55
50
|
end
|
56
51
|
|
57
52
|
def camel_style(method_name)
|
@@ -71,12 +66,9 @@ class Base
|
|
71
66
|
@locator_index = @locator_index.nil? ? 1 : @locator_index + 1
|
72
67
|
end
|
73
68
|
|
74
|
-
def screenshot
|
75
|
-
end
|
69
|
+
def screenshot; end
|
76
70
|
|
77
|
-
def page_source
|
78
|
-
end
|
71
|
+
def page_source; end
|
79
72
|
|
80
|
-
def code_generation
|
81
|
-
end
|
73
|
+
def code_generation; end
|
82
74
|
end
|
data/lib/skeleton/ios.rb
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
class IOS < Base
|
2
2
|
ACC_ID = {
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
java: :AccessibilityId,
|
4
|
+
ruby: :accessibility_id
|
5
|
+
}.freeze
|
6
6
|
NSPREDICATE = {
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
IDENTIFIER = 'identifier'
|
11
|
-
LABEL = 'label'
|
12
|
-
XCRESULTS_FOLDER = "#{ROOT_DIR}/XCResults"
|
13
|
-
XCODEPROJ_FOLDER = "#{ROOT_DIR}/xcodeproj"
|
7
|
+
java: :iOSNsPredicateString,
|
8
|
+
ruby: :predicate
|
9
|
+
}.freeze
|
10
|
+
IDENTIFIER = 'identifier'.freeze
|
11
|
+
LABEL = 'label'.freeze
|
12
|
+
XCRESULTS_FOLDER = "#{ROOT_DIR}/XCResults".freeze
|
13
|
+
XCODEPROJ_FOLDER = "#{ROOT_DIR}/xcodeproj".freeze
|
14
14
|
|
15
15
|
attr_accessor :platform, :udid, :bundle_id
|
16
16
|
|
@@ -18,6 +18,7 @@ class IOS < Base
|
|
18
18
|
self.platform = options.platform
|
19
19
|
self.udid = options.udid
|
20
20
|
self.bundle_id = options.bundle
|
21
|
+
@language = Language.new
|
21
22
|
end
|
22
23
|
|
23
24
|
def skeletoner
|
@@ -47,7 +48,7 @@ class IOS < Base
|
|
47
48
|
method_name = locator.strip
|
48
49
|
code_generation(method_name: method_name,
|
49
50
|
locator_type: ACC_ID,
|
50
|
-
|
51
|
+
locator_value: locator)
|
51
52
|
end
|
52
53
|
|
53
54
|
def create_locator_by_label(text, type)
|
@@ -55,7 +56,7 @@ class IOS < Base
|
|
55
56
|
locator = "#{LABEL} like '#{text}'"
|
56
57
|
code_generation(method_name: method_name,
|
57
58
|
locator_type: NSPREDICATE,
|
58
|
-
|
59
|
+
locator_value: locator)
|
59
60
|
end
|
60
61
|
|
61
62
|
def create_page_objects
|
@@ -82,11 +83,14 @@ class IOS < Base
|
|
82
83
|
locator.nil? ? '' : locator[1]
|
83
84
|
end
|
84
85
|
|
85
|
-
def code_generation(method_name:, locator_type:,
|
86
|
-
java = java(method_name,
|
86
|
+
def code_generation(method_name:, locator_type:, locator_value:)
|
87
|
+
java = @language.java(camel_method_name: camel_style(method_name),
|
88
|
+
locator_type: locator_type,
|
89
|
+
locator_value: locator_value)
|
90
|
+
ruby = @language.ruby(snake_method_name: snake_style(method_name),
|
91
|
+
locator_type: locator_type,
|
92
|
+
locator_value: locator_value)
|
87
93
|
save(code: java, format: Language::JAVA)
|
88
|
-
|
89
|
-
ruby = ruby(method_name, locator_type, value)
|
90
94
|
save(code: ruby, format: Language::RUBY)
|
91
95
|
end
|
92
96
|
|
@@ -94,24 +98,23 @@ class IOS < Base
|
|
94
98
|
if @page_source.nil?
|
95
99
|
log.info('Getting screen source tree ⚒')
|
96
100
|
FileUtils.rm_rf(XCRESULTS_FOLDER)
|
97
|
-
start_grep
|
101
|
+
start_grep = 'start_grep_tag'
|
102
|
+
end_grep = 'end_grep_tag'
|
98
103
|
ios_arch = @simulator ? 'iOS Simulator' : 'iOS'
|
99
104
|
@page_source = `xcodebuild test \
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
105
|
+
-project #{XCODEPROJ_FOLDER}/Skeleton.xcodeproj \
|
106
|
+
-scheme Skeleton \
|
107
|
+
-destination 'platform=#{ios_arch},id=#{@udid}' \
|
108
|
+
-resultBundlePath #{XCRESULTS_FOLDER} \
|
109
|
+
bundle_id="#{@bundle_id}" | \
|
110
|
+
awk '/#{start_grep}/,/#{end_grep}/'`
|
106
111
|
@page_source.slice!(start_grep)
|
107
112
|
@page_source.slice!(end_grep)
|
108
113
|
if @page_source.empty?
|
109
|
-
log.fatal(
|
110
|
-
"Something went wrong.\n" \
|
114
|
+
log.fatal("Something went wrong.\n" \
|
111
115
|
"1. Try to sign Skeleton in #{XCODEPROJ_FOLDER}\n" \
|
112
116
|
"2. Check in the iOS settings that Skeleton is trust developer.\n" \
|
113
|
-
'3. Check your app bundle_id'
|
114
|
-
)
|
117
|
+
'3. Check your app bundle_id')
|
115
118
|
raise
|
116
119
|
end
|
117
120
|
log.info('Successfully getting Screen Source Tree 🔥')
|
@@ -120,15 +123,13 @@ class IOS < Base
|
|
120
123
|
end
|
121
124
|
|
122
125
|
def check_udid
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
end
|
131
|
-
end
|
126
|
+
return unless @simulator.nil?
|
127
|
+
log.info('Checking iOS UDID 👨💻')
|
128
|
+
simulators = `xcrun simctl list`
|
129
|
+
@simulator = simulators.include?(@udid)
|
130
|
+
return if @simulator || `instruments -s devices`.include?(@udid)
|
131
|
+
log.fatal("No such devices with UDID: #{@udid}")
|
132
|
+
raise
|
132
133
|
end
|
133
134
|
|
134
135
|
def save_screenshot
|
data/lib/skeleton/languages.rb
CHANGED
@@ -1,28 +1,28 @@
|
|
1
|
-
|
1
|
+
class Language
|
2
2
|
JAVA = 'java'
|
3
3
|
RUBY = 'rb'
|
4
4
|
PYTHON = 'py'
|
5
5
|
|
6
|
-
def java(
|
6
|
+
def java(camel_method_name:, locator_type:, locator_value:)
|
7
7
|
<<~JAVA
|
8
|
-
By #{
|
9
|
-
return MobileBy.#{locator_type[:java]}("#{
|
8
|
+
By #{camel_method_name}() {
|
9
|
+
return MobileBy.#{locator_type[:java]}("#{locator_value}");
|
10
10
|
}
|
11
11
|
|
12
12
|
JAVA
|
13
13
|
end
|
14
14
|
|
15
|
-
def ruby(
|
15
|
+
def ruby(snake_method_name:, locator_type:, locator_value:)
|
16
16
|
<<~RUBY
|
17
|
-
def #{
|
18
|
-
return :#{locator_type[:ruby]}, "#{
|
17
|
+
def #{snake_method_name}
|
18
|
+
return :#{locator_type[:ruby]}, "#{locator_value}"
|
19
19
|
end
|
20
20
|
|
21
21
|
RUBY
|
22
22
|
end
|
23
23
|
|
24
|
-
def
|
25
|
-
case
|
24
|
+
def type(format)
|
25
|
+
case format
|
26
26
|
when 'ruby'
|
27
27
|
RUBY
|
28
28
|
when 'java'
|
@@ -30,7 +30,7 @@ module Language
|
|
30
30
|
when 'python'
|
31
31
|
PYTHON
|
32
32
|
else
|
33
|
-
"I haven't this language"
|
33
|
+
"I haven't this language format"
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
data/lib/skeleton/version.rb
CHANGED
data/skeleton.gemspec
CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.add_development_dependency "rake", "~> 12.3.0"
|
29
29
|
spec.add_development_dependency "rspec", "~> 3.7"
|
30
30
|
spec.add_dependency "colorize", "~> 0.8.1"
|
31
|
+
spec.add_dependency "mini_magick", "~> 4.8.0"
|
31
32
|
spec.add_dependency "nokogiri", "~> 1.8.2"
|
32
33
|
spec.add_dependency "fileutils"
|
33
34
|
spec.add_dependency "commander"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: skeleton-ui
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- a.alterpesotskiy
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-07-
|
11
|
+
date: 2018-07-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.8.1
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mini_magick
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 4.8.0
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 4.8.0
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: nokogiri
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -119,6 +133,7 @@ files:
|
|
119
133
|
- ".githooks/commit-msg"
|
120
134
|
- ".gitignore"
|
121
135
|
- ".rspec"
|
136
|
+
- ".rubocop.yml"
|
122
137
|
- CODE_OF_CONDUCT.md
|
123
138
|
- Gemfile
|
124
139
|
- LICENSE.txt
|