pantograph 0.1.12 → 0.1.13
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/pantograph/lib/pantograph/actions/artifactory.rb +15 -15
- data/pantograph/lib/pantograph/actions/bundle_install.rb +33 -33
- data/pantograph/lib/pantograph/actions/changelog_from_git_commits.rb +14 -14
- data/pantograph/lib/pantograph/actions/cloc.rb +15 -15
- data/pantograph/lib/pantograph/actions/danger.rb +26 -26
- data/pantograph/lib/pantograph/actions/download.rb +3 -3
- data/pantograph/lib/pantograph/actions/ensure_git_branch.rb +4 -4
- data/pantograph/lib/pantograph/actions/ensure_git_status_clean.rb +10 -10
- data/pantograph/lib/pantograph/actions/erb.rb +12 -12
- data/pantograph/lib/pantograph/actions/get_github_release.rb +10 -10
- data/pantograph/lib/pantograph/actions/github_api.rb +20 -20
- data/pantograph/lib/pantograph/actions/gradle.rb +67 -85
- data/pantograph/lib/pantograph/actions/jira.rb +14 -14
- data/pantograph/lib/pantograph/actions/make_changelog_from_jenkins.rb +9 -9
- data/pantograph/lib/pantograph/actions/nexus_upload.rb +37 -37
- data/pantograph/lib/pantograph/actions/number_of_commits.rb +6 -6
- data/pantograph/lib/pantograph/actions/push_git_tags.rb +7 -7
- data/pantograph/lib/pantograph/actions/push_to_git_remote.rb +19 -19
- data/pantograph/lib/pantograph/actions/reset_git_repo.rb +9 -9
- data/pantograph/lib/pantograph/actions/rsync.rb +14 -14
- data/pantograph/lib/pantograph/actions/set_github_release.rb +19 -19
- data/pantograph/lib/pantograph/actions/slack.rb +28 -28
- data/pantograph/lib/pantograph/actions/sonar.rb +32 -32
- data/pantograph/lib/pantograph/actions/ssh.rb +22 -22
- data/pantograph/lib/pantograph/actions/twitter.rb +14 -14
- data/pantograph/lib/pantograph/actions/update_pantograph.rb +16 -16
- data/pantograph/lib/pantograph/actions/zip.rb +12 -12
- data/pantograph/lib/pantograph/helper/gradle_helper.rb +2 -3
- data/pantograph/lib/pantograph/junit_generator.rb +1 -1
- data/pantograph/lib/pantograph/lane_manager.rb +1 -1
- data/pantograph/lib/pantograph/plugins/template/.rubocop.yml +2 -0
- data/pantograph/lib/pantograph/setup/setup.rb +6 -6
- data/pantograph/lib/pantograph/version.rb +1 -1
- data/pantograph_core/lib/pantograph_core/helper.rb +1 -1
- data/pantograph_core/lib/pantograph_core/print_table.rb +1 -1
- data/pantograph_core/lib/pantograph_core/swag.rb +2 -2
- metadata +2 -2
@@ -26,7 +26,7 @@ module Pantograph
|
|
26
26
|
#####################################################
|
27
27
|
|
28
28
|
def self.description
|
29
|
-
|
29
|
+
'Download a file from a remote server (e.g. JSON file)'
|
30
30
|
end
|
31
31
|
|
32
32
|
def self.details
|
@@ -40,7 +40,7 @@ module Pantograph
|
|
40
40
|
def self.available_options
|
41
41
|
[
|
42
42
|
PantographCore::ConfigItem.new(key: :url,
|
43
|
-
env_name:
|
43
|
+
env_name: 'DOWNLOAD_URL',
|
44
44
|
description: "The URL that should be downloaded",
|
45
45
|
verify_block: proc do |value|
|
46
46
|
UI.important("The URL doesn't start with http or https") unless value.start_with?("http")
|
@@ -65,7 +65,7 @@ module Pantograph
|
|
65
65
|
end
|
66
66
|
|
67
67
|
def self.authors
|
68
|
-
[
|
68
|
+
['KrauseFx']
|
69
69
|
end
|
70
70
|
|
71
71
|
def self.is_supported?(platform)
|
@@ -20,20 +20,20 @@ module Pantograph
|
|
20
20
|
#####################################################
|
21
21
|
|
22
22
|
def self.description
|
23
|
-
|
23
|
+
'Raises an exception if not on a specific git branch'
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.details
|
27
27
|
[
|
28
|
-
|
29
|
-
|
28
|
+
'This action will check if your git repo is checked out to a specific branch.',
|
29
|
+
'You may only want to make releases from a specific branch, so `ensure_git_branch` will stop a lane if it was accidentally executed on an incorrect branch.'
|
30
30
|
].join("\n")
|
31
31
|
end
|
32
32
|
|
33
33
|
def self.available_options
|
34
34
|
[
|
35
35
|
PantographCore::ConfigItem.new(key: :branch,
|
36
|
-
env_name:
|
36
|
+
env_name: 'ENSURE_GIT_BRANCH_NAME',
|
37
37
|
description: "The branch that should be checked for. String that can be either the full name of the branch or a regex to match",
|
38
38
|
type: String,
|
39
39
|
default_value: 'master')
|
@@ -14,7 +14,7 @@ module Pantograph
|
|
14
14
|
UI.success('Git status is clean, all good! 💪')
|
15
15
|
Actions.lane_context[SharedValues::GIT_REPO_WAS_CLEAN_ON_START] = true
|
16
16
|
else
|
17
|
-
error_message =
|
17
|
+
error_message = 'Git repository is dirty! Please ensure the repo is in a clean state by committing/stashing/discarding all changes first.'
|
18
18
|
error_message += "\nUncommitted changes:\n#{repo_status}" if params[:show_uncommitted_changes]
|
19
19
|
if params[:show_diff]
|
20
20
|
repo_diff = Actions.sh("git diff")
|
@@ -25,14 +25,14 @@ module Pantograph
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def self.description
|
28
|
-
|
28
|
+
'Raises an exception if there are uncommitted git changes'
|
29
29
|
end
|
30
30
|
|
31
31
|
def self.details
|
32
32
|
[
|
33
|
-
|
34
|
-
|
35
|
-
|
33
|
+
'A sanity check to make sure you are working in a repo that is clean.',
|
34
|
+
'Especially useful to put at the beginning of your Pantfile in the `before_all` block, if some of your other actions will touch your filesystem, do things to your git repo, or just as a general reminder to save your work.',
|
35
|
+
'Also needed as a prerequisite for some other actions like `reset_git_repo`.'
|
36
36
|
].join("\n")
|
37
37
|
end
|
38
38
|
|
@@ -43,7 +43,7 @@ module Pantograph
|
|
43
43
|
end
|
44
44
|
|
45
45
|
def self.author
|
46
|
-
[
|
46
|
+
['lmirosevic', 'antondomashnev']
|
47
47
|
end
|
48
48
|
|
49
49
|
def self.example_code
|
@@ -55,14 +55,14 @@ module Pantograph
|
|
55
55
|
def self.available_options
|
56
56
|
[
|
57
57
|
PantographCore::ConfigItem.new(key: :show_uncommitted_changes,
|
58
|
-
env_name:
|
59
|
-
description:
|
58
|
+
env_name: 'ENSURE_GIT_STATUS_CLEAN_SHOW_UNCOMMITTED_CHANGES',
|
59
|
+
description: 'The flag whether to show uncommitted changes if the repo is dirty',
|
60
60
|
optional: true,
|
61
61
|
default_value: false,
|
62
62
|
is_string: false),
|
63
63
|
PantographCore::ConfigItem.new(key: :show_diff,
|
64
|
-
env_name:
|
65
|
-
description:
|
64
|
+
env_name: 'ENSURE_GIT_STATUS_CLEAN_SHOW_DIFF',
|
65
|
+
description: 'The flag whether to show the git diff if the repo is dirty',
|
66
66
|
optional: true,
|
67
67
|
default_value: false,
|
68
68
|
is_string: false)
|
@@ -14,13 +14,13 @@ module Pantograph
|
|
14
14
|
#####################################################
|
15
15
|
|
16
16
|
def self.description
|
17
|
-
|
17
|
+
'Allows to Generate output files based on ERB templates'
|
18
18
|
end
|
19
19
|
|
20
20
|
def self.details
|
21
21
|
[
|
22
|
-
|
23
|
-
|
22
|
+
'Renders an ERB template with `:placeholders` given as a hash via parameter.',
|
23
|
+
'If no `:destination` is set, it returns the rendered template as string.'
|
24
24
|
].join("\n")
|
25
25
|
end
|
26
26
|
|
@@ -28,21 +28,21 @@ module Pantograph
|
|
28
28
|
[
|
29
29
|
|
30
30
|
PantographCore::ConfigItem.new(key: :template,
|
31
|
-
short_option:
|
32
|
-
env_name:
|
33
|
-
description:
|
31
|
+
short_option: '-T',
|
32
|
+
env_name: 'ERB_SRC',
|
33
|
+
description: 'ERB Template File',
|
34
34
|
optional: false,
|
35
35
|
type: String),
|
36
36
|
PantographCore::ConfigItem.new(key: :destination,
|
37
|
-
short_option:
|
38
|
-
env_name:
|
39
|
-
description:
|
37
|
+
short_option: '-D',
|
38
|
+
env_name: 'ERB_DST',
|
39
|
+
description: 'Destination file',
|
40
40
|
optional: true,
|
41
41
|
type: String),
|
42
42
|
PantographCore::ConfigItem.new(key: :placeholders,
|
43
|
-
short_option:
|
44
|
-
env_name:
|
45
|
-
description:
|
43
|
+
short_option: '-p',
|
44
|
+
env_name: 'ERB_PLACEHOLDERS',
|
45
|
+
description: 'Placeholders given as a hash',
|
46
46
|
default_value: {},
|
47
47
|
is_string: false,
|
48
48
|
type: Hash)
|
@@ -95,7 +95,7 @@ module Pantograph
|
|
95
95
|
SAMPLE
|
96
96
|
|
97
97
|
[
|
98
|
-
|
98
|
+
'This will return all information about a release. For example:'.markdown_preserve_newlines,
|
99
99
|
sample
|
100
100
|
].join("\n")
|
101
101
|
end
|
@@ -109,27 +109,27 @@ module Pantograph
|
|
109
109
|
def self.available_options
|
110
110
|
[
|
111
111
|
PantographCore::ConfigItem.new(key: :url,
|
112
|
-
env_name:
|
113
|
-
description: "The path to your repo, e.g. '
|
112
|
+
env_name: 'GET_GITHUB_RELEASE_URL',
|
113
|
+
description: "The path to your repo, e.g. 'johnknapprs/pantograph'",
|
114
114
|
verify_block: proc do |value|
|
115
|
-
UI.user_error!("Please only pass the path, e.g. 'KrauseFx/pantograph'") if value.include?(
|
115
|
+
UI.user_error!("Please only pass the path, e.g. 'KrauseFx/pantograph'") if value.include?('github.com')
|
116
116
|
UI.user_error!("Please only pass the path, e.g. 'KrauseFx/pantograph'") if value.split('/').count != 2
|
117
117
|
end),
|
118
118
|
PantographCore::ConfigItem.new(key: :server_url,
|
119
|
-
env_name:
|
119
|
+
env_name: 'GITHUB_RELEASE_SERVER_URL',
|
120
120
|
description: "The server url. e.g. 'https://your.github.server/api/v3' (Default: 'https://api.github.com')",
|
121
121
|
default_value: "https://api.github.com",
|
122
122
|
optional: true,
|
123
123
|
verify_block: proc do |value|
|
124
|
-
UI.user_error!(
|
124
|
+
UI.user_error!('Please include the protocol in the server url, e.g. https://your.github.server') unless value.include?("//")
|
125
125
|
end),
|
126
126
|
PantographCore::ConfigItem.new(key: :version,
|
127
|
-
env_name:
|
128
|
-
description:
|
127
|
+
env_name: 'GET_GITHUB_RELEASE_VERSION',
|
128
|
+
description: 'The version tag of the release to check'),
|
129
129
|
PantographCore::ConfigItem.new(key: :api_token,
|
130
|
-
env_name:
|
130
|
+
env_name: 'GITHUB_RELEASE_API_TOKEN',
|
131
131
|
sensitive: true,
|
132
|
-
description:
|
132
|
+
description: 'GitHub Personal Token (required for private repositories)',
|
133
133
|
optional: true)
|
134
134
|
]
|
135
135
|
end
|
@@ -79,26 +79,26 @@ module Pantograph
|
|
79
79
|
def available_options
|
80
80
|
[
|
81
81
|
PantographCore::ConfigItem.new(key: :server_url,
|
82
|
-
env_name:
|
82
|
+
env_name: 'GITHUB_API_SERVER_URL',
|
83
83
|
description: "The server url. e.g. 'https://your.internal.github.host/api/v3' (Default: 'https://api.github.com')",
|
84
|
-
default_value:
|
84
|
+
default_value: 'https://api.github.com',
|
85
85
|
optional: true,
|
86
86
|
verify_block: proc do |value|
|
87
87
|
UI.user_error!("Please include the protocol in the server url, e.g. https://your.github.server/api/v3") unless value.include?("//")
|
88
88
|
end),
|
89
89
|
PantographCore::ConfigItem.new(key: :api_token,
|
90
|
-
env_name:
|
91
|
-
description:
|
90
|
+
env_name: 'GITHUB_API_TOKEN',
|
91
|
+
description: 'Personal API Token for GitHub - generate one at https://github.com/settings/tokens',
|
92
92
|
sensitive: true,
|
93
93
|
code_gen_sensitive: true,
|
94
94
|
type: String,
|
95
|
-
default_value: ENV[
|
95
|
+
default_value: ENV['GITHUB_API_TOKEN'],
|
96
96
|
default_value_dynamic: true,
|
97
97
|
optional: false),
|
98
98
|
PantographCore::ConfigItem.new(key: :http_method,
|
99
|
-
env_name:
|
100
|
-
description:
|
101
|
-
default_value:
|
99
|
+
env_name: 'GITHUB_API_HTTP_METHOD',
|
100
|
+
description: 'The HTTP method. e.g. GET / POST',
|
101
|
+
default_value: 'GET',
|
102
102
|
optional: true,
|
103
103
|
verify_block: proc do |value|
|
104
104
|
unless %w(GET POST PUT DELETE HEAD CONNECT PATCH).include?(value.to_s.upcase)
|
@@ -106,22 +106,22 @@ module Pantograph
|
|
106
106
|
end
|
107
107
|
end),
|
108
108
|
PantographCore::ConfigItem.new(key: :body,
|
109
|
-
env_name:
|
110
|
-
description:
|
109
|
+
env_name: 'GITHUB_API_REQUEST_BODY',
|
110
|
+
description: 'The request body in JSON or hash format',
|
111
111
|
is_string: false,
|
112
112
|
default_value: {},
|
113
113
|
optional: true),
|
114
114
|
PantographCore::ConfigItem.new(key: :raw_body,
|
115
|
-
env_name:
|
116
|
-
description:
|
115
|
+
env_name: 'GITHUB_API_REQUEST_RAW_BODY',
|
116
|
+
description: 'The request body taken verbatim instead of as JSON, useful for file uploads',
|
117
117
|
type: String,
|
118
118
|
optional: true),
|
119
119
|
PantographCore::ConfigItem.new(key: :path,
|
120
|
-
env_name:
|
120
|
+
env_name: 'GITHUB_API_PATH',
|
121
121
|
description: "The endpoint path. e.g. '/repos/:owner/:repo/readme'",
|
122
122
|
optional: true),
|
123
123
|
PantographCore::ConfigItem.new(key: :url,
|
124
|
-
env_name:
|
124
|
+
env_name: 'GITHUB_API_URL',
|
125
125
|
description: "The complete full url - used instead of path. e.g. 'https://uploads.github.com/repos/pantograph...'",
|
126
126
|
optional: true,
|
127
127
|
verify_block: proc do |value|
|
@@ -133,13 +133,13 @@ module Pantograph
|
|
133
133
|
default_value: {},
|
134
134
|
optional: true),
|
135
135
|
PantographCore::ConfigItem.new(key: :headers,
|
136
|
-
description:
|
136
|
+
description: 'Optional headers to apply',
|
137
137
|
is_string: false,
|
138
138
|
default_value: {},
|
139
139
|
optional: true),
|
140
140
|
PantographCore::ConfigItem.new(key: :secure,
|
141
|
-
env_name:
|
142
|
-
description:
|
141
|
+
env_name: 'GITHUB_API_SECURE',
|
142
|
+
description: 'Optionally disable secure requests (ssl_verify_peer)',
|
143
143
|
type: Boolean,
|
144
144
|
default_value: true,
|
145
145
|
optional: true)
|
@@ -155,11 +155,11 @@ module Pantograph
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def return_value
|
158
|
-
|
158
|
+
'A hash including the HTTP status code (:status), the response body (:body), and if valid JSON has been returned the parsed JSON (:json).'
|
159
159
|
end
|
160
160
|
|
161
161
|
def authors
|
162
|
-
[
|
162
|
+
['tommeier']
|
163
163
|
end
|
164
164
|
|
165
165
|
def example_code
|
@@ -227,7 +227,7 @@ module Pantograph
|
|
227
227
|
elsif body.kind_of?(Array)
|
228
228
|
body.to_json
|
229
229
|
else
|
230
|
-
UI.user_error!(
|
230
|
+
UI.user_error!('Please provide valid JSON, or a hash as request body') unless parse_json(body)
|
231
231
|
body
|
232
232
|
end
|
233
233
|
end
|
@@ -4,27 +4,20 @@ require 'shellwords'
|
|
4
4
|
module Pantograph
|
5
5
|
module Actions
|
6
6
|
module SharedValues
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
GRADLE_ALL_AAB_OUTPUT_PATHS = :GRADLE_ALL_AAB_OUTPUT_PATHS
|
11
|
-
GRADLE_OUTPUT_JSON_OUTPUT_PATH = :GRADLE_OUTPUT_JSON_OUTPUT_PATH
|
12
|
-
GRADLE_ALL_OUTPUT_JSON_OUTPUT_PATHS = :GRADLE_ALL_OUTPUT_JSON_OUTPUT_PATHS
|
13
|
-
GRADLE_FLAVOR = :GRADLE_FLAVOR
|
14
|
-
GRADLE_BUILD_TYPE = :GRADLE_BUILD_TYPE
|
7
|
+
GRADLE_ARTIFACT_OUTPUT_PATH = :GRADLE_ARTIFACT_OUTPUT_PATH
|
8
|
+
GRADLE_FLAVOR = :GRADLE_FLAVOR
|
9
|
+
GRADLE_BUILD_TYPE = :GRADLE_BUILD_TYPE
|
15
10
|
end
|
16
11
|
|
17
12
|
class GradleAction < Action
|
18
13
|
def self.run(params)
|
19
|
-
task
|
20
|
-
flavor
|
21
|
-
build_type
|
22
|
-
|
14
|
+
task = params[:task]
|
15
|
+
flavor = params[:flavor]
|
16
|
+
build_type = params[:build_type]
|
23
17
|
gradle_task = [task, flavor, build_type].join
|
24
18
|
|
25
|
-
project_dir
|
26
|
-
|
27
|
-
gradle_path_param = params[:gradle_path] || './gradlew'
|
19
|
+
project_dir = params[:project_dir]
|
20
|
+
gradle_path_param = params[:gradle_path]
|
28
21
|
|
29
22
|
# Get the path to gradle, if it's an absolute path we take it as is, if it's relative we assume it's relative to the project_dir
|
30
23
|
gradle_path = if Pathname.new(gradle_path_param).absolute?
|
@@ -39,8 +32,15 @@ module Pantograph
|
|
39
32
|
# Construct our flags
|
40
33
|
flags = []
|
41
34
|
flags << "-p #{project_dir.shellescape}"
|
42
|
-
|
43
|
-
|
35
|
+
|
36
|
+
unless params[:properties].nil?
|
37
|
+
flags << params[:properties].map { |k, v| "-P#{k.to_s.shellescape}=#{v.to_s.shellescape}" }.join(' ')
|
38
|
+
end
|
39
|
+
|
40
|
+
unless params[:system_properties].nil?
|
41
|
+
flags << params[:system_properties].map { |k, v| "-D#{k.to_s.shellescape}=#{v.to_s.shellescape}" }.join(' ')
|
42
|
+
end
|
43
|
+
|
44
44
|
flags << params[:flags] unless params[:flags].nil?
|
45
45
|
|
46
46
|
# Run the actual gradle task
|
@@ -51,45 +51,30 @@ module Pantograph
|
|
51
51
|
Actions.lane_context[SharedValues::GRADLE_FLAVOR] = flavor if flavor
|
52
52
|
|
53
53
|
# We run the actual gradle task
|
54
|
-
result = gradle.trigger(
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
return
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
new_apks = new_apks.map { |path| File.expand_path(path) }
|
71
|
-
new_aabs = Dir[aab_search_path]
|
72
|
-
new_aabs = new_aabs.map { |path| File.expand_path(path) }
|
73
|
-
new_output_jsons = Dir[output_json_search_path]
|
74
|
-
new_output_jsons = new_output_jsons.map { |path| File.expand_path(path) }
|
75
|
-
|
76
|
-
# We expose all of these new apks and aabs
|
77
|
-
Actions.lane_context[SharedValues::GRADLE_ALL_APK_OUTPUT_PATHS] = new_apks
|
78
|
-
Actions.lane_context[SharedValues::GRADLE_ALL_AAB_OUTPUT_PATHS] = new_aabs
|
79
|
-
Actions.lane_context[SharedValues::GRADLE_ALL_OUTPUT_JSON_OUTPUT_PATHS] = new_output_jsons
|
80
|
-
|
81
|
-
# We also take the most recent apk and aab to return as SharedValues::GRADLE_APK_OUTPUT_PATH and SharedValues::GRADLE_AAB_OUTPUT_PATH
|
54
|
+
result = gradle.trigger(
|
55
|
+
task: gradle_task,
|
56
|
+
flags: flags.join(' '),
|
57
|
+
print_command: params[:print_command],
|
58
|
+
print_command_output: params[:print_command_output]
|
59
|
+
)
|
60
|
+
|
61
|
+
# If we didn't build, then we return now, as it makes no sense to search for artifacts's in a non-`assemble` or non-`build` scenario
|
62
|
+
return result unless task =~ /\b(assemble)/ || task =~ /\b(build)/
|
63
|
+
|
64
|
+
artifact_search_path = File.join(project_dir, '**', 'build', '**', "*.#{params[:artifact_extension].gsub('.', '')}")
|
65
|
+
|
66
|
+
# Our artifact is now built, but there might actually be multiple ones that were built if a flavor was not specified in a multi-flavor project (e.g. `assembleRelease`)
|
67
|
+
new_artifacts = Dir[artifact_search_path].map { |path| File.expand_path(path) }
|
68
|
+
|
69
|
+
# We also take the most recent artifact to return as SharedValues::GRADLE_ARTIFACT_OUTPUT_PATH
|
82
70
|
# This is the one that will be relevant for most projects that just build a single build variant (flavor + build type combo).
|
83
71
|
# In multi build variants this value is undefined
|
84
|
-
|
85
|
-
|
86
|
-
last_output_json_path = new_output_jsons.sort_by(&File.method(:mtime)).last
|
87
|
-
Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] = File.expand_path(last_apk_path) if last_apk_path
|
88
|
-
Actions.lane_context[SharedValues::GRADLE_AAB_OUTPUT_PATH] = File.expand_path(last_aab_path) if last_aab_path
|
89
|
-
Actions.lane_context[SharedValues::GRADLE_OUTPUT_JSON_OUTPUT_PATH] = File.expand_path(last_output_json_path) if last_output_json_path
|
72
|
+
last_artifact_path = new_artifacts.sort_by(&File.method(:mtime)).last
|
73
|
+
Actions.lane_context[SharedValues::GRADLE_ARTIFACT_OUTPUT_PATH] = File.expand_path(last_artifact_path) if last_artifact_path
|
90
74
|
|
91
|
-
# Give a helpful message in case there were no new
|
92
|
-
|
75
|
+
# Give a helpful message in case there were no new artifacts.
|
76
|
+
# Remember we're only running this code when assembling, in which case we certainly expect there to be an artifact
|
77
|
+
UI.message('Couldn\'t find any new artifact files...') if new_artifacts.empty?
|
93
78
|
|
94
79
|
return result
|
95
80
|
end
|
@@ -99,7 +84,7 @@ module Pantograph
|
|
99
84
|
#####################################################
|
100
85
|
|
101
86
|
def self.description
|
102
|
-
'All gradle related actions, including building and testing your
|
87
|
+
'All gradle related actions, including building and testing your application'
|
103
88
|
end
|
104
89
|
|
105
90
|
def self.details
|
@@ -109,57 +94,59 @@ module Pantograph
|
|
109
94
|
def self.available_options
|
110
95
|
[
|
111
96
|
PantographCore::ConfigItem.new(key: :task,
|
112
|
-
env_name: '
|
97
|
+
env_name: 'GRADLE_TASK',
|
113
98
|
description: 'The gradle task you want to execute, e.g. `assemble`, `bundle` or `test`. For tasks such as `assembleMyFlavorRelease` you should use gradle(task: \'assemble\', flavor: \'Myflavor\', build_type: \'Release\')',
|
114
99
|
optional: false,
|
115
100
|
type: String),
|
116
101
|
PantographCore::ConfigItem.new(key: :flavor,
|
117
|
-
env_name: '
|
102
|
+
env_name: 'GRADLE_FLAVOR',
|
118
103
|
description: 'The flavor that you want the task for, e.g. `MyFlavor`. If you are running the `assemble` task in a multi-flavor project, and you rely on Actions.lane_context[SharedValues::GRADLE_APK_OUTPUT_PATH] then you must specify a flavor here or else this value will be undefined',
|
119
104
|
optional: true,
|
120
105
|
type: String),
|
121
106
|
PantographCore::ConfigItem.new(key: :build_type,
|
122
|
-
env_name: '
|
107
|
+
env_name: 'GRADLE_BUILD_TYPE',
|
123
108
|
description: 'The build type that you want the task for, e.g. `Release`. Useful for some tasks such as `assemble`',
|
124
109
|
optional: true,
|
125
110
|
type: String),
|
126
111
|
PantographCore::ConfigItem.new(key: :flags,
|
127
|
-
env_name: '
|
112
|
+
env_name: 'GRADLE_FLAGS',
|
128
113
|
description: 'All parameter flags you want to pass to the gradle command, e.g. `--exitcode --xml file.xml`',
|
129
114
|
optional: true,
|
130
115
|
type: String),
|
131
116
|
PantographCore::ConfigItem.new(key: :project_dir,
|
132
|
-
env_name: '
|
117
|
+
env_name: 'GRADLE_PROJECT_DIR',
|
133
118
|
description: 'The root directory of the gradle project',
|
134
119
|
default_value: '.',
|
135
120
|
type: String),
|
136
121
|
PantographCore::ConfigItem.new(key: :gradle_path,
|
137
|
-
env_name: '
|
122
|
+
env_name: 'GRADLE_PATH',
|
138
123
|
description: 'The path to your `gradlew`. If you specify a relative path, it is assumed to be relative to the `project_dir`',
|
139
124
|
optional: true,
|
140
|
-
type: String
|
125
|
+
type: String,
|
126
|
+
default_value: './gradlew'),
|
141
127
|
PantographCore::ConfigItem.new(key: :properties,
|
142
|
-
env_name: '
|
128
|
+
env_name: 'GRADLE_PROPERTIES',
|
143
129
|
description: 'Gradle properties to be exposed to the gradle script',
|
144
130
|
optional: true,
|
145
131
|
is_string: false),
|
132
|
+
PantographCore::ConfigItem.new(key: :artifact_extension,
|
133
|
+
env_name: 'GRADLE_ARTIFACT_EXTENSION',
|
134
|
+
description: 'Gradle build output filetype extension',
|
135
|
+
optional: true,
|
136
|
+
is_string: true,
|
137
|
+
default_value: 'jar'),
|
146
138
|
PantographCore::ConfigItem.new(key: :system_properties,
|
147
|
-
env_name: '
|
139
|
+
env_name: 'GRADLE_SYSTEM_PROPERTIES',
|
148
140
|
description: 'Gradle system properties to be exposed to the gradle script',
|
149
141
|
optional: true,
|
150
142
|
is_string: false),
|
151
|
-
PantographCore::ConfigItem.new(key: :serial,
|
152
|
-
env_name: 'FL_ANDROID_SERIAL',
|
153
|
-
description: 'Android serial, which device should be used for this command',
|
154
|
-
type: String,
|
155
|
-
default_value: ''),
|
156
143
|
PantographCore::ConfigItem.new(key: :print_command,
|
157
|
-
env_name: '
|
144
|
+
env_name: 'GRADLE_PRINT_COMMAND',
|
158
145
|
description: 'Control whether the generated Gradle command is printed as output before running it (true/false)',
|
159
146
|
is_string: false,
|
160
147
|
default_value: true),
|
161
148
|
PantographCore::ConfigItem.new(key: :print_command_output,
|
162
|
-
env_name: '
|
149
|
+
env_name: 'GRADLE_PRINT_COMMAND_OUTPUT',
|
163
150
|
description: 'Control whether the output produced by given Gradle command is printed while running (true/false)',
|
164
151
|
is_string: false,
|
165
152
|
default_value: true)
|
@@ -168,14 +155,9 @@ module Pantograph
|
|
168
155
|
|
169
156
|
def self.output
|
170
157
|
[
|
171
|
-
['
|
172
|
-
['GRADLE_ALL_APK_OUTPUT_PATHS', 'When running a multi-variant `assemble`, the array of signed apk\'s that were generated'],
|
158
|
+
['GRADLE_ARTIFACT_OUTPUT_PATH', 'The path to the newly generated artifact file. Undefined in a multi-variant assemble scenario'],
|
173
159
|
['GRADLE_FLAVOR', 'The flavor, e.g. `MyFlavor`'],
|
174
|
-
['GRADLE_BUILD_TYPE', 'The build type, e.g. `Release`']
|
175
|
-
['GRADLE_AAB_OUTPUT_PATH', 'The path to the most recent Android app bundle'],
|
176
|
-
['GRADLE_ALL_AAB_OUTPUT_PATHS', 'The paths to the most recent Android app bundles'],
|
177
|
-
['GRADLE_OUTPUT_JSON_OUTPUT_PATH', 'The path to the most recent output.json file'],
|
178
|
-
['GRADLE_ALL_OUTPUT_JSON_OUTPUT_PATHS', 'The path to the newly generated output.json files']
|
160
|
+
['GRADLE_BUILD_TYPE', 'The build type, e.g. `Release`']
|
179
161
|
]
|
180
162
|
end
|
181
163
|
|
@@ -184,11 +166,11 @@ module Pantograph
|
|
184
166
|
end
|
185
167
|
|
186
168
|
def self.authors
|
187
|
-
['KrauseFx', 'lmirosevic']
|
169
|
+
['KrauseFx', 'lmirosevic', 'johnknapprs']
|
188
170
|
end
|
189
171
|
|
190
172
|
def self.is_supported?(platform)
|
191
|
-
|
173
|
+
true
|
192
174
|
end
|
193
175
|
|
194
176
|
def self.example_code
|
@@ -222,17 +204,17 @@ module Pantograph
|
|
222
204
|
)
|
223
205
|
```
|
224
206
|
|
225
|
-
You can use this to automatically [sign and zipalign]
|
207
|
+
You can use this to automatically [sign and zipalign] your app:
|
226
208
|
```ruby
|
227
209
|
gradle(
|
228
210
|
task: "assemble",
|
229
211
|
build_type: "Release",
|
230
212
|
print_command: false,
|
231
213
|
properties: {
|
232
|
-
"
|
233
|
-
"
|
234
|
-
"
|
235
|
-
"
|
214
|
+
"app.injected.signing.store.file" => "keystore.jks",
|
215
|
+
"app.injected.signing.store.password" => "store_password",
|
216
|
+
"app.injected.signing.key.alias" => "key_alias",
|
217
|
+
"app.injected.signing.key.password" => "key_password",
|
236
218
|
}
|
237
219
|
)
|
238
220
|
```
|
@@ -262,7 +244,7 @@ module Pantograph
|
|
262
244
|
)
|
263
245
|
```
|
264
246
|
|
265
|
-
Delete the build directory, generated
|
247
|
+
Delete the build directory, generated artifacts
|
266
248
|
```ruby
|
267
249
|
gradle(
|
268
250
|
task: "clean"
|