danger-device_grid 0.1.0
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 +7 -0
- data/Gemfile +12 -0
- data/Rakefile +18 -0
- data/danger-device_grid.gemspec +24 -0
- data/lib/danger_device_grid.rb +1 -0
- data/lib/danger_plugin.rb +1 -0
- data/lib/device_grid/gem_version.rb +3 -0
- data/lib/device_grid/plugin.rb +99 -0
- data/spec/device_grid_spec.rb +37 -0
- data/spec/fixtures/device_grid_results.html +30 -0
- data/spec/spec_helper.rb +10 -0
- metadata +100 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d5fd52c8bcd519387f8ab072acc98ed1b90c70e5
|
4
|
+
data.tar.gz: ab837abae098f33c658fb399332d241eb4e7b291
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 221d09073214993693b09e8123b147a20d2962e1b538ec8516670b3e712a75de94dec9a5dda0a7b27421b6148b19285ec10a5db7076cf4f852890f2d1c3ca3c5
|
7
|
+
data.tar.gz: ec9b0c160787ebc1c801e61a8b52410243a9de071189cf73c514cad83900c90c736a396172947a2485c5813d42ae69f3d56b2802b27da5b8be3227e446489aee
|
data/Gemfile
ADDED
data/Rakefile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
require 'rubocop/rake_task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:specs)
|
6
|
+
|
7
|
+
task default: :specs
|
8
|
+
|
9
|
+
task :spec do
|
10
|
+
Rake::Task['specs'].invoke
|
11
|
+
Rake::Task['rubocop'].invoke
|
12
|
+
end
|
13
|
+
|
14
|
+
desc 'Run RuboCop on the lib/specs directory'
|
15
|
+
RuboCop::RakeTask.new(:rubocop) do |task|
|
16
|
+
task.patterns = ['lib/**/*.rb', 'spec/**/*.rb']
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'device_grid/gem_version.rb'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'danger-device_grid'
|
8
|
+
spec.version = DeviceGrid::VERSION
|
9
|
+
spec.authors = ['Boris Bügling']
|
10
|
+
spec.email = ['boris@icculus.org']
|
11
|
+
spec.summary = %q{Danger plugin for the fastlane device grid.}
|
12
|
+
spec.homepage = 'https://github.com/fastlane/fastlane/device_grid'
|
13
|
+
spec.license = 'MIT'
|
14
|
+
|
15
|
+
spec.files = `git ls-files`.split($/)
|
16
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
+
spec.require_paths = ['lib']
|
19
|
+
|
20
|
+
spec.add_dependency 'fastlane', '~> 1.94.0'
|
21
|
+
|
22
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
23
|
+
spec.add_development_dependency 'rake'
|
24
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'device_grid/gem_version'
|
@@ -0,0 +1 @@
|
|
1
|
+
require 'device_grid/plugin'
|
@@ -0,0 +1,99 @@
|
|
1
|
+
require 'fastlane'
|
2
|
+
|
3
|
+
module Danger
|
4
|
+
# A danger plugin: https://github.com/danger/danger
|
5
|
+
class DangerDeviceGrid < Plugin
|
6
|
+
# @param public_key: The key for the Appetize.io
|
7
|
+
# @param languages: Array of languages you want to see (e.g. [en, de])
|
8
|
+
# @param devices: Array of deviecs you want to see (e.g. ["iphone4s", "ipadair"])
|
9
|
+
# @param prefix_command: Prefix the `fastlane run appetize_viewing_url_generator` command with something
|
10
|
+
# this can be used to use `bundle exec`
|
11
|
+
def run(public_key: nil, languages: nil, devices: nil, prefix_command: nil)
|
12
|
+
# since we fetch the URL from the output we don't need colors
|
13
|
+
# this will only be changed in the danger sub-process
|
14
|
+
fastlane_colors_env = "FASTLANE_DISABLE_COLORS"
|
15
|
+
fastlane_colors_were_disabled = ENV.key?(fastlane_colors_env)
|
16
|
+
ENV[fastlane_colors_env] = "true"
|
17
|
+
|
18
|
+
devices ||= %w(iphone4s iphone5s iphone6s iphone6splus ipadair)
|
19
|
+
languages ||= ["en"]
|
20
|
+
|
21
|
+
prefix_command ||= ""
|
22
|
+
|
23
|
+
# To use the local fastlane instead of bundle
|
24
|
+
prefix_command = "./bin/" if FastlaneCore::Helper.test?
|
25
|
+
|
26
|
+
deep_link_matches = pr_body.match(/:link:\s(.*)/) # :link: emoji
|
27
|
+
deep_link = deep_link_matches[1] if deep_link_matches
|
28
|
+
|
29
|
+
markdown("<table>")
|
30
|
+
languages.each do |current_language|
|
31
|
+
markdown("<tr>")
|
32
|
+
markdown("<td>")
|
33
|
+
markdown("<b>#{current_language[0..1]}</b>")
|
34
|
+
markdown("</td>")
|
35
|
+
|
36
|
+
devices.each do |current_device|
|
37
|
+
markdown("<td>")
|
38
|
+
|
39
|
+
params = {
|
40
|
+
public_key: public_key,
|
41
|
+
language: current_language,
|
42
|
+
device: current_device
|
43
|
+
}
|
44
|
+
params[:launch_url] = deep_link if deep_link
|
45
|
+
params_str = params.map { |k, v| "#{k}:\"#{v}\"" }.join(" ")
|
46
|
+
url = Fastlane::Helper.backticks("#{prefix_command}fastlane run appetize_viewing_url_generator #{params_str}")
|
47
|
+
url = url.match(%r{Result:.*(https\:\/\/.*)})[1].strip
|
48
|
+
|
49
|
+
markdown("<a href='#{url}'>")
|
50
|
+
markdown("<p align='center'>")
|
51
|
+
markdown("<img height='130' src='#{url_for_device(current_device)}' />")
|
52
|
+
markdown("<br />")
|
53
|
+
markdown(beautiful_device_name(current_device))
|
54
|
+
markdown("</p>")
|
55
|
+
markdown("</a>")
|
56
|
+
|
57
|
+
markdown("</td>")
|
58
|
+
end
|
59
|
+
markdown("</tr>")
|
60
|
+
end
|
61
|
+
markdown("</table>")
|
62
|
+
ensure
|
63
|
+
ENV.delete(fastlane_colors_env) unless fastlane_colors_were_disabled
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
def beautiful_device_name(str)
|
69
|
+
return {
|
70
|
+
iphone4s: "iPhone 4s",
|
71
|
+
iphone5s: "iPhone 5s",
|
72
|
+
iphone6s: "iPhone 6s",
|
73
|
+
iphone6splus: "iPhone 6s Plus",
|
74
|
+
ipadair: "iPad Air",
|
75
|
+
iphone6: "iPhone 6",
|
76
|
+
iphone6plus: "iPhone 6 Plus",
|
77
|
+
ipadair2: "iPad Air 2",
|
78
|
+
nexus5: "Nexus 5",
|
79
|
+
nexus7: "Nexus 7",
|
80
|
+
nexus9: "Nexus 9"
|
81
|
+
}[str.to_sym] || str.to_s
|
82
|
+
end
|
83
|
+
|
84
|
+
def url_for_device(str)
|
85
|
+
str = str.to_sym
|
86
|
+
host = "https://raw.githubusercontent.com/fastlane/fastlane/#{Fastlane::VERSION}/fastlane/lib/fastlane/actions/device_grid/assets/"
|
87
|
+
return {
|
88
|
+
iphone4s: host + "iphone4s.png",
|
89
|
+
iphone5s: host + "iphone5s.png",
|
90
|
+
iphone6: host + "iphone6s.png",
|
91
|
+
iphone6s: host + "iphone6s.png",
|
92
|
+
iphone6plus: host + "iphone6splus.png",
|
93
|
+
iphone6splus: host + "iphone6splus.png",
|
94
|
+
ipadair: host + "ipadair.png",
|
95
|
+
ipadair2: host + "ipadair.png"
|
96
|
+
}[str] || ""
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require File.expand_path('../spec_helper', __FILE__)
|
2
|
+
|
3
|
+
module Danger
|
4
|
+
class Dangerfile
|
5
|
+
module DSL
|
6
|
+
class Plugin
|
7
|
+
attr_accessor :current_markdown
|
8
|
+
|
9
|
+
def pr_body # needed for the action
|
10
|
+
""
|
11
|
+
end
|
12
|
+
|
13
|
+
def markdown(str)
|
14
|
+
@current_markdown ||= ""
|
15
|
+
@current_markdown += "#{str}\n"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
describe Danger::DangerDeviceGrid do
|
22
|
+
it 'should be a plugin' do
|
23
|
+
expect(Danger::DangerDeviceGrid.new(nil)).to be_a Danger::Plugin
|
24
|
+
end
|
25
|
+
|
26
|
+
it "works" do
|
27
|
+
public_key = "1461233806"
|
28
|
+
dg = Danger::DangerDeviceGrid.new(Danger::Dangerfile::DSL::Plugin.new)
|
29
|
+
dg.run(languages: ['en', 'de'],
|
30
|
+
devices: ['iphone4s'],
|
31
|
+
public_key: public_key)
|
32
|
+
|
33
|
+
correct = File.read("spec/fixtures/device_grid_results.html").gsub("[[version]]", Fastlane::VERSION)
|
34
|
+
expect(dg.current_markdown).to eq(correct)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
<table>
|
2
|
+
<tr>
|
3
|
+
<td>
|
4
|
+
<b>en</b>
|
5
|
+
</td>
|
6
|
+
<td>
|
7
|
+
<a href='https://appetize.io/embed/1461233806?autoplay=true&orientation=portrait&device=iphone4s&deviceColor=black&scale=75&language=en'>
|
8
|
+
<p align='center'>
|
9
|
+
<img height='130' src='https://raw.githubusercontent.com/fastlane/fastlane/[[version]]/fastlane/lib/fastlane/actions/device_grid/assets/iphone4s.png' />
|
10
|
+
<br />
|
11
|
+
iPhone 4s
|
12
|
+
</p>
|
13
|
+
</a>
|
14
|
+
</td>
|
15
|
+
</tr>
|
16
|
+
<tr>
|
17
|
+
<td>
|
18
|
+
<b>de</b>
|
19
|
+
</td>
|
20
|
+
<td>
|
21
|
+
<a href='https://appetize.io/embed/1461233806?autoplay=true&orientation=portrait&device=iphone4s&deviceColor=black&scale=75&language=de'>
|
22
|
+
<p align='center'>
|
23
|
+
<img height='130' src='https://raw.githubusercontent.com/fastlane/fastlane/[[version]]/fastlane/lib/fastlane/actions/device_grid/assets/iphone4s.png' />
|
24
|
+
<br />
|
25
|
+
iPhone 4s
|
26
|
+
</p>
|
27
|
+
</a>
|
28
|
+
</td>
|
29
|
+
</tr>
|
30
|
+
</table>
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: danger-device_grid
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Boris Bügling
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-06-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: fastlane
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.94.0
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.94.0
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ~>
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.3'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ~>
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- boris@icculus.org
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- Gemfile
|
63
|
+
- Rakefile
|
64
|
+
- danger-device_grid.gemspec
|
65
|
+
- lib/danger_device_grid.rb
|
66
|
+
- lib/danger_plugin.rb
|
67
|
+
- lib/device_grid/gem_version.rb
|
68
|
+
- lib/device_grid/plugin.rb
|
69
|
+
- spec/device_grid_spec.rb
|
70
|
+
- spec/fixtures/device_grid_results.html
|
71
|
+
- spec/spec_helper.rb
|
72
|
+
homepage: https://github.com/fastlane/fastlane/device_grid
|
73
|
+
licenses:
|
74
|
+
- MIT
|
75
|
+
metadata: {}
|
76
|
+
post_install_message:
|
77
|
+
rdoc_options: []
|
78
|
+
require_paths:
|
79
|
+
- lib
|
80
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - '>='
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: '0'
|
85
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
requirements: []
|
91
|
+
rubyforge_project:
|
92
|
+
rubygems_version: 2.0.14
|
93
|
+
signing_key:
|
94
|
+
specification_version: 4
|
95
|
+
summary: Danger plugin for the fastlane device grid.
|
96
|
+
test_files:
|
97
|
+
- spec/device_grid_spec.rb
|
98
|
+
- spec/fixtures/device_grid_results.html
|
99
|
+
- spec/spec_helper.rb
|
100
|
+
has_rdoc:
|