fir-cli 0.1.3 → 0.1.8

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