fir-cli 0.1.3 → 0.1.8

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
  SHA1:
3
- metadata.gz: 396c52a907f43e7660bb4bd1b89c3b7b212b1ff7
4
- data.tar.gz: 142be775b960115d50f38c14e0e396fedea9b6ed
3
+ metadata.gz: 9734a2a6211d82d058df273bd03c91cf9cc51f0a
4
+ data.tar.gz: f58003855b7eb3e568ce73171f18163e57dc001c
5
5
  SHA512:
6
- metadata.gz: aa2ac76360fcb3f0ded94fc206c9762bf40befa0d374ad72c9e9eb193938345dcdc14b8b80fcb8a22a88332e2fc8fccf79ea91e551de5cd951644d63d2a993d0
7
- data.tar.gz: d225bea3e6cbd4afc81325a61478b36a61a1e2c1a65f27604d1c17bcdd90fb478806ba1bbd770cc8db98ceb5824eab3799cf6bae2964ae548ab20f5ac3d1a494
6
+ metadata.gz: 6cc3a636a04a3c8adbe755803bc1ad55ca543b44cb430ab93c3f4610bf627ff05117f6c47919a093000bec9e76f10dbc5164cd0ae365e4924819ab944bb5ba6b
7
+ data.tar.gz: 737c734728115877b142729fae596a9d1b036616a34013d7d06e83a972d8d16f7ff235bcad7c625b966ead6314e375303bdd178cdd9bed1a61a8de18d5cad5c9
data/Gemfile CHANGED
@@ -1 +1,2 @@
1
+ source 'https://ruby.taobao.org/'
1
2
  gemspec
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- fir-cli (0.1.2)
5
- highline (~> 1.6.21)
4
+ fir-cli (0.1.8)
5
+ highline (~> 1.6)
6
6
  lagunitas (= 0.0.1)
7
- paint (~> 0.9.0)
7
+ paint (~> 0.9)
8
8
  pngdefry (= 0.1.1)
9
- rest_client (~> 1.8.2)
10
- ruby_apk (~> 0.7.1)
11
- thor (~> 0.19.1)
9
+ rest_client (~> 1.8)
10
+ ruby_apk (~> 0.7)
11
+ thor (~> 0.19)
12
12
  user_config (= 0.0.4)
13
13
 
14
14
  GEM
@@ -23,6 +23,7 @@ GEM
23
23
  netrc (0.7.9)
24
24
  paint (0.9.0)
25
25
  pngdefry (0.1.1)
26
+ rake (10.4.0)
26
27
  rest_client (1.8.2)
27
28
  netrc (~> 0.7.7)
28
29
  ruby_apk (0.7.1)
@@ -36,4 +37,6 @@ PLATFORMS
36
37
  ruby
37
38
 
38
39
  DEPENDENCIES
40
+ bundler (~> 1.7)
39
41
  fir-cli!
42
+ rake (~> 10.0)
data/README.md CHANGED
@@ -2,11 +2,21 @@ FIR.im CLI
2
2
  ---
3
3
  > FIR.im CLI 可以通过指令查看、上传、编译应用,同时还集成了第三方网站 [resign.tapbeta.com](http://resign.tapbeta.com) 进行企业签名以方便 inhouse 测试。
4
4
 
5
+ ## Changelog
6
+ ### FIR-cli 0.1.8
7
+ - 支持 ruby 1.9.x
8
+ - 规范输出参数选项,支持无颜色信息输出
9
+ -`--verbose=v|vv|vvv`:设置输出级别
10
+ -`--quiet` 与 `--no-quiet`:设置是否不输出辅助信息
11
+ -`--color` 与 `--no-color`:设置输出是否携带颜色信息
12
+ - 修复 ipa 应用图标不清晰问题
13
+ - 增加切换配置文件功能:使用此功能可以在多个用户中切换使用
14
+
5
15
  ## 使用说明
6
16
  ### 从安装入手
7
17
  FIR.im CLI 使用 ruby 构建,只要安装相应 ruby gem 即可:
8
18
  ```shell
9
- $ gem install fir-cli
19
+ $ sudo gem install fir-cli
10
20
  ```
11
21
  安装后,你可以在命令行执行指令
12
22
  ```shell
@@ -14,16 +24,16 @@ $ fir
14
24
  > 欢迎使用 FIR.im 命令行工具,如需帮助请输入: fir help
15
25
  Commands:
16
26
  fir config # 配置全局设置
17
- fir help [COMMAND] # Describe available commands or one specific ...
27
+ fir help [COMMAND] # Describe available commands or one specific command
18
28
  fir info APP_FILE_PATH # 获取应用文件的信息(支持 ipa 文件和 apk 文件)
19
- fir login USER_TOKEN # 以 USER_TOKEN 身份登陆
29
+ fir login # 登录
20
30
  fir publish APP_FILE_PATH # 将应用文件发布至 FIR.im(支持 ipa 文件和 apk 文件)
21
31
  fir resign IPA_FILE_PATH OUTPUT_PATH # 使用 resign.tapbeta.com 进行企业签名
22
- fir upgrade all fir-cli toolbelts # 更新 fir-cli 的所有组件
32
+ fir upgrade # 更新 fir-cli 的所有组件
23
33
  ```
24
34
 
25
35
  ### 发布一个应用
26
- 输入下面的指令便可发布应用
36
+ 输入下面的指令便可轻松发布应用
27
37
  ```shell
28
38
  $ fir publish 应用路径
29
39
  ```
@@ -33,6 +43,10 @@ $ fir publish 应用路径
33
43
  > 正在解析 ipa 文件...
34
44
  > 正在获取 im.fir.juo@FIR.im 的应用信息...
35
45
  请输入用户 token:
46
+ ```
47
+ 输入用户 token 后,系统会自动上传
48
+ ```shell
49
+ 请输入用户 token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
36
50
  > 上传应用...
37
51
  > 上传应用成功
38
52
  > 正在更新 fir 的应用信息...
@@ -48,20 +62,28 @@ $ fir publish 应用路径
48
62
  如果觉得每次都输入用户 token 很不方便,那么可使用登录命令
49
63
 
50
64
  ```shell
51
- $ fir login 用户 token
65
+ $ fir login
66
+ ```
67
+ 这时系统会提示输入用户 token
68
+ ```shell
52
69
  > 欢迎使用 FIR.im 命令行工具,如需帮助请输入: fir help
53
- > 设置用户邮件地址为: xx@xx.xx
54
- > 当前登陆用户为:用户 token
70
+ 输入你的用户 token:
71
+ ```
72
+ 输入用户 token,系统会自动获取你的用户 email
73
+ ```shell
74
+ 输入你的用户 token:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
75
+ > 设置用户邮件地址为: dy@fir.im
76
+ > 当前登陆用户为:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
55
77
  ```
56
78
 
57
79
 
58
80
  ### 需要企业签名?
59
- 很多开发者需要一个企业签名的应用,来让更多的用户参与到测试中,这种行为并不符合企业证书的使用规范。但是我们还是集成了第三方签名网站 [resign.tapbeta.com](http://resign.tapbeta.com) 帮助我们的用户更方便的进行测试。
81
+ 很多开发者需要一个企业签名的应用,来让更多的用户参与到测试中,这种行为并不符合企业证书的使用规范。但是我们还是集成了第三方签名网站 [resign.tapbeta.com](http://resign.tapbeta.com) 来帮助我们的用户更方便的进行测试。
60
82
 
61
83
  ```shell
62
84
  $ fir resign ipa文件路径 输出文件路径
63
85
  ```
64
- 这条指令会输出一段风险提示,如果没有设置邮件地址,这里会让你输入邮件地址,等全部完成之后,便开始进行企业签名了
86
+ 这条指令会输出一段风险提示;如果没有设置邮件地址,这里会让你输入邮件地址。输入邮件地址后,便开始进行企业签名了
65
87
  ```
66
88
  > 欢迎使用 FIR.im 命令行工具,如需帮助请输入: fir help
67
89
  ! resign.tapbeta.com 签名服务风险提示
@@ -115,53 +137,61 @@ fir help
115
137
  fir help COMMAND
116
138
  ```
117
139
 
118
- ### 登录
119
- > 以下指令用于设置用户 token:`USER_TOKEN`,已登录用户在[这里](http://fir.im/user/info)上查可以看自己的令牌。
140
+ ### 切换配置文件
141
+ > 以下指令用于切换配置文件,一个用户可以拥有多个配置文件。用户所有全局设置都跟随配置文件的切换而变化
120
142
 
143
+ - `-d` 删除指定配置文件
121
144
  ```shell
122
- fir login USER_TOKEN
145
+ fir profile PROFILE [-d]
123
146
  ```
124
147
 
125
- ### 获取应用文件的信息
126
- > 以下指令用于显示应用信息,支持 ipa apk 文件。
148
+ ### 登录
149
+ > 以下指令用于登录,登录后系统会从 FIR.im 自动获取你的邮件等信息。已登录用户在[这里](http://fir.im/user/info)可以找到自己的用户 token。
127
150
 
128
- - `-a`:可选,现实全部信息
129
- - `-f`:可选,显示托管在 [FIR.im](http://fir.im) 的信息
130
- - `-v`:可选,设置输出级别,级别分为三个:`v`、`vv`、`vvv`,默认为`vv`
131
- - `-q`:可选,安静模式,不输出任何信息
132
151
  ```shell
133
- fir info APP_FILE_PATH [-f] [-v]
152
+ fir login
134
153
  ```
135
-
136
154
  ### 设置全局信息
137
155
  > 以下指令用于全局设置。执行指令时如果不指明相应选项,会读取全局设置。
138
156
 
139
- - `-r`:可选,如果设置了全局企业签名,发布默认将使用第三方企业签名服务
140
- - `-v`:可选,如果设置了全局输出级别,各指令都采用该级别输出
141
- - `-q`:可选,如果设置了全局静默模式,各指令均不输出辅助信息
142
- - `-t TOKEN`:可选,设置登录用户的令牌(作用和`fir loging USER_TOKEN`一样)
143
- - `-e EMAIL`:可选,设置用户使用企业签名服务的默认邮件地址
157
+ - `--token=TOKEN`:见`登录`
158
+ - `--resign`:见`第三方企业证书签名服务`
159
+ - `--email=EMAIL`:见`第三方企业证书签名服务`
160
+ - `--verbose=v|vv|vvv`:见`控制输出参数`
161
+ - `--quiet` 与 `--no-quiet`:见`控制输出参数`
162
+ - `--color` 与 `--no-color`:见`控制输出参数`
144
163
  ```shell
145
- fir config [-r] [-t TOKEN] [-e EMAIL]
164
+ fir config [options]
146
165
  ```
147
166
 
167
+ ### 获取应用文件的信息
168
+ > 以下指令用于显示应用信息,支持 ipa 和 apk 文件。
169
+
170
+ - `--all` 与 `--no-all`:可选,现实全部信息
171
+ - `--fir` 与 `--no-fir`:可选,显示托管在 [FIR.im](http://fir.im) 的信息
172
+ ```shell
173
+ fir info APP_FILE_PATH [-a] [-f] [-v v|vv|vvv] [-q]
174
+ ```
175
+
176
+
177
+
148
178
  ### 第三方企业证书签名服务
149
179
  > 以下指令使用 [resign.tapbeta.com](http://resign.tapbeta.com) 进行企业证书签名
150
180
 
151
181
  - `INPUT_IPA_PATH`:待签名的 ipa 文件路径
152
182
  - `OUTPUT_IPA_PATH`:签名后的输出文件路径
153
- - `-e EMAIL`:可选,设置使用签名服务的邮件地址
183
+ - `--email=EMAIL`:可选,设置使用签名服务的邮件地址
154
184
  ```shell
155
- fir resign INTPUT_IPA_FILE OUTPUT_IPA_FILE [-e EMAIL]
185
+ fir resign INTPUT_IPA_FILE OUTPUT_IPA_FILE [--email=EMAIL]
156
186
  ```
157
187
 
158
188
  ### 发布应用至 [FIR.im](http://fir.im)
159
189
  > 以下指令用于发布应用到 [FIR.im](http://fir.im),支持 ipa 和 apk 文件。
160
190
 
161
- - `-r`:可选,此开关控制是否使用第三方企业签名服务,仅支持 ipa 文件
162
- - `-s SHORT`:可选,指定发布应用的短地址
163
- - `-t USER_TOKEN`:可选,设定发布应用的帐号,未设置则使用全局设置
164
- - `-c CHANGE_LOG`:可选,设置发布的发布日志
191
+ - `--resign` 与 `--no-resign`:可选,此开关控制是否使用第三方企业签名服务,仅支持 ipa 文件
192
+ - `--short=SHORT`:可选,指定发布应用的短地址
193
+ - `--token=USER_TOKEN`:可选,设定发布应用的帐号,未设置则使用全局设置
194
+ - `--changelog=CHANGE_LOG`:可选,设置更新日志
165
195
  ```shell
166
196
  fir publish APP_FILE_PATH [-r] [-s SHORT] [-t USER_TOKEN] [-c CHANGE_LOG]
167
197
  ```
@@ -173,3 +203,10 @@ fir publish APP_FILE_PATH [-r] [-s SHORT] [-t USER_TOKEN] [-c CHANGE_LOG]
173
203
  fir upgrade
174
204
  ```
175
205
 
206
+ ### 通用参数
207
+ #### 控制输出参数
208
+ > 几乎全部 FIR-cli 指令都支持下面的控制输出参数
209
+
210
+ - `--verbose=v|vv|vvv`:用于控制输出级别,`v`只输出以`!`开始的内容;`vv`输出以`!`或`>`开始的内容;`vvv`输出全部辅助信息。
211
+ - `--quiet` 与 `--no-quiet`:设置是否不输出全部辅助信息
212
+ - `--color` 与 `--no-color`:设置输出信息是否包含命令行颜色信息
data/bin/fir CHANGED
@@ -1,13 +1,16 @@
1
1
  #!/usr/bin/env ruby
2
+ # coding: utf-8
3
+
2
4
  require 'fir-cli'
3
5
 
6
+
4
7
  Fir::Cli.find_extends.each { |g| require g }
5
8
 
6
9
  begin
7
- Fir::Cli.start ARGV
10
+ Fir::Cli.start ARGV
8
11
  rescue Exception => e
9
- s = e.to_s
10
- s = ": #{ s }" if !s.empty?
11
- puts "! #{ Paint[ "错误#{ s }", :red] }"
12
+ s = e.to_s
13
+ s = ": #{s}" if !s.empty?
14
+ puts "! #{Paint["错误#{s}", :red]}"
12
15
  end
13
16
 
data/fir-cli.gemspec CHANGED
@@ -1,27 +1,33 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'fir-cli/version'
4
5
 
5
6
  Gem::Specification.new do |s|
6
7
  s.name = 'fir-cli'
7
- s.version = '0.1.3'
8
+ s.version = Fir::Cli::VERSION
8
9
  s.date = '2014-11-20'
9
10
  s.summary = 'FIR.im 命令行工具'
10
11
  s.description = 'FIR.im 命令行工具,支持 ios 和 android'
11
12
  s.homepage = 'http://blog.fir.im/2014/fir-cli'
12
- s.author = 'FIR.im'
13
+ s.authors = ['FIR.im']
13
14
  s.email = 'fir-cli@fir.im'
14
15
  s.license = 'GPLv3'
15
- s.files = `git ls-files -z`.split("\x0")
16
- s.executables << 'fir'
16
+
17
+ s.files = `git ls-files | grep -Ev ".dev."`.split("\n")
18
+ s.test_files = s.files.grep(%r{^(test|spec|features)/})
19
+ s.executables = s.files.grep(%r{^bin/}) { |f| File.basename(f) }
17
20
  s.require_paths << './'
18
21
 
19
22
  s.add_dependency 'lagunitas', '0.0.1'
20
23
  s.add_dependency 'user_config', '0.0.4'
21
24
  s.add_dependency 'pngdefry', '0.1.1'
22
- s.add_dependency 'rest_client', '~> 1.8.2'
23
- s.add_dependency 'paint', '~> 0.9.0'
24
- s.add_dependency 'thor', '~> 0.19.1'
25
- s.add_dependency 'ruby_apk', '~> 0.7.1'
26
- s.add_dependency 'highline', '~> 1.6.21'
25
+ s.add_dependency 'rest_client', '~> 1.8'
26
+ s.add_dependency 'paint', '~> 0.9'
27
+ s.add_dependency 'thor', '~> 0.19'
28
+ s.add_dependency 'ruby_apk', '~> 0.7'
29
+ s.add_dependency 'highline', '~> 1.6'
30
+
31
+ s.add_development_dependency "bundler", "~> 1.7"
32
+ s.add_development_dependency "rake", "~> 10.0"
27
33
  end
data/fir-cli.rb CHANGED
@@ -1,5 +1,4 @@
1
1
  require 'uri'
2
- require 'thor'
3
2
  require 'json'
4
3
  require 'pathname'
5
4
  require 'tempfile'
@@ -15,9 +14,9 @@ require 'ruby_apk'
15
14
  require 'highline/import'
16
15
 
17
16
  module Fir
18
- class Cli < Thor
19
- end
17
+ class Cli < Thor; end
20
18
  end
21
19
 
22
- Dir[File.dirname(__FILE__) + '/lib/*.rb'].each {|f| require f }
23
- Dir[File.dirname(__FILE__) + '/lib/fir-cli-commands/*.rb'].each {|f| require f }
20
+ Dir[File.dirname(__FILE__) + '/lib/fir-cli/*.rb'].each { |f| require f }
21
+ Dir[File.dirname(__FILE__) + '/lib/*.rb'].each { |f| require f }
22
+ Dir[File.dirname(__FILE__) + '/lib/fir-cli-commands/*.rb'].each { |f| require f }
@@ -0,0 +1,5 @@
1
+ module Fir
2
+ class Cli
3
+ VERSION = '0.1.8'
4
+ end
5
+ end
@@ -1,15 +1,15 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
+ class Cli
3
4
  desc 'config', '配置全局设置'
4
5
  option :token, :aliases => '-t', :desc => '用户 token'
5
6
  option :email, :aliases => '-e', :desc => '邮件地址'
6
7
  option :resign, :aliases => '-r', :desc => '是否以企业签名发布 ios 应用', :type => :boolean
7
- option :verbose, :aliases => '-v', :desc => '输出级别项 v, vv, vvv', :type => :string, :enum => ['v', 'vv', 'vvv']
8
- option :quiet, :aliases => '-q', :desc => '安静模式', :type => :boolean
8
+ output_options
9
9
  def config
10
10
  if options.length > 0
11
11
  options.each do |option|
12
- puts "> #{ Paint[option[0].to_s.rjust(10), :blue] } : #{ @config[option[0].to_s] } => #{ option[1] }"
12
+ _puts "> #{Paint[option[0].to_s.rjust(10), :blue]} : #{@config[option[0].to_s]} => #{option[1]}"
13
13
  @config[option[0].to_s] = option[1]
14
14
  end
15
15
  if @config['token'] && !_user(@config['token'])
@@ -18,8 +18,9 @@ module Fir
18
18
  end
19
19
  @config.save
20
20
  end
21
- puts '> 设置完成,您现在使用的设置是'
22
- @config.each {|conf| puts "> #{ Paint[conf[0].to_s.rjust(10), :blue] } => #{ conf[1] }"}
21
+ _puts '> 设置完成,您现在使用的设置是'
22
+ @config.save
23
+ @config.each { |conf| _puts "> #{Paint[conf[0].to_s.rjust(10), :blue]} => #{conf[1]}"}
23
24
  end
24
25
  end
25
26
  end
@@ -1,16 +1,16 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
+ class Cli
3
4
  desc 'info APP_FILE_PATH', '获取应用文件的信息(支持 ipa 文件和 apk 文件)'
4
5
  option :all, :aliases => '-a', :desc => '显示全部应用信息', :type => :boolean
5
6
  option :fir, :aliases => '-f', :desc => '显示托管在 fir.im 的应用信息', :type => :boolean
6
- option :verbose, :aliases => '-v', :desc => '设置输出级别 v, vv, vvv'
7
- option :quiet, :aliases => '-q', :desc => '安静模式,不输出任何选项'
7
+ output_options
8
8
  def info(path)
9
9
  app = _info path, options[:all]
10
- app.each { |i| puts "#{ Paint[i[0].to_s.rjust(18), :blue] } #{ i[1] }" }
10
+ app.each { |i| _puts "#{Paint[i[0].to_s.rjust(18), :blue]} #{i[1]}" }
11
11
  if options[:fir]
12
12
  fir_app = _fir_info app[:identifier], app[:type]
13
- fir_app.each { |i| puts "#{ Paint[i[0].to_s.rjust(18), :blue] } #{ i[1] }" }
13
+ fir_app.each { |i| _puts "#{Paint[i[0].to_s.rjust(18), :blue]} #{i[1]}" }
14
14
  end
15
15
  end
16
16
  end
@@ -1,8 +1,8 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
- desc 'login', '登录'
4
- option :verbose, :aliases => '-v', :desc => '设置输出级别 v, vv, vvv'
5
- option :quite, :aliases => '-q', :desc => '安静模式,不输出任何选项'
3
+ class Cli
4
+ desc 'login', '登录'
5
+ output_options
6
6
  def login
7
7
  token = _prompt_secret('输入你的用户 token:')
8
8
  if token.empty?
@@ -14,17 +14,17 @@ module Fir
14
14
  _puts_invalid_token
15
15
  exit 1
16
16
  end
17
- if _opt_token && _opt_token != token
18
- _puts "> 已登陆用户: #{ _opt_token }"
19
- _puts "> 替换为用户: #{ token }"
20
- end
17
+ if _opt_token && _opt_token != token
18
+ _puts "> 已登陆用户: #{_opt_token}"
19
+ _puts "> 替换为用户: #{token}"
20
+ end
21
21
  if user[:email]
22
- _puts "> 设置用户邮件地址为: #{ user[:email] }"
22
+ _puts "> 设置用户邮件地址为: #{user[:email]}"
23
23
  @config['email'] = user[:email]
24
24
  end
25
25
  @config['token'] = token
26
26
  @config.save
27
- _puts "> 当前登陆用户为:#{ token }"
27
+ _puts "> 当前登陆用户为:#{token}"
28
28
  end
29
29
  end
30
30
  end
@@ -0,0 +1,31 @@
1
+ # coding: utf-8
2
+ module Fir
3
+ class Cli
4
+ desc 'profile', '切换配置文件'
5
+ option :delete, :aliases => '-d', :desc => '删除指定的配置文件', :type => :boolean
6
+ output_options
7
+ def profile(prof)
8
+ if prof == 'global'
9
+ _puts '! 不能使用 global 作为配置文件名'
10
+ exit 1
11
+ end
12
+ prof = "#{prof}.yaml"
13
+ if options[:delete]
14
+ _puts "> 正在删除配置文件:#{prof}"
15
+ @uconfig.delete prof
16
+ else
17
+ if _profile == prof
18
+ _puts "! #{Paint["你正在使用该配置:#{prof}", :red]}"
19
+ exit 1
20
+ end
21
+ _puts "> 正在使用配置文件:#{_profile}"
22
+ _puts "> 即将替换为:#{prof}"
23
+ @global_config['profile'] = prof
24
+ @global_config.save
25
+ _load_config
26
+ _puts "> 已替换为:#{prof}"
27
+ config
28
+ end
29
+ end
30
+ end
31
+ end
@@ -1,15 +1,16 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
+ class Cli
3
4
  desc 'publish APP_FILE_PATH', '将应用文件发布至 FIR.im(支持 ipa 文件和 apk 文件)'
4
5
  option :resign, :aliases => '-r', :desc => '进行企业签名', :type => :boolean
6
+ option :email, :aliases => '-e', :desc => '企业签名所需的邮件地址'
5
7
  option :short, :aliases => '-s', :desc => '自定义短地址'
6
8
  option :token, :aliases => '-t', :desc => '用户 token'
7
9
  option :changelog, :aliases => '-c', :desc => '修改纪录,默认为空字符串', :default => ''
8
- option :verbose, :aliases => '-v', :desc => '设置输出级别 v, vv, vvv'
9
- option :quiet, :aliases => '-q', :desc => '安静模式,不输出任何选项'
10
+ output_options
10
11
  def publish(path)
11
12
  if _opt_resign && _is_ipa(path)
12
- tfile = Tempfile.new ["resign-#{ SecureRandom.hex }", '.ipa']
13
+ tfile = Tempfile.new ["resign-#{SecureRandom.hex}", '.ipa']
13
14
  resign path, tfile.path
14
15
  path = tfile.path
15
16
  end
@@ -17,7 +18,6 @@ module Fir
17
18
  fir_app = _fir_info app[:identifier], app[:type]
18
19
 
19
20
  id = fir_app[:id]
20
- short = fir_app[:short]
21
21
  bundle_app = fir_app[:bundle][:pkg]
22
22
  bundle_icon = fir_app[:bundle][:icon]
23
23
 
@@ -49,18 +49,22 @@ module Fir
49
49
  _fir_put fir_app[:id],
50
50
  :name => app[:display_name] || app[:name],
51
51
  :short => options[:short] || fir_app[:short],
52
- :version => app[:version],
53
- :versionShort => app[:short_version]
52
+ # :desc => options[:describe] || fir_app[:desc]
53
+ # :show => options[:public] || fir_app[:show]
54
+ :source => 'fir-cli'
54
55
 
56
+ _fir_vput_complete upload_res[:versionOid],
57
+ :version => app[:version],
58
+ :versionShort => app[:short_version],
59
+ :devices => app[:devices],
60
+ :release_type => app[:release_type]
61
+
55
62
  _fir_vput upload_res[:versionOid],
56
- :version => app[:version],
57
- :versionShort => app[:short_version],
58
- :devices => app[:devices],
59
- :release_type => app[:release_type],
60
63
  :changelog => options[:changelog]
61
64
 
62
-
63
- _puts "> http://fir.im/#{short}"
65
+ # Get updated app info
66
+ fir_app = _fir_info app[:identifier]
67
+ _puts "> #{_base_path}/#{fir_app[:short]}"
64
68
  end
65
69
  end
66
70
  end
@@ -1,23 +1,23 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
+ class Cli
3
4
  desc 'resign IPA_FILE_PATH OUTPUT_PATH', '使用 resign.tapbeta.com 进行企业签名'
4
5
  option :email, :aliases => '-e', :desc => '邮件地址'
5
- option :verbose, :aliases => '-v', :desc => '设置输出级别 v, vv, vvv'
6
- option :quiet, :aliases => '-q', :desc => '安静模式,不输出任何选项'
6
+ output_options
7
7
  def resign(ipath, opath)
8
- _puts "! #{ Paint['resign.tapbeta.com 签名服务风险提示', :red] }"
8
+ _puts "! #{Paint['resign.tapbeta.com 签名服务风险提示', :red]}"
9
9
  _puts '! tapbeta 无法保证签名证书的长期有效性,苹果随时可'
10
10
  _puts '! 能封杀他们的企业账号,所有由这个企业账号签发的证'
11
11
  _puts '! 书都会失效。你如果使用该网站提供的证书进行应用签'
12
- _puts "! 发,请注意:#{ Paint['当证书失效后,所有通过已失效证书签名', :red ] }"
13
- _puts "! #{ Paint['的应用都会无法正常运行;同时托管在 fir.im 的应用', :red ] }"
14
- _puts "! #{ Paint['将无法正常安装。', :red ] }"
12
+ _puts "! 发,请注意:#{Paint['当证书失效后,所有通过已失效证书签名', :red ]}"
13
+ _puts "! #{Paint['的应用都会无法正常运行;同时托管在 fir.im 的应用', :red ]}"
14
+ _puts "! #{Paint['将无法正常安装。', :red ]}"
15
15
  if _opt_email == nil
16
16
  @email = _prompt '请输入你的邮件地址:'
17
17
  if !@email || @email.length == 0
18
- _puts "! #{ Paint['你需要提供邮件地址才能使用 resign.tapbeta.com 的', :red] }"
19
- _puts "! #{ Paint['签名服务, 请使用', :red] } fir config --email=EMAIL #{ Paint['进行设', :red] }"
20
- _puts "! #{ Paint['置', :red] }"
18
+ _puts "! #{Paint['你需要提供邮件地址才能使用 resign.tapbeta.com 的', :red]}"
19
+ _puts "! #{Paint['签名服务, 请使用', :red]} fir config --email=EMAIL #{Paint['进行设', :red]}"
20
+ _puts "! #{Paint['置', :red]}"
21
21
  exit 1
22
22
  elsif !_is_email @email
23
23
  _puts_invalid_email
@@ -25,7 +25,7 @@ module Fir
25
25
  end
26
26
  end
27
27
  if !_is_ipa ipath
28
- _puts "! #{ Paint['只能给以 ipa 为扩展名的文件签名', :red] }"
28
+ _puts "! #{Paint['只能给以 ipa 为扩展名的文件签名', :red]}"
29
29
  exit 1
30
30
  end
31
31
  _puts '> 正在申请上传令牌...'
@@ -46,7 +46,7 @@ module Fir
46
46
 
47
47
  # Upyun's notify is fucking, handle it specific
48
48
  # if tapbeta[:tb_upload_url].include? 'upyun'
49
- # RestClient.get "#{ form[:'notify-url'] }?#{ URI.encode_www_form JSON.parse res.body }"
49
+ # RestClient.get "#{form[:'notify-url']}?#{URI.encode_www_form JSON.parse res.body}"
50
50
  # end
51
51
 
52
52
 
@@ -54,7 +54,7 @@ module Fir
54
54
  nped = true
55
55
  info = {}
56
56
  loop do
57
- res = RestClient.get "http://api.resign.tapbeta.com/public/#{ tapbeta[:tb_upload_key] }",
57
+ res = RestClient.get "http://api.resign.tapbeta.com/public/#{tapbeta[:tb_upload_key]}",
58
58
  :params => { :__mr => 'eyJ1cmwiOiIkKHVybCkiLCAicmVzaWduU3RhdHVzIjogIiQocmVzaWduU3RhdHVzKSIsICJzdGF0dXMiOiAiJChzdGF0dXMpIn0=' }
59
59
  info = JSON.parse res.body, :symbolize_names => true
60
60
  if nped && info[:resignStatus] == 'doing'
@@ -62,15 +62,18 @@ module Fir
62
62
  nped = false
63
63
  end
64
64
  if info[:status] == 'error'
65
- _puts "! #{ Paint['签名失败', :red] }"
65
+ _puts "! #{Paint['签名失败', :red]}"
66
+ exit 1
67
+ elsif info[:status] == 'timeout'
68
+ _puts "! #{Paint['签名超时', :red]}"
66
69
  exit 1
67
70
  end
68
71
  break if info[:url] != ''
69
72
  sleep 5
70
73
  end
71
74
  opath = Pathname.new(Dir.pwd).join(opath).cleanpath
72
- _puts "> 正在下载到 #{ opath }..."
73
- `curl #{ info[:url] } -o #{ opath } -s`
75
+ _puts "> 正在下载到 #{opath}..."
76
+ `curl #{info[:url]} -o #{opath} -s`
74
77
  end
75
78
  end
76
79
  end
@@ -1,14 +1,14 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
- desc 'upgrade all fir-cli toolbelts', '更新 fir-cli 的所有组件'
4
- option :verbose, :aliases => '-v', :desc => '设置输出级别 v, vv, vvv'
5
- option :quiet, :aliases => '-q', :desc => '安静模式,不输出任何选项'
3
+ class Cli
4
+ desc 'upgrade', '更新 fir-cli 的所有组件'
5
+ output_options
6
6
  def upgrade
7
7
  _puts '> gem update fir-cli'
8
8
  `gem update fir-cli`
9
9
  _extends.each do |gem|
10
- _puts "> gem update #{ gem }"
11
- `gem update #{ gem }`
10
+ _puts "> gem update #{gem}"
11
+ `gem update #{gem}`
12
12
  end
13
13
  end
14
14
  end
@@ -0,0 +1,10 @@
1
+ # coding: utf-8
2
+ module Fir
3
+ class Cli
4
+ desc 'version', '当前版本'
5
+ output_options
6
+ def version
7
+ _puts "FIR Cli #{VERSION}"
8
+ end
9
+ end
10
+ end
@@ -1,29 +1,35 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
+ class Cli
3
4
  private
4
5
  def _fir_info(identifier, type = 'ios')
5
- _puts "> 正在获取 #{ identifier }@FIR.im 的应用信息..."
6
+ _puts "> 正在获取 #{identifier}@FIR.im 的应用信息..."
6
7
  _chk_login
7
8
  body = { :token => @token, :type => type }
8
- res = RestClient.get "http://fir.im/api/v2/app/info/#{ identifier }?#{ URI.encode_www_form body }"
9
+ res = RestClient.get "#{_base_path}/api/v2/app/info/#{identifier}?#{URI.encode_www_form body}"
9
10
  JSON.parse res.body, :symbolize_names => true
10
11
  end
11
12
  def _fir_put(id, body)
12
13
  _chk_login
13
14
  body[:token] = @token
14
15
  _puts '> 正在更新 fir 的应用信息...'
15
- RestClient.put "http://fir.im/api/v2/app/#{ id }?#{ URI.encode_www_form body }", body
16
+ RestClient.put "#{_base_path}/api/v2/app/#{id}?#{URI.encode_www_form body}", body
16
17
  _puts '> 更新成功'
17
18
  end
18
- def _fir_vput(id, body)
19
+ def _fir_vput_complete(id, body)
19
20
  _chk_login
20
21
  body[:token] = @token
21
22
  _puts '> 正在更新 fir 的应用版本信息...'
22
- RestClient.put "http://fir.im/api/v2/appVersion/#{ id }/complete?#{ URI.encode_www_form body }", body
23
+ RestClient.put "#{_base_path}/api/v2/appVersion/#{id}/complete?#{URI.encode_www_form body}", body
23
24
  _puts '> 更新成功'
24
25
  end
26
+ def _fir_vput(id, body)
27
+ _chk_login
28
+ body[:token] = @token
29
+ RestClient.put "#{_base_path}/api/v2/appVersion/#{id}?#{URI.encode_www_form body}", body
30
+ end
25
31
  def _user(token)
26
- RestClient.get "http://fir.im/api/v2/user/me?token=#{ token }" do |res|
32
+ RestClient.get "#{_base_path}/api/v2/user/me?token=#{token}" do |res|
27
33
  case res.code
28
34
  when 200
29
35
  JSON.parse res.body, :symbolize_names => true
@@ -1,8 +1,11 @@
1
+ # coding: utf-8
1
2
  module Fir
2
- class Cli < Thor
3
+ class Cli
3
4
  def initialize(*args)
4
5
  super
6
+ @tmpfiles = []
5
7
  _init_config
8
+ _load_config
6
9
  _puts_welcome
7
10
  end
8
11
  def self.find_extends
@@ -11,34 +14,56 @@ module Fir
11
14
  .map { |gem| /^[^\s]+/.match(gem)[0] }
12
15
  .select { |gem| true if gem.start_with? 'fir-cli-' }
13
16
  end
14
- private
17
+ def self.output_options
18
+ option :verbose,
19
+ :desc => '设置输出辅助信息的详细程度',
20
+ :type => :string,
21
+ :enum => ['v', 'vv', 'vvv']
22
+ option :quiet,
23
+ :aliases => '-q',
24
+ :desc => '安静模式,不输出任何辅助信息',
25
+ :type => 'boolean'
26
+ option :color,
27
+ :desc => '设置输出带有颜色的信息',
28
+ :type => 'boolean'
29
+ end
30
+ private
15
31
  def _extends
16
32
  @extends ||= Cli.find_extends
17
33
  end
18
34
  def _init_config
19
35
  @uconfig = UserConfig.new '.fir'
20
- @config = @uconfig['default.yaml']
21
- @tmpfiles = []
22
- end
23
- def _path(path)
24
- path = Pathname.new(Dir.pwd).join(path).cleanpath
36
+ @global_config = @uconfig['global.yaml']
25
37
  end
26
- def _opt_token
27
- @token ||= options[:token] || @config['token']
38
+ def _load_config
39
+ @config = @uconfig[_profile]
28
40
  end
29
- def _opt_email
30
- @email ||= options[:email] || @config['email']
41
+ def _profile
42
+ @global_config['profile'] || 'default.yaml'
31
43
  end
32
- def _opt_verbose
33
- @verbose ||= options[:verbose] || @config['verbose']
34
- end
35
- def _opt_resign
36
- return options[:resign] if defined? options[:resign]
37
- @resign ||= options[:resign] || @config['resign']
44
+ def _path(path)
45
+ path = Pathname.new(Dir.pwd).join(path).cleanpath
38
46
  end
39
- def _opt_quiet
40
- return options[:quiet] if defined? options[:quiet]
41
- @quiet ||= options[:quiet] || @config['quiet']
47
+ no_commands do
48
+ %w(token email verbose).each do |_m|
49
+ define_method "_opt_#{_m}" do
50
+ unless instance_variable_get("@#{_m}")
51
+ instance_variable_set("@#{_m}", options[_m.to_sym] || @config[_m] )
52
+ end
53
+ instance_variable_get("@#{_m}")
54
+ end
55
+ private "_opt_#{_m}".to_sym
56
+ end
57
+ %w(resign quiet color trim).each do |_m|
58
+ define_method "_opt_#{_m}" do
59
+ return false if options[_m.to_sym] == false
60
+ unless instance_variable_get("@#{_m}")
61
+ instance_variable_set("@#{_m}", options[_m.to_sym] || @config[_m] )
62
+ end
63
+ instance_variable_get("@#{_m}")
64
+ end
65
+ private "_opt_#{_m}".to_sym
66
+ end
42
67
  end
43
68
  def _is_ipa(path)
44
69
  path.end_with? '.ipa'
@@ -66,33 +91,38 @@ module Fir
66
91
  end
67
92
  end
68
93
  def _prompt_secret(prompt)
69
- ask(prompt) {|q| q.echo = false}
94
+ ask(prompt) { |q| q.echo = false }
70
95
  end
71
96
  def _prompt(prompt)
72
- ask(prompt) {|q| q}
97
+ ask(prompt) { |q| q }
73
98
  end
74
99
  def _puts(text)
100
+ return puts _format text if !/^[->!] /.match text
75
101
  return if _opt_quiet
76
102
  case _opt_verbose || 'vv' # If nothing about log is set, use the default option - vv
77
103
  when 'v'
78
- puts text if text.start_with?('!')
104
+ puts _format text if text.start_with?('!')
79
105
  when 'vv'
80
- puts text if text.start_with?('!') || text.start_with?('>')
106
+ puts _format text if text.start_with?('!') || text.start_with?('>')
81
107
  when 'vvv'
82
- puts text if text.start_with?('!') || text.start_with?('>') || text.start_with?('-')
108
+ puts _format text if text.start_with?('!') || text.start_with?('>') || text.start_with?('-')
83
109
  end
84
110
  end
111
+ def _format(text)
112
+ return text.gsub /\e\[\d+(?:;\d+)*m/, '' if _opt_color == false
113
+ text
114
+ end
85
115
  def _puts_welcome
86
- _puts "> #{ Paint['欢迎使用 FIR.im 命令行工具,如需帮助请输入:', :green] } fir help"
116
+ _puts "> #{Paint['欢迎使用 FIR.im 命令行工具,如需帮助请输入:', :green]} fir help"
87
117
  end
88
118
  def _puts_require_token
89
- _puts "! #{ Paint['用户 token 不能为空', :red] }"
119
+ _puts "! #{Paint['用户 token 不能为空', :red]}"
90
120
  end
91
121
  def _puts_invalid_token
92
- _puts "! #{ Paint['输入的用户 token 不合法', :red] }"
122
+ _puts "! #{Paint['输入的用户 token 不合法', :red]}"
93
123
  end
94
124
  def _puts_invalid_email
95
- _puts "! #{ Paint['输入的邮件地址不合法', :red] }"
125
+ _puts "! #{Paint['输入的邮件地址不合法', :red]}"
96
126
  end
97
127
  def _info(path, more = false)
98
128
  if _is_ipa path
@@ -100,7 +130,7 @@ module Fir
100
130
  elsif _is_apk path
101
131
  _apk_info path, more
102
132
  else
103
- _puts "! #{ Paint['只能支持后缀为 ipa 和 apk 的文件', :red] }"
133
+ _puts "! #{Paint['只能支持后缀为 ipa 和 apk 的文件', :red]}"
104
134
  end
105
135
  end
106
136
  def _apk_info(path, more = false)
@@ -115,7 +145,7 @@ module Fir
115
145
  }
116
146
  if more
117
147
  info[:icons] = apk.icon.map do |name, data|
118
- tfile = Tempfile.new ["icon-#{ SecureRandom.hex }", '.png']
148
+ tfile = Tempfile.new ["icon-#{SecureRandom.hex}", '.png']
119
149
  tfile.write data
120
150
  @tmpfiles.push tfile
121
151
  {
@@ -144,8 +174,8 @@ module Fir
144
174
  }
145
175
  if more
146
176
  if app.icons
147
- info[:icons] = app.icons.map do |icon|
148
- tfile = Tempfile.new ["icon-#{ SecureRandom.hex }", '.png']
177
+ info[:icons] = app.icons.reverse.map do |icon|
178
+ tfile = Tempfile.new ["icon-#{SecureRandom.hex}", '.png']
149
179
  @tmpfiles.push tfile
150
180
  FileUtils.cp icon[:path], tfile.path
151
181
  {
@@ -161,5 +191,16 @@ module Fir
161
191
  ipa.cleanup
162
192
  info
163
193
  end
194
+ def _base_path
195
+ @base_path ||= begin
196
+ path = @config['base_path'] || 'http://fir.im'
197
+ path = path.strip
198
+ if path.end_with? '/'
199
+ path.chop
200
+ else
201
+ path
202
+ end
203
+ end
204
+ end
164
205
  end
165
206
  end
data/lib/lagunitas.ext.rb CHANGED
@@ -22,7 +22,7 @@ module Lagunitas
22
22
  end
23
23
  def distribution_name
24
24
  # mobileprovision['DeveloperCertificates'] if mobileprovision
25
- "#{ mobileprovision['Name'] }: #{ mobileprovision['TeamName'] }" if mobileprovision
25
+ "#{mobileprovision['Name']}: #{mobileprovision['TeamName']}" if mobileprovision
26
26
  end
27
27
  def metadata
28
28
  return if !metadata?
@@ -0,0 +1,10 @@
1
+ require 'user_config'
2
+ class UserConfig
3
+ class YAMLFile
4
+ def [](key)
5
+ return @cache[key] if defined? @cache[key]
6
+ @cache[key] || @default[key]
7
+ end
8
+ end
9
+ end
10
+
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: 0.1.3
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - FIR.im
@@ -58,70 +58,98 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 1.8.2
61
+ version: '1.8'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
- version: 1.8.2
68
+ version: '1.8'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: paint
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ~>
74
74
  - !ruby/object:Gem::Version
75
- version: 0.9.0
75
+ version: '0.9'
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ~>
81
81
  - !ruby/object:Gem::Version
82
- version: 0.9.0
82
+ version: '0.9'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: thor
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: 0.19.1
89
+ version: '0.19'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: 0.19.1
96
+ version: '0.19'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: ruby_apk
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ~>
102
102
  - !ruby/object:Gem::Version
103
- version: 0.7.1
103
+ version: '0.7'
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ~>
109
109
  - !ruby/object:Gem::Version
110
- version: 0.7.1
110
+ version: '0.7'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: highline
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ~>
116
116
  - !ruby/object:Gem::Version
117
- version: 1.6.21
117
+ version: '1.6'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - ~>
123
123
  - !ruby/object:Gem::Version
124
- version: 1.6.21
124
+ version: '1.6'
125
+ - !ruby/object:Gem::Dependency
126
+ name: bundler
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: '1.7'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: '1.7'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rake
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: '10.0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: '10.0'
125
153
  description: FIR.im 命令行工具,支持 ios 和 android
126
154
  email: fir-cli@fir.im
127
155
  executables:
@@ -140,14 +168,17 @@ files:
140
168
  - lib/fir-cli-commands/config.rb
141
169
  - lib/fir-cli-commands/info.rb
142
170
  - lib/fir-cli-commands/login.rb
171
+ - lib/fir-cli-commands/profile.rb
143
172
  - lib/fir-cli-commands/publish.rb
144
173
  - lib/fir-cli-commands/resign.rb
145
- - lib/fir-cli-commands/update.rb
146
174
  - lib/fir-cli-commands/upgrade.rb
175
+ - lib/fir-cli-commands/version.rb
147
176
  - lib/fir-cli.core.ext.rb
148
177
  - lib/fir-cli.utils.ext.rb
178
+ - lib/fir-cli/version.rb
149
179
  - lib/lagunitas.ext.rb
150
180
  - lib/lagunitas.patch.rb
181
+ - lib/user_config.patch.rb
151
182
  homepage: http://blog.fir.im/2014/fir-cli
152
183
  licenses:
153
184
  - GPLv3
@@ -169,7 +200,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
169
200
  version: '0'
170
201
  requirements: []
171
202
  rubyforge_project:
172
- rubygems_version: 2.0.14
203
+ rubygems_version: 2.4.4
173
204
  signing_key:
174
205
  specification_version: 4
175
206
  summary: FIR.im 命令行工具
@@ -1,28 +0,0 @@
1
- # module Fir
2
- # class Cli < Thor
3
- # desc 'update APP_FILE_PATH|BUNDLE_ID', '更新 FIR.im 的应用信息'
4
- # option :short, :aliases => '-s', :desc => '自定义短地址'
5
- # option :token, :aliases => '-t', :desc => '用户 token'
6
- # option :verbose, :aliases => '-v', :desc => '设置输出级别 v, vv, vvv'
7
- # option :quiet, :aliases => '-q', :desc => '安静模式,不输出任何选项'
8
- # def update(path)
9
- # identifier = path
10
- # identifier = _info(path)[:identifier] if File.exist? _path path
11
- # fir_app = _fir_info identifier
12
- # opt_short = options[:short]
13
- # post = {}
14
- # post[:short] = opt_short if opt_short
15
-
16
- # post.each { |i| post.delete i[0] if i[1] == fir_app[i[0]] }
17
-
18
- # if post.length == 0 then _puts '> 没有什么可以更新的'; return end
19
- # _fir_put fir_app[:id], post
20
-
21
- # fir_app = _fir_info identifier
22
- # if opt_short && opt_short != fir_app[:short]
23
- # _puts "> 短地址 #{ opt_short } 被占用,FIR.im 自动更新短地址为 #{ fir_app[:short] }"
24
- # end
25
- # _puts "> http://fir.im/#{ fir_app[:short] }"
26
- # end
27
- # end
28
- # end