fastlane-plugin-fivethree_ionic 0.2.7 → 0.2.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 +4 -4
- data/lib/fastlane/plugin/fivethree_ionic.rb +1 -3
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_add_transparent_statusbar.rb +59 -40
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_android_keystore.rb +70 -42
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_build_ionic_android.rb +21 -15
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_bump_version.rb +20 -14
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_clean_install.rb +42 -28
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_increment_build_no.rb +56 -36
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_ionic.rb +125 -82
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_select_client.rb +81 -57
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_select_clients.rb +78 -55
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_select_env.rb +96 -58
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_sign_android.rb +107 -60
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_take_screenshots.rb +32 -22
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_update_version.rb +43 -28
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_update_version_and_build_no.rb +49 -33
- data/lib/fastlane/plugin/fivethree_ionic/actions/fiv_version.rb +88 -54
- data/lib/fastlane/plugin/fivethree_ionic/helper/fivethree_ionic_helper.rb +2 -2
- data/lib/fastlane/plugin/fivethree_ionic/version.rb +1 -1
- metadata +1 -1
@@ -4,40 +4,68 @@ module Fastlane
|
|
4
4
|
def self.run(params)
|
5
5
|
keystore_path = Fastlane::Actions::FivAndroidKeystoreAction.run(params)
|
6
6
|
|
7
|
-
keychain_entry =
|
7
|
+
keychain_entry =
|
8
|
+
CredentialsManager::AccountManager.new(
|
9
|
+
user: "#{params[:keystore_name]}_android_keystore_storepass"
|
10
|
+
)
|
8
11
|
keystore_storepass = keychain_entry.password
|
9
12
|
|
10
|
-
keychain_entry =
|
13
|
+
keychain_entry =
|
14
|
+
CredentialsManager::AccountManager.new(
|
15
|
+
user: "#{params[:keystore_name]}_android_keystore_keypass"
|
16
|
+
)
|
11
17
|
keystore_keypass = keychain_entry.password
|
12
18
|
|
13
19
|
puts "You can delete the password if they are wrong stored in the keychain: 'fastlane fastlane-credentials remove --username android_keystore_storepass' and 'fastlane fastlane-credentials remove --username android_keystore_keypass'"
|
14
20
|
|
15
|
-
android_build_tool_path =
|
21
|
+
android_build_tool_path =
|
22
|
+
"#{params[:android_sdk_path]}/build-tools/#{
|
23
|
+
params[:android_build_tool_version]
|
24
|
+
}"
|
25
|
+
|
26
|
+
zipalign_apk_file = params[:apk_zipalign_target]
|
27
|
+
if (File.file?(zipalign_apk_file))
|
28
|
+
remove_zipalign = "rm -Rf #{zipalign_apk_file}"
|
29
|
+
sh remove_zipalign
|
30
|
+
end
|
16
31
|
|
17
32
|
# zipalign APK
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
33
|
+
zipalign =
|
34
|
+
"#{android_build_tool_path}/zipalign -v 4 \
|
35
|
+
#{
|
36
|
+
params[:apk_source]
|
37
|
+
} \
|
38
|
+
#{zipalign_apk_file}"
|
23
39
|
sh zipalign
|
24
40
|
|
25
|
-
if(!File.directory?(params[:
|
26
|
-
Dir.mkdir params[:
|
41
|
+
if (!File.directory?(params[:apk_signed_target]))
|
42
|
+
Dir.mkdir params[:apk_signed_target]
|
27
43
|
end
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
44
|
+
|
45
|
+
output_path =
|
46
|
+
"#{params[:apk_signed_target]}/app-release-#{params[:app_version]}-#{
|
47
|
+
params[:app_build_no]
|
48
|
+
}.apk"
|
49
|
+
|
50
|
+
sign =
|
51
|
+
"#{android_build_tool_path}/apksigner sign \
|
52
|
+
--ks #{
|
53
|
+
keystore_path
|
54
|
+
} \
|
55
|
+
--ks-key-alias #{
|
56
|
+
params[:key_alias]
|
57
|
+
} \
|
33
58
|
--ks-pass pass:#{keystore_keypass} \
|
34
|
-
--out #{
|
35
|
-
|
36
|
-
|
59
|
+
--out #{
|
60
|
+
output_path
|
61
|
+
} \
|
62
|
+
#{zipalign_apk_file}"
|
63
|
+
self.run_shell_script(sign)
|
64
|
+
|
65
|
+
verify =
|
66
|
+
("#{android_build_tool_path}/apksigner verify -v #{output_path}")
|
67
|
+
self.run_shell_script(verify)
|
37
68
|
|
38
|
-
verify = ("#{android_build_tool_path}/apksigner verify -v #{output_path}")
|
39
|
-
self.run_shell_script(verify, params[:silent])
|
40
|
-
|
41
69
|
return output_path
|
42
70
|
end
|
43
71
|
|
@@ -46,80 +74,96 @@ module Fastlane
|
|
46
74
|
#####################################################
|
47
75
|
|
48
76
|
def self.description
|
49
|
-
|
77
|
+
'Zipalign, sign and verify android apk'
|
50
78
|
end
|
51
79
|
|
52
|
-
def self.run_shell_script(command
|
53
|
-
Fastlane::Actions
|
80
|
+
def self.run_shell_script(command)
|
81
|
+
Fastlane::Actions.sh(command)
|
54
82
|
end
|
55
83
|
|
56
84
|
def self.details
|
57
85
|
# Optional:
|
58
86
|
# this is your chance to provide a more detailed description of this action
|
59
|
-
|
87
|
+
'You can use this action to do cool things...'
|
60
88
|
end
|
61
89
|
|
62
90
|
def self.available_options
|
63
|
-
# Define all options your action supports.
|
64
|
-
|
91
|
+
# Define all options your action supports.
|
92
|
+
|
65
93
|
# Below a few examples
|
66
94
|
[
|
67
95
|
FastlaneCore::ConfigItem.new(
|
68
96
|
key: :keystore_path,
|
69
|
-
env_name:
|
70
|
-
description:
|
97
|
+
env_name: 'FIV_KEYSTORE_PATH',
|
98
|
+
description: 'Path to android keystore',
|
71
99
|
is_string: true,
|
72
|
-
default_value:
|
100
|
+
default_value: './fastlane/android'
|
101
|
+
),
|
73
102
|
FastlaneCore::ConfigItem.new(
|
74
103
|
key: :keystore_name,
|
75
|
-
env_name:
|
76
|
-
description:
|
104
|
+
env_name: 'FIV_KEYSTORE_NAME',
|
105
|
+
description: 'Name of the keystore',
|
77
106
|
is_string: true,
|
78
|
-
optional: false
|
107
|
+
optional: false
|
108
|
+
),
|
79
109
|
FastlaneCore::ConfigItem.new(
|
80
110
|
key: :android_sdk_path,
|
81
|
-
env_name:
|
82
|
-
description:
|
111
|
+
env_name: 'FIV_ANDROID_SDK_PATH',
|
112
|
+
description: 'Path to your installed Android SDK',
|
83
113
|
is_string: true,
|
84
|
-
default_value:
|
114
|
+
default_value: '~/Library/Android/sdk'
|
115
|
+
),
|
85
116
|
FastlaneCore::ConfigItem.new(
|
86
117
|
key: :android_build_tool_version,
|
87
|
-
env_name:
|
88
|
-
description:
|
118
|
+
env_name: 'FIV_ANDROID_SDK_BUILD_TOOL_VERSION',
|
119
|
+
description:
|
120
|
+
'Android Build Tool version used for `zipalign`, `sign` and `verify`',
|
89
121
|
is_string: true,
|
90
|
-
default_value:
|
122
|
+
default_value: '28.0.3'
|
123
|
+
),
|
91
124
|
FastlaneCore::ConfigItem.new(
|
92
|
-
key: :
|
93
|
-
env_name:
|
94
|
-
description:
|
125
|
+
key: :apk_source,
|
126
|
+
env_name: 'FIV_APK_SOURCE',
|
127
|
+
description: 'Source path to the apk file',
|
95
128
|
is_string: true,
|
96
|
-
default_value:
|
129
|
+
default_value:
|
130
|
+
'./platforms/android/app/build/outputs/apk/release/app-release-unsigned.apk'
|
131
|
+
),
|
132
|
+
FastlaneCore::ConfigItem.new(
|
133
|
+
key: :apk_zipalign_target,
|
134
|
+
env_name: 'FIV_APK_ZIPALIGN_TARGET',
|
135
|
+
description: 'Target path for the zipaligned apk',
|
136
|
+
is_string: true,
|
137
|
+
default_value:
|
138
|
+
'./platforms/android/app/build/outputs/apk/release/app-release-unsigned-zipalign.apk'
|
139
|
+
),
|
140
|
+
FastlaneCore::ConfigItem.new(
|
141
|
+
key: :apk_signed_target,
|
142
|
+
env_name: 'FIV_APK_SIGNED_TARGET',
|
143
|
+
description: 'Tarket path of the signed apk',
|
144
|
+
is_string: true,
|
145
|
+
default_value: './platforms/android/app/build/outputs/apk/release'
|
146
|
+
),
|
97
147
|
FastlaneCore::ConfigItem.new(
|
98
148
|
key: :key_alias,
|
99
|
-
env_name:
|
100
|
-
description:
|
149
|
+
env_name: 'FIV_ANDROID_KEYSTORE_ALIAS',
|
150
|
+
description: 'Key alias of the keystore',
|
101
151
|
is_string: true,
|
102
|
-
optional: false
|
152
|
+
optional: false
|
153
|
+
),
|
103
154
|
FastlaneCore::ConfigItem.new(
|
104
155
|
key: :app_version,
|
105
|
-
env_name:
|
106
|
-
description:
|
156
|
+
env_name: 'FIV_APP_VERSION',
|
157
|
+
description: 'App version',
|
107
158
|
is_string: true,
|
108
159
|
default_value: ''
|
109
160
|
),
|
110
161
|
FastlaneCore::ConfigItem.new(
|
111
162
|
key: :app_build_no,
|
112
|
-
env_name:
|
113
|
-
description:
|
163
|
+
env_name: 'FIV_APP_BUILD_NO',
|
164
|
+
description: 'App build number',
|
114
165
|
is_string: true,
|
115
166
|
default_value: ''
|
116
|
-
),
|
117
|
-
FastlaneCore::ConfigItem.new(
|
118
|
-
key: :silent,
|
119
|
-
env_name: "FIV_SIGN_ANDROID_SILENT",
|
120
|
-
description: "Wether to sign android silently",
|
121
|
-
is_string: false,
|
122
|
-
default_value: true
|
123
167
|
)
|
124
168
|
]
|
125
169
|
end
|
@@ -128,7 +172,10 @@ module Fastlane
|
|
128
172
|
# Define the shared values you are going to provide
|
129
173
|
# Example
|
130
174
|
[
|
131
|
-
[
|
175
|
+
[
|
176
|
+
'FIV_BUILD_IONIC_ANDROID_CUSTOM_VALUE',
|
177
|
+
'A description of what this value contains'
|
178
|
+
]
|
132
179
|
]
|
133
180
|
end
|
134
181
|
|
@@ -138,11 +185,11 @@ module Fastlane
|
|
138
185
|
|
139
186
|
def self.authors
|
140
187
|
# So no one will ever forget your contribution to fastlane :) You are awesome btw!
|
141
|
-
[
|
188
|
+
%w[marcjulian]
|
142
189
|
end
|
143
190
|
|
144
191
|
def self.is_supported?(platform)
|
145
|
-
|
192
|
+
platform == :android
|
146
193
|
end
|
147
194
|
end
|
148
195
|
end
|
@@ -1,15 +1,18 @@
|
|
1
1
|
module Fastlane
|
2
2
|
module Actions
|
3
3
|
module SharedValues
|
4
|
-
FIV_BUILD_IONIC_ANDROID_CUSTOM_VALUE =
|
4
|
+
FIV_BUILD_IONIC_ANDROID_CUSTOM_VALUE =
|
5
|
+
:FIV_BUILD_IONIC_ANDROID_CUSTOM_VALUE
|
5
6
|
end
|
6
7
|
|
7
8
|
class FivTakeScreenshotsAction < Action
|
8
9
|
def self.run(params)
|
9
|
-
UI.header
|
10
|
-
|
11
|
-
sh "ionic cordova run browser --prod && #{params[:cypress]} run -s #{
|
12
|
-
|
10
|
+
UI.header 'Taking Screenshots...'
|
11
|
+
|
12
|
+
sh "ionic cordova run browser --prod && #{params[:cypress]} run -s #{
|
13
|
+
params[:spec]
|
14
|
+
} -b chrome"
|
15
|
+
UI.success 'Successfully finished taking screenshots'
|
13
16
|
end
|
14
17
|
|
15
18
|
#####################################################
|
@@ -17,30 +20,34 @@ module Fastlane
|
|
17
20
|
#####################################################
|
18
21
|
|
19
22
|
def self.description
|
20
|
-
|
23
|
+
'A short description with <= 80 characters of what this action does'
|
21
24
|
end
|
22
25
|
|
23
26
|
def self.details
|
24
27
|
# Optional:
|
25
28
|
# this is your chance to provide a more detailed description of this action
|
26
|
-
|
29
|
+
'You can use this action to do cool things...'
|
27
30
|
end
|
28
31
|
|
29
32
|
def self.available_options
|
30
|
-
# Define all options your action supports.
|
31
|
-
|
33
|
+
# Define all options your action supports.
|
34
|
+
|
32
35
|
# Below a few examples
|
33
36
|
[
|
34
|
-
FastlaneCore::ConfigItem.new(
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
37
|
+
FastlaneCore::ConfigItem.new(
|
38
|
+
key: :cypress,
|
39
|
+
env_name: 'FIV_BUILD_IONIC_ANDROID_IS_PROD',
|
40
|
+
description: 'Dev or Prod build',
|
41
|
+
optional: false,
|
42
|
+
type: String
|
43
|
+
),
|
44
|
+
FastlaneCore::ConfigItem.new(
|
45
|
+
key: :spec,
|
46
|
+
env_name: 'FIV_BUILD_IONIC_ANDROID_IS_PROD',
|
47
|
+
description: 'Dev or Prod build',
|
48
|
+
optional: false,
|
49
|
+
type: String
|
50
|
+
)
|
44
51
|
]
|
45
52
|
end
|
46
53
|
|
@@ -48,7 +55,10 @@ module Fastlane
|
|
48
55
|
# Define the shared values you are going to provide
|
49
56
|
# Example
|
50
57
|
[
|
51
|
-
[
|
58
|
+
[
|
59
|
+
'FIV_BUILD_IONIC_ANDROID_CUSTOM_VALUE',
|
60
|
+
'A description of what this value contains'
|
61
|
+
]
|
52
62
|
]
|
53
63
|
end
|
54
64
|
|
@@ -58,11 +68,11 @@ module Fastlane
|
|
58
68
|
|
59
69
|
def self.authors
|
60
70
|
# So no one will ever forget your contribution to fastlane :) You are awesome btw!
|
61
|
-
[
|
71
|
+
['Your GitHub/Twitter Name']
|
62
72
|
end
|
63
73
|
|
64
74
|
def self.is_supported?(platform)
|
65
|
-
|
75
|
+
platform == :android
|
66
76
|
end
|
67
77
|
end
|
68
78
|
end
|
@@ -7,31 +7,36 @@ module Fastlane
|
|
7
7
|
class FivUpdateVersionAction < Action
|
8
8
|
def self.run(params)
|
9
9
|
# fastlane will take care of reading in the parameter and fetching the environment variable:
|
10
|
-
old_version =
|
10
|
+
old_version =
|
11
|
+
sh "echo \"cat //*[local-name()='widget']/@version\" | xmllint --shell #{
|
12
|
+
params[:pathToConfigXML]
|
13
|
+
}| awk -F'[=\"]' '!/>/{print $(NF-1)}'"
|
11
14
|
old_version = old_version.delete!("\n")
|
12
15
|
puts "current version: #{old_version}"
|
13
16
|
|
14
|
-
puts "Insert new version number, current version in config.xml is '#{
|
17
|
+
puts "Insert new version number, current version in config.xml is '#{
|
18
|
+
old_version
|
19
|
+
}' (Leave empty and press enter to skip this step): "
|
15
20
|
new_version_number = STDIN.gets.strip
|
16
21
|
puts "new version: #{new_version_number}"
|
17
22
|
|
18
23
|
if new_version_number.length > 0
|
19
|
-
puts
|
24
|
+
puts 'take new version number'
|
20
25
|
version = new_version_number
|
21
26
|
else
|
22
|
-
puts
|
27
|
+
puts 'take old version number'
|
23
28
|
version = old_version
|
24
29
|
end
|
25
30
|
|
26
31
|
text = File.read(params[:pathToConfigXML])
|
27
32
|
|
28
|
-
new_contents = text
|
29
|
-
.gsub(/version="[0-9.]*"/, "version=\"#{version}\"")
|
30
|
-
|
31
|
-
File.open(params[:pathToConfigXML], "w") {|file| file.puts new_contents}
|
33
|
+
new_contents = text.gsub(/version="[0-9.]*"/, "version=\"#{version}\"")
|
32
34
|
|
33
|
-
|
35
|
+
File.open(params[:pathToConfigXML], 'w') do |file|
|
36
|
+
file.puts new_contents
|
37
|
+
end
|
34
38
|
|
39
|
+
return version
|
35
40
|
end
|
36
41
|
|
37
42
|
#####################################################
|
@@ -39,27 +44,34 @@ module Fastlane
|
|
39
44
|
#####################################################
|
40
45
|
|
41
46
|
def self.description
|
42
|
-
|
47
|
+
'A short description with <= 80 characters of what this action does'
|
43
48
|
end
|
44
49
|
|
45
50
|
def self.details
|
46
51
|
# Optional:
|
47
52
|
# this is your chance to provide a more detailed description of this action
|
48
|
-
|
53
|
+
'You can use this action to do cool things...'
|
49
54
|
end
|
50
55
|
|
51
56
|
def self.available_options
|
52
|
-
# Define all options your action supports.
|
53
|
-
|
57
|
+
# Define all options your action supports.
|
58
|
+
|
54
59
|
[
|
55
|
-
FastlaneCore::ConfigItem.new(
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
60
|
+
FastlaneCore::ConfigItem.new(
|
61
|
+
key: :pathToConfigXML,
|
62
|
+
env_name: 'FIV_INCREMENT_BUILD_CONFIG',
|
63
|
+
description: '---',
|
64
|
+
optional: false,
|
65
|
+
verify_block:
|
66
|
+
proc do |value|
|
67
|
+
unless File.exist?(value)
|
68
|
+
UI.user_error!(
|
69
|
+
'Couldnt find config.xml! Please change your path.'
|
70
|
+
)
|
71
|
+
end
|
72
|
+
end,
|
73
|
+
type: String
|
74
|
+
)
|
63
75
|
]
|
64
76
|
end
|
65
77
|
|
@@ -67,28 +79,31 @@ module Fastlane
|
|
67
79
|
# Define the shared values you are going to provide
|
68
80
|
# Example
|
69
81
|
[
|
70
|
-
[
|
82
|
+
[
|
83
|
+
'FIV_UPDATE_VERSION_CUSTOM_VALUE',
|
84
|
+
'A description of what this value contains'
|
85
|
+
]
|
71
86
|
]
|
72
87
|
end
|
73
88
|
|
74
89
|
def self.return_value
|
75
|
-
|
90
|
+
'returns the new version specified in config.xml'
|
76
91
|
end
|
77
92
|
|
78
93
|
def self.authors
|
79
94
|
# So no one will ever forget your contribution to fastlane :) You are awesome btw!
|
80
|
-
[
|
95
|
+
['Your GitHub/Twitter Name']
|
81
96
|
end
|
82
97
|
|
83
98
|
def self.is_supported?(platform)
|
84
99
|
# you can do things like
|
85
|
-
#
|
100
|
+
#
|
86
101
|
# true
|
87
|
-
#
|
102
|
+
#
|
88
103
|
# platform == :ios
|
89
|
-
#
|
104
|
+
#
|
90
105
|
# [:ios, :mac].include?(platform)
|
91
|
-
#
|
106
|
+
#
|
92
107
|
|
93
108
|
platform == :ios
|
94
109
|
end
|