fir-cli 1.2.2 → 1.2.3

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: c1cc30a7a258c5ed2349009e07307b42bc69d076
4
- data.tar.gz: d2b79e6409a92803b19401771eb47881df1d5eca
3
+ metadata.gz: ea56efea5d40f829e8dda5577bedc83315e7dadb
4
+ data.tar.gz: 5d672c450dd8cc2115b26fdc4681cb7031e20a89
5
5
  SHA512:
6
- metadata.gz: 8d58f484f0618482a0502fa39bfcd87f5877e9c209363343548f9100da03caee367efbe791a893c07b9f78cac4232fa6100c23d63daef6df042a81318db818a2
7
- data.tar.gz: d5ac3c65f17bbe158f07b98ed7b95e72515635bb0c9e1c03415243835e8b058608a570dff2f017b00886d21e962be6413b552b62c08af8beb1d7676549469f88
6
+ metadata.gz: d5e5d7e67186cb666fe8b96576a3046bffdfc985028d8d4b4b61713bc96c4e7a89417c39f37209be8a64df1c4dc2b09797fd34f7f23c3f00316296161a97a7d0
7
+ data.tar.gz: 911c4e30e32238144e65819b84725f9cb70191ff245d4e2ac4ed2a081ead711a3a53ec8fac951d475c13a5d069dde8e35ab78d45c4a963df389ca977f72d694e
data/Gemfile CHANGED
@@ -8,4 +8,4 @@ end
8
8
  # Specify your gem's dependencies in fir.gemspec
9
9
  gemspec
10
10
 
11
- gem "codeclimate-test-reporter", group: :test, require: nil
11
+ gem 'codeclimate-test-reporter', group: :test, require: nil
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- FIR.im CLI
1
+ fir.im-cli
2
2
  ---
3
3
 
4
4
 
@@ -8,12 +8,12 @@ FIR.im CLI
8
8
  [![Gem Version](https://badge.fury.io/rb/fir-cli.svg)](http://badge.fury.io/rb/fir-cli)
9
9
  [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/FIRHQ/fir-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
10
10
 
11
- > FIR.im CLI 可以通过指令查看, 上传, 编译应用
11
+ > fir.im-cli 可以通过指令查看, 上传, 编译应用
12
12
 
13
13
  ## 使用入门
14
14
  ### 从安装入手
15
15
 
16
- FIR.im CLI 使用 Ruby 构建,只要安装相应 ruby gem 即可:
16
+ fir.im-cli 使用 Ruby 构建,只要安装相应 ruby gem 即可:
17
17
 
18
18
  ```shell
19
19
  $ sudo gem install fir-cli
@@ -34,21 +34,54 @@ sudo gem update --system
34
34
  sudo gem install fir-cli
35
35
  ```
36
36
 
37
+ **注意: 如果你的系统是 mac OSX 10.11 以后的版本, 由于10.11引入了 `rootless`, 无法直接安装 fir-cli, 有以下三种解决办法:**
38
+
39
+ 1\. 使用 [RVM](https://rvm.io/) 安装 Ruby, 再安装 fir-cli(推荐)
40
+
41
+ ```shell
42
+ # Install RVM:
43
+ $ \curl -sSL https://get.rvm.io | bash -s stable --ruby
44
+
45
+ $ gem install fir-cli
46
+ ```
47
+
48
+ 2\. 指定 fir-cli 中 bin 文件的 PATH
49
+
50
+ ```shell
51
+ $ export PATH=/usr/local/bin:$PATH;sudo gem install -n /usr/local/bin fir-cli
52
+ ```
53
+
54
+ 3\. 重写 Ruby Gem 的 bindir
55
+
56
+ ```shell
57
+ $ echo 'gem: --bindir /usr/local/bin' >> ~/.gemrc
58
+ $ sudo gem install fir-cli
59
+ ```
60
+
37
61
  安装后,你可以在命令行执行指令
38
62
 
39
63
  ```shell
40
64
  $ fir
41
65
  Commands:
42
- fir build_apk BUILD_DIR # Build Android app (alias: 'ba').
43
- fir build_ipa BUILD_DIR [options] [settings] # Build iOS app (alias: 'bi').
44
- fir help # Describe available commands or one specific command.
45
- fir info APP_FILE_PATH # Show iOS/Android app's info, support ipa/apk file (aliases: 'i').
46
- fir login # Login FIR.im (aliases: 'l').
47
- fir mapping MAPPING_FILE_PATH # Upload app's mapping file to BugHD.com (aliases: 'm').
66
+ fir build_apk BUILD_DIR # Build Android app (alias: `ba`).
67
+ fir build_ipa BUILD_DIR [options] [settings] # Build iOS app (alias: `bi`).
68
+ fir help # Describe available commands or one specific command (aliases: `h`).
69
+ fir info APP_FILE_PATH # Show iOS/Android app info, support ipa/apk file (aliases: `i`).
70
+ fir login # Login fir.im (aliases: `l`).
71
+ fir mapping MAPPING_FILE_PATH # Upload app mapping file to BugHD.com (aliases: `m`).
48
72
  fir me # Show current user info if user is logined.
49
- fir publish APP_FILE_PATH # Publish iOS/Android app to FIR.im, support ipa/apk file (aliases: 'p').
50
- fir upgrade # Upgrade FIR-CLI and quit (aliases: u).
51
- fir version # Show FIR-CLI version number and quit (aliases: v)
73
+ fir publish APP_FILE_PATH # Publish iOS/Android app to fir.im, support ipa/apk file (aliases: `p`).
74
+ fir upgrade # Upgrade fir-cli and quit (aliases: `u`).
75
+ fir version # Show fir-cli version number and quit (aliases: `v`).
76
+
77
+ Options:
78
+ -T, [--token=TOKEN] # User's API Token at fir.im
79
+ -L, [--logfile=LOGFILE] # Path to writable logfile
80
+ -V, [--verbose], [--no-verbose] # Show verbose
81
+ # Default: true
82
+ -q, [--quiet], [--no-quiet] # Silence commands
83
+ -h, [--help], [--no-help] # Show this help message and quit
84
+
52
85
 
53
86
  Options:
54
87
  -T, [--token=TOKEN] # User's API Token at FIR.im
@@ -62,8 +95,8 @@ Options:
62
95
  ### 参数说明
63
96
 
64
97
  - `alias <short command>` 意味着可以用 alias 别名来代替该指令, 例如 `fir b`
65
- - `-T` 用户在 FIR.im 上的 api_token, `publish` 需要使用此参数
66
- - `-L` 指定 FIR-CLI 的输出 log, 默认为 STDOUT
98
+ - `-T` 用户在 fir.im 上的 api_token, `publish` 需要使用此参数
99
+ - `-L` 指定 fir-cli 的输出 log, 默认为 STDOUT
67
100
  - `-V` Verbose, 默认为输出所有信息( INFO 和 ERROR), 如果设置 `--no-verbose`, 则只输出 ERROR 信息
68
101
  - `-q` 静默模式, 默认关闭
69
102
  - `-h` 查看帮助
@@ -81,11 +114,11 @@ $ fir p path/to/application -T YOUR_FIR_TOKEN
81
114
  ```shell
82
115
  I, [2015-08-26T10:08:35.447209 #6774] INFO -- : Publishing app.......
83
116
  I, [2015-08-26T10:08:35.447334 #6774] INFO -- : ✈ -------------------------------------------- ✈
84
- I, [2015-08-26T10:08:35.514378 #6774] INFO -- : Fetching xxxx@FIR.im uploading info......
117
+ I, [2015-08-26T10:08:35.514378 #6774] INFO -- : Fetching xxxx@fir.im uploading info......
85
118
  I, [2015-08-26T10:08:35.692616 #6774] INFO -- : Uploading app......
86
119
  I, [2015-08-26T10:08:36.920226 #6774] INFO -- : Updating devices info......
87
120
  I, [2015-08-26T10:08:37.075149 #6774] INFO -- : ✈ -------------------------------------------- ✈
88
- I, [2015-08-26T10:08:37.075238 #6774] INFO -- : Fetch app info from FIR.im
121
+ I, [2015-08-26T10:08:37.075238 #6774] INFO -- : Fetch app info from fir.im
89
122
  I, [2015-08-26T10:08:37.235071 #6774] INFO -- : Published succeed: http://fir.im/xxxx
90
123
  I, [2015-08-26T10:08:37.235155 #6774] INFO -- :
91
124
  ```
@@ -101,7 +134,7 @@ $ fir l
101
134
  这时系统会提示输入用户 token, 用户 token 可在 **[这里](http://fir.im/user/info)** 查看
102
135
 
103
136
  ```shell
104
- Please enter your FIR.im API Token:
137
+ Please enter your fir.im API Token:
105
138
  I, [2015-08-26T10:10:28.235295 #6833] INFO -- : Login succeed, previous user's email: xxx@xxx.com
106
139
  I, [2015-08-26T10:10:28.245083 #6833] INFO -- : Login succeed, current user's email: xxx@xxx.com
107
140
  I, [2015-08-26T10:10:28.245152 #6833] INFO -- :
@@ -142,7 +175,7 @@ $ fir bi path/to/workspace -w -S <scheme name>
142
175
  $ fir ba path/to/project
143
176
  ```
144
177
 
145
- ### 一步, 从源代码到 FIR.im
178
+ ### 一步, 从源代码到 fir.im
146
179
  > 只需要输入 -p -T
147
180
 
148
181
  ```shell
@@ -157,11 +190,11 @@ I, [2015-08-26T10:12:00.893819 #7273] INFO -- : Build Success
157
190
  I, [2015-08-26T10:12:00.894051 #7273] INFO -- :
158
191
  I, [2015-08-26T10:12:01.026832 #7273] INFO -- : Publishing app.......
159
192
  I, [2015-08-26T10:12:01.026905 #7273] INFO -- : ✈ -------------------------------------------- ✈
160
- I, [2015-08-26T10:12:01.098759 #7273] INFO -- : Fetching im.fir.OnlyiPad@FIR.im uploading info......
193
+ I, [2015-08-26T10:12:01.098759 #7273] INFO -- : Fetching im.fir.OnlyiPad@fir.im uploading info......
161
194
  I, [2015-08-26T10:12:01.249832 #7273] INFO -- : Uploading app......
162
195
  I, [2015-08-26T10:12:01.859718 #7273] INFO -- : Updating devices info......
163
196
  I, [2015-08-26T10:12:02.015517 #7273] INFO -- : ✈ -------------------------------------------- ✈
164
- I, [2015-08-26T10:12:02.015588 #7273] INFO -- : Fetch app info from FIR.im
197
+ I, [2015-08-26T10:12:02.015588 #7273] INFO -- : Fetch app info from fir.im
165
198
  I, [2015-08-26T10:12:02.210391 #7273] INFO -- : Published succeed: http://fir.im/xxxx
166
199
  I, [2015-08-26T10:12:02.210459 #7273] INFO -- :
167
200
  I, [2015-08-26T10:12:02.210520 #7273] INFO -- :
@@ -201,7 +234,7 @@ $ fir publish -h
201
234
 
202
235
  ## 永远使用最新功能
203
236
 
204
- 下面的指令会自动更新 FIR-CLI
237
+ 下面的指令会自动更新 fir-cli
205
238
 
206
239
  ```shell
207
240
  $ fir upgrade
data/Rakefile CHANGED
@@ -1,10 +1,10 @@
1
- require "bundler/gem_tasks"
1
+ require 'bundler/gem_tasks'
2
2
  require File.expand_path('../test/test_helper', __FILE__)
3
3
 
4
- desc "Run the tests."
4
+ desc 'Run the tests.'
5
5
  task :test do
6
- $: << "lib" << "test"
7
- Dir["test/*_test.rb"].each { |f| require f[5..-4] }
6
+ $LOAD_PATH << 'lib' << 'test'
7
+ Dir['test/*_test.rb'].each { |f| require f[5..-4] }
8
8
  end
9
9
 
10
10
  task default: :test
data/bin/fir CHANGED
@@ -4,7 +4,7 @@
4
4
  require_relative '../lib/fir'
5
5
 
6
6
  begin
7
- system "export LC_ALL=en_US.UTF-8;export LC_CTYPE=en_US.UTF-8;export LANG=en_US.UTF-8"
7
+ OS.set_locale
8
8
  FIR::CLI.start ARGV
9
9
  rescue => e
10
10
  raise e if $DEBUG
data/fir-cli.gemspec CHANGED
@@ -5,20 +5,19 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
  require 'fir/version'
6
6
 
7
7
  Gem::Specification.new do |spec|
8
- spec.name = "fir-cli"
8
+ spec.name = 'fir-cli'
9
9
  spec.version = FIR::VERSION
10
- spec.authors = ["FIR.im", "NaixSpirit"]
11
- spec.email = ["dev@fir.im"]
12
- spec.date = Time.now.strftime("%Y-%m-%d")
13
- spec.summary = %q{FIR.im command tool}
14
- spec.description = %q{FIR.im command tool, support iOS and Android}
15
- spec.homepage = "http://blog.fir.im/fir_cli"
16
- spec.license = "MIT"
17
-
10
+ spec.authors = ['NaixSpirit']
11
+ spec.email = ['dev@fir.im']
12
+ spec.date = Time.now.strftime('%Y-%m-%d')
13
+ spec.summary = 'fir.im command tool'
14
+ spec.description = 'fir.im command tool, support iOS and Android'
15
+ spec.homepage = 'http://blog.fir.im/fir_cli'
16
+ spec.license = 'MIT'
18
17
  spec.files = `git ls-files -z`.split("\x0")
19
18
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
20
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
21
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
22
21
 
23
22
  spec.post_install_message = %q(
24
23
  ______________ ________ ____
@@ -28,21 +27,20 @@ Gem::Specification.new do |spec|
28
27
  /_/ /___/_/ |_| \____/_____/___/
29
28
 
30
29
  ## 更新记录
31
- ### FIR-CLI 1.2.2
32
- - 完全兼容新版 API
33
- - 请使用新版 API Token
34
- - 新版 API Token 查看地址: `http://fir.im/user/info`
35
- - 修正不同系统非 UTF-8 编码问题
36
- - [fir-cli](https://github.com/FIRHQ/fir-cli) 已经开源, 欢迎 fork, issue 和 pull request
30
+ ### fir-cli 1.2.3
31
+ - 修正 `build_apk` 无法找到 apk 的 bug
32
+ - build 完毕后, ipa 和 apk 均以 $name-$version-Build-$build 形式命名
33
+ - [fir-cli](https://github.com/FIRHQ/fir-cli) 已经开源
34
+ - 欢迎 fork, issue 和 pull request
37
35
  )
38
36
 
39
- spec.add_development_dependency "bundler", "~> 1.7"
40
- spec.add_development_dependency "rake", "~> 10.0"
41
- spec.add_development_dependency "minitest", "~> 5.7"
42
- spec.add_development_dependency "pry", "~> 0.10"
37
+ spec.add_development_dependency 'bundler', '~> 1.7'
38
+ spec.add_development_dependency 'rake', '~> 10.0'
39
+ spec.add_development_dependency 'minitest', '~> 5.7'
40
+ spec.add_development_dependency 'pry', '~> 0.10'
43
41
 
44
- spec.add_dependency "thor", "~> 0.19"
45
- spec.add_dependency "CFPropertyList", "~> 2.3"
46
- spec.add_dependency "rest-client", "~> 1.7"
47
- spec.add_dependency "ruby_android", "~> 0.7"
42
+ spec.add_dependency 'thor', '~> 0.19'
43
+ spec.add_dependency 'CFPropertyList', '~> 2.3'
44
+ spec.add_dependency 'rest-client', '~> 1.7'
45
+ spec.add_dependency 'ruby_android', '~> 0.7'
48
46
  end
data/lib/fir/api.yml CHANGED
@@ -1,11 +1,11 @@
1
1
  fir:
2
- domain: 'http://fir.im'
3
- base_url: 'http://api.fir.im'
4
- user_url: 'http://api.fir.im/user'
5
- app_url: 'http://api.fir.im/apps'
2
+ domain: 'http://fir.im'
3
+ base_url: 'http://api.fir.im'
4
+ user_url: 'http://api.fir.im/user'
5
+ app_url: 'http://api.fir.im/apps'
6
6
  udids_url: 'http://api.fir.im/devices/multi_udid'
7
7
  bughd:
8
- domain: 'http://bughd.com'
9
- base_url: 'http://api.bughd.com'
10
- project_url: 'http://api.bughd.com/projects'
8
+ domain: 'http://bughd.com'
9
+ base_url: 'http://api.bughd.com'
10
+ project_url: 'http://api.bughd.com/projects'
11
11
  full_version_url: 'http://api.bughd.com/full_versions'
data/lib/fir/cli.rb CHANGED
@@ -2,16 +2,16 @@
2
2
 
3
3
  module FIR
4
4
  class CLI < Thor
5
- class_option :token, type: :string, aliases: "-T", desc: "User's API Token at FIR.im"
6
- class_option :logfile, type: :string, aliases: "-L", desc: "Path to writable logfile"
7
- class_option :verbose, type: :boolean, aliases: "-V", desc: "Show verbose", default: true
8
- class_option :quiet, type: :boolean, aliases: "-q", desc: "Silence commands"
9
- class_option :help, type: :boolean, aliases: "-h", desc: "Show this help message and quit"
5
+ class_option :token, type: :string, aliases: '-T', desc: "User's API Token at fir.im"
6
+ class_option :logfile, type: :string, aliases: '-L', desc: 'Path to writable logfile'
7
+ class_option :verbose, type: :boolean, aliases: '-V', desc: 'Show verbose', default: true
8
+ class_option :quiet, type: :boolean, aliases: '-q', desc: 'Silence commands'
9
+ class_option :help, type: :boolean, aliases: '-h', desc: 'Show this help message and quit'
10
10
 
11
- desc "build_ipa BUILD_DIR [options] [settings]", "Build iOS app (alias: 'bi')."
11
+ desc 'build_ipa BUILD_DIR [options] [settings]', 'Build iOS app (alias: `bi`).'
12
12
  long_desc <<-LONGDESC
13
13
  `build_ipa` command will auto build your project/workspace to an ipa package
14
- and it also can auto publish your built ipa to FIR.im if use `-p` option.
14
+ and it also can auto publish your built ipa to fir.im if use `-p` option.
15
15
  Internally, it use `xcodebuild` to accomplish these things, use `man xcodebuild` to get more information.
16
16
 
17
17
  Example:
@@ -22,57 +22,57 @@ module FIR
22
22
 
23
23
  $ fir bi <workspace dir> -w -S <scheme name> [-C <configuration>] [-t <target name>] [-o <ipa output dir>] [settings] [-c <changelog>] [-p -T <your api token>]
24
24
  LONGDESC
25
- map ["b", "bi"] => :build_ipa
26
- method_option :workspace, type: :boolean, aliases: "-w", desc: "true/false if build workspace"
27
- method_option :scheme, type: :string, aliases: "-S", desc: "Set the scheme NAME if build workspace"
28
- method_option :configuration, type: :string, aliases: "-C", desc: "Use the build configuration NAME for building each target"
29
- method_option :target, type: :string, aliases: "-t", desc: "Build the target specified by targetname"
30
- method_option :output, type: :string, aliases: "-o", desc: "IPA output path, the default is: BUILD_DIR/fir_build_ipa"
31
- method_option :name, type: :string, aliases: "-n", desc: "IPA name, the default is: YOUR PROJECT NAME"
32
- method_option :publish, type: :boolean, aliases: "-p", desc: "true/false if publish to FIR.im"
33
- method_option :short, type: :string, aliases: "-s", desc: "Set custom short link if publish to FIR.im"
34
- method_option :changelog, type: :string, aliases: "-c", desc: "Set changelog if publish to FIR.im"
35
- method_option :mapping, type: :boolean, aliases: "-M", desc: "true/false if upload app's mapping file to BugHD.com"
36
- method_option :proj, type: :string, aliases: "-P", desc: "Project id in BugHD.com if upload app's mapping file"
37
- def build_ipa *args
25
+ map ['b', 'bi'] => :build_ipa
26
+ method_option :workspace, type: :boolean, aliases: '-w', desc: 'true/false if build workspace'
27
+ method_option :scheme, type: :string, aliases: '-S', desc: 'Set the scheme NAME if build workspace'
28
+ method_option :configuration, type: :string, aliases: '-C', desc: 'Use the build configuration NAME for building each target'
29
+ method_option :target, type: :string, aliases: '-t', desc: 'Build the target specified by targetname'
30
+ method_option :output, type: :string, aliases: '-o', desc: 'IPA output path, the default is: BUILD_DIR/fir_build_ipa'
31
+ method_option :name, type: :string, aliases: '-n', desc: 'IPA name, the default is: YOUR PROJECT NAME'
32
+ method_option :publish, type: :boolean, aliases: '-p', desc: 'true/false if publish to fir.im'
33
+ method_option :short, type: :string, aliases: '-s', desc: 'Set custom short link if publish to fir.im'
34
+ method_option :changelog, type: :string, aliases: '-c', desc: 'Set changelog if publish to fir.im'
35
+ method_option :mapping, type: :boolean, aliases: '-M', desc: 'true/false if upload app mapping file to BugHD.com'
36
+ method_option :proj, type: :string, aliases: '-P', desc: 'Project id in BugHD.com if upload app mapping file'
37
+ def build_ipa(*args)
38
38
  prepare :build_ipa
39
39
 
40
40
  FIR.build_ipa(*args, options)
41
41
  end
42
42
 
43
- desc "build_apk BUILD_DIR", "Build Android app (alias: 'ba')."
43
+ desc 'build_apk BUILD_DIR', 'Build Android app (alias: `ba`).'
44
44
  long_desc <<-LONGDESC
45
45
  `build_apk` command will auto build your project to an apk package
46
- and it also can auto publish your built apk to FIR.im if use `-p` option.
46
+ and it also can auto publish your built apk to fir.im if use `-p` option.
47
47
  Internally, it use `gradle` to accomplish these things, use `gradle --help` to get more information.
48
48
 
49
49
  Example:
50
50
 
51
51
  $ fir ba <project dir> [-o <apk output dir> -c <changelog> -p -T <your api token>]
52
52
  LONGDESC
53
- map ["ba"] => :build_apk
54
- method_option :output, type: :string, aliases: "-o", desc: "APK output path, the default is: BUILD_DIR/build/outputs/apk"
55
- method_option :publish, type: :boolean, aliases: "-p", desc: "true/false if publish to FIR.im"
56
- method_option :short, type: :string, aliases: "-s", desc: "Set custom short link if publish to FIR.im"
57
- method_option :changelog, type: :string, aliases: "-c", desc: "Set changelog if publish to FIR.im"
58
- def build_apk *args
53
+ map ['ba'] => :build_apk
54
+ method_option :output, type: :string, aliases: '-o', desc: 'APK output path, the default is: BUILD_DIR/build/outputs/apk'
55
+ method_option :publish, type: :boolean, aliases: '-p', desc: 'true/false if publish to fir.im'
56
+ method_option :short, type: :string, aliases: '-s', desc: 'Set custom short link if publish to fir.im'
57
+ method_option :changelog, type: :string, aliases: '-c', desc: 'Set changelog if publish to fir.im'
58
+ def build_apk(*args)
59
59
  prepare :build_apk
60
60
 
61
61
  FIR.build_apk(*args, options)
62
62
  end
63
63
 
64
- desc "info APP_FILE_PATH", "Show iOS/Android app's info, support ipa/apk file (aliases: 'i')."
65
- map "i" => :info
66
- method_option :all, type: :boolean, aliases: "-a", desc: "Show all information in application"
67
- def info *args
64
+ desc 'info APP_FILE_PATH', 'Show iOS/Android app info, support ipa/apk file (aliases: `i`).'
65
+ map 'i' => :info
66
+ method_option :all, type: :boolean, aliases: '-a', desc: 'Show all information in application'
67
+ def info(*args)
68
68
  prepare :info
69
69
 
70
70
  FIR.info(*args, options)
71
71
  end
72
72
 
73
- desc "publish APP_FILE_PATH", "Publish iOS/Android app to FIR.im, support ipa/apk file (aliases: 'p')."
73
+ desc 'publish APP_FILE_PATH', 'Publish iOS/Android app to fir.im, support ipa/apk file (aliases: `p`).'
74
74
  long_desc <<-LONGDESC
75
- `publish` command will publish your app file to FIR.im, also the command support to publish app's short & changelog.
75
+ `publish` command will publish your app file to fir.im, also the command support to publish app's short & changelog.
76
76
 
77
77
  Example:
78
78
 
@@ -80,34 +80,34 @@ module FIR
80
80
 
81
81
  $ fir p <app file path> [-c <changelog> -s <custom short link> -m <mapping file path> -P <bughd project id> -T <your api token>]
82
82
  LONGDESC
83
- map "p" => :publish
84
- method_option :short, type: :string, aliases: "-s", desc: "Set custom short link"
85
- method_option :changelog, type: :string, aliases: "-c", desc: "Set changelog"
86
- method_option :mappingfile, type: :string, aliases: "-m", desc: "App's mapping file"
87
- method_option :proj, type: :string, aliases: "-P", desc: "Project id in BugHD.com if upload app's mapping file"
88
- def publish *args
83
+ map 'p' => :publish
84
+ method_option :short, type: :string, aliases: '-s', desc: 'Set custom short link'
85
+ method_option :changelog, type: :string, aliases: '-c', desc: 'Set changelog'
86
+ method_option :mappingfile, type: :string, aliases: '-m', desc: 'App mapping file'
87
+ method_option :proj, type: :string, aliases: '-P', desc: 'Project id in BugHD.com if upload app mapping file'
88
+ def publish(*args)
89
89
  prepare :publish
90
90
 
91
91
  FIR.publish(*args, options)
92
92
  end
93
93
 
94
- desc "login", "Login FIR.im (aliases: 'l')."
95
- map "l" => :login
96
- def login *args
94
+ desc 'login', 'Login fir.im (aliases: `l`).'
95
+ map 'l' => :login
96
+ def login(*args)
97
97
  prepare :login
98
98
 
99
- token = options[:token] || args.first || ask("Please enter your FIR.im API Token:", :white, echo: true)
99
+ token = options[:token] || args.first || ask('Please enter your fir.im API Token:', :white, echo: true)
100
100
  FIR.login(token)
101
101
  end
102
102
 
103
- desc "me", "Show current user info if user is logined."
104
- def me *args
103
+ desc 'me', 'Show current user info if user is logined.'
104
+ def me
105
105
  prepare :me
106
106
 
107
107
  FIR.me
108
108
  end
109
109
 
110
- desc "mapping MAPPING_FILE_PATH", "Upload app's mapping file to BugHD.com (aliases: 'm')."
110
+ desc 'mapping MAPPING_FILE_PATH', 'Upload app mapping file to BugHD.com (aliases: `m`).'
111
111
  long_desc <<-LONGDESC
112
112
  `mapping` command will upload your app's mapping file to BugHD.com if you have the same app/project in BugHD.com.
113
113
 
@@ -115,39 +115,39 @@ module FIR
115
115
 
116
116
  $ fir m <mapping file path> -P <bughd project id> -v <app version> -b <app build> -T <your fir api token>
117
117
  LONGDESC
118
- map "m" => :mapping
119
- method_option :proj, type: :string, aliases: "-P", desc: "Project id in BugHD.com"
120
- method_option :version, type: :string, aliases: "-v", desc: "App version"
121
- method_option :build, type: :string, aliases: "-b", desc: "App build"
122
- def mapping *args
118
+ map 'm' => :mapping
119
+ method_option :proj, type: :string, aliases: '-P', desc: 'Project id in BugHD.com'
120
+ method_option :version, type: :string, aliases: '-v', desc: 'App version'
121
+ method_option :build, type: :string, aliases: '-b', desc: 'App build'
122
+ def mapping(*args)
123
123
  prepare :mapping
124
124
 
125
125
  FIR.mapping(*args, options)
126
126
  end
127
127
 
128
- desc "upgrade", "Upgrade FIR-CLI and quit (aliases: u)."
129
- map "u" => :upgrade
128
+ desc 'upgrade', 'Upgrade fir-cli and quit (aliases: `u`).'
129
+ map 'u' => :upgrade
130
130
  def upgrade
131
131
  prepare :upgrade
132
132
 
133
- say "✈ Upgrade FIR-CLI (use `gem install fir-cli --no-ri --no-rdoc`)"
133
+ say '✈ Upgrade fir-cli (use `gem install fir-cli --no-ri --no-rdoc`)'
134
134
  say `gem install fir-cli --no-ri --no-rdoc`
135
135
  end
136
136
 
137
- desc "version", "Show FIR-CLI version number and quit (aliases: v)"
138
- map ["v", "-v", "--version"] => :version
137
+ desc 'version', 'Show fir-cli version number and quit (aliases: `v`).'
138
+ map ['v', '-v', '--version'] => :version
139
139
  def version
140
- say "FIR-CLI #{FIR::VERSION}"
140
+ say 'fir-cli #{FIR::VERSION}'
141
141
  end
142
142
 
143
- desc "help", "Describe available commands or one specific command."
143
+ desc 'help', 'Describe available commands or one specific command (aliases: `h`).'
144
144
  map Thor::HELP_MAPPINGS => :help
145
- def help command = nil, subcommand = false
145
+ def help(command = nil, subcommand = false)
146
146
  super
147
147
  end
148
148
 
149
149
  no_commands do
150
- def invoke_command command, *args
150
+ def invoke_command(command, *args)
151
151
  logfile = options[:logfile].blank? ? STDOUT : options[:logfile]
152
152
  logfile = '/dev/null' if options[:quiet]
153
153
 
@@ -159,13 +159,12 @@ module FIR
159
159
 
160
160
  private
161
161
 
162
- def prepare task
163
- if options.help?
164
- help(task.to_s)
165
- raise SystemExit
166
- end
167
- $DEBUG = true if ENV["DEBUG"]
162
+ def prepare(task)
163
+ if options.help?
164
+ help(task.to_s)
165
+ fail SystemExit
168
166
  end
169
-
167
+ $DEBUG = true if ENV['DEBUG']
168
+ end
170
169
  end
171
170
  end
@@ -125,7 +125,7 @@ module ActiveSupport
125
125
 
126
126
  def included(base = nil, &block)
127
127
  if base.nil?
128
- raise MultipleIncludedBlocks if instance_variable_defined?(:@_included_block)
128
+ fail MultipleIncludedBlocks if instance_variable_defined?(:@_included_block)
129
129
 
130
130
  @_included_block = block
131
131
  else
@@ -134,9 +134,11 @@ module ActiveSupport
134
134
  end
135
135
 
136
136
  def class_methods(&class_methods_module_definition)
137
- mod = const_defined?(:ClassMethods, false) ?
138
- const_get(:ClassMethods) :
139
- const_set(:ClassMethods, Module.new)
137
+ if const_defined?(:ClassMethods, false)
138
+ mod = const_get(:ClassMethods)
139
+ else
140
+ mod = const_set(:ClassMethods, Module.new)
141
+ end
140
142
 
141
143
  mod.module_eval(&class_methods_module_definition)
142
144
  end
@@ -1,7 +1,6 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  class Object
4
- # activesupport/lib/active_support/core_ext/object/blank.rb
5
4
  # An object is blank if it's false, empty, or a whitespace string.
6
5
  # For example, '', ' ', +nil+, [], and {} are all blank.
7
6
  #
@@ -15,7 +14,7 @@ class Object
15
14
  #
16
15
  # @return [true, false]
17
16
  def blank?
18
- respond_to?(:empty?) ? !!empty? : !self
17
+ respond_to?(:empty?) ? empty? : !self
19
18
  end
20
19
 
21
20
  # An object is present if it's not blank.
@@ -155,7 +154,7 @@ class Hash
155
154
  # hash.symbolize_keys
156
155
  # # => {:name=>"Rob", :age=>"28"}
157
156
  def symbolize_keys
158
- transform_keys{ |key| key.to_sym rescue key }
157
+ transform_keys { |key| key.to_sym rescue key }
159
158
  end
160
159
 
161
160
  # Returns a new hash with all keys converted by the block operation.
@@ -179,10 +178,11 @@ class Hash
179
178
  # hash.deep_symbolize_keys
180
179
  # # => {:person=>{:name=>"Rob", :age=>"28"}}
181
180
  def deep_symbolize_keys
182
- deep_transform_keys{ |key| key.to_sym rescue key }
181
+ deep_transform_keys { |key| key.to_sym rescue key }
183
182
  end
184
183
 
185
184
  private
185
+
186
186
  # support methods for deep transforming nested hashes and arrays
187
187
  def _deep_transform_keys_in_object(object, &block)
188
188
  case object
@@ -191,7 +191,7 @@ class Hash
191
191
  result[yield(key)] = _deep_transform_keys_in_object(value, &block)
192
192
  end
193
193
  when Array
194
- object.map {|e| _deep_transform_keys_in_object(e, &block) }
194
+ object.map { |e| _deep_transform_keys_in_object(e, &block) }
195
195
  else
196
196
  object
197
197
  end
@@ -199,30 +199,28 @@ class Hash
199
199
  end
200
200
 
201
201
  class File
202
-
203
202
  class << self
204
203
  # A binary file is Mach-O dSYM
205
204
  #
206
205
  # @return [true, false]
207
- def is_dsym? file_path
208
- !!(`file -b #{file_path}` =~ /dSYM/)
206
+ def dsym?(file_path)
207
+ !(`file -b #{file_path}` =~ /dSYM/).nil?
209
208
  end
210
209
 
211
210
  # A file is ASCII text
212
211
  #
213
212
  # @return [true, false]
214
- def is_txt? file_path
215
- !!(`file -b #{file_path}` =~ /text/)
213
+ def text?(file_path)
214
+ !(`file -b #{file_path}` =~ /text/).nil?
216
215
  end
217
216
  end
218
217
  end
219
218
 
220
219
  class String
221
-
222
220
  # Convert String encoding to UTF-8
223
221
  #
224
222
  # @return string
225
223
  def to_utf8
226
- self.encode(Encoding.find('UTF-8'), invalid: :replace, undef: :replace, replace: '')
224
+ encode(Encoding.find('UTF-8'), invalid: :replace, undef: :replace, replace: '')
227
225
  end
228
226
  end