fir-cli 1.6.3 → 1.6.4.beta1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.flow-plugin.yml +14 -0
- data/.gitignore +2 -0
- data/Dockerfile +12 -0
- data/Gemfile +2 -2
- data/README.md +17 -9
- data/doc/publish.md +0 -2
- data/fir-cli.gemspec +5 -6
- data/fir.sh +46 -0
- data/install.sh +210 -0
- data/lib/fir/patches/default_headers.rb +1 -1
- data/lib/fir/util/http.rb +13 -23
- data/lib/fir/util/publish.rb +18 -10
- data/lib/fir/version.rb +1 -1
- metadata +29 -14
- data/doc/build_apk.md +0 -42
- data/doc/build_ipa.md +0 -66
- data/doc/mapping.md +0 -22
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f266a2ae75696a7e7f5dfe01ca87f63b138491d6
|
4
|
+
data.tar.gz: 562698c806b22265e4a2cbca22477c4189c3e8d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 334840d09c38a1fd9cf71986d21941ed709e7a22e0ad026a507e0b2be16f674ca1afcb3ca0183cb500d6c9a8a5acae430a1bf761ec25b040c07bd1f77fd9691f
|
7
|
+
data.tar.gz: 4e0b386315799ee1264b8c3dc20183793cad65b778b5b2ae66e20a276b6fd2f165862dd3b4201a0a4bd09bee6ecd8f0e7d667de6acf888494a9d1369f15fb7e9
|
data/.flow-plugin.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
name: fir-cli
|
2
|
+
properties:
|
3
|
+
- name: PLUGIN_FIR_TOKEN
|
4
|
+
type: string
|
5
|
+
required: true
|
6
|
+
|
7
|
+
- name: PLUGIN_FIR_APP_PATH
|
8
|
+
type: string
|
9
|
+
required: false
|
10
|
+
|
11
|
+
run: |
|
12
|
+
gem build fir-cli.gemspec
|
13
|
+
gem install *.gem
|
14
|
+
fir publish ${PLUGIN_FIR_APP_PATH} --token=$PLUGIN_FIR_TOKEN
|
data/.gitignore
CHANGED
data/Dockerfile
ADDED
data/Gemfile
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
if ENV['USE_OFFICIAL_GEM_SOURCE']
|
3
3
|
source 'https://rubygems.org'
|
4
4
|
else
|
5
|
-
source '
|
5
|
+
source 'http://gems.ruby-china.org'
|
6
6
|
end
|
7
7
|
|
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
@@ -8,9 +8,12 @@
|
|
8
8
|
[![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/FIRHQ/fir-cli?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
|
9
9
|
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/FIRHQ/fir-cli/master/LICENSE.txt)
|
10
10
|
|
11
|
-
fir.im-cli 可以通过指令查看, 上传,
|
11
|
+
fir.im-cli 可以通过指令查看, 上传, iOS/Android 应用.
|
12
12
|
|
13
13
|
![fir-cli](http://7rf35s.com1.z0.glb.clouddn.com/fir-cli-new.gif)
|
14
|
+
## 重要提示
|
15
|
+
- 由于部分地区上传时遇到的证书问题, 新版本默认忽略证书校验. 如需打开, 请在命令前加入`UPLOAD_VERIFY_SSL=1`
|
16
|
+
- 介于在ios 等编译越来越复杂化, fir-cli 自带的编译功能较为简单, 不能很好的满足用户需求, 推荐用户使用 fastlane (fastlane gym)进行打包,生成好 ipa 文件后,再使用 fir publish 上传生成的ipa 包
|
14
17
|
|
15
18
|
## 文档
|
16
19
|
|
@@ -19,17 +22,22 @@ fir.im-cli 可以通过指令查看, 上传, 编译 iOS/Android 应用.
|
|
19
22
|
- [fir info 查看 ipa/apk 信息](https://github.com/FIRHQ/fir-cli/blob/master/doc/info.md)
|
20
23
|
- [fir login & fir me 登录相关](https://github.com/FIRHQ/fir-cli/blob/master/doc/login.md)
|
21
24
|
- [fir publish 发布应用到 fir.im](https://github.com/FIRHQ/fir-cli/blob/master/doc/publish.md)
|
22
|
-
- [fir build_ipa 编译打包 ipa 文件](https://github.com/FIRHQ/fir-cli/blob/master/doc/build_ipa.md)
|
23
|
-
- [fir build_apk 编译打包 apk 文件](https://github.com/FIRHQ/fir-cli/blob/master/doc/build_apk.md)
|
24
|
-
- [fir mapping 上传符号表至 BugHD.com](https://github.com/FIRHQ/fir-cli/blob/master/doc/mapping.md)
|
25
25
|
- [fir upgrade 升级相关](https://github.com/FIRHQ/fir-cli/blob/master/doc/upgrade.md)
|
26
26
|
|
27
|
-
##
|
27
|
+
## Docker 使用 fir-cli
|
28
|
+
```
|
29
|
+
# 方便之处是: 不需要安装 Ruby 环境只需要安装Docker环境就行把镜像 flowci/fir-cli 拉下来就能跑
|
30
|
+
# 不方便之处是: 不能使用 xcode 或者 gradle 编译代码,只能 publish 编译好的文件
|
31
|
+
|
32
|
+
curl https://raw.githubusercontent.com/FIRHQ/fir-cli/master/fir.sh -o /usr/local/bin/fir
|
33
|
+
chmod +x /usr/local/bin/fir
|
28
34
|
|
29
|
-
|
35
|
+
fir login token
|
36
|
+
fir help
|
37
|
+
```
|
38
|
+
## 提交反馈
|
30
39
|
|
31
|
-
|
40
|
+
- 联系微信 `atpking`
|
32
41
|
|
33
|
-
|
42
|
+
- 使用 Github 的 [Issue](https://github.com/FIRHQ/fir-cli/issues)
|
34
43
|
|
35
|
-
![](http://7rf35s.com1.z0.glb.clouddn.com/coffee.png)
|
data/doc/publish.md
CHANGED
@@ -11,8 +11,6 @@ Options:
|
|
11
11
|
-s, [--short=SHORT] # Set custom short link
|
12
12
|
-c, [--changelog=CHANGELOG] # Set changelog
|
13
13
|
-Q, [--qrcode], [--no-qrcode] # Generate qrcode
|
14
|
-
-m, [--mappingfile=MAPPINGFILE] # App mapping file
|
15
|
-
-P, [--proj=PROJ] # Project id in BugHD.com if upload app mapping file
|
16
14
|
[--open], [--no-open] # true/false if open for everyone
|
17
15
|
[--password=PASSWORD] # Set password for app
|
18
16
|
-T, [--token=TOKEN] # User's API Token at fir.im
|
data/fir-cli.gemspec
CHANGED
@@ -7,8 +7,8 @@ require 'fir/version'
|
|
7
7
|
Gem::Specification.new do |spec|
|
8
8
|
spec.name = 'fir-cli'
|
9
9
|
spec.version = FIR::VERSION
|
10
|
-
spec.authors = ['NaixSpirit']
|
11
|
-
spec.email = ['
|
10
|
+
spec.authors = ['NaixSpirit', 'atpking']
|
11
|
+
spec.email = ['atpking@gmail.com']
|
12
12
|
spec.date = Time.now.strftime('%Y-%m-%d')
|
13
13
|
spec.summary = 'fir.im command tool'
|
14
14
|
spec.description = 'fir.im command tool, support iOS and Android'
|
@@ -27,9 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
/_/ /___/_/ |_| \____/_____/___/
|
28
28
|
|
29
29
|
## 更新记录
|
30
|
-
|
31
|
-
- 修复了在 ruby 2.4.0 中登录出错的bug
|
32
|
-
- 详细更新记录, 请查看: https://github.com/FIRHQ/fir-cli/blob/master/CHANGELOG
|
30
|
+
- 忽略了证书错误
|
33
31
|
- [fir-cli](https://github.com/FIRHQ/fir-cli) 已经开源
|
34
32
|
- 欢迎 fork, issue 和 pull request
|
35
33
|
)
|
@@ -44,5 +42,6 @@ Gem::Specification.new do |spec|
|
|
44
42
|
spec.add_dependency 'rest-client', '~> 2.0'
|
45
43
|
spec.add_dependency 'ruby_android', '~> 0.7.7'
|
46
44
|
spec.add_dependency 'rqrcode', '~> 0.7'
|
47
|
-
spec.add_dependency 'xcodeproj', '~> 1.
|
45
|
+
spec.add_dependency 'xcodeproj', '~> 1.5'
|
46
|
+
spec.add_dependency 'api_tools'
|
48
47
|
end
|
data/fir.sh
ADDED
@@ -0,0 +1,46 @@
|
|
1
|
+
#!/bin/sh
|
2
|
+
# because fir-cli dependent ruby enviroment, this shell is dependent ruby docker
|
3
|
+
# so xcode and gradle not use
|
4
|
+
# this shell only use to publish apk or ipa , build is not run
|
5
|
+
# fir publish **.apk
|
6
|
+
# echo $(curl https://raw.githubusercontent.com/FIRHQ/fir-cli/master/fir.sh) > /usr/local/bin/fir
|
7
|
+
|
8
|
+
mountFolder=$HOME/fir-cli/data
|
9
|
+
destFolder=/fir-cli
|
10
|
+
|
11
|
+
mkdir -p $mountFolder
|
12
|
+
|
13
|
+
# find path file name
|
14
|
+
function findFileName() {
|
15
|
+
echo ${1##*/}
|
16
|
+
}
|
17
|
+
|
18
|
+
# move file to mount folder
|
19
|
+
tmpFiles=()
|
20
|
+
cmds=()
|
21
|
+
for i in $@; do
|
22
|
+
if [ -d $i ];then
|
23
|
+
cp -r $i $mountFolder
|
24
|
+
elif [ -f $i ];then
|
25
|
+
cp $i $mountFolder
|
26
|
+
else
|
27
|
+
cmds+=($i)
|
28
|
+
continue
|
29
|
+
fi
|
30
|
+
destFile=$destFolder/$(findFileName $i)
|
31
|
+
cmds+=($destFile)
|
32
|
+
tmpFiles+=($mountFolder/$(findFileName $i))
|
33
|
+
done
|
34
|
+
|
35
|
+
# start docker to run fir cmd
|
36
|
+
docker run -v $HOME/fir-cli/data:/fir-cli flowci/fir-cli fir ${cmds[@]}
|
37
|
+
|
38
|
+
# clean folder
|
39
|
+
for i in ${tmpFiles}; do
|
40
|
+
if [ -d $i ];then
|
41
|
+
rm -rf $i
|
42
|
+
elif [ -f $i ];then
|
43
|
+
rm $i
|
44
|
+
fi
|
45
|
+
done
|
46
|
+
|
data/install.sh
ADDED
@@ -0,0 +1,210 @@
|
|
1
|
+
#!/usr/bin/env bash
|
2
|
+
#
|
3
|
+
# Copy from: ruby-bootstrap.sh
|
4
|
+
# Description: This script bootstraps rvm, Ruby
|
5
|
+
|
6
|
+
RVM_FRESH_INSTALL=0 # 0=false, 1=true
|
7
|
+
MIRROR_CHINA_INSTALL=1 # 0=false, 1=true
|
8
|
+
|
9
|
+
|
10
|
+
###
|
11
|
+
### Helper variables and functions
|
12
|
+
###
|
13
|
+
|
14
|
+
# Make the operating system of this host available as $OS.
|
15
|
+
OS_UNKNOWN="os-unknown"
|
16
|
+
OS_MAC="mac"
|
17
|
+
OS_LINUX="linux"
|
18
|
+
case `uname` in
|
19
|
+
Linux*)
|
20
|
+
OS=$OS_LINUX
|
21
|
+
;;
|
22
|
+
Darwin*)
|
23
|
+
OS=$OS_MAC
|
24
|
+
;;
|
25
|
+
*)
|
26
|
+
OS=$OS_UNKNOWN
|
27
|
+
;;
|
28
|
+
esac
|
29
|
+
|
30
|
+
# Colors for shell output
|
31
|
+
if [ "$OS" = "$OS_MAC" ]; then
|
32
|
+
red='\x1B[1;31m'
|
33
|
+
green='\x1B[1;32m'
|
34
|
+
yellow='\x1B[1;33m'
|
35
|
+
blue='\x1B[1;34m'
|
36
|
+
nocolor='\x1B[0m'
|
37
|
+
else
|
38
|
+
red='\e[1;31m'
|
39
|
+
green='\e[1;32m'
|
40
|
+
yellow='\e[1;33m'
|
41
|
+
blue='\e[1;34m'
|
42
|
+
nocolor='\e[0m'
|
43
|
+
fi
|
44
|
+
|
45
|
+
function puts() {
|
46
|
+
local opts=''
|
47
|
+
if [ "$1" = "-n" ]; then
|
48
|
+
opts='-n'
|
49
|
+
shift
|
50
|
+
fi
|
51
|
+
msg="$@"
|
52
|
+
echo -e $opts "${blue}${msg}${nocolor}"
|
53
|
+
}
|
54
|
+
|
55
|
+
function warn() {
|
56
|
+
local opts=''
|
57
|
+
if [ "$1" = "-n" ]; then
|
58
|
+
opts='-n'
|
59
|
+
shift
|
60
|
+
fi
|
61
|
+
msg="$@"
|
62
|
+
echo -e $opts "${yellow}${msg}${nocolor}"
|
63
|
+
}
|
64
|
+
|
65
|
+
function error() {
|
66
|
+
local opts=''
|
67
|
+
if [ "$1" = "-n" ]; then
|
68
|
+
opts='-n'
|
69
|
+
shift
|
70
|
+
fi
|
71
|
+
msg="$@"
|
72
|
+
echo -e $opts "${red}${msg}${nocolor}"
|
73
|
+
}
|
74
|
+
|
75
|
+
function success() {
|
76
|
+
local opts=''
|
77
|
+
if [ "$1" = "-n" ]; then
|
78
|
+
opts='-n'
|
79
|
+
shift
|
80
|
+
fi
|
81
|
+
msg="$@"
|
82
|
+
echo -e $opts "${green}${msg}${nocolor}"
|
83
|
+
}
|
84
|
+
|
85
|
+
function rvm_post_install_message() {
|
86
|
+
warn "Important: We performed a fresh install of rvm for you."
|
87
|
+
warn " This means you manually perform two tasks now."
|
88
|
+
warn
|
89
|
+
warn "Task 1 of 2:"
|
90
|
+
warn "------------"
|
91
|
+
warn "Please run the following command in all your open shell windows to"
|
92
|
+
warn "start using rvm. In rare cases you need to reopen all shell windows."
|
93
|
+
warn
|
94
|
+
warn " source ~/.rvm/scripts/rvm"
|
95
|
+
warn
|
96
|
+
warn
|
97
|
+
warn "Task 2 of 2:"
|
98
|
+
warn "------------"
|
99
|
+
warn "Permanently update your shell environment to source/add rvm."
|
100
|
+
warn "The example below shows how to do this for Bash."
|
101
|
+
warn
|
102
|
+
warn "Add the following two lines to your ~/.bashrc:"
|
103
|
+
warn
|
104
|
+
warn " PATH=\$PATH:\$HOME/.rvm/bin # Add RVM to PATH for scripting"
|
105
|
+
warn " [[ -s \"\$HOME/.rvm/scripts/rvm\" ]] && source \"\$HOME/.rvm/scripts/rvm\" # Load RVM into a shell session *as a function*"
|
106
|
+
warn
|
107
|
+
warn "That's it! Sorry for the extra work but this is the safest"
|
108
|
+
warn "way to update your environment without breaking anything."
|
109
|
+
}
|
110
|
+
|
111
|
+
function find_ruby_version_file() {
|
112
|
+
local filename=".ruby-version"
|
113
|
+
local curr_dir=$1
|
114
|
+
curr_dir=`cd "$curr_dir"; pwd`
|
115
|
+
local candidate_file="$curr_dir/$filename"
|
116
|
+
while [ ! -f "$candidate_file" ]; do
|
117
|
+
parent_dir=`cd ..; pwd`
|
118
|
+
if [ "$parent_dir" = "$curr_dir" ]; then
|
119
|
+
# We have reached /, we can't go up any further.
|
120
|
+
candidate_file=""
|
121
|
+
break
|
122
|
+
else
|
123
|
+
curr_dir="$parent_dir"
|
124
|
+
candidate_file="$curr_dir/$filename"
|
125
|
+
fi
|
126
|
+
done
|
127
|
+
echo $candidate_file
|
128
|
+
}
|
129
|
+
|
130
|
+
function detect_desired_ruby_version() {
|
131
|
+
local desired_ruby_version=""
|
132
|
+
ruby_version_file=`find_ruby_version_file $(pwd)`
|
133
|
+
if [ -n "$ruby_version_file" ]; then
|
134
|
+
desired_ruby_version=`head -n 1 $ruby_version_file`
|
135
|
+
fi
|
136
|
+
echo $desired_ruby_version
|
137
|
+
}
|
138
|
+
|
139
|
+
# We must detect the desired Ruby version before rvm "manipulates" the shell environment for its own purposes.
|
140
|
+
# I assume the cause of the problem is rvm's variant of the 'cd' command (~/.rvm/scripts/cd), which may alter the
|
141
|
+
# normal behavior of 'cd' in a way that breaks our usage of 'cd' in the function 'find_ruby_version_file' above.
|
142
|
+
puts -n "Detecting desired Ruby version: "
|
143
|
+
|
144
|
+
RUBY_VERSION=`detect_desired_ruby_version`
|
145
|
+
|
146
|
+
if [ -z "$RUBY_VERSION" ]; then
|
147
|
+
warn "FAILED (could not find .ruby-version) -- falling back to latest stable Ruby version"
|
148
|
+
RUBY_VERSION="ruby" # 'ruby' defaults to latest stable version
|
149
|
+
else
|
150
|
+
success "OK ($RUBY_VERSION)"
|
151
|
+
fi
|
152
|
+
|
153
|
+
|
154
|
+
###
|
155
|
+
### Bootstrap RVM
|
156
|
+
###
|
157
|
+
puts -n "Checking for rvm: "
|
158
|
+
which rvm &>/dev/null
|
159
|
+
if [ $? -ne 0 ]; then
|
160
|
+
error "NOT FOUND (If you already ran ruby-bootstrap: have you performed the post-installation steps?)"
|
161
|
+
puts "Installing latest stable version of rvm..."
|
162
|
+
RVM_FRESH_INSTALL=1
|
163
|
+
curl -L https://get.rvm.io | bash -s stable --autolibs=enable --ignore-dotfiles || exit 1
|
164
|
+
else
|
165
|
+
success "OK"
|
166
|
+
fi
|
167
|
+
|
168
|
+
if [ -d ~/.rvm/bin ]; then
|
169
|
+
PATH=$PATH:~/.rvm/bin
|
170
|
+
fi
|
171
|
+
|
172
|
+
source ~/.rvm/scripts/rvm
|
173
|
+
|
174
|
+
if [ $MIRROR_CHINA_INSTALL -eq 1 ]; then
|
175
|
+
echo "ruby_url=https://cache.ruby-china.org/pub/ruby" > ~/.rvm/user/db
|
176
|
+
fi
|
177
|
+
###
|
178
|
+
### Install Ruby
|
179
|
+
###
|
180
|
+
puts "Installing Ruby version ${RUBY_VERSION}..."
|
181
|
+
|
182
|
+
rvm install $RUBY_VERSION
|
183
|
+
|
184
|
+
if [ $? -ne 0 -a $RVM_FRESH_INSTALL -eq 1 ]; then
|
185
|
+
rvm_post_install_message
|
186
|
+
exit 2
|
187
|
+
fi
|
188
|
+
if [ $MIRROR_CHINA_INSTALL -eq 1 ]; then
|
189
|
+
gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/
|
190
|
+
fi
|
191
|
+
|
192
|
+
###
|
193
|
+
### Install Bundler
|
194
|
+
###
|
195
|
+
puts "Installing bundler..."
|
196
|
+
gem install bundler
|
197
|
+
if [ $? -ne 0 -a $RVM_FRESH_INSTALL -eq 1 ]; then
|
198
|
+
rvm_post_install_message
|
199
|
+
exit 3
|
200
|
+
fi
|
201
|
+
|
202
|
+
puts "Installing fir-cli gem"
|
203
|
+
gem install fir-cli --no-rdoc --no-ri
|
204
|
+
if [ $? -ne 0 -a $RVM_FRESH_INSTALL -eq 1 ]; then
|
205
|
+
rvm_post_install_message
|
206
|
+
exit 4
|
207
|
+
fi
|
208
|
+
|
209
|
+
|
210
|
+
puts "run fir -v to check"
|
data/lib/fir/util/http.rb
CHANGED
@@ -1,30 +1,20 @@
|
|
1
|
-
|
1
|
+
|
2
|
+
# frozen_string_literal: true
|
3
|
+
|
4
|
+
require 'api_tools'
|
2
5
|
|
3
6
|
module FIR
|
4
7
|
module Http
|
5
|
-
|
8
|
+
include ApiTools::DefaultRestModule
|
6
9
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
logger.error(e.message.to_s)
|
16
|
-
if @retries < MAX_RETRIES
|
17
|
-
@retries += 1
|
18
|
-
logger.info("Retry \#{@retries} times......")
|
19
|
-
sleep 2
|
20
|
-
retry
|
21
|
-
else
|
22
|
-
exit 1
|
23
|
-
end
|
24
|
-
end
|
25
|
-
JSON.parse(res.body.force_encoding('UTF-8'), symbolize_names: true)
|
26
|
-
end
|
27
|
-
METHOD
|
10
|
+
alias old_default_options default_options
|
11
|
+
def default_options
|
12
|
+
@default_options = old_default_options
|
13
|
+
unless ENV['UPLOAD_VERIFY_SSL']
|
14
|
+
@default_options.merge!(other_base_execute_option: {
|
15
|
+
verify_ssl: OpenSSL::SSL::VERIFY_NONE
|
16
|
+
})
|
17
|
+
end
|
28
18
|
end
|
29
19
|
end
|
30
20
|
end
|
data/lib/fir/util/publish.rb
CHANGED
@@ -42,19 +42,27 @@ module FIR
|
|
42
42
|
update_app_info
|
43
43
|
fetch_app_info
|
44
44
|
end
|
45
|
+
|
46
|
+
%w(binary icon).each do |word|
|
47
|
+
define_method("upload_app_#{word}") do
|
48
|
+
upload_file(word)
|
49
|
+
end
|
50
|
+
end
|
45
51
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
52
|
+
def upload_file(postfix)
|
53
|
+
logger.info "Uploading app #{postfix}......"
|
54
|
+
url = @uploading_info[:cert][postfix.to_sym][:upload_url]
|
55
|
+
info = send("uploading_#{postfix}_info")
|
56
|
+
logger.debug "url = #{url}, info = #{info}"
|
57
|
+
uploaded_info = post(url, info, {
|
58
|
+
params_to_json: false,
|
59
|
+
header: nil
|
60
|
+
})
|
51
61
|
|
52
|
-
|
62
|
+
return if uploaded_info[:is_completed]
|
53
63
|
|
54
|
-
|
55
|
-
|
56
|
-
end
|
57
|
-
METHOD
|
64
|
+
logger.error "Uploading app #{postfix} failed"
|
65
|
+
exit 1
|
58
66
|
end
|
59
67
|
|
60
68
|
def uploading_icon_info
|
data/lib/fir/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,15 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fir-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.4.beta1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- NaixSpirit
|
8
|
+
- atpking
|
8
9
|
autorequire:
|
9
10
|
bindir: bin
|
10
11
|
cert_chain: []
|
11
|
-
date:
|
12
|
+
date: 2018-03-22 00:00:00.000000000 Z
|
12
13
|
dependencies:
|
13
14
|
- !ruby/object:Gem::Dependency
|
14
15
|
name: bundler
|
@@ -142,17 +143,31 @@ dependencies:
|
|
142
143
|
requirements:
|
143
144
|
- - "~>"
|
144
145
|
- !ruby/object:Gem::Version
|
145
|
-
version: '1.
|
146
|
+
version: '1.5'
|
146
147
|
type: :runtime
|
147
148
|
prerelease: false
|
148
149
|
version_requirements: !ruby/object:Gem::Requirement
|
149
150
|
requirements:
|
150
151
|
- - "~>"
|
151
152
|
- !ruby/object:Gem::Version
|
152
|
-
version: '1.
|
153
|
+
version: '1.5'
|
154
|
+
- !ruby/object:Gem::Dependency
|
155
|
+
name: api_tools
|
156
|
+
requirement: !ruby/object:Gem::Requirement
|
157
|
+
requirements:
|
158
|
+
- - ">="
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
type: :runtime
|
162
|
+
prerelease: false
|
163
|
+
version_requirements: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - ">="
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
153
168
|
description: fir.im command tool, support iOS and Android
|
154
169
|
email:
|
155
|
-
-
|
170
|
+
- atpking@gmail.com
|
156
171
|
executables:
|
157
172
|
- console
|
158
173
|
- fir
|
@@ -161,9 +176,11 @@ extensions: []
|
|
161
176
|
extra_rdoc_files: []
|
162
177
|
files:
|
163
178
|
- ".codeclimate.yml"
|
179
|
+
- ".flow-plugin.yml"
|
164
180
|
- ".gitignore"
|
165
181
|
- ".travis.yml"
|
166
182
|
- CHANGELOG
|
183
|
+
- Dockerfile
|
167
184
|
- Gemfile
|
168
185
|
- LICENSE.txt
|
169
186
|
- README.md
|
@@ -171,16 +188,15 @@ files:
|
|
171
188
|
- bin/console
|
172
189
|
- bin/fir
|
173
190
|
- bin/setup
|
174
|
-
- doc/build_apk.md
|
175
|
-
- doc/build_ipa.md
|
176
191
|
- doc/help.md
|
177
192
|
- doc/info.md
|
178
193
|
- doc/install.md
|
179
194
|
- doc/login.md
|
180
|
-
- doc/mapping.md
|
181
195
|
- doc/publish.md
|
182
196
|
- doc/upgrade.md
|
183
197
|
- fir-cli.gemspec
|
198
|
+
- fir.sh
|
199
|
+
- install.sh
|
184
200
|
- lib/fir-cli.rb
|
185
201
|
- lib/fir.rb
|
186
202
|
- lib/fir/api.yml
|
@@ -231,9 +247,8 @@ metadata: {}
|
|
231
247
|
post_install_message: "\n ______________ ________ ____\n /
|
232
248
|
____/ _/ __ \\ / ____/ / / _/\n / /_ / // /_/ /_____/ / / / /
|
233
249
|
/\n / __/ _/ // _, _/_____/ /___/ /____/ /\n /_/ /___/_/ |_| \\____/_____/___/\n\n
|
234
|
-
\ ## 更新记录\n
|
235
|
-
|
236
|
-
已经开源\n - 欢迎 fork, issue 和 pull request\n "
|
250
|
+
\ ## 更新记录\n - 忽略了证书错误\n - [fir-cli](https://github.com/FIRHQ/fir-cli) 已经开源\n -
|
251
|
+
欢迎 fork, issue 和 pull request\n "
|
237
252
|
rdoc_options: []
|
238
253
|
require_paths:
|
239
254
|
- lib
|
@@ -244,12 +259,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
244
259
|
version: '0'
|
245
260
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
246
261
|
requirements:
|
247
|
-
- - "
|
262
|
+
- - ">"
|
248
263
|
- !ruby/object:Gem::Version
|
249
|
-
version:
|
264
|
+
version: 1.3.1
|
250
265
|
requirements: []
|
251
266
|
rubyforge_project:
|
252
|
-
rubygems_version: 2.6.
|
267
|
+
rubygems_version: 2.6.14
|
253
268
|
signing_key:
|
254
269
|
specification_version: 4
|
255
270
|
summary: fir.im command tool
|
data/doc/build_apk.md
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
#### fir build_apk
|
2
|
-
|
3
|
-
`fir build_apk` 指令用于编译用 Gradle 打包 apk, 并且支持直接从 Github/Gitlab 相关 repo 直接编译打包.
|
4
|
-
|
5
|
-
```sh
|
6
|
-
fir build_apk --help
|
7
|
-
Usage:
|
8
|
-
fir build_apk BUILD_DIR
|
9
|
-
|
10
|
-
Options:
|
11
|
-
-B, [--branch=BRANCH] # Set branch if project is a git repo, the default is `master`
|
12
|
-
-o, [--output=OUTPUT] # APK output path, the default is: BUILD_DIR/build/outputs/apk
|
13
|
-
-p, [--publish], [--no-publish] # true/false if publish to fir.im
|
14
|
-
-f, [--flavor=FLAVOR] # Set flavor if have productFlavors
|
15
|
-
-s, [--short=SHORT] # Set custom short link if publish to fir.im
|
16
|
-
-n, [--name=NAME] # Set custom apk name when builded
|
17
|
-
-c, [--changelog=CHANGELOG] # Set changelog if publish to fir.im, support string/file
|
18
|
-
-Q, [--qrcode], [--no-qrcode] # Generate qrcode
|
19
|
-
[--open], [--no-open] # true/false if open for everyone, the default is: true
|
20
|
-
# Default: true
|
21
|
-
[--password=PASSWORD] # Set password for app
|
22
|
-
-T, [--token=TOKEN] # User's API Token at fir.im
|
23
|
-
-L, [--logfile=LOGFILE] # Path to writable logfile
|
24
|
-
-V, [--verbose], [--no-verbose] # Show verbose
|
25
|
-
# Default: true
|
26
|
-
-q, [--quiet], [--no-quiet] # Silence commands
|
27
|
-
-h, [--help], [--no-help] # Show this help message and quit
|
28
|
-
```
|
29
|
-
|
30
|
-
```sh
|
31
|
-
# 简单打包
|
32
|
-
$ fir build_apk path/to/project
|
33
|
-
|
34
|
-
# 打包并上传
|
35
|
-
$ fir ba <project dir> [-o <apk output dir> -c <changelog> -p -Q -T <your api token>]
|
36
|
-
|
37
|
-
# 打包指定的 flavor
|
38
|
-
$ fir ba <project dir> [-f <flavor> -o <apk output dir> -c <changelog> -p -Q -T <your api token>]
|
39
|
-
|
40
|
-
# 打包指定的 git branch
|
41
|
-
$ fir ba <git ssh url> [-B develop -o <apk output dir> -c <changelog> -p -Q -T <your api token>]
|
42
|
-
```
|
data/doc/build_ipa.md
DELETED
@@ -1,66 +0,0 @@
|
|
1
|
-
### fir build_ipa
|
2
|
-
|
3
|
-
`fir build_ipa` 对 `xcodebuild` 原生指令进行了封装, 将常用的参数名简化, 支持全部的自带参数及设置, 同时输出符号表 dSYM 文件, 并且支持直接从 Github/Gitlab 相关 repo 直接编译打包.
|
4
|
-
|
5
|
-
```sh
|
6
|
-
$ fir build_ipa --help
|
7
|
-
fir build_ipa --help
|
8
|
-
Usage:
|
9
|
-
fir build_ipa BUILD_DIR [options] [settings]
|
10
|
-
|
11
|
-
Options:
|
12
|
-
-B, [--branch=BRANCH] # Set branch if project is a git repo, the default is `master`
|
13
|
-
-w, [--workspace], [--no-workspace] # true/false if build workspace
|
14
|
-
-S, [--scheme=SCHEME] # Set the scheme NAME if build workspace
|
15
|
-
-C, [--configuration=CONFIGURATION] # Use the build configuration NAME for building each target
|
16
|
-
-d, [--destination=DESTINATION] # Set the destinationspecifier
|
17
|
-
-t, [--target=TARGET] # Build the target specified by targetname
|
18
|
-
-E, [--export_method=METHOD] # for exportOptionsPlist method, ad-hoc as default
|
19
|
-
-O, [--optionPlistPath] # User defined exportOptionsPlist path
|
20
|
-
-f, [--profile=PROFILE] # Set the export provisioning profile
|
21
|
-
-o, [--output=OUTPUT] # IPA output path, the default is: BUILD_DIR/fir_build_ipa
|
22
|
-
-p, [--publish], [--no-publish] # true/false if publish to fir.im
|
23
|
-
-s, [--short=SHORT] # Set custom short link if publish to fir.im
|
24
|
-
-n, [--name=NAME] # Set custom ipa name when builded
|
25
|
-
-c, [--changelog=CHANGELOG] # Set changelog if publish to fir.im
|
26
|
-
-Q, [--qrcode], [--no-qrcode] # Generate qrcode
|
27
|
-
-M, [--mapping], [--no-mapping] # true/false if upload app mapping file to BugHD.com
|
28
|
-
-P, [--proj=PROJ] # Project id in BugHD.com if upload app mapping file
|
29
|
-
[--open], [--no-open] # true/false if open for everyone, the default is: true
|
30
|
-
# Default: true
|
31
|
-
[--password=PASSWORD] # Set password for app
|
32
|
-
-T, [--token=TOKEN] # User's API Token at fir.im
|
33
|
-
-L, [--logfile=LOGFILE] # Path to writable logfile
|
34
|
-
-V, [--verbose], [--no-verbose] # Show verbose
|
35
|
-
# Default: true
|
36
|
-
-q, [--quiet], [--no-quiet] # Silence commands
|
37
|
-
-h, [--help], [--no-help] # Show this help message and quit
|
38
|
-
```
|
39
|
-
|
40
|
-
示例:
|
41
|
-
|
42
|
-
- 编译 project, 加上 changelog, 并发布到 fir.im 上并生成二维码图片
|
43
|
-
|
44
|
-
```
|
45
|
-
$ fir build_ipa path/to/project -o path/to/output -p -c "this is changelog" -Q -T YOUR_API_TOKEN
|
46
|
-
```
|
47
|
-
|
48
|
-
- 编译 Github 上的 workspace
|
49
|
-
|
50
|
-
```sh
|
51
|
-
$ fir build_ipa git@github.com:xxxx.git -o path/to/output -w -C Release -t allTargets GCC_PREPROCESSOR_DEFINITIONS="FOO=bar"
|
52
|
-
```
|
53
|
-
该指令在指向的目录中,找到第一个 workspace 文件, 对其进行编译. 使用 `Release` 设置,编译策略为 `allTargets`, 同时设置了预编译参数 `FOO`.
|
54
|
-
|
55
|
-
- 编译用 CocoaPods 做依赖管理的 .ipa 包
|
56
|
-
|
57
|
-
```sh
|
58
|
-
$ fir build_ipa path/to/workspace -w -S <scheme name>
|
59
|
-
```
|
60
|
-
|
61
|
-
|
62
|
-
**ChangeLog 1.6.0**
|
63
|
-
|
64
|
-
- 支持 XCode 8.3 打包
|
65
|
-
* 新增参数 -E,指定 exportOptionsPlist plist 文件中的方法, 默认为 ad-hoc
|
66
|
-
* 用户可自定义 -exportOptionsPlist 中的 plist 路径
|
data/doc/mapping.md
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
### fir mapping
|
2
|
-
|
3
|
-
`fir mapping` 指令用于将符号表上传至 [BugHD.com](http://bughd.com) 所对应的项目, 目前已经支持 dSYM 和 txt 两种格式的符号表文件上传, 有以下三种方法上传:
|
4
|
-
|
5
|
-
- 指定 version 和 build 上传:
|
6
|
-
|
7
|
-
```sh
|
8
|
-
$ fir m <mapping file path> -P <bughd project id> -v <app version> -b <app build> -T <your api token>
|
9
|
-
```
|
10
|
-
|
11
|
-
- 在 publish 的时候自动上传:
|
12
|
-
|
13
|
-
```sh
|
14
|
-
$ fir p <app file path> -m <mapping file path> -P <bughd project id> -T <your api token>
|
15
|
-
```
|
16
|
-
- 在 build_ipa 的时候自动上传:
|
17
|
-
|
18
|
-
```sh
|
19
|
-
$ fir b <project dir> -P <bughd project id> -M -p -T <your api token>
|
20
|
-
```
|
21
|
-
|
22
|
-
更详细的使用说明, 可以使用 `fir mapping -h`查看相应的帮助.
|