fir-cli 2.0.14 → 2.0.18

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 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