fir-cli 2.0.14 → 2.0.18

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1ce0252e1ffcd6e9a73ce64fa5359fa06ce77416c93ffd394c6829481956a878
4
- data.tar.gz: 5e8443ef24cc7d39aded9bdc1044dd9d8a11452bb081e1023dc9719aed9df0c4
3
+ metadata.gz: e15f62a0f7b559dac0e47d7aa637df6de1f267b950dc8d5c429f0539c0fd1f94
4
+ data.tar.gz: 8e42b4e2f0441651edd0871b8189b96fecfebbe068b6d5cd4408bc6e94d83137
5
5
  SHA512:
6
- metadata.gz: 19439af4cd18638db3838e157db517e3c2b92045d2c27e269c75ef9eda3dc98b0c79d1d776d72f05ceca466241faefdf8cd242b4a438090019f3420fa9645aa5
7
- data.tar.gz: 4c45e66b869e58df20966aae25780612d2c7abd7c5a287547bbe68a09dc1c6773fe4316df00c421d66bd58a08eb87fec985d5aad34a2084d8990da23b5cd5482
6
+ metadata.gz: df855650a9ba20ebf25a5b24b80802868a65c8883349639afe73ffe16c2adb00ec42483dc9627f023bb035b7b5c0422f4db8a2bc9bc97086c6055fb2d22f0e2f
7
+ data.tar.gz: bb152238bbd5b95af55dd6d1109087872edbb18fda3396ba71260bc596ceb4309bf2ecb3136f7969d0e6b1af73457190358c1b315f7da1cb16e788b013818a64
data/.gitignore CHANGED
@@ -24,4 +24,5 @@ Gemfile.lock
24
24
 
25
25
  .idea/
26
26
  lib/.byebug_history
27
- TAGS
27
+ TAGS
28
+ .vscode
data/README.md CHANGED
@@ -15,8 +15,13 @@ fir.im-cli 可以通过指令查看, 上传, iOS/Android 应用.
15
15
  # 重大提醒
16
16
  - fir.im 更换域名至 betaqr.com 后, 需要升级至 `fir-cli` >= `2.0.4` 有部分用户反馈 2.0.2 无法直接使用 `gem update fir-cli` 升级到 2.0.4, 则可以尝试卸载后重新安装, 即 `gem uninstall fir-cli` 后 `gem install fir-cli`
17
17
 
18
+ - 现也有一个go 版本的 go-fir-cli 供大家使用, 无需安装依赖, 可以直接使用. 具体请访问 [https://github.com/PGYER/go-fir-cli](https://github.com/PGYER/go-fir-cli). 注意! 该版本功能并不与fir-cli 完全重合.
18
19
 
19
20
  # 最近更新
21
+ - (2.0.18) 修复域名导致的飞书发送失败的问题
22
+ - (2.0.17) 增加了上传百分比显示
23
+ - (2.0.16) 更新了 thor
24
+ - (2.0.15) 更换了 API 域名
20
25
  - (2.0.14) 第三方通知加入了 app 类型, 第三方报错将忽略异常继续运行
21
26
  - (2.0.13) 修正了企业微信通知的bug
22
27
  - (2.0.12) 修复因为钉钉机器人不再支持base64导致无法显示二维码,另外开始支持钉钉加签方式的鉴权, 参数为 --dingtalk_secret
data/doc/publish.md CHANGED
@@ -25,7 +25,8 @@ Options:
25
25
  [--dingtalk-at-phones=DINGTALK_AT_PHONES] # 钉钉 at 某人手机号
26
26
  [--dingtalk-at-all], [--no-dingtalk-at-all]
27
27
  [--feishu-access-token=FEISHU_ACCESS_TOKEN] # 飞书的webhook 的access_token
28
- [--feishu-custom-message=FEISHU_CUSTOM_MESSAGE] # 自定义飞书消息
28
+ [--feishu-custom-title=FEISHU_CUSTOM_TITLE] # 自定义飞书消息标题
29
+ [--feishu-custom-message=FEISHU_CUSTOM_MESSAGE] # 自定义飞书消息内容
29
30
  [--wxwork-webhook=WXWORK_WEBHOOK] # 企业微信的 webhook 地址 (注意这里与 access_token 只需要填写一个参数即可)
30
31
  [--wxwork-access-token=WXWORK_ACCESS_TOKEN] # 企业微信的 webhook access_token (注意这里与 access_token 只需要填写一个参数即可)
31
32
  [--wxwork-custom-message=WXWORK_CUSTOM_MESSAGE] # 企业微信 的自定义消息
data/fir-cli.gemspec CHANGED
@@ -26,29 +26,10 @@ Gem::Specification.new do |spec|
26
26
  / __/ _/ // _, _/_____/ /___/ /____/ /
27
27
  /_/ /___/_/ |_| \____/_____/___/
28
28
 
29
- ## 更新记录
30
- - (2.0.14) 第三方通知加入了 app 类型, 第三方报错将不再直接报出异常
31
- - (2.0.13) 修复了无法跳过企业微信通知逻辑的bug
32
- - (2.0.12) 修复因为钉钉机器人不再支持base64导致无法显示二维码,另外开始支持钉钉加签方式的鉴权, 参数为 --dingtalk_secret
33
- - (2.0.11) 兼容了 ruby 3.0 版本, 增加了环境变量FEISHU_TIMEOUT,可以多给飞书一些超时时间
34
- - (2.0.10) 飞书支持了 V2 版本的机器人推送
35
- - (2.0.9) publish 支持了 企业微信通知 可以使用 --wxwork_access_token 或 --wxwork_webhook, 增加了回调超时时间至20秒
36
- - (2.0.8) publish 支持 飞书通知, 可使用 `feishu_access_token` 和 `feishu_custom_message`, 详情见 `fir publish --help`
37
- - (2.0.7) 修复了提示 token 有问题的错误
38
- - (2.0.6) 将校验文件是否存在提前
39
- - (2.0.5) 更换了上传域名, 避免与 深信服的设备冲突
40
- - (2.0.4) 修复了 cdn 不支持 patch 方法透传, 导致在修改 app 信息的时候返回的 400 错误
41
- - (2.0.3) 增加 dingtalk_at_phones, 钉钉通知可 at 用户手机号, 以逗号,分割. 此命令需配合 `dingtalk_access_token` 使用
42
- - (2.0.3) 增加 dingtalk_at_all, 钉钉通知可 at 所有人, 此命令需配合 `dingtalk_access_token` 使用
43
- - (2.0.3) publish 增加海外加速参数 --oversea_turbo
44
- - (2.0.2) 有限支持 aab 文件上传, 强依赖`bundletool`工具, 具体请参见参数 `--bundletool_jar_path` 和 `auto_download_bundletool_jar`
45
- - (2.0.1) publish 支持 新参数 `specify_app_display_name`, 指定 app 显示名称
46
- - (2.0.1) publish 支持 新参数 `need_ansi_qrcode`, 在控制台直接打印二维码, jenkins 用户可能需要使用 `AnsiColor Plugin` 插件配合
47
- - (2.0.1) publish 支持 新参数 `dingtalk_custom_message`, 可以在钉钉通知里增加自定义消息, 此命令需配合 `dingtalk_access_token` 使用
48
- - (2.0.1) publish 支持 新参数 `skip_fir_cli_feedback`, 可禁止 fir-cli 发送统计信息
49
- - (2.0.0) publish 使用更快的存储商, 加速上传速度, 若感觉没以前可使用 switch_to_qiniu 恢复
29
+ ##
50
30
  - [fir-cli](https://github.com/firhq/fir-cli) 已经开源
51
31
  - 欢迎 fork, issue 和 pull request
32
+ - 同时提供 go 版本的 fir-cli 二进制版本无依赖 [fir-cli-go](https://github.com/PGYER/go-fir-cli/releases)
52
33
  )
53
34
 
54
35
  spec.add_development_dependency 'bundler'
@@ -58,7 +39,7 @@ Gem::Specification.new do |spec|
58
39
  spec.add_development_dependency 'pry', '~> 0.10'
59
40
 
60
41
  spec.add_dependency 'admqr_knife', '~> 0.1.5'
61
- spec.add_dependency 'thor', '~> 0.19'
42
+ spec.add_dependency 'thor', '~> 1.2.1'
62
43
  spec.add_dependency 'rest-client', '~> 2.0'
63
44
  spec.add_dependency 'ruby_android_apk', '~> 0.7.7.1'
64
45
  spec.add_dependency 'rqrcode', '~> 0.7'
data/lib/fir/api.yml CHANGED
@@ -1,8 +1,8 @@
1
1
  fir:
2
2
  domain: 'http://www.betaqr.com'
3
- base_url: 'http://fir-api.admqr.com'
4
- user_url: 'http://fir-api.admqr.com/user'
5
- user_feishu_access_token: 'http://fir-api.admqr.com/user/fetch_feishu_v3_token'
6
- app_url: 'http://fir-api.admqr.com/apps'
7
- udids_url: 'http://fir-api.admqr.com/devices/multi_udid'
3
+ base_url: 'http://api.appmeta.cn'
4
+ user_url: 'http://api.appmeta.cn/user'
5
+ user_feishu_access_token: 'http://api.appmeta.cn/user/fetch_feishu_v3_token'
6
+ app_url: 'http://api.appmeta.cn/apps'
7
+ udids_url: 'http://api.appmeta.cn/devices/multi_udid'
8
8
 
data/lib/fir/cli.rb CHANGED
@@ -129,6 +129,7 @@ module FIR
129
129
  method_option :dingtalk_secret, type: :string, desc: 'dingtalk bot secret code (eg: SEC********)'
130
130
 
131
131
  method_option :feishu_access_token, type: :string, desc: 'Send msg to feishu, need access_token, not whole url'
132
+ method_option :feishu_custom_title, type: :string, desc: 'add custom title to feishu'
132
133
  method_option :feishu_custom_message, type: :string, desc: 'add custom message to feishu'
133
134
 
134
135
  method_option :wxwork_webhook, type: :string, desc: 'wxwork webhook url (optional)'
@@ -0,0 +1,42 @@
1
+ require 'net/http'
2
+ require 'tempfile'
3
+ require 'securerandom'
4
+
5
+ class Net::HTTP::UploadProgress
6
+ attr_reader :upload_size
7
+
8
+ def initialize(req, &block)
9
+ @req = req
10
+ @callback = block
11
+ @upload_size = 0
12
+ if req.body_stream
13
+ @io = req.body_stream
14
+ req.body_stream = self
15
+ elsif req.instance_variable_get(:@body_data)
16
+ raise NotImplementedError if req.chunked?
17
+ raise NotImplementedError if /\Amultipart\/form-data\z/i !~ req.content_type
18
+ opt = req.instance_variable_get(:@form_option).dup
19
+ opt[:boundary] ||= SecureRandom.urlsafe_base64(40)
20
+ req.set_content_type(req.content_type, boundary: opt[:boundary])
21
+ file = Tempfile.new('multipart')
22
+ file.binmode
23
+ req.send(:encode_multipart_form_data, file, req.instance_variable_get(:@body_data), opt)
24
+ file.rewind
25
+ req.content_length = file.size
26
+ @io = file
27
+ req.body_stream = self
28
+ else
29
+ raise NotImplementedError
30
+ end
31
+ end
32
+
33
+ def readpartial(maxlen, outbuf)
34
+ begin
35
+ str = @io.readpartial(maxlen, outbuf)
36
+ ensure
37
+ @callback.call(self) unless @upload_size.zero?
38
+ end
39
+ @upload_size += str.length
40
+ str
41
+ end
42
+ end
data/lib/fir/patches.rb CHANGED
@@ -8,3 +8,4 @@ require_relative './patches/native_patch'
8
8
  require_relative './patches/os_patch'
9
9
  require_relative './patches/try'
10
10
  require_relative './patches/default_headers'
11
+ require_relative './patches/progress'
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative './app_uploader'
4
- # require 'byebug'
4
+
5
5
 
6
6
  module FIR
7
7
  class AliUploader < AppUploader
@@ -16,7 +16,7 @@ module FIR
16
16
  icon_info = uploading_icon_info
17
17
 
18
18
  logger.debug "icon_url = #{icon_url}, icon_info = #{icon_info}"
19
- put_file(icon_url, uploading_icon_info, uploading_info[:cert][:icon][:custom_headers])
19
+ put_file(icon_url, uploading_icon_info, uploading_info[:cert][:icon][:custom_headers], false)
20
20
  callback_to_api(callback_url, callback_icon_information)
21
21
  end
22
22
  rescue StandardError => e
@@ -50,14 +50,43 @@ module FIR
50
50
 
51
51
  protected
52
52
 
53
- def put_file(url, file, headers)
54
- RestClient::Request.execute(
55
- method: 'PUT',
56
- url: url,
57
- payload: file,
58
- headers: headers,
59
- timeout: 300
60
- )
53
+ def put_file(url, file, headers, need_progress = true)
54
+
55
+ uri = URI(url)
56
+ hostname = uri.hostname
57
+
58
+
59
+ File.open(file_path, 'rb') do |io|
60
+ t = Time.now
61
+ http = Net::HTTP.new(hostname, 443)
62
+ http.use_ssl = true
63
+ req = Net::HTTP::Put.new(uri.request_uri, headers)
64
+ req.content_length = io.size
65
+ req.body_stream = io
66
+ Net::HTTP::UploadProgress.new(req) do |progress|
67
+ if need_progress
68
+ if progress.upload_size == io.size
69
+ puts "upload finished"
70
+ else
71
+ if Time.now - t > 0.5
72
+ puts "progress: #{ ((progress.upload_size / io.size.to_f) * 100).round(2) }%"
73
+ t = Time.now
74
+ end
75
+ end
76
+ end
77
+ end
78
+ res = http.request(req)
79
+ end
80
+
81
+
82
+
83
+ # RestClient::Request.execute(
84
+ # method: 'PUT',
85
+ # url: url,
86
+ # payload: file,
87
+ # headers: headers,
88
+ # timeout: 300
89
+ # )
61
90
  end
62
91
 
63
92
  def callback_url
@@ -45,7 +45,7 @@ class FeishuHelper
45
45
  content: {
46
46
  post: {
47
47
  zh_cn: {
48
- title: title,
48
+ title: options[:feishu_custom_title] ? options[:feishu_custom_title] : title,
49
49
  content: [build_info_tags, [build_image_tag]]
50
50
  }
51
51
  }
@@ -78,7 +78,7 @@ class FeishuHelper
78
78
  end
79
79
 
80
80
  def fetch_image_access_token
81
- answer = DefaultRest.post(fir_api[:fetch_feishu_v3_token] || 'http://fir-api.admqr.com/user/fetch_feishu_v3_token', {})
81
+ answer = DefaultRest.post(fir_api[:user_feishu_access_token] || 'http://api.appmeta.cn/user/fetch_feishu_v3_token', {})
82
82
  answer[:feishu_v3_token]
83
83
  end
84
84
 
data/lib/fir/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  module FIR
4
- VERSION = '2.0.14'
4
+ VERSION = "2.0.18"
5
5
  end
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.14
4
+ version: 2.0.18
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: 2021-06-03 00:00:00.000000000 Z
12
+ date: 2023-03-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -87,14 +87,14 @@ dependencies:
87
87
  requirements:
88
88
  - - "~>"
89
89
  - !ruby/object:Gem::Version
90
- version: '0.19'
90
+ version: 1.2.1
91
91
  type: :runtime
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
95
  - - "~>"
96
96
  - !ruby/object:Gem::Version
97
- version: '0.19'
97
+ version: 1.2.1
98
98
  - !ruby/object:Gem::Dependency
99
99
  name: rest-client
100
100
  requirement: !ruby/object:Gem::Requirement
@@ -224,6 +224,7 @@ files:
224
224
  - lib/fir/patches/instance_variables.rb
225
225
  - lib/fir/patches/native_patch.rb
226
226
  - lib/fir/patches/os_patch.rb
227
+ - lib/fir/patches/progress.rb
227
228
  - lib/fir/patches/try.rb
228
229
  - lib/fir/util.rb
229
230
  - lib/fir/util/ali_uploader.rb
@@ -271,24 +272,9 @@ metadata: {}
271
272
  post_install_message: "\n ______________ ________ ____\n /
272
273
  ____/ _/ __ \\ / ____/ / / _/\n / /_ / // /_/ /_____/ / / / /
273
274
  /\n / __/ _/ // _, _/_____/ /___/ /____/ /\n /_/ /___/_/ |_| \\____/_____/___/\n\n
274
- \ ## 更新记录\n - (2.0.14) 第三方通知加入了 app 类型, 第三方报错将不再直接报出异常\n - (2.0.13) 修复了无法跳过企业微信通知逻辑的bug\n
275
- \ - (2.0.12) 修复因为钉钉机器人不再支持base64导致无法显示二维码,另外开始支持钉钉加签方式的鉴权, 参数为 --dingtalk_secret\n
276
- \ - (2.0.11) 兼容了 ruby 3.0 版本, 增加了环境变量FEISHU_TIMEOUT,可以多给飞书一些超时时间\n - (2.0.10) 飞书支持了
277
- V2 版本的机器人推送\n - (2.0.9) publish 支持了 企业微信通知 可以使用 --wxwork_access_token 或 --wxwork_webhook,
278
- 增加了回调超时时间至20秒\n - (2.0.8) publish 支持 飞书通知, 可使用 `feishu_access_token` 和 `feishu_custom_message`,
279
- 详情见 `fir publish --help`\n - (2.0.7) 修复了提示 token 有问题的错误\n - (2.0.6) 将校验文件是否存在提前\n
280
- \ - (2.0.5) 更换了上传域名, 避免与 深信服的设备冲突\n - (2.0.4) 修复了 cdn 不支持 patch 方法透传, 导致在修改 app
281
- 信息的时候返回的 400 错误\n - (2.0.3) 增加 dingtalk_at_phones, 钉钉通知可 at 用户手机号, 以逗号,分割. 此命令需配合
282
- `dingtalk_access_token` 使用\n - (2.0.3) 增加 dingtalk_at_all, 钉钉通知可 at 所有人, 此命令需配合
283
- `dingtalk_access_token` 使用\n - (2.0.3) publish 增加海外加速参数 --oversea_turbo\n - (2.0.2)
284
- 有限支持 aab 文件上传, 强依赖`bundletool`工具, 具体请参见参数 `--bundletool_jar_path` 和 `auto_download_bundletool_jar`\n
285
- \ - (2.0.1) publish 支持 新参数 `specify_app_display_name`, 指定 app 显示名称\n - (2.0.1)
286
- publish 支持 新参数 `need_ansi_qrcode`, 在控制台直接打印二维码, jenkins 用户可能需要使用 `AnsiColor Plugin`
287
- 插件配合\n - (2.0.1) publish 支持 新参数 `dingtalk_custom_message`, 可以在钉钉通知里增加自定义消息, 此命令需配合
288
- `dingtalk_access_token` 使用\n - (2.0.1) publish 支持 新参数 `skip_fir_cli_feedback`,
289
- 可禁止 fir-cli 发送统计信息\n - (2.0.0) publish 使用更快的存储商, 加速上传速度, 若感觉没以前可使用 switch_to_qiniu
290
- 恢复\n - [fir-cli](https://github.com/firhq/fir-cli) 已经开源\n - 欢迎 fork, issue 和 pull
291
- request\n "
275
+ \ ##\n - [fir-cli](https://github.com/firhq/fir-cli) 已经开源\n - 欢迎 fork, issue 和
276
+ pull request\n - 同时提供 go 版本的 fir-cli 二进制版本无依赖 [fir-cli-go](https://github.com/PGYER/go-fir-cli/releases)\n
277
+ \ "
292
278
  rdoc_options: []
293
279
  require_paths:
294
280
  - lib
@@ -303,7 +289,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
303
289
  - !ruby/object:Gem::Version
304
290
  version: '0'
305
291
  requirements: []
306
- rubygems_version: 3.0.3
292
+ rubygems_version: 3.4.1
307
293
  signing_key:
308
294
  specification_version: 4
309
295
  summary: fir.im command tool