fastlane-plugin-download_github_release_asset 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +76 -0
- data/lib/fastlane/plugin/download_github_release_asset.rb +16 -0
- data/lib/fastlane/plugin/download_github_release_asset/actions/download_github_release_asset_action.rb +97 -0
- data/lib/fastlane/plugin/download_github_release_asset/helper/download_github_release_asset_helper.rb +12 -0
- data/lib/fastlane/plugin/download_github_release_asset/version.rb +5 -0
- metadata +149 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 3504c7e1cf1ef0d25c26f8c4b0d3ecd6fe74e505
|
4
|
+
data.tar.gz: fa0ddd15a696c9d0eaa5c1c0e18599d73dc07be1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3a9add56f8f6fe51d43e0820548291877ad381dd30f422a5e158da0bce1d25564c68631a5fb0aa999048d84b15191622582ffbc1b35cfe0102605046ffcf8968
|
7
|
+
data.tar.gz: e592add801563268add8ec3da3b1d37523fe5ce1527ffa3bc13eb0287e21c7933677ad02036357019024b872ab62ca34e3ebd53afb2f324bac98ff2352092920
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Anton Domashnev <antondomashnev@gmail.com>
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,76 @@
|
|
1
|
+
# download_github_release_asset plugin
|
2
|
+
|
3
|
+
[![fastlane Plugin Badge](https://rawcdn.githack.com/fastlane/fastlane/master/fastlane/assets/plugin-badge.svg)](https://rubygems.org/gems/fastlane-plugin-download_github_release_asset)
|
4
|
+
[![Build Status](https://travis-ci.org/Antondomashnev/fastlane-plugin-download_github_release_asset.svg?branch=master)](https://travis-ci.org/Antondomashnev/fastlane-plugin-download_github_release_asset)
|
5
|
+
[![codebeat badge](https://codebeat.co/badges/553a0e08-15f7-49bf-bdc6-15c93afd8371)](https://codebeat.co/projects/github-com-antondomashnev-fastlane-plugin-download_github_release_asset)
|
6
|
+
|
7
|
+
## Getting Started
|
8
|
+
|
9
|
+
This project is a [fastlane](https://github.com/fastlane/fastlane) plugin. To get started with `fastlane-plugin-download_github_release_asset`, add it to your project by running:
|
10
|
+
|
11
|
+
```bash
|
12
|
+
fastlane add_plugin download_github_release_asset
|
13
|
+
```
|
14
|
+
|
15
|
+
## About download_github_release_asset
|
16
|
+
|
17
|
+
This [fastlane](https://github.com/fastlane/fastlane) plugin downloads the GitHub release's asset using the GitHub API. The possible usage of the plugin can be found in example [Fastfile](https://github.com/Antondomashnev/fastlane-plugin-download_github_release_asset/blob/master/fastlane/Fastfile).
|
18
|
+
Usually the asset on GitHub is a `.zip` file, so here can be really useful another [plugin](https://github.com/maxoly/fastlane-plugin-unzip) to unzip archive.
|
19
|
+
|
20
|
+
## Example
|
21
|
+
|
22
|
+
Check out the [example `Fastfile`](fastlane/Fastfile) to see how to use this plugin. Try it by cloning the repo, running `fastlane install_plugins` and `bundle exec fastlane example`.
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
lane :example do |options|
|
26
|
+
release_version = options[:release_version]
|
27
|
+
|
28
|
+
github_release = get_github_release(
|
29
|
+
url: ENV['PRIVATE_CONICHI_IOS_SDK_GITHUB_REPO'],
|
30
|
+
version: release_version,
|
31
|
+
api_token: ENV['CONICHI_CI_GITHUB_TOKEN']
|
32
|
+
)
|
33
|
+
|
34
|
+
assets = github_release["assets"]
|
35
|
+
selected_assets = assets.select do |asset|
|
36
|
+
asset["name"] == "my_asset.zip"
|
37
|
+
end
|
38
|
+
|
39
|
+
my_asset_json = selected_assets[0]
|
40
|
+
my_asset_url = my_asset_json["url"]
|
41
|
+
download_github_release_asset(
|
42
|
+
asset_url: my_asset_url,
|
43
|
+
destination_path: "./here/my_asset.zip",
|
44
|
+
api_token: "token"
|
45
|
+
)
|
46
|
+
end
|
47
|
+
```
|
48
|
+
|
49
|
+
## Run tests for this plugin
|
50
|
+
|
51
|
+
To run both the tests, and code style validation, run
|
52
|
+
|
53
|
+
```
|
54
|
+
rake
|
55
|
+
```
|
56
|
+
|
57
|
+
To automatically fix many of the styling issues, use
|
58
|
+
```
|
59
|
+
rubocop -a
|
60
|
+
```
|
61
|
+
|
62
|
+
## Issues and Feedback
|
63
|
+
|
64
|
+
For any other issues and feedback about this plugin, please submit it to this repository.
|
65
|
+
|
66
|
+
## Troubleshooting
|
67
|
+
|
68
|
+
If you have trouble using plugins, check out the [Plugins Troubleshooting](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/PluginsTroubleshooting.md) doc in the main `fastlane` repo.
|
69
|
+
|
70
|
+
## Using `fastlane` Plugins
|
71
|
+
|
72
|
+
For more information about how the `fastlane` plugin system works, check out the [Plugins documentation](https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Plugins.md).
|
73
|
+
|
74
|
+
## About `fastlane`
|
75
|
+
|
76
|
+
`fastlane` is the easiest way to automate building and releasing your iOS and Android apps. To learn more, check out [fastlane.tools](https://fastlane.tools).
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'fastlane/plugin/download_github_release_asset/version'
|
2
|
+
|
3
|
+
module Fastlane
|
4
|
+
module DownloadGithubReleaseAsset
|
5
|
+
# Return all .rb files inside the "actions" and "helper" directory
|
6
|
+
def self.all_classes
|
7
|
+
Dir[File.expand_path('**/{actions,helper}/*.rb', File.dirname(__FILE__))]
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
# By default we want to import all available actions and helpers
|
13
|
+
# A plugin can contain any number of actions and plugins
|
14
|
+
Fastlane::DownloadGithubReleaseAsset.all_classes.each do |current|
|
15
|
+
require current
|
16
|
+
end
|
@@ -0,0 +1,97 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
class DownloadGithubReleaseAssetAction < Action
|
4
|
+
def self.run(params)
|
5
|
+
require 'open-uri'
|
6
|
+
require 'fileutils'
|
7
|
+
|
8
|
+
destination_path = File.expand_path(params[:destination_path].shellescape)
|
9
|
+
prepare_destination_path(destination_path)
|
10
|
+
|
11
|
+
UI.important("⏬ Downloading asset '#{params[:asset_url]}' to '#{destination_path}'...")
|
12
|
+
download_asset(params[:asset_url], destination_path, params[:api_token])
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.description
|
16
|
+
"Downloads a GitHub release's asset"
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.details
|
20
|
+
"This action downloads a GitHub release's asset using the GitHub API and puts it in a destination path.\nIf the file has been previously downloaded, it will be overrided."
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.authors
|
24
|
+
["Anton Domashnev"]
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.available_options
|
28
|
+
[
|
29
|
+
FastlaneCore::ConfigItem.new(key: :asset_url,
|
30
|
+
env_name: "FL_GITHUB_RELEASE_ASSET_URL",
|
31
|
+
description: "The URL to the desired asset in GitHub API",
|
32
|
+
verify_block: proc do |value|
|
33
|
+
UI.important("The URL doesn't start with http or https") unless value.start_with?("https")
|
34
|
+
end,
|
35
|
+
type: String),
|
36
|
+
FastlaneCore::ConfigItem.new(key: :destination_path,
|
37
|
+
env_name: "FL_GITHUB_RELEASE_ASSET_DOWNLOAD_DESTINATION_PATH",
|
38
|
+
description: "The path to which save file",
|
39
|
+
type: String),
|
40
|
+
FastlaneCore::ConfigItem.new(key: :api_token,
|
41
|
+
env_name: "FL_GITHUB_RELEASE_ASSET_API_TOKEN",
|
42
|
+
description: "Personal API Token for GitHub - generate one at https://github.com/settings/tokens",
|
43
|
+
is_string: true,
|
44
|
+
optional: false)
|
45
|
+
]
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.is_supported?(platform)
|
49
|
+
true
|
50
|
+
end
|
51
|
+
|
52
|
+
private_class_method def self.download_asset(asset_url, destination_path, api_token)
|
53
|
+
request_url = "#{asset_url}?access_token=#{api_token}"
|
54
|
+
send_download_request(request_url, "fastlane-plugin_download_github_release_asset", "application/octet-stream", destination_path)
|
55
|
+
compressed_file_size = File.size(destination_path).to_f / 2**20
|
56
|
+
formatted_file_size = format('%.2f', compressed_file_size)
|
57
|
+
UI.success("Download finished, total size: #{formatted_file_size} MB ✅")
|
58
|
+
rescue => ex
|
59
|
+
UI.user_error!("Error fetching release's asset: #{ex}")
|
60
|
+
end
|
61
|
+
|
62
|
+
private_class_method def self.send_download_request(request_url, user_agent, accept, destination_path)
|
63
|
+
step = 0
|
64
|
+
partial = 0
|
65
|
+
progress = 0
|
66
|
+
File.open(destination_path, "wb") do |saved_file|
|
67
|
+
# the following "open" is provided by open-uri
|
68
|
+
open(request_url, "User-Agent" => user_agent, "Accept" => accept, :content_length_proc => lambda do |t|
|
69
|
+
if t && 0 < t
|
70
|
+
step = t / 10
|
71
|
+
partial = step
|
72
|
+
formatted_file_size = format('%.2f', t.to_f / 2**20)
|
73
|
+
UI.important("Total size: #{formatted_file_size} MB")
|
74
|
+
end
|
75
|
+
end,
|
76
|
+
:progress_proc => lambda do |s|
|
77
|
+
if s > partial
|
78
|
+
partial += step
|
79
|
+
return if step.zero?
|
80
|
+
UI.message "#{progress}%"
|
81
|
+
progress = (partial / step) * 10
|
82
|
+
end
|
83
|
+
end) do |read_file|
|
84
|
+
saved_file.write(read_file.read)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
private_class_method def self.prepare_destination_path(destination_path)
|
90
|
+
dirname = File.dirname(destination_path)
|
91
|
+
unless File.directory?(dirname)
|
92
|
+
FileUtils.mkdir_p(dirname)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Helper
|
3
|
+
class DownloadGithubReleaseAssetHelper
|
4
|
+
# class methods that you define here become available in your action
|
5
|
+
# as `Helper::DownloadGithubReleaseAssetHelper.your_method`
|
6
|
+
#
|
7
|
+
def self.show_message
|
8
|
+
UI.message("Hello from the download_github_release_asset plugin helper!")
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
metadata
ADDED
@@ -0,0 +1,149 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fastlane-plugin-download_github_release_asset
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Anton Domashnev
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-10-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: webmock
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: pry
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
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
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rspec
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rubocop
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: fastlane
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 1.105.2
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 1.105.2
|
111
|
+
description:
|
112
|
+
email: antondomashnev@gmail.com
|
113
|
+
executables: []
|
114
|
+
extensions: []
|
115
|
+
extra_rdoc_files: []
|
116
|
+
files:
|
117
|
+
- LICENSE
|
118
|
+
- README.md
|
119
|
+
- lib/fastlane/plugin/download_github_release_asset.rb
|
120
|
+
- lib/fastlane/plugin/download_github_release_asset/actions/download_github_release_asset_action.rb
|
121
|
+
- lib/fastlane/plugin/download_github_release_asset/helper/download_github_release_asset_helper.rb
|
122
|
+
- lib/fastlane/plugin/download_github_release_asset/version.rb
|
123
|
+
homepage: https://github.com/Antondomashnev/fastlane-plugin-download_github_release_asset
|
124
|
+
licenses:
|
125
|
+
- MIT
|
126
|
+
metadata: {}
|
127
|
+
post_install_message:
|
128
|
+
rdoc_options: []
|
129
|
+
require_paths:
|
130
|
+
- lib
|
131
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ">="
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
requirements: []
|
142
|
+
rubyforge_project:
|
143
|
+
rubygems_version: 2.5.1
|
144
|
+
signing_key:
|
145
|
+
specification_version: 4
|
146
|
+
summary: This action downloads a GitHub release's asset using the GitHub API and puts
|
147
|
+
it in a destination path.\nIf the file has been previously downloaded, it will be
|
148
|
+
overrided.
|
149
|
+
test_files: []
|