eai-supmig 0.2.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.
- eai_supmig-0.2.0/LICENSE +21 -0
- eai_supmig-0.2.0/PKG-INFO +185 -0
- eai_supmig-0.2.0/README.md +153 -0
- eai_supmig-0.2.0/pyproject.toml +64 -0
- eai_supmig-0.2.0/setup.cfg +4 -0
- eai_supmig-0.2.0/src/eai_supmig/__init__.py +3 -0
- eai_supmig-0.2.0/src/eai_supmig/__main__.py +5 -0
- eai_supmig-0.2.0/src/eai_supmig/assess.py +247 -0
- eai_supmig-0.2.0/src/eai_supmig/bootstrap/__init__.py +5 -0
- eai_supmig-0.2.0/src/eai_supmig/bootstrap/runner.py +174 -0
- eai_supmig-0.2.0/src/eai_supmig/classify.py +47 -0
- eai_supmig-0.2.0/src/eai_supmig/cli.py +225 -0
- eai_supmig-0.2.0/src/eai_supmig/conan_detect.py +44 -0
- eai_supmig-0.2.0/src/eai_supmig/doctor.py +86 -0
- eai_supmig-0.2.0/src/eai_supmig/git_ops.py +60 -0
- eai_supmig-0.2.0/src/eai_supmig/io_util.py +14 -0
- eai_supmig-0.2.0/src/eai_supmig/model/__init__.py +6 -0
- eai_supmig-0.2.0/src/eai_supmig/model/contract.py +92 -0
- eai_supmig-0.2.0/src/eai_supmig/model/serialize.py +49 -0
- eai_supmig-0.2.0/src/eai_supmig/paths.py +83 -0
- eai_supmig-0.2.0/src/eai_supmig/plan.py +91 -0
- eai_supmig-0.2.0/src/eai_supmig/prompting/__init__.py +5 -0
- eai_supmig-0.2.0/src/eai_supmig/prompting/generate.py +97 -0
- eai_supmig-0.2.0/src/eai_supmig/repo_manifest/__init__.py +6 -0
- eai_supmig-0.2.0/src/eai_supmig/repo_manifest/discover.py +79 -0
- eai_supmig-0.2.0/src/eai_supmig/repo_manifest/parser.py +98 -0
- eai_supmig-0.2.0/src/eai_supmig.egg-info/PKG-INFO +185 -0
- eai_supmig-0.2.0/src/eai_supmig.egg-info/SOURCES.txt +36 -0
- eai_supmig-0.2.0/src/eai_supmig.egg-info/dependency_links.txt +1 -0
- eai_supmig-0.2.0/src/eai_supmig.egg-info/entry_points.txt +2 -0
- eai_supmig-0.2.0/src/eai_supmig.egg-info/requires.txt +10 -0
- eai_supmig-0.2.0/src/eai_supmig.egg-info/top_level.txt +1 -0
- eai_supmig-0.2.0/tests/test_bootstrap.py +52 -0
- eai_supmig-0.2.0/tests/test_classify.py +15 -0
- eai_supmig-0.2.0/tests/test_contract.py +32 -0
- eai_supmig-0.2.0/tests/test_manifest_parser.py +20 -0
- eai_supmig-0.2.0/tests/test_paths.py +17 -0
- eai_supmig-0.2.0/tests/test_prompts.py +30 -0
eai_supmig-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Michel Gillet
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: eai-supmig
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Contract-first migration assistant for legacy Google-repo superbuild workspaces
|
|
5
|
+
Author-email: Michel Gillet <michel.gillet@libesys.org>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://gitlab.com/libesys/ai-workflows/superbuild-workflow
|
|
8
|
+
Project-URL: Repository, https://gitlab.com/libesys/ai-workflows/superbuild-workflow.git
|
|
9
|
+
Project-URL: Documentation, https://gitlab.com/libesys/ai-workflows/superbuild-workflow/-/blob/develop/docs/package-publishing.md
|
|
10
|
+
Keywords: superbuild,cmake,conan,migration,repo,cli
|
|
11
|
+
Classifier: Development Status :: 4 - Beta
|
|
12
|
+
Classifier: Environment :: Console
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Operating System :: OS Independent
|
|
15
|
+
Classifier: Programming Language :: Python :: 3
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Topic :: Software Development :: Build Tools
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: typer>=0.12
|
|
23
|
+
Requires-Dist: rich>=13.7
|
|
24
|
+
Requires-Dist: pyyaml>=6.0
|
|
25
|
+
Provides-Extra: dev
|
|
26
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
27
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
28
|
+
Requires-Dist: ruff>=0.8; extra == "dev"
|
|
29
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
30
|
+
Requires-Dist: twine>=5.0; extra == "dev"
|
|
31
|
+
Dynamic: license-file
|
|
32
|
+
|
|
33
|
+
# superbuild-workflow
|
|
34
|
+
|
|
35
|
+
Authoritative shared workflow repository for superbuild-style software workspaces.
|
|
36
|
+
|
|
37
|
+
**GitLab path:** `ai-workflows/superbuild-workflow`
|
|
38
|
+
**Local mount in consuming repos:** `tools/ai-rules/`
|
|
39
|
+
|
|
40
|
+
This repository is **not** a product superbuild. It defines how superbuild workspaces are structured, built, governed, and assisted by AI tools. Consuming repositories coordinate multiple Git repositories under a CMake/Conan superbuild and mount this repo as a submodule for shared policy.
|
|
41
|
+
|
|
42
|
+
## What this is
|
|
43
|
+
|
|
44
|
+
- Portable workflow documentation (Markdown, `AGENTS.md`)
|
|
45
|
+
- Shared AI guidance for humans and coding agents
|
|
46
|
+
- Rationale and governance for how shared policy evolves
|
|
47
|
+
- Cursor adapter rules (thin wrappers over canonical docs)
|
|
48
|
+
- Templates for bootstrapping consuming repositories
|
|
49
|
+
- **Migration assistant CLI** (`eai-supmig`) — contract-first prep for legacy Google-repo superbuilds
|
|
50
|
+
|
|
51
|
+
## Migration assistant (`eai-supmig`)
|
|
52
|
+
|
|
53
|
+
Install and run from a legacy superbuild workspace:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
pip install eai-supmig
|
|
57
|
+
# or from this clone:
|
|
58
|
+
pip install -e ".[dev]"
|
|
59
|
+
eai-supmig assess
|
|
60
|
+
eai-supmig plan
|
|
61
|
+
eai-supmig bootstrap --with-ai-rules --with-cursor --yes
|
|
62
|
+
eai-supmig prompt
|
|
63
|
+
eai-supmig doctor
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Module invocation: `python -m eai_supmig assess`
|
|
67
|
+
|
|
68
|
+
See [docs/migration-assistant.md](docs/migration-assistant.md) and [docs/package-publishing.md](docs/package-publishing.md).
|
|
69
|
+
|
|
70
|
+
## What this is not
|
|
71
|
+
|
|
72
|
+
- A consuming product superbuild or application codebase
|
|
73
|
+
- A replacement for a consuming repo's CMake superbuild
|
|
74
|
+
- The sole source of truth for Cursor-specific rules (adapters only)
|
|
75
|
+
- A place to fork shared policy silently from a consumer
|
|
76
|
+
|
|
77
|
+
## Architectural principle
|
|
78
|
+
|
|
79
|
+
| Layer | Role |
|
|
80
|
+
|-------|------|
|
|
81
|
+
| **This repo** (`tools/ai-rules/` in consumers) | Canonical shared workflow policy |
|
|
82
|
+
| **Consuming superbuild repo** | Product workspace, build orchestration, local exceptions |
|
|
83
|
+
| **Local tool adapters** (e.g. `.cursor/rules/`) | Materialized or symlinked rules; overlays only |
|
|
84
|
+
|
|
85
|
+
Plain Markdown and `AGENTS.md` are the long-term authoritative content. Cursor `.mdc` files in `cursor/rules/` are adapters, not the primary source of truth.
|
|
86
|
+
|
|
87
|
+
## Documentation portal
|
|
88
|
+
|
|
89
|
+
Published documentation is mirrored to [`ai-workflows/docs-portal`](../docs-portal) via GitLab downstream pipelines. Edit docs here first; see `docs/portal-integration.md` and `docs/workflow-manifest.yaml`.
|
|
90
|
+
|
|
91
|
+
## Repository layout
|
|
92
|
+
|
|
93
|
+
```
|
|
94
|
+
superbuild-workflow/
|
|
95
|
+
├── README.md # This file
|
|
96
|
+
├── AGENTS.md # Agent-oriented entry point (authoritative)
|
|
97
|
+
├── pyproject.toml # Python package (eai-supmig)
|
|
98
|
+
├── src/eai_supmig/ # Migration assistant implementation
|
|
99
|
+
├── tests/ # Unit tests
|
|
100
|
+
├── docs/ # Portable workflow documentation
|
|
101
|
+
│ ├── architecture.md
|
|
102
|
+
│ ├── rationale.md
|
|
103
|
+
│ ├── workflow.md
|
|
104
|
+
│ ├── governance.md
|
|
105
|
+
│ ├── cursor-integration.md
|
|
106
|
+
│ ├── alternative-tool-integration.md
|
|
107
|
+
│ ├── repository-layout.md
|
|
108
|
+
│ ├── cmake-conan-policy.md
|
|
109
|
+
│ └── superbuild-philosophy.md
|
|
110
|
+
├── cursor/rules/ # Shared Cursor adapter rule sources
|
|
111
|
+
├── .cursor/rules/ # Governance rules for this repo itself
|
|
112
|
+
└── templates/ # Templates for consuming repos
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## Consuming repositories
|
|
116
|
+
|
|
117
|
+
A typical superbuild workspace:
|
|
118
|
+
|
|
119
|
+
1. Adds this repo as a Git submodule at `tools/ai-rules/`
|
|
120
|
+
2. Maintains a root `AGENTS.md` that references shared policy and documents local exceptions
|
|
121
|
+
3. Materializes Cursor rules from `tools/ai-rules/cursor/rules/` into `.cursor/rules/` (copy or symlink)
|
|
122
|
+
4. Keeps repo-specific overlays in local `.cursor/rules/` without changing shared policy here
|
|
123
|
+
|
|
124
|
+
See [docs/repository-layout.md](docs/repository-layout.md) and [templates/](templates/) for details.
|
|
125
|
+
|
|
126
|
+
## Getting started
|
|
127
|
+
|
|
128
|
+
### As a maintainer of this repo
|
|
129
|
+
|
|
130
|
+
1. Clone and run `./scripts/setup-dev.sh` (installs pre-commit + commit-msg gitlint)
|
|
131
|
+
2. Check out **`develop`** for day-to-day work — see [docs/development-workflow.md](docs/development-workflow.md)
|
|
132
|
+
3. Read [AGENTS.md](AGENTS.md) and [docs/governance.md](docs/governance.md)
|
|
133
|
+
4. Use [docs/commit-messages.md](docs/commit-messages.md) for commit format
|
|
134
|
+
5. Propose shared workflow changes here first; update docs in the same change set
|
|
135
|
+
6. Fast-forward **`master`** from `develop` when CI is green (or after review if CI is not yet configured)
|
|
136
|
+
7. Use `.cursor/rules/` when editing with Cursor in this repository
|
|
137
|
+
|
|
138
|
+
### As a consumer
|
|
139
|
+
|
|
140
|
+
1. Add the submodule:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
git submodule add <gitlab-url>/ai-workflows/superbuild-workflow.git tools/ai-rules
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
2. Copy or adapt [templates/repo-AGENTS.template.md](templates/repo-AGENTS.template.md) to your root `AGENTS.md`
|
|
147
|
+
3. Run or adapt [templates/setup-dev.template.sh](templates/setup-dev.template.sh) to materialize Cursor rules and initialize submodules
|
|
148
|
+
4. Point agents and developers at `tools/ai-rules/AGENTS.md` and relevant `docs/`
|
|
149
|
+
|
|
150
|
+
## How to update shared workflow
|
|
151
|
+
|
|
152
|
+
1. **Change policy here first** — never treat a consuming repo's local copy as the source of truth
|
|
153
|
+
2. **Keep changes coherent** — one logical change per commit; update rationale/governance docs when semantics change
|
|
154
|
+
3. **Release via submodule** — consumers update with `git submodule update --remote tools/ai-rules` (or pin to a specific commit)
|
|
155
|
+
4. **Document local exceptions** — in the consumer's root `AGENTS.md` and local overlay rules, not by forking shared files
|
|
156
|
+
|
|
157
|
+
See [docs/workflow.md](docs/workflow.md) for the full change and rollout process.
|
|
158
|
+
|
|
159
|
+
## Documentation index
|
|
160
|
+
|
|
161
|
+
| Document | Purpose |
|
|
162
|
+
|----------|---------|
|
|
163
|
+
| [architecture.md](docs/architecture.md) | Layered model, remote vs local paths |
|
|
164
|
+
| [rationale.md](docs/rationale.md) | Why centralized shared workflow exists |
|
|
165
|
+
| [workflow.md](docs/workflow.md) | How changes flow from discovery to rollout |
|
|
166
|
+
| [governance.md](docs/governance.md) | What belongs here vs in consumers |
|
|
167
|
+
| [cursor-integration.md](docs/cursor-integration.md) | Cursor adapter usage |
|
|
168
|
+
| [alternative-tool-integration.md](docs/alternative-tool-integration.md) | Non-Cursor AI tools |
|
|
169
|
+
| [repository-layout.md](docs/repository-layout.md) | Expected consuming repo layout |
|
|
170
|
+
| [cmake-conan-policy.md](docs/cmake-conan-policy.md) | Build and dependency policy |
|
|
171
|
+
| [superbuild-philosophy.md](docs/superbuild-philosophy.md) | Multi-repo coordination model |
|
|
172
|
+
| [legacy-superbuild-migration.md](docs/legacy-superbuild-migration.md) | Phased migration from legacy CMake / `.vcxproj` |
|
|
173
|
+
| [legacy-superbuild-assessment.md](docs/legacy-superbuild-assessment.md) | Pre-migration inventory |
|
|
174
|
+
| [visual-studio-to-cmake-mapping.md](docs/visual-studio-to-cmake-mapping.md) | VS project → CMake target mapping |
|
|
175
|
+
| [conan-cmake-rollout.md](docs/conan-cmake-rollout.md) | Incremental Conan and presets |
|
|
176
|
+
| [superbuild-integration-plan.md](docs/superbuild-integration-plan.md) | `tools/ai-rules/` submodule rollout |
|
|
177
|
+
| [development-workflow.md](docs/development-workflow.md) | Branches, pre-commit, ff-merge to `master` |
|
|
178
|
+
| [commit-messages.md](docs/commit-messages.md) | Conventional Commits (gitlint) |
|
|
179
|
+
| [commit-checklist.md](docs/commit-checklist.md) | Pre-commit checklist |
|
|
180
|
+
| [migration-assistant.md](docs/migration-assistant.md) | `eai-supmig` CLI for legacy superbuild prep |
|
|
181
|
+
| [package-publishing.md](docs/package-publishing.md) | PyPI / GitLab package CI |
|
|
182
|
+
|
|
183
|
+
## License
|
|
184
|
+
|
|
185
|
+
This repository is licensed under the [MIT License](LICENSE). Shared workflow content may be used in consuming superbuild workspaces via the `tools/ai-rules/` submodule.
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
# superbuild-workflow
|
|
2
|
+
|
|
3
|
+
Authoritative shared workflow repository for superbuild-style software workspaces.
|
|
4
|
+
|
|
5
|
+
**GitLab path:** `ai-workflows/superbuild-workflow`
|
|
6
|
+
**Local mount in consuming repos:** `tools/ai-rules/`
|
|
7
|
+
|
|
8
|
+
This repository is **not** a product superbuild. It defines how superbuild workspaces are structured, built, governed, and assisted by AI tools. Consuming repositories coordinate multiple Git repositories under a CMake/Conan superbuild and mount this repo as a submodule for shared policy.
|
|
9
|
+
|
|
10
|
+
## What this is
|
|
11
|
+
|
|
12
|
+
- Portable workflow documentation (Markdown, `AGENTS.md`)
|
|
13
|
+
- Shared AI guidance for humans and coding agents
|
|
14
|
+
- Rationale and governance for how shared policy evolves
|
|
15
|
+
- Cursor adapter rules (thin wrappers over canonical docs)
|
|
16
|
+
- Templates for bootstrapping consuming repositories
|
|
17
|
+
- **Migration assistant CLI** (`eai-supmig`) — contract-first prep for legacy Google-repo superbuilds
|
|
18
|
+
|
|
19
|
+
## Migration assistant (`eai-supmig`)
|
|
20
|
+
|
|
21
|
+
Install and run from a legacy superbuild workspace:
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
pip install eai-supmig
|
|
25
|
+
# or from this clone:
|
|
26
|
+
pip install -e ".[dev]"
|
|
27
|
+
eai-supmig assess
|
|
28
|
+
eai-supmig plan
|
|
29
|
+
eai-supmig bootstrap --with-ai-rules --with-cursor --yes
|
|
30
|
+
eai-supmig prompt
|
|
31
|
+
eai-supmig doctor
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Module invocation: `python -m eai_supmig assess`
|
|
35
|
+
|
|
36
|
+
See [docs/migration-assistant.md](docs/migration-assistant.md) and [docs/package-publishing.md](docs/package-publishing.md).
|
|
37
|
+
|
|
38
|
+
## What this is not
|
|
39
|
+
|
|
40
|
+
- A consuming product superbuild or application codebase
|
|
41
|
+
- A replacement for a consuming repo's CMake superbuild
|
|
42
|
+
- The sole source of truth for Cursor-specific rules (adapters only)
|
|
43
|
+
- A place to fork shared policy silently from a consumer
|
|
44
|
+
|
|
45
|
+
## Architectural principle
|
|
46
|
+
|
|
47
|
+
| Layer | Role |
|
|
48
|
+
|-------|------|
|
|
49
|
+
| **This repo** (`tools/ai-rules/` in consumers) | Canonical shared workflow policy |
|
|
50
|
+
| **Consuming superbuild repo** | Product workspace, build orchestration, local exceptions |
|
|
51
|
+
| **Local tool adapters** (e.g. `.cursor/rules/`) | Materialized or symlinked rules; overlays only |
|
|
52
|
+
|
|
53
|
+
Plain Markdown and `AGENTS.md` are the long-term authoritative content. Cursor `.mdc` files in `cursor/rules/` are adapters, not the primary source of truth.
|
|
54
|
+
|
|
55
|
+
## Documentation portal
|
|
56
|
+
|
|
57
|
+
Published documentation is mirrored to [`ai-workflows/docs-portal`](../docs-portal) via GitLab downstream pipelines. Edit docs here first; see `docs/portal-integration.md` and `docs/workflow-manifest.yaml`.
|
|
58
|
+
|
|
59
|
+
## Repository layout
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
superbuild-workflow/
|
|
63
|
+
├── README.md # This file
|
|
64
|
+
├── AGENTS.md # Agent-oriented entry point (authoritative)
|
|
65
|
+
├── pyproject.toml # Python package (eai-supmig)
|
|
66
|
+
├── src/eai_supmig/ # Migration assistant implementation
|
|
67
|
+
├── tests/ # Unit tests
|
|
68
|
+
├── docs/ # Portable workflow documentation
|
|
69
|
+
│ ├── architecture.md
|
|
70
|
+
│ ├── rationale.md
|
|
71
|
+
│ ├── workflow.md
|
|
72
|
+
│ ├── governance.md
|
|
73
|
+
│ ├── cursor-integration.md
|
|
74
|
+
│ ├── alternative-tool-integration.md
|
|
75
|
+
│ ├── repository-layout.md
|
|
76
|
+
│ ├── cmake-conan-policy.md
|
|
77
|
+
│ └── superbuild-philosophy.md
|
|
78
|
+
├── cursor/rules/ # Shared Cursor adapter rule sources
|
|
79
|
+
├── .cursor/rules/ # Governance rules for this repo itself
|
|
80
|
+
└── templates/ # Templates for consuming repos
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Consuming repositories
|
|
84
|
+
|
|
85
|
+
A typical superbuild workspace:
|
|
86
|
+
|
|
87
|
+
1. Adds this repo as a Git submodule at `tools/ai-rules/`
|
|
88
|
+
2. Maintains a root `AGENTS.md` that references shared policy and documents local exceptions
|
|
89
|
+
3. Materializes Cursor rules from `tools/ai-rules/cursor/rules/` into `.cursor/rules/` (copy or symlink)
|
|
90
|
+
4. Keeps repo-specific overlays in local `.cursor/rules/` without changing shared policy here
|
|
91
|
+
|
|
92
|
+
See [docs/repository-layout.md](docs/repository-layout.md) and [templates/](templates/) for details.
|
|
93
|
+
|
|
94
|
+
## Getting started
|
|
95
|
+
|
|
96
|
+
### As a maintainer of this repo
|
|
97
|
+
|
|
98
|
+
1. Clone and run `./scripts/setup-dev.sh` (installs pre-commit + commit-msg gitlint)
|
|
99
|
+
2. Check out **`develop`** for day-to-day work — see [docs/development-workflow.md](docs/development-workflow.md)
|
|
100
|
+
3. Read [AGENTS.md](AGENTS.md) and [docs/governance.md](docs/governance.md)
|
|
101
|
+
4. Use [docs/commit-messages.md](docs/commit-messages.md) for commit format
|
|
102
|
+
5. Propose shared workflow changes here first; update docs in the same change set
|
|
103
|
+
6. Fast-forward **`master`** from `develop` when CI is green (or after review if CI is not yet configured)
|
|
104
|
+
7. Use `.cursor/rules/` when editing with Cursor in this repository
|
|
105
|
+
|
|
106
|
+
### As a consumer
|
|
107
|
+
|
|
108
|
+
1. Add the submodule:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
git submodule add <gitlab-url>/ai-workflows/superbuild-workflow.git tools/ai-rules
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
2. Copy or adapt [templates/repo-AGENTS.template.md](templates/repo-AGENTS.template.md) to your root `AGENTS.md`
|
|
115
|
+
3. Run or adapt [templates/setup-dev.template.sh](templates/setup-dev.template.sh) to materialize Cursor rules and initialize submodules
|
|
116
|
+
4. Point agents and developers at `tools/ai-rules/AGENTS.md` and relevant `docs/`
|
|
117
|
+
|
|
118
|
+
## How to update shared workflow
|
|
119
|
+
|
|
120
|
+
1. **Change policy here first** — never treat a consuming repo's local copy as the source of truth
|
|
121
|
+
2. **Keep changes coherent** — one logical change per commit; update rationale/governance docs when semantics change
|
|
122
|
+
3. **Release via submodule** — consumers update with `git submodule update --remote tools/ai-rules` (or pin to a specific commit)
|
|
123
|
+
4. **Document local exceptions** — in the consumer's root `AGENTS.md` and local overlay rules, not by forking shared files
|
|
124
|
+
|
|
125
|
+
See [docs/workflow.md](docs/workflow.md) for the full change and rollout process.
|
|
126
|
+
|
|
127
|
+
## Documentation index
|
|
128
|
+
|
|
129
|
+
| Document | Purpose |
|
|
130
|
+
|----------|---------|
|
|
131
|
+
| [architecture.md](docs/architecture.md) | Layered model, remote vs local paths |
|
|
132
|
+
| [rationale.md](docs/rationale.md) | Why centralized shared workflow exists |
|
|
133
|
+
| [workflow.md](docs/workflow.md) | How changes flow from discovery to rollout |
|
|
134
|
+
| [governance.md](docs/governance.md) | What belongs here vs in consumers |
|
|
135
|
+
| [cursor-integration.md](docs/cursor-integration.md) | Cursor adapter usage |
|
|
136
|
+
| [alternative-tool-integration.md](docs/alternative-tool-integration.md) | Non-Cursor AI tools |
|
|
137
|
+
| [repository-layout.md](docs/repository-layout.md) | Expected consuming repo layout |
|
|
138
|
+
| [cmake-conan-policy.md](docs/cmake-conan-policy.md) | Build and dependency policy |
|
|
139
|
+
| [superbuild-philosophy.md](docs/superbuild-philosophy.md) | Multi-repo coordination model |
|
|
140
|
+
| [legacy-superbuild-migration.md](docs/legacy-superbuild-migration.md) | Phased migration from legacy CMake / `.vcxproj` |
|
|
141
|
+
| [legacy-superbuild-assessment.md](docs/legacy-superbuild-assessment.md) | Pre-migration inventory |
|
|
142
|
+
| [visual-studio-to-cmake-mapping.md](docs/visual-studio-to-cmake-mapping.md) | VS project → CMake target mapping |
|
|
143
|
+
| [conan-cmake-rollout.md](docs/conan-cmake-rollout.md) | Incremental Conan and presets |
|
|
144
|
+
| [superbuild-integration-plan.md](docs/superbuild-integration-plan.md) | `tools/ai-rules/` submodule rollout |
|
|
145
|
+
| [development-workflow.md](docs/development-workflow.md) | Branches, pre-commit, ff-merge to `master` |
|
|
146
|
+
| [commit-messages.md](docs/commit-messages.md) | Conventional Commits (gitlint) |
|
|
147
|
+
| [commit-checklist.md](docs/commit-checklist.md) | Pre-commit checklist |
|
|
148
|
+
| [migration-assistant.md](docs/migration-assistant.md) | `eai-supmig` CLI for legacy superbuild prep |
|
|
149
|
+
| [package-publishing.md](docs/package-publishing.md) | PyPI / GitLab package CI |
|
|
150
|
+
|
|
151
|
+
## License
|
|
152
|
+
|
|
153
|
+
This repository is licensed under the [MIT License](LICENSE). Shared workflow content may be used in consuming superbuild workspaces via the `tools/ai-rules/` submodule.
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=68", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "eai-supmig"
|
|
7
|
+
dynamic = ["version"]
|
|
8
|
+
description = "Contract-first migration assistant for legacy Google-repo superbuild workspaces"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.11"
|
|
11
|
+
license = "MIT"
|
|
12
|
+
license-files = ["LICENSE"]
|
|
13
|
+
authors = [{ name = "Michel Gillet", email = "michel.gillet@libesys.org" }]
|
|
14
|
+
keywords = ["superbuild", "cmake", "conan", "migration", "repo", "cli"]
|
|
15
|
+
classifiers = [
|
|
16
|
+
"Development Status :: 4 - Beta",
|
|
17
|
+
"Environment :: Console",
|
|
18
|
+
"Intended Audience :: Developers",
|
|
19
|
+
"Operating System :: OS Independent",
|
|
20
|
+
"Programming Language :: Python :: 3",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Programming Language :: Python :: 3.12",
|
|
23
|
+
"Topic :: Software Development :: Build Tools",
|
|
24
|
+
]
|
|
25
|
+
dependencies = [
|
|
26
|
+
"typer>=0.12",
|
|
27
|
+
"rich>=13.7",
|
|
28
|
+
"pyyaml>=6.0",
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[project.urls]
|
|
32
|
+
Homepage = "https://gitlab.com/libesys/ai-workflows/superbuild-workflow"
|
|
33
|
+
Repository = "https://gitlab.com/libesys/ai-workflows/superbuild-workflow.git"
|
|
34
|
+
Documentation = "https://gitlab.com/libesys/ai-workflows/superbuild-workflow/-/blob/develop/docs/package-publishing.md"
|
|
35
|
+
|
|
36
|
+
[project.optional-dependencies]
|
|
37
|
+
dev = [
|
|
38
|
+
"pytest>=8.0",
|
|
39
|
+
"pytest-cov>=5.0",
|
|
40
|
+
"ruff>=0.8",
|
|
41
|
+
"build>=1.2",
|
|
42
|
+
"twine>=5.0",
|
|
43
|
+
]
|
|
44
|
+
|
|
45
|
+
[project.scripts]
|
|
46
|
+
eai-supmig = "eai_supmig.cli:app"
|
|
47
|
+
|
|
48
|
+
[tool.setuptools.packages.find]
|
|
49
|
+
where = ["src"]
|
|
50
|
+
|
|
51
|
+
[tool.setuptools.dynamic]
|
|
52
|
+
version = { attr = "eai_supmig.__version__" }
|
|
53
|
+
|
|
54
|
+
[tool.pytest.ini_options]
|
|
55
|
+
testpaths = ["tests"]
|
|
56
|
+
pythonpath = ["src"]
|
|
57
|
+
|
|
58
|
+
[tool.ruff]
|
|
59
|
+
line-length = 100
|
|
60
|
+
target-version = "py311"
|
|
61
|
+
src = ["src", "tests"]
|
|
62
|
+
|
|
63
|
+
[tool.ruff.lint]
|
|
64
|
+
select = ["E", "F", "I", "UP"]
|