fir-cli 0.2.3.1 → 1.0.0
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 +4 -4
- data/.gitignore +13 -82
- data/CHANGELOG +36 -0
- data/Gemfile +3 -1
- data/LICENSE.txt +1 -1
- data/README.md +83 -103
- data/Rakefile +1 -0
- data/bin/fir +9 -11
- data/fir-cli.gemspec +47 -26
- data/lib/fir/api.yml +5 -0
- data/lib/fir/cli.rb +107 -0
- data/lib/fir/patches/bin/pngcrush +0 -0
- data/lib/fir/patches/native_patch.rb +199 -0
- data/lib/fir/patches/os_patch.rb +22 -0
- data/lib/fir/patches/parser_patch.rb +165 -0
- data/lib/fir/patches.rb +5 -0
- data/lib/fir/util/build.rb +158 -0
- data/lib/fir/util/info.rb +79 -0
- data/lib/fir/util/login.rb +17 -0
- data/lib/fir/util/publish.rb +103 -0
- data/lib/fir/util.rb +45 -0
- data/lib/fir/version.rb +5 -0
- data/lib/fir-cli.rb +3 -0
- data/lib/fir.rb +87 -0
- data/lib/fir_cli.rb +3 -0
- metadata +57 -109
- data/Gemfile.lock +0 -45
- data/fir-cli.rb +0 -27
- data/lib/fir-cli/version.rb +0 -5
- data/lib/fir-cli-commands/00-info.rb +0 -17
- data/lib/fir-cli-commands/00-login.rb +0 -30
- data/lib/fir-cli-commands/00-profile.rb +0 -31
- data/lib/fir-cli-commands/00-upgrade.rb +0 -15
- data/lib/fir-cli-commands/00-version.rb +0 -10
- data/lib/fir-cli-commands/01-config.rb +0 -17
- data/lib/fir-cli-commands/100-resign_codesign.rb +0 -59
- data/lib/fir-cli-commands/100-resign_tapbeta.rb +0 -85
- data/lib/fir-cli-commands/101-resign.rb +0 -26
- data/lib/fir-cli-commands/11-publish.rb +0 -73
- data/lib/fir-cli-commands/12-build_ipa.rb +0 -153
- data/lib/fir-cli.chk.rb +0 -33
- data/lib/fir-cli.core.rb +0 -96
- data/lib/fir-cli.fir.rb +0 -49
- data/lib/fir-cli.opt.rb +0 -35
- data/lib/fir-cli.output.rb +0 -55
- data/lib/fir-cli.utils.rb +0 -108
- data/lib/lagunitas.ext.rb +0 -56
- data/lib/lagunitas.patch.rb +0 -51
- data/lib/user_config.patch.rb +0 -10
@@ -0,0 +1,103 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
module FIR
|
4
|
+
module Publish
|
5
|
+
|
6
|
+
def publish *args, options
|
7
|
+
file_path = File.absolute_path(args.first.to_s)
|
8
|
+
token = options[:token] || current_token
|
9
|
+
changelog = options[:changelog].to_s
|
10
|
+
|
11
|
+
check_supported_file file_path
|
12
|
+
check_token_cannot_be_blank token
|
13
|
+
fetch_user_info(token)
|
14
|
+
|
15
|
+
logger.info "Publishing app......."
|
16
|
+
logger_info_dividing_line
|
17
|
+
|
18
|
+
file_type = File.extname(file_path).delete('.')
|
19
|
+
app_info = send("#{file_type}_info", file_path, true)
|
20
|
+
uploading_info = fetch_uploading_info(app_info, token)
|
21
|
+
|
22
|
+
app_id = uploading_info[:id]
|
23
|
+
bundle_app = uploading_info[:bundle][:pkg]
|
24
|
+
bundle_icon = uploading_info[:bundle][:icon]
|
25
|
+
|
26
|
+
unless app_info[:icons].empty?
|
27
|
+
large_icon_path = app_info[:icons].max_by { |f| File.size(f) }
|
28
|
+
uncrushed_icon_path = convert_icon(large_icon_path)
|
29
|
+
upload_app_icon(bundle_icon, uncrushed_icon_path)
|
30
|
+
end
|
31
|
+
|
32
|
+
uploaded_info = upload_app_file(bundle_app, file_path)
|
33
|
+
version_id = uploaded_info[:versionOid]
|
34
|
+
short = options[:short].blank? ? uploading_info[:short] : options[:short]
|
35
|
+
|
36
|
+
update_app_info(app_id, name: app_info[:name],
|
37
|
+
short: short,
|
38
|
+
token: token,
|
39
|
+
source: 'fir-cli')
|
40
|
+
update_app_version_info(version_id, version: app_info[:version],
|
41
|
+
versionShort: app_info[:short_version],
|
42
|
+
devices: app_info[:devices],
|
43
|
+
release_type: app_info[:release_type],
|
44
|
+
changelog: changelog,
|
45
|
+
token: token)
|
46
|
+
published_app_info = fetch_app_info(app_id, token)
|
47
|
+
|
48
|
+
logger_info_dividing_line
|
49
|
+
logger.info "Published succeed: #{api[:base_url]}/#{published_app_info[:short]}"
|
50
|
+
end
|
51
|
+
|
52
|
+
private
|
53
|
+
|
54
|
+
def convert_icon origin_path
|
55
|
+
logger.info "Converting app's icon......"
|
56
|
+
output_path = Tempfile.new('uncrushed_icon.png').path
|
57
|
+
Parser.uncrush_icon(origin_path, output_path)
|
58
|
+
File.size(output_path) == 0 ? origin_path : output_path
|
59
|
+
end
|
60
|
+
|
61
|
+
def upload_app_icon bundle_icon, icon_path
|
62
|
+
logger.info "Uploading app's icon......"
|
63
|
+
hash = {
|
64
|
+
key: bundle_icon[:key],
|
65
|
+
token: bundle_icon[:token],
|
66
|
+
file: File.new(icon_path, 'rb')
|
67
|
+
}
|
68
|
+
post bundle_icon[:url], hash, 'multipart/form-data'
|
69
|
+
end
|
70
|
+
|
71
|
+
def upload_app_file bundle_app, file_path
|
72
|
+
logger.info "Uploading app......"
|
73
|
+
hash = {
|
74
|
+
key: bundle_app[:key],
|
75
|
+
token: bundle_app[:token],
|
76
|
+
file: File.new(file_path, 'rb')
|
77
|
+
}
|
78
|
+
post bundle_app[:url], hash, 'multipart/form-data'
|
79
|
+
end
|
80
|
+
|
81
|
+
def update_app_info id, hash
|
82
|
+
logger.info "Updating app info......"
|
83
|
+
put api[:app_url] + "/#{id}?#{URI.encode_www_form hash}", hash
|
84
|
+
end
|
85
|
+
|
86
|
+
def update_app_version_info id, hash
|
87
|
+
logger.info "Updating app's version info......"
|
88
|
+
put api[:version_url] + "/#{id}/complete?#{URI.encode_www_form hash}", hash
|
89
|
+
put api[:version_url] + "/#{id}?#{URI.encode_www_form hash}", hash
|
90
|
+
end
|
91
|
+
|
92
|
+
def fetch_uploading_info app_info, token
|
93
|
+
logger.info "Fetching #{app_info[:identifier]}@FIR.im uploading info......"
|
94
|
+
get api[:uploading_info_url] + "/#{app_info[:identifier]}", type: app_info[:type],
|
95
|
+
token: token
|
96
|
+
end
|
97
|
+
|
98
|
+
def fetch_app_info id, token
|
99
|
+
logger.info "Fetch app info from FIR.im"
|
100
|
+
get api[:app_url] + "/#{id}", token: token
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
data/lib/fir/util.rb
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require_relative './util/login'
|
4
|
+
require_relative './util/info'
|
5
|
+
require_relative './util/build'
|
6
|
+
require_relative './util/publish'
|
7
|
+
|
8
|
+
module FIR
|
9
|
+
module Util
|
10
|
+
|
11
|
+
def self.included base
|
12
|
+
base.extend ClassMethods
|
13
|
+
base.extend Login
|
14
|
+
base.extend Info
|
15
|
+
base.extend Build
|
16
|
+
base.extend Publish
|
17
|
+
end
|
18
|
+
|
19
|
+
module ClassMethods
|
20
|
+
|
21
|
+
def fetch_user_info token
|
22
|
+
get api[:me_url], token: token
|
23
|
+
end
|
24
|
+
|
25
|
+
def check_supported_file path
|
26
|
+
unless File.file?(path) || APP_FILE_TYPE.include?(File.extname(path))
|
27
|
+
logger.error "File does not exist or unsupported file type"
|
28
|
+
exit 1
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def check_token_cannot_be_blank token
|
33
|
+
if token.blank?
|
34
|
+
logger.error "Token can't be blank"
|
35
|
+
exit 1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def logger_info_dividing_line
|
40
|
+
logger.info "✈ -------------------------------------------- ✈"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
end
|
data/lib/fir/version.rb
ADDED
data/lib/fir-cli.rb
ADDED
data/lib/fir.rb
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
|
3
|
+
require 'thor'
|
4
|
+
require 'logger'
|
5
|
+
require 'yaml'
|
6
|
+
require 'rest-client'
|
7
|
+
require 'json'
|
8
|
+
require 'securerandom'
|
9
|
+
require 'fileutils'
|
10
|
+
require 'cfpropertylist'
|
11
|
+
require 'tempfile'
|
12
|
+
|
13
|
+
# TODO: remove rescue when https://github.com/tajchert/ruby_apk/pull/4 merged
|
14
|
+
begin
|
15
|
+
require 'ruby_android'
|
16
|
+
rescue LoadError
|
17
|
+
require 'ruby_apk'
|
18
|
+
end
|
19
|
+
|
20
|
+
require 'fir/patches'
|
21
|
+
require 'fir/util'
|
22
|
+
require 'fir/version'
|
23
|
+
require 'fir/cli'
|
24
|
+
|
25
|
+
module FIR
|
26
|
+
CONFIG_PATH = "#{ENV['HOME']}/.fir-cli"
|
27
|
+
API_YML_PATH = "#{File.dirname(__FILE__)}/fir/api.yml"
|
28
|
+
APP_FILE_TYPE = %w(.ipa .apk).freeze
|
29
|
+
|
30
|
+
include Util
|
31
|
+
|
32
|
+
class << self
|
33
|
+
attr_accessor :logger, :api, :config
|
34
|
+
|
35
|
+
def api
|
36
|
+
@api ||= YAML.load_file(API_YML_PATH).symbolize_keys
|
37
|
+
end
|
38
|
+
|
39
|
+
def config
|
40
|
+
@config ||= YAML.load_file(CONFIG_PATH).symbolize_keys if File.exist?(CONFIG_PATH)
|
41
|
+
end
|
42
|
+
|
43
|
+
def reload_config
|
44
|
+
@config = YAML.load_file(CONFIG_PATH).symbolize_keys
|
45
|
+
end
|
46
|
+
|
47
|
+
def write_config hash
|
48
|
+
File.open(CONFIG_PATH, 'w+') { |f| f << YAML.dump(hash) }
|
49
|
+
end
|
50
|
+
|
51
|
+
def current_token
|
52
|
+
@token ||= config[:token] if config
|
53
|
+
end
|
54
|
+
|
55
|
+
def get url, params = {}
|
56
|
+
begin
|
57
|
+
res = RestClient.get(url, params: params)
|
58
|
+
rescue RestClient::Exception => e
|
59
|
+
logger.error e.response
|
60
|
+
exit 1
|
61
|
+
end
|
62
|
+
JSON.parse(res.body, symbolize_names: true)
|
63
|
+
end
|
64
|
+
|
65
|
+
def post url, query, content_type = :json
|
66
|
+
begin
|
67
|
+
res = RestClient.post(url, query, { content_type: content_type })
|
68
|
+
rescue RestClient::Exception => e
|
69
|
+
logger.error e.response
|
70
|
+
exit 1
|
71
|
+
end
|
72
|
+
JSON.parse(res.body, symbolize_names: true)
|
73
|
+
end
|
74
|
+
|
75
|
+
def put url, query, content_type = :json
|
76
|
+
begin
|
77
|
+
res = RestClient.put(url, query, { content_type: content_type })
|
78
|
+
rescue RestClient::Exception => e
|
79
|
+
logger.error e.response
|
80
|
+
exit 1
|
81
|
+
end
|
82
|
+
JSON.parse(res.body, symbolize_names: true)
|
83
|
+
end
|
84
|
+
|
85
|
+
alias_method :☠, :exit
|
86
|
+
end
|
87
|
+
end
|
data/lib/fir_cli.rb
ADDED
metadata
CHANGED
@@ -1,65 +1,23 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fir-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- FIR.im
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
-
requirements:
|
17
|
-
- - '='
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: 0.0.1
|
20
|
-
type: :runtime
|
21
|
-
prerelease: false
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
-
requirements:
|
24
|
-
- - '='
|
25
|
-
- !ruby/object:Gem::Version
|
26
|
-
version: 0.0.1
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: user_config
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - '='
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: 0.0.4
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - '='
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 0.0.4
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: pngdefry
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - '='
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: 0.1.1
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - '='
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: 0.1.1
|
55
|
-
- !ruby/object:Gem::Dependency
|
56
|
-
name: rest-client
|
14
|
+
name: bundler
|
57
15
|
requirement: !ruby/object:Gem::Requirement
|
58
16
|
requirements:
|
59
17
|
- - "~>"
|
60
18
|
- !ruby/object:Gem::Version
|
61
19
|
version: '1.7'
|
62
|
-
type: :
|
20
|
+
type: :development
|
63
21
|
prerelease: false
|
64
22
|
version_requirements: !ruby/object:Gem::Requirement
|
65
23
|
requirements:
|
@@ -67,83 +25,69 @@ dependencies:
|
|
67
25
|
- !ruby/object:Gem::Version
|
68
26
|
version: '1.7'
|
69
27
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - "~>"
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0.9'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - "~>"
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0.9'
|
83
|
-
- !ruby/object:Gem::Dependency
|
84
|
-
name: thor
|
28
|
+
name: rake
|
85
29
|
requirement: !ruby/object:Gem::Requirement
|
86
30
|
requirements:
|
87
31
|
- - "~>"
|
88
32
|
- !ruby/object:Gem::Version
|
89
|
-
version: '0
|
90
|
-
type: :
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
91
35
|
prerelease: false
|
92
36
|
version_requirements: !ruby/object:Gem::Requirement
|
93
37
|
requirements:
|
94
38
|
- - "~>"
|
95
39
|
- !ruby/object:Gem::Version
|
96
|
-
version: '0
|
40
|
+
version: '10.0'
|
97
41
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
42
|
+
name: pry
|
99
43
|
requirement: !ruby/object:Gem::Requirement
|
100
44
|
requirements:
|
101
45
|
- - "~>"
|
102
46
|
- !ruby/object:Gem::Version
|
103
|
-
version: '0.
|
104
|
-
type: :
|
47
|
+
version: '0.11'
|
48
|
+
type: :development
|
105
49
|
prerelease: false
|
106
50
|
version_requirements: !ruby/object:Gem::Requirement
|
107
51
|
requirements:
|
108
52
|
- - "~>"
|
109
53
|
- !ruby/object:Gem::Version
|
110
|
-
version: '0.
|
54
|
+
version: '0.11'
|
111
55
|
- !ruby/object:Gem::Dependency
|
112
|
-
name:
|
56
|
+
name: thor
|
113
57
|
requirement: !ruby/object:Gem::Requirement
|
114
58
|
requirements:
|
115
59
|
- - "~>"
|
116
60
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
61
|
+
version: '0.19'
|
118
62
|
type: :runtime
|
119
63
|
prerelease: false
|
120
64
|
version_requirements: !ruby/object:Gem::Requirement
|
121
65
|
requirements:
|
122
66
|
- - "~>"
|
123
67
|
- !ruby/object:Gem::Version
|
124
|
-
version: '
|
68
|
+
version: '0.19'
|
125
69
|
- !ruby/object:Gem::Dependency
|
126
|
-
name:
|
70
|
+
name: CFPropertyList
|
127
71
|
requirement: !ruby/object:Gem::Requirement
|
128
72
|
requirements:
|
129
73
|
- - "~>"
|
130
74
|
- !ruby/object:Gem::Version
|
131
|
-
version:
|
75
|
+
version: '2.3'
|
132
76
|
type: :runtime
|
133
77
|
prerelease: false
|
134
78
|
version_requirements: !ruby/object:Gem::Requirement
|
135
79
|
requirements:
|
136
80
|
- - "~>"
|
137
81
|
- !ruby/object:Gem::Version
|
138
|
-
version:
|
82
|
+
version: '2.3'
|
139
83
|
- !ruby/object:Gem::Dependency
|
140
|
-
name:
|
84
|
+
name: rest-client
|
141
85
|
requirement: !ruby/object:Gem::Requirement
|
142
86
|
requirements:
|
143
87
|
- - "~>"
|
144
88
|
- !ruby/object:Gem::Version
|
145
89
|
version: '1.7'
|
146
|
-
type: :
|
90
|
+
type: :runtime
|
147
91
|
prerelease: false
|
148
92
|
version_requirements: !ruby/object:Gem::Requirement
|
149
93
|
requirements:
|
@@ -151,64 +95,67 @@ dependencies:
|
|
151
95
|
- !ruby/object:Gem::Version
|
152
96
|
version: '1.7'
|
153
97
|
- !ruby/object:Gem::Dependency
|
154
|
-
name:
|
98
|
+
name: ruby_android
|
155
99
|
requirement: !ruby/object:Gem::Requirement
|
156
100
|
requirements:
|
157
101
|
- - "~>"
|
158
102
|
- !ruby/object:Gem::Version
|
159
|
-
version: '
|
160
|
-
type: :
|
103
|
+
version: '0.7'
|
104
|
+
type: :runtime
|
161
105
|
prerelease: false
|
162
106
|
version_requirements: !ruby/object:Gem::Requirement
|
163
107
|
requirements:
|
164
108
|
- - "~>"
|
165
109
|
- !ruby/object:Gem::Version
|
166
|
-
version: '
|
167
|
-
description: FIR.im
|
168
|
-
email:
|
110
|
+
version: '0.7'
|
111
|
+
description: FIR.im command tool, support iOS and Android
|
112
|
+
email:
|
113
|
+
- dev@fir.im
|
169
114
|
executables:
|
170
115
|
- fir
|
171
116
|
extensions: []
|
172
117
|
extra_rdoc_files: []
|
173
118
|
files:
|
174
119
|
- ".gitignore"
|
120
|
+
- CHANGELOG
|
175
121
|
- Gemfile
|
176
|
-
- Gemfile.lock
|
177
122
|
- LICENSE.txt
|
178
123
|
- README.md
|
124
|
+
- Rakefile
|
179
125
|
- bin/fir
|
180
126
|
- fir-cli.gemspec
|
181
|
-
- fir-cli.rb
|
182
|
-
- lib/fir
|
183
|
-
- lib/fir
|
184
|
-
- lib/fir
|
185
|
-
- lib/fir
|
186
|
-
- lib/fir
|
187
|
-
- lib/fir
|
188
|
-
- lib/fir
|
189
|
-
- lib/fir
|
190
|
-
- lib/fir
|
191
|
-
- lib/fir
|
192
|
-
- lib/fir
|
193
|
-
- lib/fir
|
194
|
-
- lib/fir
|
195
|
-
- lib/fir
|
196
|
-
- lib/
|
197
|
-
|
198
|
-
- lib/fir-cli.utils.rb
|
199
|
-
- lib/fir-cli/version.rb
|
200
|
-
- lib/lagunitas.ext.rb
|
201
|
-
- lib/lagunitas.patch.rb
|
202
|
-
- lib/user_config.patch.rb
|
203
|
-
homepage: http://blog.fir.im/2014/fir-cli
|
127
|
+
- lib/fir-cli.rb
|
128
|
+
- lib/fir.rb
|
129
|
+
- lib/fir/api.yml
|
130
|
+
- lib/fir/cli.rb
|
131
|
+
- lib/fir/patches.rb
|
132
|
+
- lib/fir/patches/bin/pngcrush
|
133
|
+
- lib/fir/patches/native_patch.rb
|
134
|
+
- lib/fir/patches/os_patch.rb
|
135
|
+
- lib/fir/patches/parser_patch.rb
|
136
|
+
- lib/fir/util.rb
|
137
|
+
- lib/fir/util/build.rb
|
138
|
+
- lib/fir/util/info.rb
|
139
|
+
- lib/fir/util/login.rb
|
140
|
+
- lib/fir/util/publish.rb
|
141
|
+
- lib/fir/version.rb
|
142
|
+
- lib/fir_cli.rb
|
143
|
+
homepage: http://blog.fir.im/2014/fir_cli
|
204
144
|
licenses:
|
205
145
|
- GPLv3
|
206
146
|
metadata: {}
|
207
|
-
post_install_message:
|
147
|
+
post_install_message: "\n ______________ ________ ____\n /
|
148
|
+
____/ _/ __ \\ / ____/ / / _/\n / /_ / // /_/ /_____/ / / / /
|
149
|
+
/\n / __/ _/ // _, _/_____/ /___/ /____/ /\n /_/ /___/_/ |_| \\____/_____/___/\n\n
|
150
|
+
\ ## 更新记录\n ### FIR-CLI 1.0.0\n - 重大重构\n - 优化启动及运行速度\n - 增加各指令的 alias\n - 增加全局参数,
|
151
|
+
-T, -L, -V, -q, -h, 分别为 token, log, verbose, quite, help 参数\n - 增加输入 log\n - 修正部分系统安装失败问题\n
|
152
|
+
\ - 修正部分服务器安装出现编码失败问题\n - 重写 ipa 解析器, 去除 `miniz.c`, 增加 pngcrash\n - build_ipa
|
153
|
+
增加默认 build 路径, `fir b` 则默认 build 当前路径\n - build_ipa 增加输出 dSYM 符号表文件\n - build_ipa
|
154
|
+
增加输出 xcodebuild 的信息\n - 去掉输出信息颜色, 方便查看 log\n - 简化 --verbose 参数, 简化为 `--verbose
|
155
|
+
--no-verbose`, 默认输出为 INFO\n "
|
208
156
|
rdoc_options: []
|
209
157
|
require_paths:
|
210
158
|
- lib
|
211
|
-
- "./"
|
212
159
|
required_ruby_version: !ruby/object:Gem::Requirement
|
213
160
|
requirements:
|
214
161
|
- - ">="
|
@@ -224,5 +171,6 @@ rubyforge_project:
|
|
224
171
|
rubygems_version: 2.4.2
|
225
172
|
signing_key:
|
226
173
|
specification_version: 4
|
227
|
-
summary: FIR.im
|
174
|
+
summary: FIR.im command tool
|
228
175
|
test_files: []
|
176
|
+
has_rdoc:
|
data/Gemfile.lock
DELETED
@@ -1,45 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
fir-cli (0.2.1.1)
|
5
|
-
highline (~> 1.6)
|
6
|
-
lagunitas (= 0.0.1)
|
7
|
-
paint (~> 0.9)
|
8
|
-
pngdefry (= 0.1.1)
|
9
|
-
rest-client (~> 1.7)
|
10
|
-
ruby_apk (~> 0.7)
|
11
|
-
rubyzip (~> 0.9.9)
|
12
|
-
thor (~> 0.19)
|
13
|
-
user_config (= 0.0.4)
|
14
|
-
|
15
|
-
GEM
|
16
|
-
remote: https://ruby.taobao.org/
|
17
|
-
specs:
|
18
|
-
CFPropertyList (2.3.0)
|
19
|
-
highline (1.6.21)
|
20
|
-
lagunitas (0.0.1)
|
21
|
-
CFPropertyList
|
22
|
-
pngdefry (>= 0.1.0)
|
23
|
-
zip
|
24
|
-
mime-types (2.4.3)
|
25
|
-
netrc (0.10.2)
|
26
|
-
paint (0.9.0)
|
27
|
-
pngdefry (0.1.1)
|
28
|
-
rake (10.4.2)
|
29
|
-
rest-client (1.7.2)
|
30
|
-
mime-types (>= 1.16, < 3.0)
|
31
|
-
netrc (~> 0.7)
|
32
|
-
ruby_apk (0.7.1)
|
33
|
-
rubyzip (< 1.0.0)
|
34
|
-
rubyzip (0.9.9)
|
35
|
-
thor (0.19.1)
|
36
|
-
user_config (0.0.4)
|
37
|
-
zip (2.0.2)
|
38
|
-
|
39
|
-
PLATFORMS
|
40
|
-
ruby
|
41
|
-
|
42
|
-
DEPENDENCIES
|
43
|
-
bundler (~> 1.7)
|
44
|
-
fir-cli!
|
45
|
-
rake (~> 10.0)
|
data/fir-cli.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'uri'
|
3
|
-
require 'json'
|
4
|
-
require 'pathname'
|
5
|
-
require 'tempfile'
|
6
|
-
require 'securerandom'
|
7
|
-
|
8
|
-
require 'thor'
|
9
|
-
require 'paint'
|
10
|
-
require 'pngdefry'
|
11
|
-
require 'user_config'
|
12
|
-
require 'rest_client'
|
13
|
-
require 'lagunitas'
|
14
|
-
require 'ruby_apk'
|
15
|
-
require 'highline/import'
|
16
|
-
|
17
|
-
require 'zip'
|
18
|
-
require 'zip/zip'
|
19
|
-
|
20
|
-
|
21
|
-
module Fir
|
22
|
-
class Cli < Thor; end
|
23
|
-
end
|
24
|
-
|
25
|
-
Dir[File.dirname(__FILE__) + '/lib/fir-cli/*.rb'].each { |f| require f }
|
26
|
-
Dir[File.dirname(__FILE__) + '/lib/*.rb'].each { |f| require f }
|
27
|
-
Dir[File.dirname(__FILE__) + '/lib/fir-cli-commands/*.rb'].each { |f| require f }
|
data/lib/fir-cli/version.rb
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
module Fir
|
3
|
-
class Cli
|
4
|
-
desc 'info APP_FILE_PATH', '获取应用文件的信息(支持 ipa 文件和 apk 文件)'
|
5
|
-
option :all, :aliases => '-a', :desc => '显示全部应用信息', :type => :boolean
|
6
|
-
option :fir, :aliases => '-f', :desc => '显示托管在 fir.im 的应用信息', :type => :boolean
|
7
|
-
output_options
|
8
|
-
def info(path)
|
9
|
-
app = _info path, options[:all]
|
10
|
-
app.each { |i| _puts "#{Paint[i[0].to_s.rjust(18), :blue]} #{i[1]}" }
|
11
|
-
if options[:fir]
|
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]}" }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
module Fir
|
3
|
-
class Cli
|
4
|
-
desc 'login', '登录'
|
5
|
-
output_options
|
6
|
-
def login
|
7
|
-
token = _prompt_secret('输入你的用户 token:')
|
8
|
-
if token.empty?
|
9
|
-
_puts_require_token
|
10
|
-
_exit
|
11
|
-
end
|
12
|
-
user = _user token
|
13
|
-
if !user
|
14
|
-
_puts_invalid_token
|
15
|
-
_exit
|
16
|
-
end
|
17
|
-
if _opt_token && _opt_token != token
|
18
|
-
_puts "> 已登陆用户: #{_opt_token}"
|
19
|
-
_puts "> 替换为用户: #{token}"
|
20
|
-
end
|
21
|
-
if user[:email]
|
22
|
-
_puts "> 设置用户邮件地址为: #{user[:email]}"
|
23
|
-
@config['email'] = user[:email]
|
24
|
-
end
|
25
|
-
@config['token'] = token
|
26
|
-
@config.save
|
27
|
-
_puts "> 当前登陆用户为:#{token}"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,31 +0,0 @@
|
|
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
|
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
|
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
|