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.
Files changed (38) hide show
  1. eai_supmig-0.2.0/LICENSE +21 -0
  2. eai_supmig-0.2.0/PKG-INFO +185 -0
  3. eai_supmig-0.2.0/README.md +153 -0
  4. eai_supmig-0.2.0/pyproject.toml +64 -0
  5. eai_supmig-0.2.0/setup.cfg +4 -0
  6. eai_supmig-0.2.0/src/eai_supmig/__init__.py +3 -0
  7. eai_supmig-0.2.0/src/eai_supmig/__main__.py +5 -0
  8. eai_supmig-0.2.0/src/eai_supmig/assess.py +247 -0
  9. eai_supmig-0.2.0/src/eai_supmig/bootstrap/__init__.py +5 -0
  10. eai_supmig-0.2.0/src/eai_supmig/bootstrap/runner.py +174 -0
  11. eai_supmig-0.2.0/src/eai_supmig/classify.py +47 -0
  12. eai_supmig-0.2.0/src/eai_supmig/cli.py +225 -0
  13. eai_supmig-0.2.0/src/eai_supmig/conan_detect.py +44 -0
  14. eai_supmig-0.2.0/src/eai_supmig/doctor.py +86 -0
  15. eai_supmig-0.2.0/src/eai_supmig/git_ops.py +60 -0
  16. eai_supmig-0.2.0/src/eai_supmig/io_util.py +14 -0
  17. eai_supmig-0.2.0/src/eai_supmig/model/__init__.py +6 -0
  18. eai_supmig-0.2.0/src/eai_supmig/model/contract.py +92 -0
  19. eai_supmig-0.2.0/src/eai_supmig/model/serialize.py +49 -0
  20. eai_supmig-0.2.0/src/eai_supmig/paths.py +83 -0
  21. eai_supmig-0.2.0/src/eai_supmig/plan.py +91 -0
  22. eai_supmig-0.2.0/src/eai_supmig/prompting/__init__.py +5 -0
  23. eai_supmig-0.2.0/src/eai_supmig/prompting/generate.py +97 -0
  24. eai_supmig-0.2.0/src/eai_supmig/repo_manifest/__init__.py +6 -0
  25. eai_supmig-0.2.0/src/eai_supmig/repo_manifest/discover.py +79 -0
  26. eai_supmig-0.2.0/src/eai_supmig/repo_manifest/parser.py +98 -0
  27. eai_supmig-0.2.0/src/eai_supmig.egg-info/PKG-INFO +185 -0
  28. eai_supmig-0.2.0/src/eai_supmig.egg-info/SOURCES.txt +36 -0
  29. eai_supmig-0.2.0/src/eai_supmig.egg-info/dependency_links.txt +1 -0
  30. eai_supmig-0.2.0/src/eai_supmig.egg-info/entry_points.txt +2 -0
  31. eai_supmig-0.2.0/src/eai_supmig.egg-info/requires.txt +10 -0
  32. eai_supmig-0.2.0/src/eai_supmig.egg-info/top_level.txt +1 -0
  33. eai_supmig-0.2.0/tests/test_bootstrap.py +52 -0
  34. eai_supmig-0.2.0/tests/test_classify.py +15 -0
  35. eai_supmig-0.2.0/tests/test_contract.py +32 -0
  36. eai_supmig-0.2.0/tests/test_manifest_parser.py +20 -0
  37. eai_supmig-0.2.0/tests/test_paths.py +17 -0
  38. eai_supmig-0.2.0/tests/test_prompts.py +30 -0
@@ -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"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """eai-supmig: legacy superbuild migration assistant."""
2
+
3
+ __version__ = "0.2.0"
@@ -0,0 +1,5 @@
1
+ """Support `python -m eai_supmig`."""
2
+
3
+ from eai_supmig.cli import app
4
+
5
+ app()