Skip to content

Commit 8857d45

Browse files
fix: CI version detection (#24)
# Conflicts: # README.md
2 parents bf8da41 + 875fda4 commit 8857d45

9 files changed

Lines changed: 227 additions & 122 deletions

File tree

.github/workflows/ci.yml

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,12 @@ jobs:
1717
python-version: ["3.10", "3.11", "3.12", "3.13"]
1818

1919
steps:
20-
- uses: actions/checkout@v6
20+
- uses: actions/checkout@v4
21+
with:
22+
persist-credentials: false
2123

2224
- name: Set up Python ${{ matrix.python-version }}
23-
uses: actions/setup-python@v6
25+
uses: actions/setup-python@v5
2426
with:
2527
python-version: ${{ matrix.python-version }}
2628

@@ -30,7 +32,7 @@ jobs:
3032
pip install -e ".[dev]"
3133
3234
- name: Lint with ruff
33-
run: pip install ruff && ruff check src/ --target-version py310
35+
run: pip install ruff && ruff check src/ tests/ --target-version py310
3436
- name: Run tests
3537
run: |
3638
python -m pytest tests/ -v --cov=schemaforge --cov-report=term-missing
@@ -42,10 +44,12 @@ jobs:
4244
schema-consistency:
4345
runs-on: ubuntu-latest
4446
steps:
45-
- uses: actions/checkout@v6
47+
- uses: actions/checkout@v4
48+
with:
49+
persist-credentials: false
4650

4751
- name: Set up Python
48-
uses: actions/setup-python@v6
52+
uses: actions/setup-python@v5
4953
with:
5054
python-version: "3.12"
5155

@@ -61,4 +65,3 @@ jobs:
6165
- name: Run schemaforge check on fixtures
6266
run: |
6367
schemaforge check --dir /tmp --canonical sql || true
64-

.github/workflows/npm-publish.yml

Lines changed: 0 additions & 28 deletions
This file was deleted.

.github/workflows/pages.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ jobs:
1919
runs-on: ubuntu-latest
2020
steps:
2121
- uses: actions/checkout@v4
22+
with:
23+
persist-credentials: false
2224
- name: Setup Pages
2325
uses: actions/configure-pages@v5
2426
- name: Build with Jekyll

.github/workflows/publish.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ jobs:
1212
runs-on: ubuntu-latest
1313

1414
steps:
15-
- uses: actions/checkout@v6
15+
- uses: actions/checkout@v4
16+
with:
17+
persist-credentials: false
1618

1719
- name: Set up Python
18-
uses: actions/setup-python@v6
20+
uses: actions/setup-python@v5
1921
with:
2022
python-version: "3.12"
2123

@@ -37,4 +39,3 @@ jobs:
3739
TWINE_PASSWORD: ${{ secrets.PYPI_API_TOKEN }}
3840
run: |
3941
twine upload dist/*
40-

CHANGELOG.md

Lines changed: 134 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,140 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [0.1.0] - 2025-05-17
8+
## [1.7.0] - 2026-05-15
9+
10+
### Added
11+
- VS Code extension with live preview, diff, and quick convert
12+
- Right-click conversion from file explorer
13+
- Custom editor for `.schemaforge` files
14+
- Auto-refresh preview on file save
15+
16+
## [1.6.0] - 2026-05-15
17+
18+
### Added
19+
- Scala case class support (Doobie/Quill/Slick) as 11th format
20+
21+
## [1.5.0] - 2026-05-15
22+
23+
### Added
24+
- Entity Framework Core (C#) support as 10th format
25+
- Data annotations generation for EF Core entities
26+
27+
## [1.4.0] - 2026-05-15
28+
29+
### Added
30+
- MCP (Model Context Protocol) server for AI agent integration
31+
- `schemaforge mcp` command (stdio and SSE modes)
32+
- `schemaforge check` command — schema consistency across directories
33+
- `schemaforge formats` command — list supported formats
34+
- `schemaforge detect_format` command — identify format from filename
35+
- CI/CD workflow for automated testing and publishing
36+
37+
### Changed
38+
- Consolidated test workflow configuration
39+
40+
## [1.3.0] - 2026-05-15
41+
42+
### Added
43+
- GraphQL SDL format support as 9th schema format
44+
- Bidirectional conversion between GraphQL and all other formats
45+
- Enum, directive, and custom scalar support in GraphQL
46+
47+
## [1.2.0] - 2026-05-15
48+
49+
### Added
50+
- JSON Schema support (draft 2020-12) as 8th format
51+
- JSON Schema import/export with type mapping
52+
- URI-friendly enum value generation
53+
54+
## [1.1.0] - 2026-05-15
55+
56+
### Added
57+
- Custom type mapping configuration via YAML/JSON override files
58+
- Template variables in type overrides: `{length}`, `{precision}`, `{scale}`, `{values}`
59+
- `--type-map` CLI option for all convert commands
60+
61+
## [1.0.0] - 2026-05-15
62+
63+
### Added
64+
- Stable release with comprehensive docs and CLI polish
65+
- Licensing gating via `revenueholdings-license`
66+
- Star badge and call-to-action in README
67+
68+
### Fixed
69+
- Version bump from 1.0.0 to 1.7.0 alignment (internal consistency)
70+
71+
## [0.9.0] - 2026-05-15
72+
73+
### Changed
74+
- Shared generator base module (`_base.py`) for reduced code duplication
75+
- Refactored `fn:` default handling for cross-format function defaults
76+
77+
## [0.8.0] - 2026-05-15
78+
79+
### Added
80+
- Alembic migration generation as 7th format (generator-only)
81+
- `--output` support for migration script generation
82+
- Alembic `op.create_table`, `op.add_column`, `op.create_index` output
83+
84+
## [0.7.0] - 2026-05-15
85+
86+
### Added
87+
- MySQL table options: `ENGINE=InnoDB`, `AUTO_INCREMENT`, `DEFAULT CHARSET`, `COMMENT`
88+
- Inline ENUM column type: `ENUM('small', 'medium', 'large')` parsing and roundtripping
89+
90+
## [0.6.0] - 2026-05-15
91+
92+
### Added
93+
- SQL parser edge cases: `TEMPORARY TABLE`, backtick quoting, quoted identifiers
94+
- `fn:` default prefix preservation across roundtrips
95+
96+
### Fixed
97+
- Roundtrip fidelity for function-based default values
98+
99+
## [0.5.0] - 2026-05-15
100+
101+
### Added
102+
- SQLAlchemy declarative model support as 5th format
103+
- `schemaforge diff` command for line-level schema comparison
104+
- Batch directory mode (`schemaforge check --dir`)
105+
- Demo fixtures with blog schema in all formats
106+
- 17 new roundtrip and edge-case tests
107+
108+
### Fixed
109+
- PRAGMA KEY implies NOT NULL in SQL parser
110+
- Generator index handling for SQLAlchemy
111+
112+
## [0.4.0] - 2026-05-15
113+
114+
### Added
115+
- Django models support as 4th format
116+
- TypeORM entities support as 3rd format
117+
- Parser/generator registration system in convert registry
118+
119+
### Fixed
120+
- `convert_schema` and `register_format` functions restored after merge conflict
121+
122+
## [0.3.0] - 2026-05-15
123+
124+
### Added
125+
- TypeORM entities support as 3rd format
126+
- Decorator-based entity parsing and generation
127+
128+
## [0.2.0] - 2026-05-15
129+
130+
### Added
131+
- Drizzle ORM schema support as 2nd format
132+
- Drizzle parser/generator registered in convert registry
133+
134+
## [0.1.0] - 2026-05-14
9135

10136
### Added
11137
- Initial beta release
12-
- Core functionality
13-
- CLI interface
14-
- Test suite
15-
- CI/CD workflows with ruff lint and pytest
16-
- CONTRIBUTING.md
138+
- Core bidirectional conversion engine
139+
- SQL DDL ↔ Prisma schema conversion
140+
- Internal Representation (IR) architecture
141+
- CLI interface with `convert` command
142+
- Test suite with 270+ passing tests
143+
- CI workflow with ruff lint and pytest
144+
- CONTRIBUTING.md for contributor guidance

README.md

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,19 +3,16 @@
33
> **Bidirectional ORM schema converter** — convert between SQL DDL, Prisma, Drizzle, TypeORM, Django, SQLAlchemy, Alembic migrations, JSON Schema, GraphQL SDL, EF Core (C#), and Scala case classes. **11 formats, 110 direction pairs.**
44
55
[![GitHub stars](https://img.shields.io/github/stars/Coding-Dev-Tools/schemaforge?style=social)](https://github.com/Coding-Dev-Tools/schemaforge/stargazers)
6-
[![PyPI](https://img.shields.io/pypi/v/schemaforge)](https://pypi.org/project/schemaforge/)
7-
[![Python](https://img.shields.io/pypi/pyversions/schemaforge)](https://pypi.org/project/schemaforge/)
8-
[![License](https://img.shields.io/pypi/l/schemaforge)](https://github.com/Coding-Dev-Tools/schemaforge/blob/main/LICENSE)
6+
[![PyPI](https://img.shields.io/pypi/v/schemaforge-cli)](https://pypi.org/project/schemaforge-cli/)
7+
[![Python](https://img.shields.io/pypi/pyversions/schemaforge-cli)](https://pypi.org/project/schemaforge-cli/)
8+
[![License](https://img.shields.io/pypi/l/schemaforge-cli)](https://github.com/Coding-Dev-Tools/schemaforge/blob/main/LICENSE)
99
[![CI](https://github.com/Coding-Dev-Tools/schemaforge/actions/workflows/ci.yml/badge.svg)](https://github.com/Coding-Dev-Tools/schemaforge/actions/workflows/ci.yml)
10-
[![Tests](https://img.shields.io/badge/tests-270%20passing-brightgreen)](https://github.com/Coding-Dev-Tools/schemaforge)
11-
[![VS Code](https://img.shields.io/badge/VS%20Code-extension-blue)](https://marketplace.visualstudio.com/items?itemName=devforge.vscode-schemaforge)
10+
[![Tests](https://img.shields.io/badge/tests-298%20passing-brightgreen)](https://github.com/Coding-Dev-Tools/schemaforge)
11+
[![VS Code](https://img.shields.io/badge/VS%20Code-extension-blue)](https://marketplace.visualstudio.com/items?itemName=revenue-holdings.vscode-schemaforge)
1212
[![Open Source Alternative](https://img.shields.io/badge/Open_Source_Alternative-%E2%87%92-blue?logo=opensourceinitiative)](https://www.opensourcealternative.to/project/schemaforge)
1313
[![LibHunt](https://img.shields.io/badge/LibHunt-%E2%87%92-blue?logo=codeigniter)](https://www.libhunt.com/r/Coding-Dev-Tools/schemaforge)
14-
[![Awesome Python](https://img.shields.io/badge/Awesome_Python-%E2%87%92-blue?logo=python)](https://github.com/uhub/awesome-python)
1514

16-
> **Star this repo**
17-
18-
**Why SchemaForge?** Every major ORM migration is a one-way street. Prisma introspects SQL but can't export back. Drizzle users manually rewrite schemas when switching ORMs. TypeORM developers are locked into decorator syntax. SchemaForge is the first tool to do **bidirectional, lossless conversion** between 11 schema formats — with a shared internal representation that guarantees roundtrip fidelity.
15+
**Why SchemaForge?**
1916

2017
Convert any schema to any format, verify equivalence with the diff command, generate Alembic migrations, produce JSON Schema definitions, create GraphQL SDL types, convert Entity Framework (C#) entities, generate Scala case classes, and batch-process entire directories. Whether you're migrating from Prisma to Drizzle, sharing a schema with a Django backend, exposing your data model as GraphQL, translating C# entities to Scala, or working with the SchemaForge VS Code extension for live preview — SchemaForge handles it.
2118

@@ -63,7 +60,7 @@ Requires Python 3.10+.
6360

6461
### `schemaforge convert`
6562

66-
Convert a schema from one format to another. All 9 formats support conversion to and from every other format (72 direction pairs).
63+
Convert a schema from one format to another. All 11 formats support conversion to and from every other format (110 direction pairs).
6764

6865
```bash
6966
# Format-specific examples
@@ -210,7 +207,7 @@ SchemaForge maps types intelligently between ORM systems. The core `ColumnType`
210207

211208
## Demo Fixtures
212209

213-
Try SchemaForge immediately with our example blog schema. The `fixtures/` directory contains an equivalent schema (users, posts, categories with enums and various data types) in all 9 formats:
210+
Try SchemaForge immediately with our example blog schema. The `fixtures/` directory contains an equivalent schema (users, posts, categories with enums and various data types) in all 11 formats:
214211

215212
```bash
216213
# List all fixtures
@@ -403,18 +400,18 @@ SchemaForge is one of 11 tools in the DevForge suite. One license covers all CLI
403400

404401
| Feature | Free | Individual | Suite | Team | Enterprise |
405402
|---------|:----:|:----------:|:-----:|:----:|:----------:|
406-
| CLI: convert, diff | ✓ | ✓ | ✓ | ✓ | ✓ |
407-
| All 9 format directions | — | ✓ | ✓ | ✓ | ✓ |
408-
| Alembic migration generation | — | ✓ | ✓ | ✓ | ✓ |
409-
| JSON Schema import/export | — | ✓ | ✓ | ✓ | ✓ |
410-
| GraphQL SDL import/export | — | ✓ | ✓ | ✓ | ✓ |
411-
| MCP server (AI agent tools) | ✓ | ✓ | ✓ | ✓ | ✓ |
412-
| Custom type mappings | — | ✓ | ✓ | ✓ | ✓ |
413-
| Batch directory conversion | — | ✓ | ✓ | ✓ | ✓ |
414-
| Team shared type mappings | — | — | — | ✓ | ✓ |
415-
| Dashboard & analytics | — | — | — | ✓ | ✓ |
416-
| Compliance reports | — | — | — | — | ✓ |
417-
| RBAC / SSO / SAML / OIDC | — | — | — | — | ✓ |
403+
|| CLI: convert, diff | ✓ | ✓ | ✓ | ✓ | ✓ |
404+
|| All 11 format directions | — | ✓ | ✓ | ✓ | ✓ |
405+
|| Alembic migration generation | — | ✓ | ✓ | ✓ | ✓ |
406+
|| JSON Schema import/export | — | ✓ | ✓ | ✓ | ✓ |
407+
|| GraphQL SDL import/export | — | ✓ | ✓ | ✓ | ✓ |
408+
|| MCP server (AI agent tools) | ✓ | ✓ | ✓ | ✓ | ✓ |
409+
|| Custom type mappings | — | ✓ | ✓ | ✓ | ✓ |
410+
|| Batch directory conversion | — | ✓ | ✓ | ✓ | ✓ |
411+
|| Team shared type mappings | — | — | — | ✓ | ✓ |
412+
|| Dashboard & analytics | — | — | — | ✓ | ✓ |
413+
|| Compliance reports | — | — | — | — | ✓ |
414+
|| RBAC / SSO / SAML / OIDC | — | — | — | — | ✓ |
418415
| Priority support | Community | 24h | 24h | 8h | Dedicated |
419416

420417
## Development
@@ -450,5 +447,5 @@ MIT — see [LICENSE](LICENSE)
450447

451448
---
452449

453-
<sub>Part of [DevForge](https://coding-dev-tools.github.io/devforge.dev/) — a suite of 10 developer CLI tools built by autonomous AI agents. Also check out the [SchemaForge VS Code extension](https://github.com/Coding-Dev-Tools/vscode-schemaforge), [API Contract Guardian](https://github.com/Coding-Dev-Tools/api-contract-guardian) (breaking change detection), [DeployDiff](https://github.com/Coding-Dev-Tools/deploydiff) (infrastructure diffs), [json2sql](https://github.com/Coding-Dev-Tools/json2sql) (JSON → SQL), [ConfigDrift](https://github.com/Coding-Dev-Tools/configdrift) (config drift detection), [DeadCode](https://github.com/Coding-Dev-Tools/deadcode) (dead code cleanup), [APIAuth](https://github.com/Coding-Dev-Tools/apiauth) (API key management), [APIGhost](https://github.com/Coding-Dev-Tools/apighost) (mock API server), [Envault](https://github.com/Coding-Dev-Tools/envault) (env sync), and [click-to-mcp](https://github.com/Coding-Dev-Tools/click-to-mcp) (CLI → MCP server).</sub>
450+
<sub>Part of [Revenue Holdings](https://coding-dev-tools.github.io/revenueholdings.dev/) — a suite of 11 developer CLI tools built by autonomous AI agents. Also check out the [SchemaForge VS Code extension](https://github.com/Coding-Dev-Tools/vscode-schemaforge), [ConfigDrift](https://github.com/Coding-Dev-Tools/configdrift) (config drift detection), [DataMorph](https://github.com/Coding-Dev-Tools/datamorph) (data format conversion), [DeadCode](https://github.com/Coding-Dev-Tools/deadcode) (dead code cleanup), [DeployDiff](https://github.com/Coding-Dev-Tools/deploydiff) (infrastructure diffs), [Envault](https://github.com/Coding-Dev-Tools/envault) (env sync), [APIAuth](https://github.com/Coding-Dev-Tools/apiauth) (API key management), [APIGhost](https://github.com/Coding-Dev-Tools/apighost) (mock API server), [json2sql](https://github.com/Coding-Dev-Tools/json2sql) (JSON → SQL), [API Contract Guardian](https://github.com/Coding-Dev-Tools/api-contract-guardian) (breaking change detection), and [click-to-mcp](https://github.com/Coding-Dev-Tools/click-to-mcp) (CLI → MCP server).</sub>
454451

0 commit comments

Comments
 (0)