skeleton-ui 0.1.0 → 0.1.1
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/.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
|