create-maa-project 0.1.0__tar.gz
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.
- create_maa_project-0.1.0/.github/workflows/release.yml +165 -0
- create_maa_project-0.1.0/.github/workflows/schema-sync.yml +35 -0
- create_maa_project-0.1.0/.gitignore +8 -0
- create_maa_project-0.1.0/.release/create-maa-project-manifest.json +68 -0
- create_maa_project-0.1.0/LICENSE +1 -0
- create_maa_project-0.1.0/PKG-INFO +51 -0
- create_maa_project-0.1.0/README.md +43 -0
- create_maa_project-0.1.0/package.json +45 -0
- create_maa_project-0.1.0/pnpm-lock.yaml +1338 -0
- create_maa_project-0.1.0/pnpm-workspace.yaml +2 -0
- create_maa_project-0.1.0/py-wrapper/create_maa_project/__init__.py +1 -0
- create_maa_project-0.1.0/py-wrapper/create_maa_project/__main__.py +218 -0
- create_maa_project-0.1.0/py-wrapper/create_maa_project/release_manifest.py +2 -0
- create_maa_project-0.1.0/pyproject.toml +18 -0
- create_maa_project-0.1.0/scripts/build-sea.mjs +90 -0
- create_maa_project-0.1.0/scripts/build.mjs +13 -0
- create_maa_project-0.1.0/scripts/create-release-manifest.mjs +73 -0
- create_maa_project-0.1.0/scripts/generate-template-assets.mjs +43 -0
- create_maa_project-0.1.0/scripts/prepare-pypi-release.mjs +35 -0
- create_maa_project-0.1.0/scripts/sync-release-version.mjs +75 -0
- create_maa_project-0.1.0/scripts/sync-schema.mjs +3 -0
- create_maa_project-0.1.0/scripts/test-python.mjs +39 -0
- create_maa_project-0.1.0/src/args.ts +191 -0
- create_maa_project-0.1.0/src/assets.ts +1136 -0
- create_maa_project-0.1.0/src/doctor.ts +511 -0
- create_maa_project-0.1.0/src/index.ts +242 -0
- create_maa_project-0.1.0/src/log.ts +34 -0
- create_maa_project-0.1.0/src/project.ts +456 -0
- create_maa_project-0.1.0/src/prompt.ts +112 -0
- create_maa_project-0.1.0/src/scaffold.ts +447 -0
- create_maa_project-0.1.0/src/sync.ts +185 -0
- create_maa_project-0.1.0/src/template-assets.generated.ts +2 -0
- create_maa_project-0.1.0/src/templates.ts +1405 -0
- create_maa_project-0.1.0/src/types.ts +144 -0
- create_maa_project-0.1.0/src/update.ts +555 -0
- create_maa_project-0.1.0/src/utils.ts +77 -0
- create_maa_project-0.1.0/templates/base/.editorconfig +14 -0
- create_maa_project-0.1.0/templates/base/.gitattributes +7 -0
- create_maa_project-0.1.0/templates/base/.github/workflows/schema-sync.yml +36 -0
- create_maa_project-0.1.0/templates/base/.gitignore +9 -0
- create_maa_project-0.1.0/templates/base/.prettierignore +5 -0
- create_maa_project-0.1.0/templates/base/.prettierrc.mjs +17 -0
- create_maa_project-0.1.0/templates/base/README.en.md +16 -0
- create_maa_project-0.1.0/templates/base/README.md +16 -0
- create_maa_project-0.1.0/templates/base/gitignore.tmpl +9 -0
- create_maa_project-0.1.0/templates/base/interface.json.tmpl +12 -0
- create_maa_project-0.1.0/templates/base/resource/base/default_pipeline.json +36 -0
- create_maa_project-0.1.0/templates/base/resource/base/image/empty.png +0 -0
- create_maa_project-0.1.0/templates/base/resource/base/pipeline/tutorial.json +13 -0
- create_maa_project-0.1.0/templates/base/tools/schema/custom.action.schema.json +8 -0
- create_maa_project-0.1.0/templates/base/tools/schema/custom.recognition.schema.json +8 -0
- create_maa_project-0.1.0/templates/base/tools/schema/interface.schema.json +1099 -0
- create_maa_project-0.1.0/templates/base/tools/schema/interface_config.schema.json +118 -0
- create_maa_project-0.1.0/templates/base/tools/schema/interface_import.schema.json +551 -0
- create_maa_project-0.1.0/templates/base/tools/schema/pipeline.schema.json +4285 -0
- create_maa_project-0.1.0/templates/base/tools/schema/schema-manifest.json +33 -0
- create_maa_project-0.1.0/templates/base/tools/sync-schema.mjs +100 -0
- create_maa_project-0.1.0/tests/args.test.ts +79 -0
- create_maa_project-0.1.0/tests/scaffold.test.ts +477 -0
- create_maa_project-0.1.0/tests/test_py_wrapper.py +258 -0
- create_maa_project-0.1.0/tsconfig.json +24 -0
- create_maa_project-0.1.0/vitest.config.ts +11 -0
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
check:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
|
+
- uses: pnpm/action-setup@v6
|
|
18
|
+
- uses: actions/setup-node@v6
|
|
19
|
+
with:
|
|
20
|
+
node-version: 24
|
|
21
|
+
cache: pnpm
|
|
22
|
+
- uses: actions/setup-python@v6
|
|
23
|
+
with:
|
|
24
|
+
python-version: '3.13'
|
|
25
|
+
- run: node scripts/sync-release-version.mjs
|
|
26
|
+
- run: pnpm install --frozen-lockfile
|
|
27
|
+
- run: pnpm check
|
|
28
|
+
- run: pnpm build
|
|
29
|
+
- run: mkdir -p dist/npm && pnpm pack --pack-destination dist/npm
|
|
30
|
+
- uses: actions/upload-artifact@v7
|
|
31
|
+
with:
|
|
32
|
+
name: npm-package
|
|
33
|
+
path: dist/npm/*.tgz
|
|
34
|
+
if-no-files-found: error
|
|
35
|
+
|
|
36
|
+
sea:
|
|
37
|
+
needs: check
|
|
38
|
+
strategy:
|
|
39
|
+
fail-fast: false
|
|
40
|
+
matrix:
|
|
41
|
+
include:
|
|
42
|
+
- runner: windows-latest
|
|
43
|
+
asset_os: win
|
|
44
|
+
arch: x86_64
|
|
45
|
+
- runner: windows-11-arm
|
|
46
|
+
asset_os: win
|
|
47
|
+
arch: aarch64
|
|
48
|
+
- runner: ubuntu-latest
|
|
49
|
+
asset_os: linux
|
|
50
|
+
arch: x86_64
|
|
51
|
+
- runner: ubuntu-24.04-arm
|
|
52
|
+
asset_os: linux
|
|
53
|
+
arch: aarch64
|
|
54
|
+
- runner: macos-15-intel
|
|
55
|
+
asset_os: macos
|
|
56
|
+
arch: x86_64
|
|
57
|
+
- runner: macos-latest
|
|
58
|
+
asset_os: macos
|
|
59
|
+
arch: aarch64
|
|
60
|
+
runs-on: ${{ matrix.runner }}
|
|
61
|
+
steps:
|
|
62
|
+
- uses: actions/checkout@v6
|
|
63
|
+
- uses: pnpm/action-setup@v6
|
|
64
|
+
- uses: actions/setup-node@v6
|
|
65
|
+
with:
|
|
66
|
+
node-version: 24
|
|
67
|
+
cache: pnpm
|
|
68
|
+
- run: node scripts/sync-release-version.mjs
|
|
69
|
+
- run: pnpm install --frozen-lockfile
|
|
70
|
+
- run: pnpm build:sea
|
|
71
|
+
env:
|
|
72
|
+
CREATE_MAA_PROJECT_RELEASE_OS: ${{ matrix.asset_os }}
|
|
73
|
+
CREATE_MAA_PROJECT_RELEASE_ARCH: ${{ matrix.arch }}
|
|
74
|
+
- uses: actions/upload-artifact@v7
|
|
75
|
+
with:
|
|
76
|
+
name: sea-${{ matrix.asset_os }}-${{ matrix.arch }}
|
|
77
|
+
path: dist/sea/create-maa-project-${{ matrix.asset_os }}-${{ matrix.arch }}*
|
|
78
|
+
if-no-files-found: error
|
|
79
|
+
|
|
80
|
+
release-manifest:
|
|
81
|
+
needs: sea
|
|
82
|
+
runs-on: ubuntu-latest
|
|
83
|
+
steps:
|
|
84
|
+
- uses: actions/checkout@v6
|
|
85
|
+
- uses: actions/setup-node@v6
|
|
86
|
+
with:
|
|
87
|
+
node-version: 24
|
|
88
|
+
- run: node scripts/sync-release-version.mjs
|
|
89
|
+
- uses: actions/download-artifact@v7
|
|
90
|
+
with:
|
|
91
|
+
pattern: sea-*
|
|
92
|
+
merge-multiple: true
|
|
93
|
+
path: dist/release-assets
|
|
94
|
+
- run: node scripts/create-release-manifest.mjs dist/release-assets dist/release/create-maa-project-manifest.json
|
|
95
|
+
- uses: actions/upload-artifact@v7
|
|
96
|
+
with:
|
|
97
|
+
name: release-manifest
|
|
98
|
+
path: dist/release/create-maa-project-manifest.json
|
|
99
|
+
if-no-files-found: error
|
|
100
|
+
|
|
101
|
+
github-release:
|
|
102
|
+
needs: release-manifest
|
|
103
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
104
|
+
permissions:
|
|
105
|
+
contents: write
|
|
106
|
+
runs-on: ubuntu-latest
|
|
107
|
+
steps:
|
|
108
|
+
- uses: actions/download-artifact@v7
|
|
109
|
+
with:
|
|
110
|
+
pattern: sea-*
|
|
111
|
+
merge-multiple: true
|
|
112
|
+
path: dist/release
|
|
113
|
+
- uses: actions/download-artifact@v7
|
|
114
|
+
with:
|
|
115
|
+
name: release-manifest
|
|
116
|
+
path: dist/release
|
|
117
|
+
- uses: softprops/action-gh-release@v3
|
|
118
|
+
with:
|
|
119
|
+
generate_release_notes: true
|
|
120
|
+
files: dist/release/*
|
|
121
|
+
|
|
122
|
+
npm:
|
|
123
|
+
needs: check
|
|
124
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
125
|
+
permissions:
|
|
126
|
+
contents: read
|
|
127
|
+
id-token: write
|
|
128
|
+
runs-on: ubuntu-latest
|
|
129
|
+
steps:
|
|
130
|
+
- uses: actions/download-artifact@v7
|
|
131
|
+
with:
|
|
132
|
+
name: npm-package
|
|
133
|
+
path: dist/npm
|
|
134
|
+
- uses: actions/setup-node@v6
|
|
135
|
+
with:
|
|
136
|
+
node-version: 24
|
|
137
|
+
registry-url: https://registry.npmjs.org
|
|
138
|
+
- run: npm publish dist/npm/*.tgz --access public --provenance
|
|
139
|
+
env:
|
|
140
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
141
|
+
|
|
142
|
+
pypi:
|
|
143
|
+
needs: github-release
|
|
144
|
+
if: startsWith(github.ref, 'refs/tags/')
|
|
145
|
+
permissions:
|
|
146
|
+
contents: read
|
|
147
|
+
id-token: write
|
|
148
|
+
runs-on: ubuntu-latest
|
|
149
|
+
steps:
|
|
150
|
+
- uses: actions/checkout@v6
|
|
151
|
+
- uses: actions/setup-python@v6
|
|
152
|
+
with:
|
|
153
|
+
python-version: '3.13'
|
|
154
|
+
- uses: astral-sh/setup-uv@v8.1.0
|
|
155
|
+
- uses: actions/setup-node@v6
|
|
156
|
+
with:
|
|
157
|
+
node-version: 24
|
|
158
|
+
- run: node scripts/sync-release-version.mjs
|
|
159
|
+
- uses: actions/download-artifact@v7
|
|
160
|
+
with:
|
|
161
|
+
name: release-manifest
|
|
162
|
+
path: .release
|
|
163
|
+
- run: node scripts/prepare-pypi-release.mjs .release/create-maa-project-manifest.json
|
|
164
|
+
- run: uv build
|
|
165
|
+
- uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
name: Schema Sync
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
schedule:
|
|
6
|
+
- cron: '17 2 * * *'
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
sync:
|
|
13
|
+
if: github.event.repository.fork == false
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v6
|
|
17
|
+
- uses: pnpm/action-setup@v6
|
|
18
|
+
- uses: actions/setup-node@v6
|
|
19
|
+
with:
|
|
20
|
+
node-version: 24
|
|
21
|
+
cache: pnpm
|
|
22
|
+
- run: pnpm sync:schema
|
|
23
|
+
- run: pnpm install --frozen-lockfile
|
|
24
|
+
- run: pnpm check
|
|
25
|
+
- name: Commit schema updates
|
|
26
|
+
run: |
|
|
27
|
+
if git diff --quiet; then
|
|
28
|
+
echo "No schema changes."
|
|
29
|
+
exit 0
|
|
30
|
+
fi
|
|
31
|
+
git config user.name "github-actions[bot]"
|
|
32
|
+
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
|
33
|
+
git add templates/base/tools/schema
|
|
34
|
+
git commit -m "chore: sync MaaFW schema [skip changelog]"
|
|
35
|
+
git push
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "create-maa-project",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"tag": "v0.1.0",
|
|
6
|
+
"assets": [
|
|
7
|
+
{
|
|
8
|
+
"kind": "sea",
|
|
9
|
+
"os": "linux",
|
|
10
|
+
"arch": "aarch64",
|
|
11
|
+
"version": "0.1.0",
|
|
12
|
+
"name": "create-maa-project-linux-aarch64",
|
|
13
|
+
"url": "https://github.com/Windsland52/create-maa-project/releases/download/v0.1.0/create-maa-project-linux-aarch64",
|
|
14
|
+
"sha256": "108803bf7eccd476ee062cc28bca271c97f71870602fdb5371471353f8eb12ef",
|
|
15
|
+
"size": 121900160
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"kind": "sea",
|
|
19
|
+
"os": "linux",
|
|
20
|
+
"arch": "x86_64",
|
|
21
|
+
"version": "0.1.0",
|
|
22
|
+
"name": "create-maa-project-linux-x86_64",
|
|
23
|
+
"url": "https://github.com/Windsland52/create-maa-project/releases/download/v0.1.0/create-maa-project-linux-x86_64",
|
|
24
|
+
"sha256": "51f5b43ea7da577172d812824bc442c2b53a98b82a987a16f1cc94ffb963e412",
|
|
25
|
+
"size": 123997376
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"kind": "sea",
|
|
29
|
+
"os": "macos",
|
|
30
|
+
"arch": "aarch64",
|
|
31
|
+
"version": "0.1.0",
|
|
32
|
+
"name": "create-maa-project-macos-aarch64",
|
|
33
|
+
"url": "https://github.com/Windsland52/create-maa-project/releases/download/v0.1.0/create-maa-project-macos-aarch64",
|
|
34
|
+
"sha256": "55a424756d99ecfb9d284a60cbf511add7dfbda1b75bd377dd2582f975024c71",
|
|
35
|
+
"size": 120835456
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"kind": "sea",
|
|
39
|
+
"os": "macos",
|
|
40
|
+
"arch": "x86_64",
|
|
41
|
+
"version": "0.1.0",
|
|
42
|
+
"name": "create-maa-project-macos-x86_64",
|
|
43
|
+
"url": "https://github.com/Windsland52/create-maa-project/releases/download/v0.1.0/create-maa-project-macos-x86_64",
|
|
44
|
+
"sha256": "8425f0ccc2961fcdd666f8d813ae771a71ae63112178dba9b29d3f168e1210fe",
|
|
45
|
+
"size": 123156480
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"kind": "sea",
|
|
49
|
+
"os": "win",
|
|
50
|
+
"arch": "aarch64",
|
|
51
|
+
"version": "0.1.0",
|
|
52
|
+
"name": "create-maa-project-win-aarch64.exe",
|
|
53
|
+
"url": "https://github.com/Windsland52/create-maa-project/releases/download/v0.1.0/create-maa-project-win-aarch64.exe",
|
|
54
|
+
"sha256": "d1ebc72b068e35a433cb3bba6e90ea46aa3fbf54d11da61cf30353a20fa24efc",
|
|
55
|
+
"size": 81634304
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
"kind": "sea",
|
|
59
|
+
"os": "win",
|
|
60
|
+
"arch": "x86_64",
|
|
61
|
+
"version": "0.1.0",
|
|
62
|
+
"name": "create-maa-project-win-x86_64.exe",
|
|
63
|
+
"url": "https://github.com/Windsland52/create-maa-project/releases/download/v0.1.0/create-maa-project-win-x86_64.exe",
|
|
64
|
+
"sha256": "286d5fe2764ccdce26e788bed0c241f9715e1e852c0224a7ed78c9f608aee205",
|
|
65
|
+
"size": 92887552
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
AGPL-3.0-or-later
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: create-maa-project
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: PyPI wrapper for create-maa-project
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: >=3.9
|
|
7
|
+
Description-Content-Type: text/markdown
|
|
8
|
+
|
|
9
|
+
# create-maa-project
|
|
10
|
+
|
|
11
|
+
MaaFW pure pipeline project scaffolding CLI.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx create-maa-project my-project
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Current implementation covers the local pipeline scaffold core:
|
|
18
|
+
|
|
19
|
+
- interactive create flow without LLM
|
|
20
|
+
- default `resource/base` project shape
|
|
21
|
+
- committed `maa-project.json` and `maa-project.lock.json`
|
|
22
|
+
- project-owned files such as `interface.json`, `package.json`, `tasks/`, `resource/`, editor ignores/settings, and OCR model files are created once instead of managed as template baselines
|
|
23
|
+
- metadata sync for interface, package, controller, license, network mode, display name, and validated GitHub repository URLs
|
|
24
|
+
- managed file hash checks through `--doctor` and `--diff`
|
|
25
|
+
- `--accept-changes [path...]` to accept selected or all changed managed files
|
|
26
|
+
- accepted local baseline reporting in `--doctor` and generated `tools/check-project.mjs`
|
|
27
|
+
- `--update node-deps` dependency refresh with successful pending-action cleanup
|
|
28
|
+
- `--update schema` refreshes the generated project from the CLI's embedded schema baseline
|
|
29
|
+
- runtime updates resolve MaaFramework and MFAAvalonia assets from GitHub Releases, verify GitHub-provided sha256 digests, cache MFAAvalonia GUI files for release staging, and extract MaaFramework into the generated runtime layout
|
|
30
|
+
- `pnpm sync:runtime` in generated projects calls `create-maa-project --update maafw --update runtime:mfa`; set `CREATE_MAA_PROJECT_RUNTIME_PLATFORM=all` to sync every desktop platform instead of the current platform
|
|
31
|
+
- default asset downloads retry transient network failures; set `CREATE_MAA_PROJECT_DOWNLOAD_ATTEMPTS=<n>` to override the default
|
|
32
|
+
- OCR downloads can be seeded for local/offline verification with `CREATE_MAA_PROJECT_OCR_ZIP_PATH`
|
|
33
|
+
- OCR model updates use a verified manifest from `CREATE_MAA_PROJECT_OCR_MANIFEST_URL` when configured, with the existing OCR zip as fallback
|
|
34
|
+
- explicit schema baseline sync through `pnpm sync:schema`, plus generated daily schema-sync workflow
|
|
35
|
+
- CLI project creation attempts OCR model download and `pnpm install` by default, keeping actionable pending items if either fails
|
|
36
|
+
- conservative `--update template` with `--update template --diff` preview and `--force` overwrite
|
|
37
|
+
- generated project lint and release dry-run smoke checks, including pending-action, pnpm lockfile, VS Code settings, and interface schema guards
|
|
38
|
+
- release staging through generated `tools/build-release.mjs`, with MFAAvalonia GUI files laid down first, MaaFramework runtime overlaid after it, package-only `interface.json` rewriting, tag-based version injection, dev-file exclusion, package smoke checks, and Unix tar executable metadata smoke in the release workflow
|
|
39
|
+
- default release workflow packages the 3 OS x 2 arch desktop artifact matrix using M9A-style GUI suffixes such as `-MFAA`: Windows zip artifacts, plus Linux/macOS tar.gz artifacts; MFAAvalonia runtime sync uses its upstream `win/linux/osx` and `x64/arm64` asset matrix separately
|
|
40
|
+
- explicit `--git`/`--no-git` creation flow with parent-repository and pending-commit guards
|
|
41
|
+
- write lock, explicit stale-lock cleanup, local backups for file overwrites and non-empty target directories, cache cleanup, and backup restore
|
|
42
|
+
|
|
43
|
+
Schema syncing is explicit and workflow-based rather than part of build.
|
|
44
|
+
|
|
45
|
+
## Release
|
|
46
|
+
|
|
47
|
+
Pushing a `v*` tag runs `.github/workflows/release.yml`. The workflow checks the
|
|
48
|
+
repo, builds the npm package, builds SEA binaries for Windows/Linux/macOS on
|
|
49
|
+
`x86_64` and `aarch64`, writes `create-maa-project-manifest.json`, publishes the
|
|
50
|
+
GitHub Release assets, publishes npm, then builds the PyPI wrapper with the
|
|
51
|
+
release manifest digest embedded and publishes it through trusted publishing.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# create-maa-project
|
|
2
|
+
|
|
3
|
+
MaaFW pure pipeline project scaffolding CLI.
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npx create-maa-project my-project
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
Current implementation covers the local pipeline scaffold core:
|
|
10
|
+
|
|
11
|
+
- interactive create flow without LLM
|
|
12
|
+
- default `resource/base` project shape
|
|
13
|
+
- committed `maa-project.json` and `maa-project.lock.json`
|
|
14
|
+
- project-owned files such as `interface.json`, `package.json`, `tasks/`, `resource/`, editor ignores/settings, and OCR model files are created once instead of managed as template baselines
|
|
15
|
+
- metadata sync for interface, package, controller, license, network mode, display name, and validated GitHub repository URLs
|
|
16
|
+
- managed file hash checks through `--doctor` and `--diff`
|
|
17
|
+
- `--accept-changes [path...]` to accept selected or all changed managed files
|
|
18
|
+
- accepted local baseline reporting in `--doctor` and generated `tools/check-project.mjs`
|
|
19
|
+
- `--update node-deps` dependency refresh with successful pending-action cleanup
|
|
20
|
+
- `--update schema` refreshes the generated project from the CLI's embedded schema baseline
|
|
21
|
+
- runtime updates resolve MaaFramework and MFAAvalonia assets from GitHub Releases, verify GitHub-provided sha256 digests, cache MFAAvalonia GUI files for release staging, and extract MaaFramework into the generated runtime layout
|
|
22
|
+
- `pnpm sync:runtime` in generated projects calls `create-maa-project --update maafw --update runtime:mfa`; set `CREATE_MAA_PROJECT_RUNTIME_PLATFORM=all` to sync every desktop platform instead of the current platform
|
|
23
|
+
- default asset downloads retry transient network failures; set `CREATE_MAA_PROJECT_DOWNLOAD_ATTEMPTS=<n>` to override the default
|
|
24
|
+
- OCR downloads can be seeded for local/offline verification with `CREATE_MAA_PROJECT_OCR_ZIP_PATH`
|
|
25
|
+
- OCR model updates use a verified manifest from `CREATE_MAA_PROJECT_OCR_MANIFEST_URL` when configured, with the existing OCR zip as fallback
|
|
26
|
+
- explicit schema baseline sync through `pnpm sync:schema`, plus generated daily schema-sync workflow
|
|
27
|
+
- CLI project creation attempts OCR model download and `pnpm install` by default, keeping actionable pending items if either fails
|
|
28
|
+
- conservative `--update template` with `--update template --diff` preview and `--force` overwrite
|
|
29
|
+
- generated project lint and release dry-run smoke checks, including pending-action, pnpm lockfile, VS Code settings, and interface schema guards
|
|
30
|
+
- release staging through generated `tools/build-release.mjs`, with MFAAvalonia GUI files laid down first, MaaFramework runtime overlaid after it, package-only `interface.json` rewriting, tag-based version injection, dev-file exclusion, package smoke checks, and Unix tar executable metadata smoke in the release workflow
|
|
31
|
+
- default release workflow packages the 3 OS x 2 arch desktop artifact matrix using M9A-style GUI suffixes such as `-MFAA`: Windows zip artifacts, plus Linux/macOS tar.gz artifacts; MFAAvalonia runtime sync uses its upstream `win/linux/osx` and `x64/arm64` asset matrix separately
|
|
32
|
+
- explicit `--git`/`--no-git` creation flow with parent-repository and pending-commit guards
|
|
33
|
+
- write lock, explicit stale-lock cleanup, local backups for file overwrites and non-empty target directories, cache cleanup, and backup restore
|
|
34
|
+
|
|
35
|
+
Schema syncing is explicit and workflow-based rather than part of build.
|
|
36
|
+
|
|
37
|
+
## Release
|
|
38
|
+
|
|
39
|
+
Pushing a `v*` tag runs `.github/workflows/release.yml`. The workflow checks the
|
|
40
|
+
repo, builds the npm package, builds SEA binaries for Windows/Linux/macOS on
|
|
41
|
+
`x86_64` and `aarch64`, writes `create-maa-project-manifest.json`, publishes the
|
|
42
|
+
GitHub Release assets, publishes npm, then builds the PyPI wrapper with the
|
|
43
|
+
release manifest digest embedded and publishes it through trusted publishing.
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "create-maa-project",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"bin": {
|
|
6
|
+
"create-maa-project": "./dist/index.js"
|
|
7
|
+
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "https://github.com/Windsland52/create-maa-project"
|
|
11
|
+
},
|
|
12
|
+
"files": [
|
|
13
|
+
"dist/index.js",
|
|
14
|
+
"templates",
|
|
15
|
+
"README.md",
|
|
16
|
+
"LICENSE"
|
|
17
|
+
],
|
|
18
|
+
"scripts": {
|
|
19
|
+
"build": "node scripts/build.mjs",
|
|
20
|
+
"build:sea": "node scripts/build-sea.mjs",
|
|
21
|
+
"dev": "tsx src/index.ts",
|
|
22
|
+
"release:manifest": "node scripts/create-release-manifest.mjs",
|
|
23
|
+
"release:prepare-pypi": "node scripts/prepare-pypi-release.mjs",
|
|
24
|
+
"release:sync-version": "node scripts/sync-release-version.mjs",
|
|
25
|
+
"sync:schema": "node scripts/sync-schema.mjs",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
27
|
+
"test": "vitest run && node scripts/test-python.mjs",
|
|
28
|
+
"check": "pnpm typecheck && pnpm test"
|
|
29
|
+
},
|
|
30
|
+
"devDependencies": {
|
|
31
|
+
"@types/node": "24.0.0",
|
|
32
|
+
"esbuild": "0.25.5",
|
|
33
|
+
"postject": "1.0.0-alpha.6",
|
|
34
|
+
"tsx": "4.20.3",
|
|
35
|
+
"typescript": "5.8.3",
|
|
36
|
+
"vitest": "3.2.4"
|
|
37
|
+
},
|
|
38
|
+
"engines": {
|
|
39
|
+
"node": ">=24"
|
|
40
|
+
},
|
|
41
|
+
"publishConfig": {
|
|
42
|
+
"access": "public"
|
|
43
|
+
},
|
|
44
|
+
"packageManager": "pnpm@11.5.1"
|
|
45
|
+
}
|