project-auto-wizard 0.13.3 → 0.15.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.
- package/README.ja.md +2 -0
- package/README.ko.md +2 -0
- package/README.md +3 -1
- package/README.zh-CN.md +2 -0
- package/bin/project-auto-wizard.js +18 -4
- package/package.json +2 -2
- package/payload/config/breaking-changes.json +28 -14
- package/payload/config/wizard-prompts.yml +102 -46
- package/payload/flutter-app/android/fastlane/Fastfile.playstore +44 -32
- package/payload/flutter-app/ios/ExportOptions.plist +8 -8
- package/payload/flutter-app/ios/fastlane/Fastfile +57 -43
- package/payload/scripts/changelog_manager.py +304 -265
- package/payload/scripts/issue_helper.py +54 -50
- package/payload/scripts/messages.py +2585 -0
- package/payload/scripts/truncate_release_notes.py +7 -6
- package/payload/scripts/version_manager.py +110 -107
- package/payload/version.yml.template +2 -1
- package/payload/workflows/common/PROJECT-COMMON-AI-PR-SUMMARY.yaml +23 -16
- package/payload/workflows/common/PROJECT-COMMON-AUTO-CHANGELOG-CONTROL.yaml +106 -63
- package/payload/workflows/common/PROJECT-COMMON-ISSUE-HELPER.yaml +17 -15
- package/payload/workflows/common/PROJECT-COMMON-README-VERSION-UPDATE.yaml +55 -45
- package/payload/workflows/common/PROJECT-COMMON-RELEASE-PUBLISH.yaml +90 -72
- package/payload/workflows/common/PROJECT-COMMON-VERSION-CONTROL.yaml +59 -45
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-FIREBASE-CICD.yaml +194 -184
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-PLAYSTORE-CICD.yaml +226 -213
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-SELFHOSTED-CICD.yaml +46 -42
- package/payload/workflows/flutter/PROJECT-FLUTTER-ANDROID-TEST-APK.yaml +334 -241
- package/payload/workflows/flutter/PROJECT-FLUTTER-APP-BUILD-TRIGGER.yaml +152 -128
- package/payload/workflows/flutter/PROJECT-FLUTTER-CI.yaml +246 -188
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT.yaml +353 -238
- package/payload/workflows/flutter/PROJECT-FLUTTER-IOS-TESTFLIGHT.yaml +96 -85
- package/payload/workflows/go/PROJECT-GO-CI.yaml +47 -36
- package/payload/workflows/go/PROJECT-GO-PR-PREVIEW.yaml +945 -508
- package/payload/workflows/go/PROJECT-GO-SIMPLE-CICD.yaml +155 -133
- package/payload/workflows/next/PROJECT-NEXT-CI.yaml +76 -60
- package/payload/workflows/next/PROJECT-NEXT-CICD.yaml +97 -77
- package/payload/workflows/python/PROJECT-PYTHON-CI.yaml +62 -47
- package/payload/workflows/python/PROJECT-PYTHON-PR-PREVIEW.yaml +942 -505
- package/payload/workflows/python/PROJECT-PYTHON-SIMPLE-CICD.yaml +148 -126
- package/payload/workflows/react/PROJECT-REACT-CI.yaml +86 -70
- package/payload/workflows/react/PROJECT-REACT-CICD.yaml +112 -92
- package/payload/workflows/spring/PROJECT-SPRING-CI.yml +112 -82
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-NGINX-CICD.yaml +180 -150
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-NONSTOP-TRAEFIK-CICD.yaml +161 -131
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-PR-PREVIEW.yaml +970 -549
- package/payload/workflows/spring/server-deploy/PROJECT-SPRING-SIMPLE-CICD.yaml +193 -162
- package/src/cli/args.js +98 -52
- package/src/cli/help.js +8 -41
- package/src/commands/doctor.js +90 -89
- package/src/commands/dry-run.js +64 -43
- package/src/commands/full.js +79 -77
- package/src/commands/install-settings.js +16 -15
- package/src/commands/interactive-flutter.js +20 -19
- package/src/commands/interactive.js +135 -132
- package/src/commands/purge.js +47 -42
- package/src/commands/status.js +36 -36
- package/src/commands/uninstall.js +43 -41
- package/src/context.js +12 -11
- package/src/core/assets.js +12 -11
- package/src/core/baseline.js +27 -27
- package/src/core/branches.js +29 -27
- package/src/core/branding.js +7 -6
- package/src/core/breaking-check.js +22 -21
- package/src/core/breaking.js +15 -8
- package/src/core/copy/app-files.js +5 -4
- package/src/core/copy/flutter-app.js +8 -8
- package/src/core/copy/gitignore.js +58 -50
- package/src/core/copy/readme.js +102 -36
- package/src/core/copy/simple.js +16 -15
- package/src/core/copy/workflows.js +131 -124
- package/src/core/deploy-style.js +51 -48
- package/src/core/detect-fs.js +57 -57
- package/src/core/detect.js +67 -65
- package/src/core/errors.js +2 -2
- package/src/core/flutter-doctor.js +17 -16
- package/src/core/flutter-hooks.js +33 -32
- package/src/core/flutter-options.js +34 -33
- package/src/core/fsutil.js +12 -12
- package/src/core/installed-stores.js +4 -4
- package/src/core/logger.js +42 -40
- package/src/core/paths-resolve.js +88 -86
- package/src/core/paths.js +10 -10
- package/src/core/release-options.js +8 -8
- package/src/core/removal-exec.js +14 -13
- package/src/core/removal-plan.js +37 -37
- package/src/core/types.js +47 -47
- package/src/core/verify.js +44 -38
- package/src/core/version-yml.js +76 -68
- package/src/core/wizard-env.js +46 -46
- package/src/core/wizard-labels.js +63 -41
- package/src/i18n/catalog/en/cli.js +50 -0
- package/src/i18n/catalog/en/commands.js +188 -0
- package/src/i18n/catalog/en/copy.js +20 -0
- package/src/i18n/catalog/en/core.js +74 -0
- package/src/i18n/catalog/en/core2.js +15 -0
- package/src/i18n/catalog/en/ui.js +221 -0
- package/src/i18n/catalog/en.js +12 -0
- package/src/i18n/catalog/index.js +5 -0
- package/src/i18n/catalog/ko/cli.js +50 -0
- package/src/i18n/catalog/ko/commands.js +188 -0
- package/src/i18n/catalog/ko/copy.js +20 -0
- package/src/i18n/catalog/ko/core.js +74 -0
- package/src/i18n/catalog/ko/core2.js +15 -0
- package/src/i18n/catalog/ko/ui.js +221 -0
- package/src/i18n/catalog/ko.js +10 -0
- package/src/i18n/index.js +44 -0
- package/src/i18n/languages.js +9 -0
- package/src/index.js +132 -97
- package/src/ui/ansi.js +7 -7
- package/src/ui/banner.js +7 -6
- package/src/ui/env-plan.js +82 -81
- package/src/ui/prompts.js +97 -122
- package/src/ui/readline-engine.js +59 -58
- package/src/ui/status-cards.js +37 -31
- package/src/ui/summary.js +90 -89
|
@@ -1,55 +1,69 @@
|
|
|
1
1
|
# ===================================================================
|
|
2
|
-
#
|
|
2
|
+
# This file is user-owned. Edit the per-mode behavior here.
|
|
3
3
|
# ===================================================================
|
|
4
4
|
#
|
|
5
|
-
# iOS
|
|
6
|
-
# `cd ios && bundle exec fastlane <lane
|
|
7
|
-
# project-auto-wizard
|
|
5
|
+
# Fastfile template for iOS deployment. After the Flutter workflow builds the IPA, it runs
|
|
6
|
+
# `cd ios && bundle exec fastlane <lane>`.
|
|
7
|
+
# project-auto-wizard does not overwrite this file if it already exists, so feel free to edit it.
|
|
8
8
|
#
|
|
9
|
-
#
|
|
10
|
-
# deploy PROJECT-FLUTTER-IOS-TESTFLIGHT
|
|
11
|
-
# upload_testflight PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT
|
|
9
|
+
# Lanes
|
|
10
|
+
# deploy PROJECT-FLUTTER-IOS-TESTFLIGHT workflow (branches on DEPLOY_MODE)
|
|
11
|
+
# upload_testflight PROJECT-FLUTTER-IOS-TEST-TESTFLIGHT workflow (only uploads the IPA to TestFlight)
|
|
12
12
|
#
|
|
13
|
-
# deploy lane
|
|
14
|
-
#
|
|
15
|
-
#
|
|
16
|
-
#
|
|
17
|
-
#
|
|
18
|
-
#
|
|
19
|
-
#
|
|
20
|
-
#
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
#
|
|
24
|
-
#
|
|
25
|
-
#
|
|
13
|
+
# Deploy modes of the deploy lane (passed by the workflow via the DEPLOY_MODE environment variable)
|
|
14
|
+
# +---------------+--------------------------------------------------------------+
|
|
15
|
+
# | DEPLOY_MODE | Behavior |
|
|
16
|
+
# +---------------+--------------------------------------------------------------+
|
|
17
|
+
# | store_only | Up to the TestFlight upload (upload_to_testflight) |
|
|
18
|
+
# | store_prepare | After the TestFlight upload, prepare the App Store version |
|
|
19
|
+
# | | and metadata (upload_to_app_store, submit_for_review: false).|
|
|
20
|
+
# | | The build is not attached to the version at this stage; it |
|
|
21
|
+
# | | is attached and submitted in one go when store_submit calls |
|
|
22
|
+
# | | this again with build_number. |
|
|
23
|
+
# | store_submit | Same call as store_prepare, but also submits for review |
|
|
24
|
+
# | | (submit_for_review: true; the build is attached to the |
|
|
25
|
+
# | | version at this point) |
|
|
26
|
+
# +---------------+--------------------------------------------------------------+
|
|
27
|
+
# Unknown or empty values are treated as store_only.
|
|
26
28
|
#
|
|
27
|
-
#
|
|
29
|
+
# Environment variables passed by the workflow
|
|
28
30
|
# APP_STORE_CONNECT_API_KEY_ID App Store Connect API Key ID
|
|
29
31
|
# APP_STORE_CONNECT_ISSUER_ID App Store Connect Issuer ID
|
|
30
|
-
# API_KEY_PATH AuthKey_XXXX.p8
|
|
31
|
-
# IPA_PATH
|
|
32
|
-
# RELEASE_NOTES TestFlight "What to Test"
|
|
33
|
-
# APP_IDENTIFIER
|
|
34
|
-
#
|
|
35
|
-
# DEPLOY_MODE
|
|
36
|
-
# APP_VERSION, BUILD_NUMBER
|
|
37
|
-
# SKIP_WAITING_FOR_BUILD_PROCESSING "true"
|
|
32
|
+
# API_KEY_PATH Path to the AuthKey_XXXX.p8 file
|
|
33
|
+
# IPA_PATH Absolute path of the .ipa to upload
|
|
34
|
+
# RELEASE_NOTES TestFlight "What to Test" text (changelog)
|
|
35
|
+
# APP_IDENTIFIER Bundle ID (the upload_testflight lane lets fastlane infer it if missing,
|
|
36
|
+
# but store_prepare/store_submit in the deploy lane require it)
|
|
37
|
+
# DEPLOY_MODE Deploy mode from the table above (deploy lane only)
|
|
38
|
+
# APP_VERSION, BUILD_NUMBER App version and build number (deploy lane only)
|
|
39
|
+
# SKIP_WAITING_FOR_BUILD_PROCESSING If "true", do not wait for build processing (store_only only)
|
|
38
40
|
#
|
|
39
|
-
#
|
|
40
|
-
# - store_prepare/store_submit
|
|
41
|
-
#
|
|
42
|
-
# -
|
|
43
|
-
#
|
|
44
|
-
# - store_submit
|
|
45
|
-
#
|
|
46
|
-
# - store_submit
|
|
41
|
+
# Notes
|
|
42
|
+
# - store_prepare/store_submit must attach the build to the App Store version, so they wait until
|
|
43
|
+
# build processing finishes (SKIP_WAITING_FOR_BUILD_PROCESSING is ignored).
|
|
44
|
+
# - Screenshots are not uploaded. Metadata is uploaded only when files exist under ios/fastlane/metadata/.
|
|
45
|
+
# Fill in required items such as "What's New" in that folder or in App Store Connect before submitting for review.
|
|
46
|
+
# - If store_submit fails on export compliance, set ITSAppUsesNonExemptEncryption in Info.plist or
|
|
47
|
+
# add submission_information to upload_to_app_store.
|
|
48
|
+
# - store_submit does not auto-release after review approval (automatic_release: false).
|
|
47
49
|
|
|
48
50
|
default_platform(:ios)
|
|
49
51
|
|
|
52
|
+
# Look up a user-facing message in the installed catalog so it follows `language` in version.yml.
|
|
53
|
+
# Finds the repo root by walking up to .github/scripts/messages.py (it reads ./version.yml from there);
|
|
54
|
+
# falls back to the key when the catalog is unavailable (for example when fastlane runs on a laptop).
|
|
55
|
+
def paw_msg(key, **params)
|
|
56
|
+
root = Dir.pwd
|
|
57
|
+
root = File.dirname(root) until File.exist?(File.join(root, ".github", "scripts", "messages.py")) || root == File.dirname(root)
|
|
58
|
+
out = IO.popen(["python3", File.join(root, ".github", "scripts", "messages.py"), "get", key, *params.map { |k, v| "#{k}=#{v}" }], chdir: root, err: File::NULL, &:read)
|
|
59
|
+
$?.success? && !out.to_s.strip.empty? ? out.chomp : key
|
|
60
|
+
rescue StandardError
|
|
61
|
+
key
|
|
62
|
+
end
|
|
63
|
+
|
|
50
64
|
def require_env(name)
|
|
51
65
|
value = ENV[name].to_s.strip
|
|
52
|
-
UI.user_error!("
|
|
66
|
+
UI.user_error!(paw_msg("fastlane.env_empty", name: name)) if value.empty?
|
|
53
67
|
value
|
|
54
68
|
end
|
|
55
69
|
|
|
@@ -61,7 +75,7 @@ def load_api_key
|
|
|
61
75
|
)
|
|
62
76
|
end
|
|
63
77
|
|
|
64
|
-
# APP_IDENTIFIER
|
|
78
|
+
# Include APP_IDENTIFIER in the options only when set; otherwise leave it to fastlane's default inference.
|
|
65
79
|
def app_identifier_option
|
|
66
80
|
app_identifier = ENV["APP_IDENTIFIER"].to_s.strip
|
|
67
81
|
app_identifier.empty? ? {} : { app_identifier: app_identifier }
|
|
@@ -79,19 +93,19 @@ def upload_ipa_to_testflight(api_key, skip_waiting_for_build_processing)
|
|
|
79
93
|
end
|
|
80
94
|
|
|
81
95
|
platform :ios do
|
|
82
|
-
desc "IPA
|
|
96
|
+
desc "Uploads the IPA to TestFlight (for test builds)"
|
|
83
97
|
lane :upload_testflight do
|
|
84
98
|
upload_ipa_to_testflight(load_api_key, false)
|
|
85
99
|
end
|
|
86
100
|
|
|
87
|
-
desc "IPA
|
|
101
|
+
desc "Uploads the IPA and, depending on DEPLOY_MODE, proceeds to TestFlight / review preparation / review submission"
|
|
88
102
|
lane :deploy do
|
|
89
103
|
api_key = load_api_key
|
|
90
104
|
deploy_mode = ENV["DEPLOY_MODE"].to_s.strip
|
|
91
105
|
|
|
92
106
|
case deploy_mode
|
|
93
107
|
when "store_prepare", "store_submit"
|
|
94
|
-
UI.message("
|
|
108
|
+
UI.message(paw_msg("fastlane.ios_prepare_wait", deploy_mode: deploy_mode))
|
|
95
109
|
upload_ipa_to_testflight(api_key, false)
|
|
96
110
|
|
|
97
111
|
upload_to_app_store(
|
|
@@ -110,7 +124,7 @@ platform :ios do
|
|
|
110
124
|
when "store_only"
|
|
111
125
|
upload_ipa_to_testflight(api_key, ENV["SKIP_WAITING_FOR_BUILD_PROCESSING"].to_s.strip.downcase == "true")
|
|
112
126
|
else
|
|
113
|
-
UI.important("
|
|
127
|
+
UI.important(paw_msg("fastlane.deploy_mode_unknown", deploy_mode: deploy_mode)) unless deploy_mode.empty?
|
|
114
128
|
upload_ipa_to_testflight(api_key, ENV["SKIP_WAITING_FOR_BUILD_PROCESSING"].to_s.strip.downcase == "true")
|
|
115
129
|
end
|
|
116
130
|
end
|