fir-cli 2.0.0 → 2.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +5 -1
- data/fir-cli.gemspec +6 -1
- data/lib/fir.rb +2 -0
- data/lib/fir/cli.rb +6 -0
- data/lib/fir/util/app_uploader.rb +1 -1
- data/lib/fir/util/login.rb +11 -2
- data/lib/fir/util/publish.rb +36 -11
- data/lib/fir/version.rb +1 -1
- metadata +37 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a24ad298a981ef005c28065354236351301c0de4c47beb7109fa1b03d0f04aa9
|
4
|
+
data.tar.gz: 8dd1f7047b2ba6c7cd89be9044b1498f732458bec23214e6df2c8838a11db2fc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 943daed46cbd32bd3df0b26ae9e756efea7ac0fa2577d78e49cb5e21618484bc4e1e49e9c0ced2a2479f8a27d43743305faf1f8650e72e3c8fad5d62c1e7b617
|
7
|
+
data.tar.gz: c33fec27c39712aba5ef7ae4576438721ade9cd546cec91628de60728325889721fe144387e4f1743c282291a603f69913beee289500d105cc2bb3a652a566c4
|
data/README.md
CHANGED
@@ -14,7 +14,11 @@ fir.im-cli 可以通过指令查看, 上传, iOS/Android 应用.
|
|
14
14
|
|
15
15
|
|
16
16
|
# 最近更新
|
17
|
-
- (2.0.
|
17
|
+
- (2.0.1) publish 支持 新参数 `specify_app_display_name`, 指定 app 显示名称
|
18
|
+
- (2.0.1) publish 支持 新参数 `need_ansi_qrcode`, 在控制台直接打印二维码, jenkins 用户可能需要使用 `AnsiColor Plugin` 插件配合
|
19
|
+
- (2.0.1) publish 支持 新参数 `dingtalk_custom_message`, 可以在钉钉通知里增加自定义消息, 此命令需配合 `dingtalk_access_token` 使用
|
20
|
+
- (2.0.1) publish 支持 新参数 `skip_fir_cli_feedback`, 可禁止 fir-cli 发送统计信息
|
21
|
+
- publish 使用更快的存储商, 加速上传速度, 若感觉没以前可使用 参数 `switch_to_qiniu` 恢复
|
18
22
|
- 支持了在fastlane 直接调用, 具体请参见 [https://github.com/FIRHQ/fastlane-plugin-fir_cli](https://github.com/FIRHQ/fastlane-plugin-fir_cli)
|
19
23
|
- publish 支持 新参数 force_pin_history, 可以 将上传的版本, 固定在下载页面上(当大于最大固定版本数后, 会挤掉最老的固定版本) [2019年11月18日]
|
20
24
|
- publish 支持 新参数 specify_icon_file_path, 可以直接指定 app 的 icon 图标文件 [2019年11月18日]
|
data/fir-cli.gemspec
CHANGED
@@ -27,6 +27,10 @@ Gem::Specification.new do |spec|
|
|
27
27
|
/_/ /___/_/ |_| \____/_____/___/
|
28
28
|
|
29
29
|
## 更新记录
|
30
|
+
- (2.0.1) publish 支持 新参数 `specify_app_display_name`, 指定 app 显示名称
|
31
|
+
- (2.0.1) publish 支持 新参数 `need_ansi_qrcode`, 在控制台直接打印二维码, jenkins 用户可能需要使用 `AnsiColor Plugin` 插件配合
|
32
|
+
- (2.0.1) publish 支持 新参数 `dingtalk_custom_message`, 可以在钉钉通知里增加自定义消息, 此命令需配合 `dingtalk_access_token` 使用
|
33
|
+
- (2.0.1) publish 支持 新参数 `skip_fir_cli_feedback`, 可禁止 fir-cli 发送统计信息
|
30
34
|
- (2.0.0) publish 使用更快的存储商, 加速上传速度, 若感觉没以前可使用 switch_to_qiniu 恢复
|
31
35
|
- (1.7.4) 配合 fastlane-plugin-fir_cli 做了一些小优化
|
32
36
|
- (1.7.3) 新增了 上传指定图标, 不上传图标 以及 将版本固定显示在下载页上
|
@@ -42,10 +46,11 @@ Gem::Specification.new do |spec|
|
|
42
46
|
|
43
47
|
spec.add_development_dependency 'bundler'
|
44
48
|
spec.add_development_dependency 'rake'
|
45
|
-
|
49
|
+
spec.add_development_dependency 'byebug'
|
46
50
|
spec.add_development_dependency 'minitest', '~> 5.7'
|
47
51
|
spec.add_development_dependency 'pry', '~> 0.10'
|
48
52
|
|
53
|
+
spec.add_dependency 'admqr_knife', '~> 0.1.2'
|
49
54
|
spec.add_dependency 'thor', '~> 0.19'
|
50
55
|
spec.add_dependency 'rest-client', '~> 2.0'
|
51
56
|
spec.add_dependency 'ruby_android_apk', '~> 0.7.7.1'
|
data/lib/fir.rb
CHANGED
@@ -4,6 +4,7 @@ require 'thor'
|
|
4
4
|
require 'logger'
|
5
5
|
require 'yaml'
|
6
6
|
require 'rest-client'
|
7
|
+
require 'admqr_knife'
|
7
8
|
require 'json'
|
8
9
|
require 'securerandom'
|
9
10
|
require 'fileutils'
|
@@ -23,6 +24,7 @@ require 'fir/util'
|
|
23
24
|
require 'fir/version'
|
24
25
|
require 'fir/cli'
|
25
26
|
|
27
|
+
AdmqrKnife.init('fir-cli')
|
26
28
|
module FIR
|
27
29
|
include Util
|
28
30
|
end
|
data/lib/fir/cli.rb
CHANGED
@@ -107,16 +107,22 @@ module FIR
|
|
107
107
|
method_option :short, type: :string, aliases: '-s', desc: 'Set custom short link'
|
108
108
|
method_option :changelog, type: :string, aliases: '-c', desc: 'Set changelog'
|
109
109
|
method_option :qrcode, type: :boolean, aliases: '-Q', desc: 'Generate qrcode'
|
110
|
+
method_option :need_ansi_qrcode, type: :boolean, default: false, desc: 'Generate qrcode'
|
110
111
|
method_option :need_release_id, type: :boolean, aliases: '-R', default: false, desc: 'Add release id with fir url (WARNING: FIR ONLY SAVED 30 releases recently per app'
|
111
112
|
|
112
113
|
method_option :force_pin_history, type: :boolean, aliases: '-H', default: false, desc: 'pin this release to the download page by force'
|
113
114
|
method_option :skip_update_icon, type: :boolean, aliases: '-S', default: false, desc: 'skip update app icon'
|
114
115
|
method_option :specify_icon_file, type: :string, desc: 'specify icon file'
|
115
116
|
|
117
|
+
method_option :skip_fir_cli_feedback, type: :boolean, default: false, desc: 'skip fir-cli usage info feedback'
|
118
|
+
|
119
|
+
method_option :specify_app_display_name, type: :string, desc: 'specify app display name'
|
120
|
+
|
116
121
|
method_option :switch_to_qiniu, type: :boolean, default: false, aliases: '-N', desc: 'if app upload slowly, u can switch this option'
|
117
122
|
|
118
123
|
method_option :mappingfile, type: :string, aliases: '-m', desc: 'App mapping file'
|
119
124
|
method_option :dingtalk_access_token, type: :string, aliases: '-D', desc: 'Send msg to dingtalk, only need access_token, not whole url'
|
125
|
+
method_option :dingtalk_custom_message, type: :string, desc: 'add custom message to dingtalk'
|
120
126
|
|
121
127
|
method_option :open, type: :boolean, desc: 'true/false if open for everyone'
|
122
128
|
method_option :password, type: :string, desc: 'Set password for app'
|
@@ -89,7 +89,7 @@ module FIR
|
|
89
89
|
build: app_info[:build],
|
90
90
|
fname: File.basename(file_path),
|
91
91
|
key: binary_cert[:key],
|
92
|
-
name: app_info[:display_name] || app_info[:name],
|
92
|
+
name: options[:specify_app_display_name] || app_info[:display_name] || app_info[:name],
|
93
93
|
origin: 'fir-cli',
|
94
94
|
parent_id: app_id,
|
95
95
|
release_tag: 'develop',
|
data/lib/fir/util/login.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
#
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# require 'byebug'
|
2
3
|
|
3
4
|
module FIR
|
4
5
|
module Login
|
@@ -7,10 +8,18 @@ module FIR
|
|
7
8
|
|
8
9
|
user_info = fetch_user_info(token)
|
9
10
|
|
10
|
-
|
11
|
+
unless config.blank?
|
12
|
+
logger.info "Login succeed, previous user's email: #{config[:email]}"
|
13
|
+
end
|
11
14
|
write_config(email: user_info.fetch(:email, ''), token: token)
|
12
15
|
reload_config
|
13
16
|
logger.info "Login succeed, current user's email: #{config[:email]}"
|
17
|
+
|
18
|
+
AdmqrKnife.visit(
|
19
|
+
unique_code: 'fir_cli_login',
|
20
|
+
tag: 'fir_cli',
|
21
|
+
referer: "https://#{FIR::VERSION}.fir-cli/#{config[:email]}"
|
22
|
+
)
|
14
23
|
logger_info_blank_line
|
15
24
|
end
|
16
25
|
end
|
data/lib/fir/util/publish.rb
CHANGED
@@ -2,7 +2,6 @@
|
|
2
2
|
|
3
3
|
# require 'byebug'
|
4
4
|
require_relative './qiniu_uploader'
|
5
|
-
|
6
5
|
require_relative './ali_uploader'
|
7
6
|
|
8
7
|
module FIR
|
@@ -29,6 +28,8 @@ module FIR
|
|
29
28
|
dingtalk_notifier(download_url, qrcode_path)
|
30
29
|
upload_mapping_file_with_publish
|
31
30
|
|
31
|
+
upload_fir_cli_usage_info(received_app_info)
|
32
|
+
|
32
33
|
logger_info_blank_line
|
33
34
|
|
34
35
|
{
|
@@ -59,12 +60,17 @@ module FIR
|
|
59
60
|
end
|
60
61
|
|
61
62
|
def upload_app
|
62
|
-
|
63
|
-
app_uploaded_callback_data = if @options[:switch_to_qiniu]
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
63
|
+
time1 = Time.now.to_i
|
64
|
+
app_uploaded_callback_data = if @options[:switch_to_qiniu]
|
65
|
+
QiniuUploader.new(@app_info, @user_info, @uploading_info, @options).upload
|
66
|
+
else
|
67
|
+
AliUploader.new(@app_info, @user_info, @uploading_info, @options).upload
|
68
|
+
end
|
69
|
+
|
70
|
+
during_seconds = Time.now.to_i - time1
|
71
|
+
speed = File.size(@app_info[:file_path]) / during_seconds / 1024
|
72
|
+
|
73
|
+
logger.info "File uploaded. During: #{during_seconds} seconds, Upload Speed: #{speed} KB/s "
|
68
74
|
|
69
75
|
release_id = app_uploaded_callback_data[:release_id]
|
70
76
|
|
@@ -82,6 +88,16 @@ module FIR
|
|
82
88
|
app_info_dict
|
83
89
|
end
|
84
90
|
|
91
|
+
def upload_fir_cli_usage_info(received_app_info)
|
92
|
+
return if @options[:skip_fir_cli_feedback]
|
93
|
+
short = received_app_info[:short]
|
94
|
+
AdmqrKnife.visit(
|
95
|
+
unique_code: 'fir_cli_publish',
|
96
|
+
tag: 'fir_cli',
|
97
|
+
referer: "https://#{FIR::VERSION}.fir-cli/#{short}"
|
98
|
+
)
|
99
|
+
end
|
100
|
+
|
85
101
|
def upload_device_info
|
86
102
|
return if @app_info[:devices].blank?
|
87
103
|
|
@@ -121,8 +137,6 @@ module FIR
|
|
121
137
|
}
|
122
138
|
end
|
123
139
|
|
124
|
-
|
125
|
-
|
126
140
|
def upload_mapping_file_with_publish
|
127
141
|
return if !options[:mappingfile] || !options[:proj]
|
128
142
|
|
@@ -137,6 +151,15 @@ module FIR
|
|
137
151
|
def build_qrcode(download_url)
|
138
152
|
qrcode_path = "#{File.dirname(@file_path)}/fir-#{@app_info[:name]}.png"
|
139
153
|
FIR.generate_rqrcode(download_url, qrcode_path)
|
154
|
+
|
155
|
+
|
156
|
+
# NOTE: showing with default options specified explicitly
|
157
|
+
puts RQRCode::QRCode.new(download_url).as_ansi(
|
158
|
+
light: "\033[47m", dark: "\033[40m",
|
159
|
+
fill_character: ' ',
|
160
|
+
quiet_zone_size: 1
|
161
|
+
) if @options[:need_ansi_qrcode]
|
162
|
+
|
140
163
|
# 为何在这里必须生成 QrCode ? 因为要在 dingtalk 调用
|
141
164
|
logger.info "Local qrcode file: #{qrcode_path}" if @export_qrcode
|
142
165
|
qrcode_path
|
@@ -165,7 +188,7 @@ module FIR
|
|
165
188
|
"msgtype": 'markdown',
|
166
189
|
"markdown": {
|
167
190
|
"title": "#{title} uploaded",
|
168
|
-
"text": "#{title} uploaded at #{Time.now}\nurl: #{download_url}\n
|
191
|
+
"text": "#{title} uploaded at #{Time.now}\nurl: #{download_url}\n#{options[:dingtalk_custom_message]}\n![app二维码](data:image/png;base64,#{Base64.strict_encode64(File.read(open(qrcode_path)))})"
|
169
192
|
}
|
170
193
|
}
|
171
194
|
url = "https://oapi.dingtalk.com/robot/send?access_token=#{options[:dingtalk_access_token]}"
|
@@ -195,7 +218,9 @@ module FIR
|
|
195
218
|
|
196
219
|
@skip_update_icon = options[:skip_update_icon]
|
197
220
|
@force_pin_history = options[:force_pin_history]
|
198
|
-
|
221
|
+
unless options[:specify_icon_file].blank?
|
222
|
+
@specify_icon_file_path = File.absolute_path(options[:specify_icon_file])
|
223
|
+
end
|
199
224
|
end
|
200
225
|
|
201
226
|
def read_changelog(changelog)
|
data/lib/fir/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fir-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NaixSpirit
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2019-12-
|
12
|
+
date: 2019-12-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -39,6 +39,20 @@ dependencies:
|
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
41
|
version: '0'
|
42
|
+
- !ruby/object:Gem::Dependency
|
43
|
+
name: byebug
|
44
|
+
requirement: !ruby/object:Gem::Requirement
|
45
|
+
requirements:
|
46
|
+
- - ">="
|
47
|
+
- !ruby/object:Gem::Version
|
48
|
+
version: '0'
|
49
|
+
type: :development
|
50
|
+
prerelease: false
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: '0'
|
42
56
|
- !ruby/object:Gem::Dependency
|
43
57
|
name: minitest
|
44
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,6 +81,20 @@ dependencies:
|
|
67
81
|
- - "~>"
|
68
82
|
- !ruby/object:Gem::Version
|
69
83
|
version: '0.10'
|
84
|
+
- !ruby/object:Gem::Dependency
|
85
|
+
name: admqr_knife
|
86
|
+
requirement: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - "~>"
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: 0.1.2
|
91
|
+
type: :runtime
|
92
|
+
prerelease: false
|
93
|
+
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - "~>"
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: 0.1.2
|
70
98
|
- !ruby/object:Gem::Dependency
|
71
99
|
name: thor
|
72
100
|
requirement: !ruby/object:Gem::Requirement
|
@@ -239,9 +267,13 @@ metadata: {}
|
|
239
267
|
post_install_message: "\n ______________ ________ ____\n /
|
240
268
|
____/ _/ __ \\ / ____/ / / _/\n / /_ / // /_/ /_____/ / / / /
|
241
269
|
/\n / __/ _/ // _, _/_____/ /___/ /____/ /\n /_/ /___/_/ |_| \\____/_____/___/\n\n
|
242
|
-
\ ## 更新记录\n - (2.0.
|
243
|
-
\ - (
|
244
|
-
|
270
|
+
\ ## 更新记录\n - (2.0.1) publish 支持 新参数 `specify_app_display_name`, 指定 app 显示名称\n
|
271
|
+
\ - (2.0.1) publish 支持 新参数 `need_ansi_qrcode`, 在控制台直接打印二维码, jenkins 用户可能需要使用 `AnsiColor
|
272
|
+
Plugin` 插件配合\n - (2.0.1) publish 支持 新参数 `dingtalk_custom_message`, 可以在钉钉通知里增加自定义消息,
|
273
|
+
此命令需配合 `dingtalk_access_token` 使用\n - (2.0.1) publish 支持 新参数 `skip_fir_cli_feedback`,
|
274
|
+
可禁止 fir-cli 发送统计信息\n - (2.0.0) publish 使用更快的存储商, 加速上传速度, 若感觉没以前可使用 switch_to_qiniu
|
275
|
+
恢复\n - (1.7.4) 配合 fastlane-plugin-fir_cli 做了一些小优化\n - (1.7.3) 新增了 上传指定图标, 不上传图标
|
276
|
+
以及 将版本固定显示在下载页上\n - (1.7.2) 修正了无论是否加参数都固定出现二维码图片的bug\n - (1.7.1) 增加了 钉钉推送 , 增加了返回指定版本下载地址\n
|
245
277
|
\ - (1.7.0) 过期了ipa_build 功能, 增加了对 android manifest instant run 的兼容\n - (1.6.13)
|
246
278
|
上传图标逻辑修改\n - (1.6.12) 修复了部分机器没有默认安装 byebug 的问题\n - (1.6.11) 变化了 ruby gem 仓库地址\n
|
247
279
|
\ - [fir-cli](https://github.com/firhq/fir-cli) 已经开源\n - 欢迎 fork, issue 和 pull
|