firim 0.1.4 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3d0731d7d2b35bf81f320244a6a7c62a947f6a67
4
- data.tar.gz: 5dbebf6ca5a24c7db39816a3ae229a1cc8caeede
3
+ metadata.gz: c14a9086ace96798689e6be574eef0dc5e917690
4
+ data.tar.gz: 89d4000d8b56fae1d2224f9b77d8faa1bc3b05e0
5
5
  SHA512:
6
- metadata.gz: 851d13bbbdcf11e988d82eb972d130fe9c13874abdd2ffe058ade87ab5967673d307c4aa709d165f0848c1a4c294d661a0b58a980b4df4363a7f708da1506a56
7
- data.tar.gz: 3a3c9dbbf0e6f9c438aafe4ad5de0283e69f42e350de429fcade6a795d0130b8e0f8ae517df49b429d979ace458661d1127d5da3ed7fc3fb00574d3466fed3f7
6
+ metadata.gz: 11244e647af64a7dbd34e85a8e9daf9aad666c2b4114a1d682de71ba5869b0fc965e54511f73d066fae58eaa046e8d58089c1530b29e9ad145ed9fced19f232f
7
+ data.tar.gz: 5a0530e2ddb7ece08eb6c99c6e83557d08b358379de5c30f6365407abb43d556e221581ccb5ebc8e7e76a02a12ea72e635ff9df0c976c95e3a30d9ea33418473
@@ -39,10 +39,73 @@ module Firim
39
39
  token = keychain_token.token(ask_if_missing: option_token == nil)
40
40
  if token
41
41
  options[:firim_api_token] = token
42
- return
42
+ return
43
43
  end
44
44
 
45
45
  options[:firim_api_token] ||= UI.input("The API Token of fir.im: ")
46
46
  end
47
47
  end
48
- end
48
+
49
+ class DetectAndroidValues
50
+ def run!(options)
51
+ find_firim_api_token(options)
52
+ find_app_identifier(options)
53
+ find_app_name(options)
54
+ find_version(options)
55
+ find_build_version(options)
56
+ end
57
+
58
+ def read_key_from_gradle_file(gradle_file, key)
59
+ return nil if gradle_file == nil
60
+ value = nil
61
+ begin
62
+ file = File.new(gradle_file, "r")
63
+ while (line = file.gets)
64
+ next unless line.include? key
65
+ components = line.strip.split(' ')
66
+ value = components[components.length - 1].tr("\"", "")
67
+ break
68
+ end
69
+ file.close
70
+ rescue => err
71
+ UI.error("An exception occured while reading gradle file: #{err}")
72
+ err
73
+ end
74
+ return value
75
+ end
76
+
77
+ def find_app_identifier(options)
78
+ return if options[:app_identifier]
79
+ options[:app_identifier] ||= self.read_key_from_gradle_file(options[:gradle_file], "applicationId")
80
+ end
81
+
82
+ def find_app_name(options)
83
+ return if options[:app_name]
84
+ options[:app_name] ||= self.read_key_from_gradle_file(options[:gradle_file], "appName")
85
+ end
86
+
87
+ def find_version(options)
88
+ return if options[:app_version]
89
+ options[:app_version] ||= self.read_key_from_gradle_file(options[:gradle_file], "versionName")
90
+ end
91
+
92
+ def find_build_version(options)
93
+ return if options[:app_build_version]
94
+ options[:app_build_version] ||= self.read_key_from_gradle_file(options[:gradle_file], "versionCode")
95
+ end
96
+
97
+ def find_firim_api_token(options)
98
+ option_token = options[:firim_api_token]
99
+ keychain_token = Firim::AccountManager.new(user: options[:firim_username])
100
+ token = keychain_token.token(ask_if_missing: option_token == nil)
101
+ if token
102
+ options[:firim_api_token] = token
103
+ return
104
+ end
105
+
106
+ options[:firim_api_token] ||= UI.input("The API Token of fir.im: ")
107
+ end
108
+
109
+ end
110
+
111
+ end
data/lib/firim/options.rb CHANGED
@@ -5,6 +5,10 @@ module Firim
5
5
  class Options
6
6
  def self.available_options
7
7
  [
8
+ # firim platform
9
+ FastlaneCore::ConfigItem.new(key: :platform,
10
+ optional: true,
11
+ description: "The fir platform, support ios/android"),
8
12
  # firim info
9
13
  FastlaneCore::ConfigItem.new(key: :firim_api_token,
10
14
  short_option: "-a",
@@ -13,9 +17,9 @@ module Firim
13
17
  FastlaneCore::ConfigItem.new(key: :firim_username,
14
18
  optional: true,
15
19
  description: "fir.im username, a sign for identify different token"),
16
-
17
20
  # Content path
18
21
  FastlaneCore::ConfigItem.new(key: :ipa,
22
+ optional: true,
19
23
  short_option: "-i",
20
24
  env_name: "DELIVER_IPA_PATH",
21
25
  description: "Path to your ipa file",
@@ -23,11 +27,24 @@ module Firim
23
27
  verify_block: proc do |value|
24
28
  UI.user_error!("Could not find ipa file at path '#{value}'") unless File.exist?(value)
25
29
  UI.user_error!("'#{value}' doesn't seem to be an ipa file") unless value.end_with?(".ipa")
30
+ end),
31
+ FastlaneCore::ConfigItem.new(key: :apk,
32
+ optional: true,
33
+ env_name: "DELIVER_APK_PATH",
34
+ description: "Path to your apk file",
35
+ default_value: Dir["app/build/outputs/apk/prod/release/*.apk"].first,
36
+ verify_block: proc do |value|
37
+ UI.user_error!("Could not find apk file at path '#{value}'") unless File.exist?(value)
38
+ UI.user_error!("'#{value}' doesn't seem to be an apk file") unless value.end_with?(".apk")
26
39
  end,
27
- conflicting_options: [:pkg],
40
+ conflicting_options: [:ipa],
28
41
  conflict_block: proc do |value|
29
- UI.user_error!("You can't use 'ipa' and '#{value.key}' options in one run.")
42
+ UI.user_error!("You can't use 'apk' and '#{value.key}' options in one run.")
30
43
  end),
44
+ FastlaneCore::ConfigItem.new(key: :gradle_file,
45
+ short_option: "-g",
46
+ optional: true,
47
+ description: "Path to your gradle file"),
31
48
  FastlaneCore::ConfigItem.new(key: :icon,
32
49
  description: "Path to the app icon, MUST BE jpg",
33
50
  optional: true,
@@ -36,6 +53,10 @@ module Firim
36
53
  UI.user_error!("Could not find png file at path '#{value}'") unless File.exist?(value)
37
54
  UI.user_error!("'#{value}' doesn't seem to be a png file") unless value.end_with?(".jpg")
38
55
  end),
56
+
57
+ FastlaneCore::ConfigItem.new(key: :file,
58
+ optional: true,
59
+ description: "Path to your pkg file"),
39
60
  # APP info
40
61
  FastlaneCore::ConfigItem.new(key: :app_identifier,
41
62
  description: "The app's identifier",
@@ -85,4 +106,4 @@ module Firim
85
106
  ]
86
107
  end
87
108
  end
88
- end
109
+ end
data/lib/firim/runner.rb CHANGED
@@ -11,6 +11,17 @@ module Firim
11
11
  return "http://api.fir.im/"
12
12
  end
13
13
 
14
+ def guess_platform
15
+ return self.options[:platform] if self.options[:platform]
16
+ if self.options[:ipa]
17
+ return "ios"
18
+ elsif self.options[:apk]
19
+ return "android"
20
+ else
21
+ return nil
22
+ end
23
+ end
24
+
14
25
  def initialize(options)
15
26
  self.options = options
16
27
  @app_info = {}
@@ -22,13 +33,26 @@ module Firim
22
33
  }
23
34
  }
24
35
 
36
+ if self.options[:apk]
37
+ self.options[:file] = self.options[:apk]
38
+ else
39
+ self.options[:file] = self.options[:ipa]
40
+ end
41
+ self.options[:platform] = self.guess_platform
42
+ UI.user_error!("Platform not given --platform ios/android") if self.options[:platform] == nil
43
+
25
44
  @firim_client = Faraday.new(self.class.firim_hostname, conn_options) do |c|
26
45
  c.request :url_encoded # form-encode POST params
27
46
  c.adapter :net_http
28
47
  c.response :json, :content_type => /\bjson$/
29
48
  end
30
49
 
31
- Firim::DetectValues.new.run!(self.options)
50
+ if self.options[:platform] == 'ios'
51
+ Firim::DetectValues.new.run!(self.options)
52
+ else
53
+ Firim::DetectAndroidValues.new.run!(self.options)
54
+ end
55
+
32
56
  FastlaneCore::PrintTable.print_values(config: options, title: "firim #{Firim::VERSION} Summary")
33
57
  end
34
58
 
@@ -51,15 +75,18 @@ module Firim
51
75
  end
52
76
 
53
77
  def validation_response response_data
54
- error_code = response_data['code'].to_i rescue 0
78
+ error_code = response_data['code'].to_i
79
+ return if error_code == 0
55
80
  if error_code == 100020
56
81
  UI.user_error!("Firim API Token(#{options[:firim_api_token]}) not correct")
82
+ else
83
+ UI.user_error!("Firim API ERROR error_code: #{error_code}")
57
84
  end
58
85
  end
59
86
 
60
87
  def get_app_info
61
88
  app_info_path = "apps/latest/" + options[:app_identifier]
62
- response = self.firim_client.get app_info_path, { :api_token => options[:firim_api_token], :type => "ios" }
89
+ response = self.firim_client.get app_info_path, { :api_token => options[:firim_api_token], :type => options[:platform] }
63
90
  info = response.body == nil ? {} : response.body
64
91
  validation_response info
65
92
  info
@@ -69,10 +96,13 @@ module Firim
69
96
  upload_publish_path = "apps/"
70
97
  response = self.firim_client.post do |req|
71
98
  req.url upload_publish_path
72
- req.body = { :type => 'ios', :bundle_id => options[:app_identifier], :api_token => options[:firim_api_token] }
99
+ req.body = { :type => options[:platform], :bundle_id => options[:app_identifier], :api_token => options[:firim_api_token] }
73
100
  end
74
101
  info = response.body
75
102
  validation_response info
103
+ if info['cert']['binary']['key'] == nil
104
+ UI.user_error!("Response body ERROR: #{response.body}")
105
+ end
76
106
  begin
77
107
  upload_binary info['cert']['binary']
78
108
  upload_icon info['cert']['icon']
@@ -99,10 +129,21 @@ module Firim
99
129
  end
100
130
 
101
131
  def upload_binary binary_info
132
+ UI.user_error!("app_name did not provide --app_name [name]") if self.options[:app_name] == nil
133
+ UI.user_error!("app_version did not provide --app_version [version]") if self.options[:app_version] == nil
134
+ UI.user_error!("app_build_version did not provide --app_build_version [build_version]") if self.options[:app_build_version] == nil
135
+ if self.options[:file] == nil
136
+ if self.options[:platform] == "ios"
137
+ UI.user_error!("ipa file did not provide --ipa [ipa_path]")
138
+ else
139
+ UI.user_error!("apk file did not provide --ipa [apk_path]")
140
+ end
141
+ end
142
+
102
143
  params = {
103
144
  'key' => binary_info['key'],
104
145
  'token' => binary_info['token'],
105
- 'file' => Faraday::UploadIO.new(self.options[:ipa], 'application/octet-stream'),
146
+ 'file' => Faraday::UploadIO.new(self.options[:file], 'application/octet-stream'),
106
147
  'x:name' => self.options[:app_name],
107
148
  'x:version' => self.options[:app_version],
108
149
  'x:build' => self.options[:app_build_version]
@@ -156,4 +197,4 @@ module Firim
156
197
  end
157
198
 
158
199
  end
159
- end
200
+ end
data/lib/firim/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Firim
2
- VERSION = "0.1.4"
2
+ VERSION = "0.2.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: firim
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - whlsxl
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-23 00:00:00.000000000 Z
11
+ date: 2018-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fastlane
@@ -141,7 +141,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
141
141
  version: '0'
142
142
  requirements: []
143
143
  rubyforge_project:
144
- rubygems_version: 2.6.8
144
+ rubygems_version: 2.6.13
145
145
  signing_key:
146
146
  specification_version: 4
147
147
  summary: fir.im command tool