project-auto-wizard 0.13.3 → 0.14.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.md +1 -1
- 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 +296 -257
- package/payload/scripts/issue_helper.py +54 -50
- package/payload/scripts/messages.py +2279 -0
- package/payload/scripts/truncate_release_notes.py +7 -6
- package/payload/scripts/version_manager.py +64 -61
- package/payload/version.yml.template +2 -1
- package/payload/workflows/common/PROJECT-COMMON-AI-PR-SUMMARY.yaml +17 -12
- package/payload/workflows/common/PROJECT-COMMON-AUTO-CHANGELOG-CONTROL.yaml +59 -34
- package/payload/workflows/common/PROJECT-COMMON-ISSUE-HELPER.yaml +17 -15
- package/payload/workflows/common/PROJECT-COMMON-README-VERSION-UPDATE.yaml +17 -10
- package/payload/workflows/common/PROJECT-COMMON-RELEASE-PUBLISH.yaml +54 -44
- package/payload/workflows/common/PROJECT-COMMON-VERSION-CONTROL.yaml +24 -17
- 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 +85 -89
- package/src/commands/dry-run.js +63 -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 +45 -35
- 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 +187 -0
- package/src/i18n/catalog/en/copy.js +19 -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 +187 -0
- package/src/i18n/catalog/ko/copy.js +19 -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 +128 -94
- 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 +89 -88
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
# project-auto-wizard:managed-workflow
|
|
2
|
-
# Python
|
|
3
|
-
# - {{DEVELOP_BRANCH}}
|
|
4
|
-
# -
|
|
5
|
-
# -
|
|
6
|
-
# - Dockerfile
|
|
7
|
-
# -
|
|
2
|
+
# Python build verification workflow (CI only)
|
|
3
|
+
# - On push/PR to the {{DEVELOP_BRANCH}} branch: install dependencies -> pytest -> Docker build (if a Dockerfile exists)
|
|
4
|
+
# - Dependencies: requirements.txt if present, otherwise `pip install .` from pyproject.toml/setup.py
|
|
5
|
+
# - Tests: pytest runs only when a tests/ or test/ folder or test_*.py / *_test.py files exist (skipped otherwise)
|
|
6
|
+
# - A missing Dockerfile does not fail the run (only the Docker build verification is skipped)
|
|
7
|
+
# - Does not deploy (deployment happens only on the {{MAIN_BRANCH}} branch)
|
|
8
8
|
#
|
|
9
9
|
# GitHub Secrets
|
|
10
|
-
# - ENV_FILE (
|
|
10
|
+
# - ENV_FILE (optional): contents of the .env file — verified with an empty .env when missing
|
|
11
11
|
|
|
12
12
|
name: PROJECT-PYTHON-CI
|
|
13
13
|
|
|
14
14
|
on:
|
|
15
15
|
push:
|
|
16
16
|
branches:
|
|
17
|
-
- "{{DEVELOP_BRANCH}}" # {{DEVELOP_BRANCH}}
|
|
17
|
+
- "{{DEVELOP_BRANCH}}" # build verification on push to the {{DEVELOP_BRANCH}} branch
|
|
18
18
|
pull_request:
|
|
19
19
|
branches:
|
|
20
|
-
- "{{DEVELOP_BRANCH}}" # {{DEVELOP_BRANCH}}
|
|
21
|
-
workflow_dispatch: #
|
|
20
|
+
- "{{DEVELOP_BRANCH}}" # build verification on PRs to the {{DEVELOP_BRANCH}} branch
|
|
21
|
+
workflow_dispatch: # allow manual runs
|
|
22
22
|
|
|
23
23
|
env:
|
|
24
|
-
#
|
|
24
|
+
# Unique project identifier (used for container, image and domain names)
|
|
25
25
|
PROJECT_NAME: "__PROJECT_NAME__" # @wizard ask:@repo
|
|
26
|
-
#
|
|
26
|
+
# Subdirectory of this project in a monorepo ('.' means always verify)
|
|
27
27
|
PROJECT_PATH: "." # @wizard auto:project-path
|
|
28
|
-
#
|
|
28
|
+
# Python version used for tests and dependency install
|
|
29
29
|
PYTHON_VERSION: "3.12"
|
|
30
30
|
|
|
31
31
|
jobs:
|
|
32
32
|
changes:
|
|
33
|
-
name:
|
|
33
|
+
name: Detect changes
|
|
34
34
|
runs-on: ubuntu-latest
|
|
35
35
|
permissions:
|
|
36
36
|
contents: read
|
|
@@ -41,124 +41,139 @@ jobs:
|
|
|
41
41
|
- name: Checkout repository
|
|
42
42
|
uses: actions/checkout@v7
|
|
43
43
|
|
|
44
|
-
- name:
|
|
44
|
+
- name: Check whether the project path changed
|
|
45
45
|
id: filter
|
|
46
46
|
if: ${{ github.event_name != 'workflow_dispatch' }}
|
|
47
47
|
uses: dorny/paths-filter@v4
|
|
48
48
|
with:
|
|
49
|
-
# push
|
|
50
|
-
#
|
|
49
|
+
# A push only looks at this push's range (against the previous commit, 'before'). Left empty it would be the cumulative diff against the default branch.
|
|
50
|
+
# The first push of a new branch (before is 0) and PRs get an empty value -> default behavior (against the default branch / PR base)
|
|
51
51
|
base: ${{ github.event_name == 'push' && github.event.before != '0000000000000000000000000000000000000000' && github.event.before || '' }}
|
|
52
52
|
filters: |
|
|
53
53
|
project:
|
|
54
54
|
- '${{ env.PROJECT_PATH == '.' && '**' || format('{0}/**', env.PROJECT_PATH) }}'
|
|
55
55
|
|
|
56
56
|
build-check:
|
|
57
|
-
name: Python
|
|
57
|
+
name: Python build verification
|
|
58
58
|
runs-on: ubuntu-latest
|
|
59
59
|
needs: changes
|
|
60
60
|
if: ${{ github.event_name == 'workflow_dispatch' || needs.changes.outputs.project == 'true' }}
|
|
61
|
-
#
|
|
61
|
+
# In a monorepo (--paths), build inside that subfolder
|
|
62
62
|
defaults:
|
|
63
63
|
run:
|
|
64
64
|
working-directory: ${{ env.PROJECT_PATH }}
|
|
65
65
|
|
|
66
66
|
steps:
|
|
67
|
-
- name:
|
|
67
|
+
- name: Checkout repository
|
|
68
68
|
uses: actions/checkout@v7
|
|
69
69
|
|
|
70
|
-
- name: .env
|
|
70
|
+
- name: Create .env file
|
|
71
71
|
run: |
|
|
72
|
+
m() { (cd "$GITHUB_WORKSPACE" && python3 .github/scripts/messages.py get "$@"); }
|
|
72
73
|
cat > .env << 'EOF'
|
|
73
74
|
${{ secrets.ENV_FILE }}
|
|
74
75
|
EOF
|
|
75
|
-
|
|
76
|
+
m cicd.dotenv_created
|
|
76
77
|
|
|
77
|
-
- name: Python
|
|
78
|
+
- name: Set up Python
|
|
78
79
|
uses: actions/setup-python@v7
|
|
79
80
|
with:
|
|
80
81
|
python-version: ${{ env.PYTHON_VERSION }}
|
|
81
82
|
|
|
82
|
-
- name:
|
|
83
|
+
- name: Install dependencies
|
|
83
84
|
run: |
|
|
85
|
+
m() { (cd "$GITHUB_WORKSPACE" && python3 .github/scripts/messages.py get "$@"); }
|
|
84
86
|
python -m pip install --upgrade pip
|
|
85
87
|
if [ -f requirements.txt ]; then
|
|
86
88
|
pip install -r requirements.txt
|
|
87
89
|
elif [ -f pyproject.toml ] || [ -f setup.py ]; then
|
|
88
90
|
pip install .
|
|
89
91
|
else
|
|
90
|
-
|
|
92
|
+
m cibuild.py_no_deps
|
|
91
93
|
fi
|
|
92
|
-
#
|
|
94
|
+
# Also install dev dependencies when present (pytest, etc.)
|
|
93
95
|
if [ -f requirements-dev.txt ]; then pip install -r requirements-dev.txt; fi
|
|
94
96
|
|
|
95
|
-
#
|
|
96
|
-
- name:
|
|
97
|
+
# Projects without tests are skipped rather than failed
|
|
98
|
+
- name: Run tests (pytest)
|
|
97
99
|
run: |
|
|
100
|
+
m() { (cd "$GITHUB_WORKSPACE" && python3 .github/scripts/messages.py get "$@"); }
|
|
98
101
|
if [ -d tests ] || [ -d test ] || [ -n "$(find . \( -path ./.venv -o -path ./venv -o -path ./node_modules -o -path ./.git \) -prune -o \( -name 'test_*.py' -o -name '*_test.py' \) -type f -print -quit)" ]; then
|
|
99
102
|
python -m pytest --version > /dev/null 2>&1 || pip install pytest
|
|
100
103
|
set +e
|
|
101
104
|
python -m pytest
|
|
102
105
|
code=$?
|
|
103
106
|
set -e
|
|
104
|
-
# 5 =
|
|
107
|
+
# 5 = no tests collected -> not treated as a failure
|
|
105
108
|
if [ "$code" -eq 5 ]; then
|
|
106
|
-
|
|
109
|
+
m cibuild.py_no_tests_collected
|
|
107
110
|
exit 0
|
|
108
111
|
fi
|
|
109
112
|
exit "$code"
|
|
110
113
|
else
|
|
111
|
-
|
|
114
|
+
m cibuild.py_no_test_files
|
|
112
115
|
fi
|
|
113
116
|
|
|
114
|
-
- name: Dockerfile
|
|
117
|
+
- name: Check for Dockerfile
|
|
115
118
|
id: dockerfile
|
|
116
119
|
run: |
|
|
120
|
+
m() { (cd "$GITHUB_WORKSPACE" && python3 .github/scripts/messages.py get "$@"); }
|
|
117
121
|
if [ -f Dockerfile ]; then
|
|
118
122
|
echo "exists=true" >> "$GITHUB_OUTPUT"
|
|
119
123
|
else
|
|
120
124
|
echo "exists=false" >> "$GITHUB_OUTPUT"
|
|
121
|
-
|
|
125
|
+
m cibuild.py_no_dockerfile path="${{ env.PROJECT_PATH }}"
|
|
122
126
|
fi
|
|
123
127
|
|
|
124
|
-
- name: Docker
|
|
128
|
+
- name: Set up Docker Buildx
|
|
125
129
|
if: steps.dockerfile.outputs.exists == 'true'
|
|
126
130
|
uses: docker/setup-buildx-action@v3
|
|
127
131
|
|
|
128
|
-
- name: Docker
|
|
132
|
+
- name: Verify Docker image build
|
|
129
133
|
if: steps.dockerfile.outputs.exists == 'true'
|
|
130
134
|
uses: docker/build-push-action@v5
|
|
131
135
|
with:
|
|
132
136
|
context: ${{ env.PROJECT_PATH }}
|
|
133
137
|
file: ${{ env.PROJECT_PATH }}/Dockerfile
|
|
134
|
-
push: false #
|
|
138
|
+
push: false # do not push (build verification only)
|
|
135
139
|
tags: ${{ env.PROJECT_NAME }}:build-check
|
|
136
140
|
cache-from: type=gha
|
|
137
141
|
cache-to: type=gha,mode=max
|
|
138
142
|
|
|
139
|
-
- name:
|
|
143
|
+
- name: Build verification complete
|
|
140
144
|
run: |
|
|
141
|
-
|
|
145
|
+
m() { (cd "$GITHUB_WORKSPACE" && python3 .github/scripts/messages.py get "$@"); }
|
|
146
|
+
m cibuild.python_done
|
|
142
147
|
echo ""
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
+
m cibuild.info_title
|
|
149
|
+
m cibuild.info_project project="${{ env.PROJECT_NAME }}"
|
|
150
|
+
m cibuild.info_branch branch="${{ github.ref_name }}"
|
|
151
|
+
m cibuild.info_commit sha="${{ github.sha }}"
|
|
152
|
+
m cibuild.info_time time="$(date '+%Y-%m-%d %H:%M:%S')"
|
|
148
153
|
|
|
149
|
-
# CI Gate:
|
|
154
|
+
# CI Gate: the single job to register as a required check
|
|
150
155
|
ci-gate:
|
|
151
156
|
name: CI Gate
|
|
152
157
|
if: ${{ always() }}
|
|
153
158
|
needs: [changes, build-check]
|
|
154
159
|
runs-on: ubuntu-latest
|
|
155
160
|
steps:
|
|
156
|
-
|
|
161
|
+
# Only the message catalog is needed here, so check out just that
|
|
162
|
+
- name: Checkout message catalog
|
|
163
|
+
uses: actions/checkout@v7
|
|
164
|
+
with:
|
|
165
|
+
sparse-checkout: |
|
|
166
|
+
.github/scripts/messages.py
|
|
167
|
+
version.yml
|
|
168
|
+
sparse-checkout-cone-mode: false
|
|
169
|
+
|
|
170
|
+
- name: Aggregate results
|
|
157
171
|
env:
|
|
158
172
|
RESULTS: ${{ toJSON(needs.*.result) }}
|
|
159
173
|
run: |
|
|
160
|
-
|
|
174
|
+
m() { (cd "$GITHUB_WORKSPACE" && python3 .github/scripts/messages.py get "$@"); }
|
|
175
|
+
m cibuild.gate_results results="$RESULTS"
|
|
161
176
|
if echo "$RESULTS" | grep -Eq '"(failure|cancelled)"'; then
|
|
162
|
-
|
|
177
|
+
m cibuild.gate_failed
|
|
163
178
|
exit 1
|
|
164
179
|
fi
|