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,15 +1,16 @@
|
|
|
1
1
|
# project-auto-wizard:managed-workflow
|
|
2
2
|
# PROJECT-COMMON-ISSUE-HELPER.yaml
|
|
3
|
-
#
|
|
3
|
+
# Suggest a branch name and commit message as a comment when an issue is created or retitled
|
|
4
4
|
#
|
|
5
|
-
#
|
|
6
|
-
#
|
|
7
|
-
#
|
|
8
|
-
#
|
|
9
|
-
#
|
|
5
|
+
# When an issue is opened, or its title is edited (edited + title changed),
|
|
6
|
+
# the normalized branch name and commit message are posted (or updated) as an
|
|
7
|
+
# issue comment.
|
|
8
|
+
# Set ISSUE_HELPER_CREATE_BRANCH=true to also create the branch
|
|
9
|
+
# (default is false - opt-in, so a branch is not created automatically
|
|
10
|
+
# every time an issue is opened).
|
|
10
11
|
#
|
|
11
|
-
#
|
|
12
|
-
#
|
|
12
|
+
# The logic lives in .github/scripts/issue_helper.py (a Python rewrite of
|
|
13
|
+
# Chuseok22/github-issue-helper, same author).
|
|
13
14
|
|
|
14
15
|
name: PROJECT-ISSUE-HELPER
|
|
15
16
|
|
|
@@ -17,30 +18,31 @@ on:
|
|
|
17
18
|
issues:
|
|
18
19
|
types: [opened, edited]
|
|
19
20
|
|
|
20
|
-
# contents
|
|
21
|
-
#
|
|
22
|
-
#
|
|
23
|
-
# permissions
|
|
21
|
+
# contents is always fixed to write. Creating a branch through the git/refs API
|
|
22
|
+
# when ISSUE_HELPER_CREATE_BRANCH="true" needs write, and users can switch that
|
|
23
|
+
# value on themselves after install (via the wizard ask marker, without re-running the
|
|
24
|
+
# wizard), so there is no way to raise permissions conditionally at that point.
|
|
24
25
|
permissions:
|
|
25
26
|
issues: write
|
|
26
27
|
contents: write
|
|
27
28
|
|
|
28
29
|
jobs:
|
|
29
30
|
issue-helper:
|
|
30
|
-
name:
|
|
31
|
+
name: Branch name & commit message guide
|
|
31
32
|
if: github.event.action == 'opened' || (github.event.action == 'edited' && github.event.changes.title)
|
|
32
33
|
runs-on: ubuntu-latest
|
|
33
34
|
env:
|
|
34
35
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
35
36
|
ISSUE_HELPER_BRANCH_PREFIX: ""
|
|
36
37
|
ISSUE_HELPER_MAX_BRANCH_LENGTH: "100"
|
|
37
|
-
|
|
38
|
+
# Optional override of the commit message template (the default follows the workflow language):
|
|
39
|
+
# ISSUE_HELPER_COMMIT_TEMPLATE: "${issueTitle} : feat : {description of the change} ${issueUrl}"
|
|
38
40
|
ISSUE_HELPER_CREATE_BRANCH: "false" # @wizard ask:false
|
|
39
41
|
ISSUE_HELPER_BASE_BRANCH: "{{MAIN_BRANCH}}"
|
|
40
42
|
steps:
|
|
41
43
|
- name: Checkout repository
|
|
42
44
|
uses: actions/checkout@v7
|
|
43
45
|
|
|
44
|
-
- name:
|
|
46
|
+
- name: Generate branch name & commit message
|
|
45
47
|
id: issue-helper
|
|
46
48
|
run: python3 .github/scripts/issue_helper.py run
|
|
@@ -12,13 +12,12 @@
|
|
|
12
12
|
# 4. Commits and pushes the change ([skip ci])
|
|
13
13
|
#
|
|
14
14
|
# Supported version line formats (case-insensitive, flexible spacing):
|
|
15
|
-
# - ##
|
|
16
|
-
# - ## 최신버전 : v1.0.0 (2025-08-15)
|
|
15
|
+
# - ## <Korean "latest version", with or without a space> : v1.0.0 (2025-08-15)
|
|
17
16
|
# - ## Current Version : v1.0.0 (2025-08-15)
|
|
18
17
|
# - ## Recent Version : v1.0.0 (2025-08-15)
|
|
19
18
|
# - ## Latest Version : v1.0.0
|
|
20
19
|
# - ## Version : v1.0.0
|
|
21
|
-
# - ##
|
|
20
|
+
# - ## <Korean "version"> : v1.0.0
|
|
22
21
|
#
|
|
23
22
|
# The marker comment <!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->
|
|
24
23
|
# is added automatically above the version line.
|
|
@@ -51,7 +50,7 @@ name: README VERSION UPDATE
|
|
|
51
50
|
env:
|
|
52
51
|
# Whether to show the date next to the version (true/false)
|
|
53
52
|
SHOW_DATE: true
|
|
54
|
-
#
|
|
53
|
+
# Keep script imports from creating .github/scripts/__pycache__ so it never ends up in bot commits
|
|
55
54
|
PYTHONDONTWRITEBYTECODE: "1"
|
|
56
55
|
|
|
57
56
|
concurrency:
|
|
@@ -87,22 +86,24 @@ jobs:
|
|
|
87
86
|
- name: Check README.md exists
|
|
88
87
|
id: precheck
|
|
89
88
|
run: |
|
|
89
|
+
m() { python3 "$GITHUB_WORKSPACE/.github/scripts/messages.py" get "$@"; }
|
|
90
90
|
if [ -f README.md ]; then
|
|
91
91
|
echo "readme_exists=true" >> $GITHUB_OUTPUT
|
|
92
92
|
else
|
|
93
93
|
echo "readme_exists=false" >> $GITHUB_OUTPUT
|
|
94
|
-
echo "
|
|
94
|
+
echo "$(m wf_readme.not_found)"
|
|
95
95
|
fi
|
|
96
96
|
|
|
97
97
|
- name: Read latest version via version_manager.py
|
|
98
98
|
id: version_info
|
|
99
99
|
if: steps.precheck.outputs.readme_exists == 'true'
|
|
100
100
|
run: |
|
|
101
|
+
m() { python3 "$GITHUB_WORKSPACE/.github/scripts/messages.py" get "$@"; }
|
|
101
102
|
LATEST_VERSION=$(python3 .github/scripts/version_manager.py get | tail -n 1)
|
|
102
103
|
# Guard: an empty version must never reach the README rewrite —
|
|
103
104
|
# it would commit a corrupted "v (date)" line.
|
|
104
105
|
if [ -z "$LATEST_VERSION" ]; then
|
|
105
|
-
echo "
|
|
106
|
+
echo "$(m wf_readme.read_version_failed)"
|
|
106
107
|
exit 1
|
|
107
108
|
fi
|
|
108
109
|
RELEASE_DATE=$(date '+%Y-%m-%d')
|
|
@@ -113,10 +114,16 @@ jobs:
|
|
|
113
114
|
- name: Update version line in README.md
|
|
114
115
|
if: steps.precheck.outputs.readme_exists == 'true'
|
|
115
116
|
run: |
|
|
117
|
+
m() { python3 "$GITHUB_WORKSPACE/.github/scripts/messages.py" get "$@"; }
|
|
116
118
|
LATEST_VERSION="${{ steps.version_info.outputs.latest_version }}"
|
|
117
119
|
RELEASE_DATE="${{ steps.version_info.outputs.release_date }}"
|
|
118
120
|
SHOW_DATE="${{ env.SHOW_DATE }}"
|
|
119
121
|
|
|
122
|
+
# Hangul in the Korean heading patterns below is written as UTF-8 byte escapes so
|
|
123
|
+
# this file stays ASCII-only; they match the same README headings byte for byte.
|
|
124
|
+
KO_LATEST=$'\354\265\234\354\213\240' # Korean "latest"
|
|
125
|
+
KO_VERSION=$'\353\262\204\354\240\204' # Korean "version"
|
|
126
|
+
|
|
120
127
|
# Error message helper
|
|
121
128
|
print_error_message() {
|
|
122
129
|
local error_type="$1"
|
|
@@ -125,38 +132,38 @@ jobs:
|
|
|
125
132
|
local version_text="$4"
|
|
126
133
|
|
|
127
134
|
echo ""
|
|
128
|
-
echo "
|
|
129
|
-
echo "
|
|
130
|
-
echo "
|
|
131
|
-
echo "
|
|
132
|
-
echo "
|
|
135
|
+
echo "$(m wf_readme.update_failed)"
|
|
136
|
+
echo "$(m wf_readme.err_type error_type="$error_type")"
|
|
137
|
+
echo "$(m wf_readme.err_current_line version_line="$version_line")"
|
|
138
|
+
echo "$(m wf_readme.err_header header_part="$header_part")"
|
|
139
|
+
echo "$(m wf_readme.err_new_text version_text="$version_text")"
|
|
133
140
|
echo ""
|
|
134
|
-
echo "
|
|
135
|
-
echo "
|
|
141
|
+
echo "$(m wf_readme.hint_formats)"
|
|
142
|
+
echo " $(m wf_readme.hint_first_example)"
|
|
136
143
|
echo " ## Current Version : v1.0.0"
|
|
137
144
|
echo " ## Version : v1.0.0"
|
|
138
|
-
echo "
|
|
139
|
-
echo "
|
|
140
|
-
echo "
|
|
141
|
-
echo "
|
|
145
|
+
echo "$(m wf_readme.hint_notes)"
|
|
146
|
+
echo "$(m wf_readme.hint_no_bold)"
|
|
147
|
+
echo "$(m wf_readme.hint_no_regex)"
|
|
148
|
+
echo "$(m wf_readme.hint_after_colon)"
|
|
142
149
|
}
|
|
143
150
|
|
|
144
151
|
if [ "$SHOW_DATE" = "true" ]; then
|
|
145
152
|
VERSION_TEXT="v${LATEST_VERSION} (${RELEASE_DATE})"
|
|
146
|
-
echo "
|
|
153
|
+
echo "$(m wf_readme.text_with_date version_text="$VERSION_TEXT")"
|
|
147
154
|
else
|
|
148
155
|
VERSION_TEXT="v${LATEST_VERSION}"
|
|
149
|
-
echo "
|
|
156
|
+
echo "$(m wf_readme.text version_text="$VERSION_TEXT")"
|
|
150
157
|
fi
|
|
151
158
|
|
|
152
159
|
# Patterns for recognized version lines (case-insensitive, flexible spacing)
|
|
153
160
|
VERSION_PATTERNS=(
|
|
154
|
-
"^##[[:space:]]
|
|
155
|
-
"^##[[:space:]]
|
|
161
|
+
"^##[[:space:]]*${KO_LATEST}[[:space:]]*${KO_VERSION}[[:space:]]*:"
|
|
162
|
+
"^##[[:space:]]*${KO_LATEST}${KO_VERSION}[[:space:]]*:"
|
|
156
163
|
"^##[[:space:]]*[Cc]urrent[[:space:]]*[Vv]ersion[[:space:]]*:"
|
|
157
164
|
"^##[[:space:]]*[Rr]ecent[[:space:]]*[Vv]ersion[[:space:]]*:"
|
|
158
165
|
"^##[[:space:]]*[Vv]ersion[[:space:]]*:"
|
|
159
|
-
"^##[[:space:]]
|
|
166
|
+
"^##[[:space:]]*${KO_VERSION}[[:space:]]*:"
|
|
160
167
|
"^##[[:space:]]*[Ll]atest[[:space:]]*[Vv]ersion[[:space:]]*:"
|
|
161
168
|
)
|
|
162
169
|
|
|
@@ -167,32 +174,34 @@ jobs:
|
|
|
167
174
|
if grep -qi "$pattern" README.md; then
|
|
168
175
|
VERSION_LINE=$(grep -i "$pattern" README.md | head -n 1)
|
|
169
176
|
PATTERN_FOUND="$pattern"
|
|
170
|
-
echo "
|
|
177
|
+
echo "$(m wf_readme.line_found version_line="$VERSION_LINE")"
|
|
171
178
|
break
|
|
172
179
|
fi
|
|
173
180
|
done
|
|
174
181
|
|
|
175
182
|
# No version line yet — insert a default one
|
|
176
183
|
if [ -z "$VERSION_LINE" ]; then
|
|
177
|
-
echo "
|
|
184
|
+
echo "$(m wf_readme.line_inserting)"
|
|
185
|
+
# Heading wording follows the configured language; an existing line keeps its own wording
|
|
186
|
+
DEFAULT_HEADING=$(m wf_readme.default_heading)
|
|
178
187
|
|
|
179
188
|
if grep -q "^# " README.md; then
|
|
180
189
|
# right after the first title
|
|
181
|
-
sed -i '/^# /a\\n<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->\n##
|
|
190
|
+
sed -i '/^# /a\\n<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->\n## '"$DEFAULT_HEADING"' : '"$VERSION_TEXT" README.md
|
|
182
191
|
else
|
|
183
192
|
# at the very top of the file
|
|
184
|
-
sed -i '1i\<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->\n##
|
|
193
|
+
sed -i '1i\<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->\n## '"$DEFAULT_HEADING"' : '"$VERSION_TEXT"'\n' README.md
|
|
185
194
|
fi
|
|
186
|
-
echo "
|
|
195
|
+
echo "$(m wf_readme.line_inserted version_text="$VERSION_TEXT")"
|
|
187
196
|
else
|
|
188
197
|
# Update the existing version line
|
|
189
198
|
|
|
190
199
|
# Validate the line format
|
|
191
200
|
if [[ "$VERSION_LINE" =~ \*\* ]]; then
|
|
192
201
|
echo ""
|
|
193
|
-
echo "
|
|
194
|
-
echo "
|
|
195
|
-
echo "
|
|
202
|
+
echo "$(m wf_readme.warn_bold)"
|
|
203
|
+
echo "$(m wf_readme.warn_current_line version_line="$VERSION_LINE")"
|
|
204
|
+
echo "$(m wf_readme.warn_may_break)"
|
|
196
205
|
echo ""
|
|
197
206
|
fi
|
|
198
207
|
|
|
@@ -204,12 +213,12 @@ jobs:
|
|
|
204
213
|
PREV_LINE=$(sed -n "${PREV_LINE_NUMBER}p" README.md)
|
|
205
214
|
if [[ "$PREV_LINE" != *"AUTO-VERSION-SECTION"* ]]; then
|
|
206
215
|
sed -i "${PREV_LINE_NUMBER}a\\<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->" README.md
|
|
207
|
-
echo "
|
|
216
|
+
echo "$(m wf_readme.marker_added)"
|
|
208
217
|
LINE_NUMBER=$((LINE_NUMBER + 1))
|
|
209
218
|
fi
|
|
210
219
|
else
|
|
211
220
|
sed -i '1i\<!-- AUTO-VERSION-SECTION: DO NOT EDIT MANUALLY -->' README.md
|
|
212
|
-
echo "
|
|
221
|
+
echo "$(m wf_readme.marker_added)"
|
|
213
222
|
LINE_NUMBER=$((LINE_NUMBER + 1))
|
|
214
223
|
fi
|
|
215
224
|
|
|
@@ -217,7 +226,7 @@ jobs:
|
|
|
217
226
|
HEADER_PART=$(printf '%s\n' "$VERSION_LINE" | sed 's/\(.*:\).*/\1 /')
|
|
218
227
|
|
|
219
228
|
if [ -z "$HEADER_PART" ] || [[ "$HEADER_PART" == "$VERSION_LINE" ]]; then
|
|
220
|
-
print_error_message "
|
|
229
|
+
print_error_message "$(m wf_readme.err_no_colon)" "$VERSION_LINE" "$HEADER_PART" "$VERSION_TEXT"
|
|
221
230
|
exit 1
|
|
222
231
|
fi
|
|
223
232
|
|
|
@@ -230,29 +239,30 @@ jobs:
|
|
|
230
239
|
ESCAPED_LINE=$(printf '%s' "$NEW_LINE" | sed 's/[&\\|]/\\&/g')
|
|
231
240
|
|
|
232
241
|
if ! sed -i "${LINE_NUMBER}s|.*|${ESCAPED_LINE}|" README.md 2>/tmp/sed_error.log; then
|
|
233
|
-
SED_ERROR=$(cat /tmp/sed_error.log 2>/dev/null ||
|
|
234
|
-
print_error_message "
|
|
242
|
+
SED_ERROR=$(cat /tmp/sed_error.log 2>/dev/null || m wf_readme.err_sed_unknown)
|
|
243
|
+
print_error_message "$(m wf_readme.err_sed error="$SED_ERROR")" "$VERSION_LINE" "$HEADER_PART" "$VERSION_TEXT"
|
|
235
244
|
exit 1
|
|
236
245
|
fi
|
|
237
246
|
|
|
238
247
|
# Verify the replacement
|
|
239
248
|
UPDATED_LINE=$(sed -n "${LINE_NUMBER}p" README.md)
|
|
240
249
|
if [[ "$UPDATED_LINE" != *"$VERSION_TEXT"* ]]; then
|
|
241
|
-
print_error_message "
|
|
242
|
-
echo "
|
|
250
|
+
print_error_message "$(m wf_readme.err_verify)" "$VERSION_LINE" "$HEADER_PART" "$VERSION_TEXT"
|
|
251
|
+
echo "$(m wf_readme.updated_line_detail updated_line="$UPDATED_LINE")"
|
|
243
252
|
exit 1
|
|
244
253
|
fi
|
|
245
254
|
|
|
246
|
-
echo "
|
|
255
|
+
echo "$(m wf_readme.line_updated version_text="$VERSION_TEXT")"
|
|
247
256
|
fi
|
|
248
257
|
|
|
249
258
|
- name: Commit and push changes
|
|
250
259
|
if: steps.precheck.outputs.readme_exists == 'true'
|
|
251
260
|
run: |
|
|
261
|
+
m() { python3 "$GITHUB_WORKSPACE/.github/scripts/messages.py" get "$@"; }
|
|
252
262
|
git add README.md
|
|
253
263
|
|
|
254
264
|
if git diff --staged --quiet; then
|
|
255
|
-
echo "
|
|
265
|
+
echo "$(m wf_readme.no_changes)"
|
|
256
266
|
else
|
|
257
267
|
VERSION="${{ steps.version_info.outputs.latest_version }}"
|
|
258
268
|
|
|
@@ -265,19 +275,19 @@ jobs:
|
|
|
265
275
|
|
|
266
276
|
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
|
|
267
277
|
RETRY_COUNT=$((RETRY_COUNT + 1))
|
|
268
|
-
echo "
|
|
278
|
+
echo "$(m wf_common.push_attempt retry_count="$RETRY_COUNT" max_retries="$MAX_RETRIES")"
|
|
269
279
|
|
|
270
280
|
if git push origin HEAD:{{MAIN_BRANCH}}; then
|
|
271
281
|
PUSH_SUCCESS=true
|
|
272
|
-
echo "
|
|
282
|
+
echo "$(m wf_readme.pushed)"
|
|
273
283
|
break
|
|
274
284
|
else
|
|
275
|
-
echo "
|
|
285
|
+
echo "$(m wf_common.push_failed_syncing)"
|
|
276
286
|
|
|
277
287
|
if git pull --rebase origin {{MAIN_BRANCH}}; then
|
|
278
|
-
echo "
|
|
288
|
+
echo "$(m wf_common.rebase_ok)"
|
|
279
289
|
else
|
|
280
|
-
echo "
|
|
290
|
+
echo "$(m wf_common.rebase_failed)"
|
|
281
291
|
git rebase --abort 2>/dev/null || true
|
|
282
292
|
exit 1
|
|
283
293
|
fi
|
|
@@ -285,7 +295,7 @@ jobs:
|
|
|
285
295
|
done
|
|
286
296
|
|
|
287
297
|
if [ "$PUSH_SUCCESS" = false ]; then
|
|
288
|
-
echo "
|
|
298
|
+
echo "$(m wf_common.push_gave_up max_retries="$MAX_RETRIES")"
|
|
289
299
|
exit 1
|
|
290
300
|
fi
|
|
291
301
|
fi
|