fastlane-plugin-wpmreleasetoolkit 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 +7 -0
- data/LICENSE +339 -0
- data/README.md +38 -0
- data/bin/drawText +19 -0
- data/ext/drawText/extconf.rb +36 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit.rb +16 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/README.md +20 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_localize_libs_action.rb +53 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_update_metadata_source_action.rb +171 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/an_validate_lib_strings_action.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_betabuild_prechecks.rb +103 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_build_prechecks.rb +83 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_build_preflight.rb +54 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_beta.rb +69 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_final_release.rb +58 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_hotfix.rb +77 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_bump_version_release.rb +89 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_codefreeze_prechecks.rb +79 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_completecodefreeze_prechecks.rb +68 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_create_xml_release_notes.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_current_branch_is_hotfix.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_download_file_by_version.rb +79 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_download_translations_action.rb +115 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_finalize_prechecks.rb +71 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_alpha_version.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_app_version.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_get_release_version.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_hotifx_prechecks.rb +78 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_merge_translators_strings.rb +106 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_tag_build.rb +51 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_update_metadata.rb +52 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/android/android_update_release_notes.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/circleci_trigger_job_action.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/close_milestone_action.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_new_milestone_action.rb +59 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/create_release_action.rb +91 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/extract_release_notes_for_version_action.rb +89 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/get_prs_list_action.rb +64 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/gp_downloadmetadata_action.rb +90 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/gp_update_metadata_source.rb +170 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/promo_screenshots_action.rb +247 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/removebranchprotection_action.rb +57 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/setbranchprotection_action.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/common/setfrozentag_action.rb +81 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_add_files_to_copy_action.rb +96 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_apply_action.rb +139 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_download_action.rb +57 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_setup_action.rb +86 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_update_action.rb +139 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/configure/configure_validate_action.rb +134 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_development_certificates_to_provisioning_profiles.rb +77 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/add_devices_to_provisioning_profiles.rb +79 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_betabuild_prechecks.rb +92 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_build_prechecks.rb +74 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_build_preflight.rb +78 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_beta.rb +68 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_hotfix.rb +87 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_bump_version_release.rb +114 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_check_beta_deps.rb +62 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_clear_intermediate_tags.rb +60 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_codefreeze_prechecks.rb +70 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_completecodefreeze_prechecks.rb +63 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_current_branch_is_hotfix.rb +40 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_final_tag.rb +52 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_finalize_prechecks.rb +64 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_app_version.rb +47 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_build_version.rb +60 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_get_store_app_sizes.rb +121 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_hotifx_prechecks.rb +78 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_lint_localizations.rb +167 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_localize_project.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_merge_translators_strings.rb +93 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_tag_build.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_update_metadata.rb +40 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_update_metadata_source.rb +81 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_update_release_notes.rb +56 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/actions/ios/ios_validate_ci_build.rb +46 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/an_metadata_update_helper.rb +152 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_git_helper.rb +44 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_localize_helper.rb +359 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/android/android_version_helper.rb +475 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ci_helper.rb +91 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/configure_helper.rb +282 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/encryption_helper.rb +51 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/filesystem_helper.rb +93 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/git_helper.rb +224 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/github_helper.rb +135 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_adc_app_sizes_helper.rb +74 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_git_helper.rb +80 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_l10n_helper.rb +208 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/ios/ios_version_helper.rb +348 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/metadata_download_helper.rb +107 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/metadata_update_helper.rb +182 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/promo_screenshots_helper.rb +399 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/helper/release_notes_helper.rb +21 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/models/configuration.rb +40 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/models/file_reference.rb +86 -0
- data/lib/fastlane/plugin/wpmreleasetoolkit/version.rb +5 -0
- metadata +449 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require 'date'
|
|
3
|
+
require_relative '../../helper/github_helper'
|
|
4
|
+
require_relative '../../helper/ios/ios_version_helper'
|
|
5
|
+
require_relative '../../helper/android/android_version_helper'
|
|
6
|
+
module Fastlane
|
|
7
|
+
module Actions
|
|
8
|
+
class CloseMilestoneAction < Action
|
|
9
|
+
def self.run(params)
|
|
10
|
+
repository = params[:repository]
|
|
11
|
+
milestone_title = params[:milestone]
|
|
12
|
+
|
|
13
|
+
milestone = Fastlane::Helper::GithubHelper.get_milestone(repository, milestone_title)
|
|
14
|
+
UI.user_error!("Milestone #{milestone_title} not found.") if milestone.nil?
|
|
15
|
+
|
|
16
|
+
Fastlane::Helper::GithubHelper.github_client().update_milestone(repository, milestone[:number], state: 'closed')
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def self.description
|
|
20
|
+
'Closes an existing milestone in the project'
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.authors
|
|
24
|
+
['Lorenzo Mattei']
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def self.return_value
|
|
28
|
+
# If your method provides a return value, you can describe here what it does
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def self.details
|
|
32
|
+
# Optional:
|
|
33
|
+
'Closes an existing milestone in the project'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.available_options
|
|
37
|
+
[
|
|
38
|
+
FastlaneCore::ConfigItem.new(key: :repository,
|
|
39
|
+
env_name: 'GHHELPER_REPOSITORY',
|
|
40
|
+
description: 'The remote path of the GH repository on which we work',
|
|
41
|
+
optional: false,
|
|
42
|
+
type: String),
|
|
43
|
+
FastlaneCore::ConfigItem.new(key: :milestone,
|
|
44
|
+
env_name: 'GHHELPER_MILESTONE',
|
|
45
|
+
description: 'The GitHub milestone',
|
|
46
|
+
optional: false,
|
|
47
|
+
type: String),
|
|
48
|
+
]
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.is_supported?(platform)
|
|
52
|
+
true
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
end
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require 'date'
|
|
3
|
+
require_relative '../../helper/github_helper'
|
|
4
|
+
require_relative '../../helper/ios/ios_version_helper'
|
|
5
|
+
require_relative '../../helper/android/android_version_helper'
|
|
6
|
+
module Fastlane
|
|
7
|
+
module Actions
|
|
8
|
+
class CreateNewMilestoneAction < Action
|
|
9
|
+
def self.run(params)
|
|
10
|
+
repository = params[:repository]
|
|
11
|
+
|
|
12
|
+
last_stone = Fastlane::Helper::GithubHelper.get_last_milestone(repository)
|
|
13
|
+
UI.message("Last detected milestone: #{last_stone[:title]} due on #{last_stone[:due_on]}.")
|
|
14
|
+
milestone_duedate = last_stone[:due_on]
|
|
15
|
+
newmilestone_duedate = (milestone_duedate.to_datetime.next_day(14).to_time).utc
|
|
16
|
+
newmilestone_number = Fastlane::Helper::Ios::VersionHelper.calc_next_release_version(last_stone[:title])
|
|
17
|
+
UI.message("Next milestone: #{newmilestone_number} due on #{newmilestone_duedate}.")
|
|
18
|
+
Fastlane::Helper::GithubHelper.create_milestone(repository, newmilestone_number, newmilestone_duedate, params[:need_appstore_submission])
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def self.description
|
|
22
|
+
'Creates a new milestone for the project'
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def self.authors
|
|
26
|
+
['Lorenzo Mattei']
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def self.return_value
|
|
30
|
+
# If your method provides a return value, you can describe here what it does
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.details
|
|
34
|
+
# Optional:
|
|
35
|
+
'Creates a new milestone for the project'
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def self.available_options
|
|
39
|
+
[
|
|
40
|
+
FastlaneCore::ConfigItem.new(key: :repository,
|
|
41
|
+
env_name: 'GHHELPER_REPOSITORY',
|
|
42
|
+
description: 'The remote path of the GH repository on which we work',
|
|
43
|
+
optional: false,
|
|
44
|
+
type: String),
|
|
45
|
+
FastlaneCore::ConfigItem.new(key: :need_appstore_submission,
|
|
46
|
+
env_name: 'GHHELPER_NEED_APPSTORE_SUBMISSION',
|
|
47
|
+
description: 'True if the app needs to be submitted',
|
|
48
|
+
optional: true,
|
|
49
|
+
is_string: false,
|
|
50
|
+
default_value: false),
|
|
51
|
+
]
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def self.is_supported?(platform)
|
|
55
|
+
true
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require 'date'
|
|
3
|
+
require_relative '../../helper/github_helper'
|
|
4
|
+
require_relative '../../helper/ios/ios_version_helper'
|
|
5
|
+
require_relative '../../helper/android/android_version_helper'
|
|
6
|
+
module Fastlane
|
|
7
|
+
module Actions
|
|
8
|
+
class CreateReleaseAction < Action
|
|
9
|
+
def self.run(params)
|
|
10
|
+
repository = params[:repository]
|
|
11
|
+
version = params[:version]
|
|
12
|
+
assets = params[:release_assets]
|
|
13
|
+
release_notes = params[:release_notes_file_path].nil? ? '' : IO.read(params[:release_notes_file_path])
|
|
14
|
+
prerelease = params[:prerelease]
|
|
15
|
+
|
|
16
|
+
UI.message("Creating draft release #{version} in #{repository}.")
|
|
17
|
+
# Verify assets
|
|
18
|
+
assets.each do |file_path|
|
|
19
|
+
UI.user_error!("Can't find file #{file_path}!") unless File.exist?(file_path)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
Fastlane::Helper::GithubHelper.create_release(
|
|
23
|
+
repository: repository,
|
|
24
|
+
version: version,
|
|
25
|
+
target: params[:target],
|
|
26
|
+
description: release_notes,
|
|
27
|
+
assets: assets,
|
|
28
|
+
prerelease: prerelease
|
|
29
|
+
)
|
|
30
|
+
UI.message('Done')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def self.description
|
|
34
|
+
'Creates a release and uploads the provided assets'
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def self.authors
|
|
38
|
+
['Lorenzo Mattei']
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.return_value
|
|
42
|
+
# If your method provides a return value, you can describe here what it does
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def self.details
|
|
46
|
+
# Optional:
|
|
47
|
+
'Creates a release and uploads the provided assets'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def self.available_options
|
|
51
|
+
[
|
|
52
|
+
FastlaneCore::ConfigItem.new(key: :repository,
|
|
53
|
+
env_name: 'GHHELPER_REPOSITORY',
|
|
54
|
+
description: 'The slug (`<org>/<repo>`) of the GitHub repository we want to create the release on',
|
|
55
|
+
optional: false,
|
|
56
|
+
type: String),
|
|
57
|
+
FastlaneCore::ConfigItem.new(key: :version,
|
|
58
|
+
env_name: 'GHHELPER_CREATE_RELEASE_VERSION',
|
|
59
|
+
description: 'The version of the release',
|
|
60
|
+
optional: false,
|
|
61
|
+
type: String),
|
|
62
|
+
FastlaneCore::ConfigItem.new(key: :target,
|
|
63
|
+
env_name: 'GHHELPER_TARGET_COMMITISH',
|
|
64
|
+
description: 'The branch name or commit SHA the new tag should point to - if that tag does not exist yet when publishing the release. If omitted, will default to the current HEAD commit at the time of this call',
|
|
65
|
+
optional: true,
|
|
66
|
+
type: String),
|
|
67
|
+
FastlaneCore::ConfigItem.new(key: :release_notes_file_path,
|
|
68
|
+
env_name: 'GHHELPER_CREATE_RELEASE_NOTES',
|
|
69
|
+
description: 'The path to the file that contains the release notes',
|
|
70
|
+
optional: true,
|
|
71
|
+
type: String),
|
|
72
|
+
FastlaneCore::ConfigItem.new(key: :release_assets,
|
|
73
|
+
env_name: 'GHHELPER_CREATE_RELEASE_ASSETS',
|
|
74
|
+
description: 'Assets to upload',
|
|
75
|
+
type: Array,
|
|
76
|
+
optional: false),
|
|
77
|
+
FastlaneCore::ConfigItem.new(key: :prerelease,
|
|
78
|
+
env_name: 'GHHELPER_CREATE_RELEASE_PRERELEASE',
|
|
79
|
+
description: 'True if this is a pre-release',
|
|
80
|
+
optional: true,
|
|
81
|
+
default_value: false,
|
|
82
|
+
is_string: false),
|
|
83
|
+
]
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def self.is_supported?(platform)
|
|
87
|
+
true
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
|
|
3
|
+
module Fastlane
|
|
4
|
+
module Actions
|
|
5
|
+
class ExtractReleaseNotesForVersionAction < Action
|
|
6
|
+
def self.run(params)
|
|
7
|
+
version = params[:version]
|
|
8
|
+
release_notes_file_path = params[:release_notes_file_path]
|
|
9
|
+
extracted_notes_file_path = params[:extracted_notes_file_path]
|
|
10
|
+
|
|
11
|
+
extracted_notes_file = File.open(extracted_notes_file_path, 'w') unless extracted_notes_file_path.blank?
|
|
12
|
+
|
|
13
|
+
extract_notes(release_notes_file_path, version) do |line|
|
|
14
|
+
extracted_notes_file.nil? ? puts(line) : extracted_notes_file.write(line)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
unless extracted_notes_file.nil?
|
|
18
|
+
extracted_notes_file.close()
|
|
19
|
+
check_and_commit_extracted_notes_file(extracted_notes_file_path, version)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def self.extract_notes(release_notes_file_path, version)
|
|
24
|
+
state = :discarding
|
|
25
|
+
File.open(release_notes_file_path).each do |line|
|
|
26
|
+
case state
|
|
27
|
+
when :discarding
|
|
28
|
+
state = :evaluating if (line.match(/^(\d+\.)?(\d+\.)?(\*|\d+)$/)) && (line.strip() == version)
|
|
29
|
+
when :evaluating
|
|
30
|
+
state = (line.match(/-/)) ? :extracting : :discarding
|
|
31
|
+
when :extracting
|
|
32
|
+
if line.match(/^(\d+\.)?(\d+\.)?(\*|\d+)$/)
|
|
33
|
+
state = :discarding
|
|
34
|
+
return
|
|
35
|
+
else
|
|
36
|
+
yield(line)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def self.check_and_commit_extracted_notes_file(file_path, version)
|
|
43
|
+
Action.sh("git add #{file_path}")
|
|
44
|
+
Action.sh("git diff-index --quiet HEAD || git commit -m \"Update draft release notes for #{version}.\"")
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.description
|
|
48
|
+
'Extract the release notes for a specific version'
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def self.authors
|
|
52
|
+
['Lorenzo Mattei']
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def self.return_value
|
|
56
|
+
# If your method provides a return value, you can describe here what it does
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def self.details
|
|
60
|
+
# Optional:
|
|
61
|
+
'Creates a release and uploads the provided assets'
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def self.available_options
|
|
65
|
+
[
|
|
66
|
+
FastlaneCore::ConfigItem.new(key: :version,
|
|
67
|
+
env_name: 'GHHELPER_EXTRACT_NOTES_VERSION',
|
|
68
|
+
description: 'The version of the release',
|
|
69
|
+
optional: false,
|
|
70
|
+
is_string: true),
|
|
71
|
+
FastlaneCore::ConfigItem.new(key: :release_notes_file_path,
|
|
72
|
+
env_name: 'GHHELPER_EXTRACT_NOTES_FILE_PATH',
|
|
73
|
+
description: 'The path to the file that contains the release notes',
|
|
74
|
+
optional: false,
|
|
75
|
+
is_string: true),
|
|
76
|
+
FastlaneCore::ConfigItem.new(key: :extracted_notes_file_path,
|
|
77
|
+
env_name: 'GHHELPER_EXTRACT_NOTES_EXTRACTED_FILE_PATH',
|
|
78
|
+
description: 'The path to the file that will contain the extracted release notes',
|
|
79
|
+
optional: true,
|
|
80
|
+
is_string: true),
|
|
81
|
+
]
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def self.is_supported?(platform)
|
|
85
|
+
true
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require_relative '../../helper/github_helper'
|
|
3
|
+
|
|
4
|
+
module Fastlane
|
|
5
|
+
module Actions
|
|
6
|
+
class GetPrsListAction < Action
|
|
7
|
+
def self.run(params)
|
|
8
|
+
repository = params[:repository]
|
|
9
|
+
report_path = File.expand_path(params[:report_path])
|
|
10
|
+
milestone = params[:milestone]
|
|
11
|
+
|
|
12
|
+
# Get commit list
|
|
13
|
+
pr_list = Fastlane::Helper::GithubHelper.get_prs_for_milestone(repository, milestone)
|
|
14
|
+
|
|
15
|
+
File.open(report_path, 'w') do |file|
|
|
16
|
+
pr_list.each do |data|
|
|
17
|
+
file.puts("##{data[:number]}: #{data[:title]} @#{data[:user][:login]} #{data[:html_url]}")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
UI.success("Found #{pr_list.count} PRs in #{milestone} – saved to #{report_path}")
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def self.description
|
|
25
|
+
'Generate the list of the PRs in the given `repository` for the given `milestone` at the given `report_path`'
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def self.authors
|
|
29
|
+
['Lorenzo Mattei']
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def self.return_value
|
|
33
|
+
# If your method provides a return value, you can describe here what it does
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.details
|
|
37
|
+
# Optional:
|
|
38
|
+
description
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def self.available_options
|
|
42
|
+
[
|
|
43
|
+
FastlaneCore::ConfigItem.new(key: :repository,
|
|
44
|
+
env_name: 'GHHELPER_REPOSITORY',
|
|
45
|
+
description: 'The repository name, including the organization (e.g. `wordpress-mobile/wordpress-ios`)',
|
|
46
|
+
optional: false,
|
|
47
|
+
type: String),
|
|
48
|
+
FastlaneCore::ConfigItem.new(key: :report_path,
|
|
49
|
+
description: 'The path where the list of PRs should be written to',
|
|
50
|
+
optional: false,
|
|
51
|
+
is_string: true),
|
|
52
|
+
FastlaneCore::ConfigItem.new(key: :milestone,
|
|
53
|
+
description: 'The name of the milestone we want to fetch the list of PRs for (e.g.: `16.9`)',
|
|
54
|
+
optional: false,
|
|
55
|
+
is_string: true),
|
|
56
|
+
]
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def self.is_supported?(platform)
|
|
60
|
+
true
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require 'fastlane/action'
|
|
2
|
+
require_relative '../../helper/metadata_download_helper.rb'
|
|
3
|
+
|
|
4
|
+
module Fastlane
|
|
5
|
+
module Actions
|
|
6
|
+
class GpDownloadmetadataAction < Action
|
|
7
|
+
def self.run(params)
|
|
8
|
+
# fastlane will take care of reading in the parameter and fetching the environment variable:
|
|
9
|
+
UI.message "Project URL: #{params[:project_url]}"
|
|
10
|
+
UI.message "Locales: #{params[:locales].inspect}"
|
|
11
|
+
UI.message "Source locale: #{params[:source_locale].nil? ? '-' : params[:source_locale]}"
|
|
12
|
+
UI.message "Path: #{params[:download_path]}"
|
|
13
|
+
|
|
14
|
+
# Check download path
|
|
15
|
+
Dir.mkdir(params[:download_path]) unless File.exist?(params[:download_path])
|
|
16
|
+
|
|
17
|
+
# Download
|
|
18
|
+
downloader = Fastlane::Helper::MetadataDownloader.new(params[:download_path], params[:target_files])
|
|
19
|
+
|
|
20
|
+
params[:locales].each do |loc|
|
|
21
|
+
if loc.is_a?(Array)
|
|
22
|
+
puts "Downloading language: #{loc[1]}"
|
|
23
|
+
complete_url = "#{params[:project_url]}#{loc[0]}/default/export-translations?filters[status]=current&format=json"
|
|
24
|
+
downloader.download(loc[1], complete_url, loc[1] == params[:source_locale])
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
if loc.is_a?(String)
|
|
28
|
+
puts "Downloading language: #{loc}"
|
|
29
|
+
complete_url = "#{params[:project_url]}#{loc}/default/export-translations?filters[status]=current&format=json"
|
|
30
|
+
downloader.download(loc, complete_url, loc == params[:source_locale])
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
#####################################################
|
|
36
|
+
# @!group Documentation
|
|
37
|
+
#####################################################
|
|
38
|
+
|
|
39
|
+
def self.description
|
|
40
|
+
'Download translated metadata'
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def self.details
|
|
44
|
+
'Downloads tranlated metadata from GlotPress and updates local files'
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def self.available_options
|
|
48
|
+
# Define all options your action supports.
|
|
49
|
+
|
|
50
|
+
# Below a few examples
|
|
51
|
+
[
|
|
52
|
+
FastlaneCore::ConfigItem.new(key: :project_url,
|
|
53
|
+
env_name: 'FL_DOWNLOAD_METADATA_PROJECT_URL', # The name of the environment variable
|
|
54
|
+
description: 'GlotPress project URL'),
|
|
55
|
+
FastlaneCore::ConfigItem.new(key: :target_files,
|
|
56
|
+
env_name: 'FL_DOWNLOAD_METADATA_TARGET_FILES',
|
|
57
|
+
description: 'The hash with the path to the target files and the key to use to extract their content',
|
|
58
|
+
is_string: false),
|
|
59
|
+
FastlaneCore::ConfigItem.new(key: :locales,
|
|
60
|
+
env_name: 'FL_DOWNLOAD_METADATA_LOCALES',
|
|
61
|
+
description: 'The hash with the GLotPress locale and the project locale association',
|
|
62
|
+
is_string: false),
|
|
63
|
+
FastlaneCore::ConfigItem.new(key: :source_locale,
|
|
64
|
+
env_name: 'FL_DOWNLOAD_METADATA_SOURCE_LOCALE',
|
|
65
|
+
description: 'The source locale code',
|
|
66
|
+
optional: true),
|
|
67
|
+
FastlaneCore::ConfigItem.new(key: :download_path,
|
|
68
|
+
env_name: 'FL_DOWNLOAD_METADATA_DOWNLOAD_PATH',
|
|
69
|
+
description: 'The path of the target files',
|
|
70
|
+
is_string: true),
|
|
71
|
+
]
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def self.output
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def self.return_value
|
|
78
|
+
# If your method provides a return value, you can describe here what it does
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def self.authors
|
|
82
|
+
['loremattei']
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def self.is_supported?(platform)
|
|
86
|
+
[:ios, :android].include?(platform)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|